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 1uMu2O-006jaE-Kf for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Jun 2025 19:44:38 +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 1uMu2M-00Fyj0-EB for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Jun 2025 19:44:35 +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 1uMu2L-00Fyf6-Fs for pgsql-hackers@lists.postgresql.org; Wed, 04 Jun 2025 19:44:34 +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 1uMu2I-000EGo-0m for pgsql-hackers@lists.postgresql.org; Wed, 04 Jun 2025 19:44:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1749066267; bh=sOMm+BOu+ovp1DVtKxXr3TslvjA7aoxR9C65BBKR3u8=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=bU+KR6firlJs550cIArTWv+ssqOHQnxtXDDYMU/3xDAqmx2JlzXPSStTXh41XIJ/4 KHkFz9qbCSAcW31xkz2Lbha1sV/94qIWTOPRycZoBSz0BnAD2opyjHoEyRMiBlcb9k xmi89J3FkurW57Ijz7x+RxTuE2BQkAFAEeC2KKa/2xhZUyg44BEel98oUhODmdbRkr 3h+XrswVFsfw4QcraACNk+k/gwHx9q8tpF7cmf9B5QULwFsN4SgCDkwSfuKIxA9mpj RiHL09vOnp61m5zp/0BCW26D7TpfPLxN8nSRjr8cvATBnNiQLCtVlgl6WHRwzAFyjT PEL3Px8nASunw== Received: from [172.30.50.118] (unknown [93.174.131.138]) (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 4C3C760AD7; Wed, 4 Jun 2025 22:44:27 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------XrzLG5ahQ1YxYNPpUUs7c2fS" Message-ID: <67ecf5fb-e63d-4284-be75-d0479eef81aa@postgrespro.ru> Date: Wed, 4 Jun 2025 22:44:26 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <859476bf-3cb0-455e-b093-b8ab5ef17f0e@postgrespro.ru> <4e2764f7-f6be-478f-8d7f-f921dbd10f5f@postgrespro.ru> <7fdaf3e8-4c05-4739-bee6-98acc068d1c7@postgrespro.ru> <4433b492-9e97-4334-96d9-ddaaa5083099@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/06/04 18:07: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/06/04 17:24:00 #27536890 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. --------------XrzLG5ahQ1YxYNPpUUs7c2fS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! Thank you very much for review. 1. >you can put it into one INSERT. like >INSERT INTO sales_range VALUES (1, 'May', 1000, '2022-01-31'), >(1, 'May', 1000, '2022-01-31'); >which can make the regress test faster. >(apply the logic to other places in src/test/regress/sql/partition_merge.sql) Test changed. 2. >+ errmsg("partition of hash-partitioned table cannot be merged"))); >This error case doesn't seem to have a related test, and adding one >would be great. Added test for hash partitioned table. 3. >per >https://www.postgresql.org/docs/current/error-message-reporting.html >"The extra parentheses were required before PostgreSQL version 12, but >are now optional." >so now you can remove the extra parentheses. Extra parentheses removed. 4. >we can make the first error message like the second one. >errmsg("\"%s\" is not a partition of \"%s\"....) Error message errmsg("relation \"%s\" is not a partition of relation \"%s\"" occurs in two more places in the code. I think it's better to keep this error message (for consistency). 5. >+ errmsg("list of new partitions should contain at least two items"))); >This also seems to have no tests. >adding a dummy one should be ok. Test added. 6. >We added List *partlist into PartitionCmd >typedef struct PartitionCmd >we should use >cmd->partlist = NIL; >instead of >cmd->partlist = NULL; >We also need comments explaining PartitionCmd.name >meaning for ALTER TABLE MERGE PARTITIONS INTO? Fixed. 7. >transformPartitionCmdForMerge >+ partOid = RangeVarGetRelid(name, NoLock, false); >here "NoLock" seems not right? AccessExclusiveLock on partitioned table protects only the DEFAULT partition. Fixed. P.S. Similar changes were made for the second commit with SPLIT PARTITION. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------XrzLG5ahQ1YxYNPpUUs7c2fS Content-Type: text/plain; charset=UTF-8; name="v40-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v40-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4NGRjNGQ2YmRiODUwYjZmMTM1OTBhODBkNTczYjAwMGI4ZDkxZTI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDAgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzCgpGaXhlcyAoc3VtbWFyeSBpbmZv cm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVyIFdhbmcsIFJp Y2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczogRnVqaWkgTWFz YW8KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwgUm9iZXJ0IEhhYXMsIEp1c3Rp biBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYQpS ZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGluIFByeXpieSwgS3lvdGFybyBI b3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uLCBUb20gTGFuZSwgTm9h aCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAg ICAgICAgIHwgICA5NiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg ICAgICAgICAgICAgIHwgIDY1NCArKysrKysrKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArLQogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDEyOSArKysKIHNyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICAyMTIgKysrLQogc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICAxMCArCiBzcmMvaW5j bHVkZS9jYXRhbG9nL2hlYXAuaCAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgMTYgKy0KIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwog c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCAgICAgICAgIHwgICAgNiAr CiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgICAgfCAgMTk5 ICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8 ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVj IHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAg ICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdl Lm91dCB8IDEwMDMgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8ICA2NjIgKysrKysrKysrKysKIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgIDEgKwogMjAgZmls ZXMgY2hhbmdlZCwgMzA2OSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1l cmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9w YXJ0aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggZmNk MWNiODUzNS4uMTk5ZDU3ZjRjNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtNDQzOSw2ICs0NDM5LDI1IEBAIEFM VEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA2bTAyIEFERCBVTklRVUUgKGNpdHlfaWQsIGxv Z2RhdGUpOwogQUxURVIgSU5ERVggbWVhc3VyZW1lbnRfY2l0eV9pZF9sb2dkYXRlX2tleQog ICAgIEFUVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDJfY2l0eV9pZF9sb2dk YXRlX2tleTsKIC4uLgorPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKKyAgICA8 cGFyYT4KKyAgICAgVGhlcmUgaXMgYWxzbyBhbiBvcHRpb24gZm9yIG1lcmdpbmcgbXVsdGlw bGUgdGFibGUgcGFydGl0aW9ucyBpbnRvCisgICAgIGEgc2luZ2xlIHBhcnRpdGlvbiB1c2lu ZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVydGFibGUtbWVyZ2UtcGFydGl0 aW9ucyI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlM8L2NvbW1h bmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJlIHNpbXBsaWZpZXMgdGhlIG1hbmFnZW1l bnQgb2YgcGFydGl0aW9uZWQgdGFibGVzIGJ5IGFsbG93aW5nCisgICAgIHVzZXJzIHRvIGNv bWJpbmUgcGFydGl0aW9ucyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkIGFzCisgICAgIHNl cGFyYXRlIGVudGl0aWVzLiAgSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgb3Bl cmF0aW9uIGlzIG5vdAorICAgICBzdXBwb3J0ZWQgZm9yIGhhc2gtcGFydGl0aW9uZWQgdGFi bGVzIGFuZCBhY3F1aXJlcyBhbgorICAgICA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9s aXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBhY3QgaGlnaC1sb2FkCisgICAgIHN5c3Rl bXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3RpdmUgbmF0dXJlLiAgRm9yIGV4YW1wbGUs IHdlIGNhbgorICAgICBtZXJnZSB0aHJlZSBtb250aGx5IHBhcnRpdGlvbnMgaW50byBvbmUg cXVhcnRlciBwYXJ0aXRpb246Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBtZWFz dXJlbWVudAorICAgIE1FUkdFIFBBUlRJVElPTlMgKG1lYXN1cmVtZW50X3kyMDA2bTAxLAor ICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAyLAorICAgICAgICAg ICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAzKSBJTlRPIG1lYXN1cmVtZW50X3ky MDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KICAgIDwvc2VjdDM+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggZDYzZjNhNjIxYS4uNzJiYjUzYjA4 NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtMzcsNiArMzcsOSBAQCBB TFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRBQ0ggUEFSVElUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IHsgRk9S IFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5k X3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQogQUxURVIgVEFCTEUgWyBJRiBFWElT VFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbIENPTkNVUlJFTlRMWSB8IEZJTkFMSVpF IF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVw bGFjZWFibGU+IFssIC4uLl0pCisgICAgICAgIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KIAogPHBocmFzZT53aGVy ZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWN0aW9uPC9yZXBsYWNlYWJsZT4g aXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTQ3LDE0ICsxMTUwLDkzIEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRp b25zIj4KKyAgICA8dGVybT48bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2Vh YmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gbWVyZ2VzIHNldmVyYWwgcGFy dGl0aW9ucyBpbnRvIHRoZSBvbmUgcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQgdGFibGUuCisg ICAgICBIYXNoLXBhcnRpdGlvbmluZyBpcyBub3Qgc3VwcG9ydGVkLiAgSWYgREVGQVVMVCBw YXJ0aXRpb24gaXMgbm90IGluIHRoZQorICAgICAgbGlzdCBvZiBwYXJ0aXRpb25zIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIHJhbmdlLXBhcnRp dGlvbmVkIHRhYmxlcyBpdCBpcyBuZWNlc3NhcnkgdGhhdCB0aGUgcmFuZ2VzCisgICAgICAg ICBvZiB0aGUgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBj YW4KKyAgICAgICAgIGJlIG1lcmdlZCBpbnRvIG9uZSByYW5nZSB3aXRob3V0IHNwYWNlcyBh bmQgb3ZlcmxhcHMgKG90aGVyd2lzZSBhbiBlcnJvcgorICAgICAgICAgd2lsbCBiZSBnZW5l cmF0ZWQpLiAgVGhlIGNvbWJpbmVkIHJhbmdlIHdpbGwgYmUgdGhlIHJhbmdlIGZvciB0aGUg cGFydGl0aW9uCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwv bGlzdGl0ZW0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IEZvciBsaXN0LXBhcnRpdGlvbmVkIHRhYmxlcyB0aGUgdmFsdWUgbGlzdHMgb2YgYWxsIHBh cnRpdGlvbnMKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIGFy ZQorICAgICAgICAgY29tYmluZWQgYW5kIGZvcm0gdGhlIGxpc3Qgb2YgdmFsdWVzIG9mIHBh cnRpdGlvbgorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBJZiBERUZBVUxUIHBhcnRp dGlvbiBpcyBpbiB0aGUgbGlzdCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxl PiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAg d2lsbCBiZSB0aGUgREVGQVVMVCBwYXJ0aXRpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAg ICAgICBGb3IgcmFuZ2UtIGFuZCBsaXN0LXBhcnRpdGlvbmVkIHRhYmxlcyB0aGUgcmFuZ2Vz IGFuZCBsaXN0cyBvZiB2YWx1ZXMKKyAgICAgICAgIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9u cyBjYW4gYmUgYW55LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAg ICAgIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnZWQgcGFydGl0 aW9ucy4gT25seSBzaW1wbGUsCisgICAgICBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBj YW4gYmUgbWVyZ2VkLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVy Z2VkIHBhcnRpdGlvbnMgaGF2ZSBkaWZmZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3aWxsIGJl IGdlbmVyYXRlZC4KKyAgICAgIFRoZSBvd25lciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMg d2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgIDwvcGFyYT4K KyAgICAgPHBhcmE+CisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRv IHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gdGhlCisgICAgICBuZXcgcGFydGl0 aW9uLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGluZGV4ZXMgYW5k IGlkZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAg ICAgIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBFeHRlbmRlZCBzdGF0aXN0aWNz IGFyZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBmb3IgY29uc2lzdGVuY3kg d2l0aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJVElPTiBPRjwvY29tbWFu ZD4uCisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGhhdmUgdGhlIHNhbWUgdGFibGUg YWNjZXNzIG1ldGhvZCBhcyB0aGUgcGFyZW50LgorICAgICAgSWYgdGhlIHBhcmVudCB0YWJs ZSBpcyBwZXJzaXN0ZW50IHRoZW4gdGhlIG5ldyBwYXJ0aXRpb24gaXMgY3JlYXRlZAorICAg ICAgcGVyc2lzdGVudC4gIElmIHRoZSBwYXJlbnQgdGFibGUgaXMgdGVtcG9yYXJ5IHRoZW4g dGhlIG5ldyBwYXJ0aXRpb24KKyAgICAgIGlzIGFsc28gY3JlYXRlZCB0ZW1wb3JhcnkuICBU aGUgbmV3IHBhcnRpdGlvbiB3aWxsIGFsc28gYmUgY3JlYXRlZCBpbgorICAgICAgdGhlIHNh bWUgdGFibGVzcGFjZSBhcyB0aGUgcGFyZW50LgorICAgICA8L3BhcmE+CisgICAgIDxub3Rl PgorICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBjb21tYW5kIGFjcXVpcmVzIGFuIDxsaXRl cmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2suCisgICAgICAgVGhpcyBpcyBh IHNpZ25pZmljYW50IGxpbWl0YXRpb24sIHdoaWNoIGxpbWl0cyB0aGUgdXNhZ2Ugb2YgdGhp cworICAgICAgIGNvbW1hbmQgd2l0aCBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIg YSBoaWdoIGxvYWQuCisgICAgICA8L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvcGFy YT4KIAogICA8cGFyYT4KICAgIEFsbCB0aGUgZm9ybXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFC TEU8L2NvbW1hbmQ+IHRoYXQgYWN0IG9uIGEgc2luZ2xlIHRhYmxlLAogICAgZXhjZXB0IDxs aXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+ LAotICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIGFuZAotICAgPGxp dGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJpbmVkIGludG8K KyAgIDxsaXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LCA8bGl0ZXJhbD5ERVRB Q0ggUEFSVElUSU9OPC9saXRlcmFsPiwKKyAgIGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJ T05TPC9saXRlcmFsPiBjYW4gYmUgY29tYmluZWQgaW50bwogICAgYSBsaXN0IG9mIG11bHRp cGxlIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG9nZXRoZXIuICBGb3IgZXhhbXBsZSwg aXQKICAgIGlzIHBvc3NpYmxlIHRvIGFkZCBzZXZlcmFsIGNvbHVtbnMgYW5kL29yIGFsdGVy IHRoZSB0eXBlIG9mIHNldmVyYWwKICAgIGNvbHVtbnMgaW4gYSBzaW5nbGUgY29tbWFuZC4g IFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIGxhcmdlCkBAIC0xMzk3LDcgKzE0 NzksOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPHRlcm0+PHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBu YW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRl dGFjaCBmcm9tIHRoaXMgdGFibGUuCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0 byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFi bGUsCisgICAgICAgIG9yIHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4K ICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KQEAgLTE4MzAsNiArMTkxMywxMyBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAg IERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1saXN0 aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9u cyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKKzxwcm9ncmFtbGlz dGluZz4KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf d2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkKKyAgICBJTlRPIHNhbGVzX2FsbDsK KzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0 MT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggZmJhZWQ1MzU5YS4uNTcxYjZiMDU3NCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTEwNSw4ICsxMDUsNiBAQCBzdGF0aWMgdm9pZCBSZWxhdGlvblJl bW92ZUluaGVyaXRhbmNlKE9pZCByZWxpZCk7CiBzdGF0aWMgT2lkCVN0b3JlUmVsQ2hlY2so UmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkg IGJvb2wgaXNfZW5mb3JjZWQsIGJvb2wgaXNfdmFsaWRhdGVkLCBib29sIGlzX2xvY2FsLAog CQkJCQkJICBpbnQxNiBpbmhjb3VudCwgYm9vbCBpc19ub19pbmhlcml0LCBib29sIGlzX2lu dGVybmFsKTsKLXN0YXRpYyB2b2lkIFN0b3JlQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLCBM aXN0ICpjb29rZWRfY29uc3RyYWludHMsCi0JCQkJCQkJIGJvb2wgaXNfaW50ZXJuYWwpOwog c3RhdGljIGJvb2wgTWVyZ2VXaXRoRXhpc3RpbmdDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwg Y29uc3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAogCQkJCQkJCQkJCWJvb2wgYWxsb3df bWVyZ2UsIGJvb2wgaXNfbG9jYWwsCiAJCQkJCQkJCQkJYm9vbCBpc19lbmZvcmNlZCwKQEAg LTIyOTYsNyArMjI5NCw3IEBAIFN0b3JlUmVsTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0 IGNoYXIgKm5ubmFtZSwgQXR0ck51bWJlciBhdHRudW0sCiAgKiBleHByZXNzaW9ucyBjYW4g YmUgYWRkZWQgbGF0ZXIsIGJ5IGRpcmVjdCBjYWxscyB0byBTdG9yZUF0dHJEZWZhdWx0CiAg KiBhbmQgU3RvcmVSZWxDaGVjayAoc2VlIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoKSku CiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBTdG9yZUNvbnN0cmFpbnRzKFJlbGF0aW9uIHJl bCwgTGlzdCAqY29va2VkX2NvbnN0cmFpbnRzLCBib29sIGlzX2ludGVybmFsKQogewogCWlu dAkJCW51bWNoZWNrcyA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGFj ZjExZTgzYzAuLmI0ZWM2NjkxZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBA IC03NDAsNiArNzQwLDggQEAgc3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWlnbktl eVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNv bXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29tcHJlc3Npb24pOwogc3Rh dGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIg KnN0b3JhZ2Vtb2RlKTsKIAorc3RhdGljIHZvaWQgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJ CQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24KQEAgLTQ4MzQs NiArNDgzNiwxMCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMpCiAJCQkJ Y21kX2xvY2ttb2RlID0gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFrOwog CisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQljbWRfbG9ja21vZGUgPSBBY2Nl c3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgkJCS8qIG9vcHMg Ki8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVk IiwKIAkJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC01MjY5LDYgKzUyNzUsMTEgQEAg QVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAq Y21kLAogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogCQkJcGFz cyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJyZWFrOworCQljYXNlIEFUX01lcmdlUGFydGl0aW9u czoKKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9QQVJU SVRJT05FRF9UQUJMRSk7CisJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVk ICovCisJCQlwYXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJ CS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUg dHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTY2NSw2ICs1Njc2 LDE0IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs CiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQlhZGRyZXNzID0gQVRF eGVjRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBhcnRpdGlvbkNtZCAqKSBjbWQt PmRlZiktPm5hbWUpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgor CQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZh bHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOworCQkJQXNz ZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY01lcmdlUGFydGl0aW9ucyh3 cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkg IGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAo aW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjcwNSw2ICs2NzI0LDggQEAgYWx0ZXJfdGFibGVf dHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJldHVybiAiREVU QUNIIFBBUlRJVElPTiI7CiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJ CQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKKwkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CisJCQlyZXR1cm4gIk1FUkdFIFBBUlRJVElPTlMiOwogCQljYXNl IEFUX0FkZElkZW50aXR5OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIEFERCBJREVO VElUWSI7CiAJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CkBAIC0yMDE0Myw2ICsyMDE2NCwzNyBA QCBRdWV1ZVBhcnRpdGlvbkNvbnN0cmFpbnRWYWxpZGF0aW9uKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHNjYW5yZWwsCiAJfQogfQogCisvKgorICogYXR0YWNoUGFydGl0aW9uVGFibGU6 IGF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlCisgKgor ICogd3F1ZXVlOiB0aGUgQUxURVIgVEFCTEUgd29yayBxdWV1ZTsgY2FuIGJlIE5VTEwgd2hl biBub3QgcnVubmluZyBhcyBwYXJ0CisgKiAgIG9mIGFuIEFMVEVSIFRBQkxFIHNlcXVlbmNl LgorICogcmVsOiBwYXJ0aXRpb25lZCByZWxhdGlvbjsKKyAqIGF0dGFjaHJlbDogcmVsYXRp b24gb2YgYXR0YWNoZWQgcGFydGl0aW9uOworICogYm91bmQ6IGJvdW5kcyBvZiBhdHRhY2hl ZCByZWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2F0dGFjaFBhcnRpdGlvblRhYmxlKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0YWNocmVsLCBQYXJ0aXRp b25Cb3VuZFNwZWMgKmJvdW5kKQoreworCS8qIE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4g IFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KKwlDcmVhdGVJbmhlcml0 YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7CisKKwkvKiBVcGRhdGUgdGhlIHBnX2NsYXNz IGVudHJ5LiAqLworCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0YWNocmVsLCByZWwsIGJvdW5k KTsKKworCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVz IGluIHRoZSBwYXJ0aXRpb24uICovCisJQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3 cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKKworCS8qIGFuZCB0cmlnZ2VycyAqLworCUNsb25l Um93VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7CisKKwkvKgorCSAqIENs b25lIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZv ciBzZXR0aW5nIHVwCisJICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24u CisJICovCisJQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFj aHJlbCk7Cit9CisKIC8qCiAgKiBBTFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElP TiA8cGFydGl0aW9uLW5hbWU+IEZPUiBWQUxVRVMKICAqCkBAIC0yMDM0NiwyMyArMjAzOTgs OCBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVs LCBQYXJ0aXRpb25DbWQgKmNtZCwKIAljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKGF0dGFjaHJlbCksIHJlbCwKIAkJCQkJCQkgIGNtZC0+Ym91 bmQsIHBzdGF0ZSk7CiAKLQkvKiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9m IHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICovCi0JQ3JlYXRlSW5oZXJpdGFuY2UoYXR0 YWNocmVsLCByZWwsIHRydWUpOwotCi0JLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4g Ki8KLQlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBjbWQtPmJvdW5kKTsK LQotCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVzIGlu IHRoZSBwYXJ0aXRpb24uICovCi0JQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3cXVl dWUsIHJlbCwgYXR0YWNocmVsKTsKLQotCS8qIGFuZCB0cmlnZ2VycyAqLwotCUNsb25lUm93 VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKgotCSAqIENsb25l IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBz ZXR0aW5nIHVwCi0JICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24uCi0J ICovCi0JQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFjaHJl bCk7CisJLyogQXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFi bGUuICovCisJYXR0YWNoUGFydGl0aW9uVGFibGUod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCwg Y21kLT5ib3VuZCk7CiAKIAkvKgogCSAqIEdlbmVyYXRlIHBhcnRpdGlvbiBjb25zdHJhaW50 IGZyb20gdGhlIHBhcnRpdGlvbiBib3VuZCBzcGVjaWZpY2F0aW9uLgpAQCAtMjIwMDksMyAr MjIwNDYsNTg2IEBAIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBj aGFyICpzdG9yYWdlbW9kZSkKIAogCXJldHVybiBjc3RvcmFnZTsKIH0KKworLyoKKyAqIGdl dEF0dHJpYnV0ZXNMaXN0OiByZXR1cm4gbGlzdCBvZiBjb2x1bW5zIChDb2x1bW5EZWYpIGxp a2UgbW9kZWwgdGFibGUKKyAqIChtb2RlbFJlbCkKKyAqLworc3RhdGljIExpc3QgKgorZ2V0 QXR0cmlidXRlc0xpc3QoUmVsYXRpb24gbW9kZWxSZWwpCit7CisJQXR0ck51bWJlcglwYXJl bnRfYXR0bm87CisJVHVwbGVEZXNjCW1vZGVsRGVzYzsKKwlMaXN0CSAgICpjb2xMaXN0ID0g TklMOworCisJbW9kZWxEZXNjID0gUmVsYXRpb25HZXREZXNjcihtb2RlbFJlbCk7CisKKwlm b3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSBtb2RlbERlc2MtPm5hdHRz OworCQkgcGFyZW50X2F0dG5vKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1 dGUgPSBUdXBsZURlc2NBdHRyKG1vZGVsRGVzYywKKwkJCQkJCQkJCQkJCQlwYXJlbnRfYXR0 bm8gLSAxKTsKKwkJQ29sdW1uRGVmICAqZGVmOworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNv bHVtbnMgaW4gdGhlIHBhcmVudC4gKi8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVk KQorCQkJY29udGludWU7CisKKwkJZGVmID0gbWFrZUNvbHVtbkRlZihOYW1lU3RyKGF0dHJp YnV0ZS0+YXR0bmFtZSksIGF0dHJpYnV0ZS0+YXR0dHlwaWQsCisJCQkJCQkJYXR0cmlidXRl LT5hdHR0eXBtb2QsIGF0dHJpYnV0ZS0+YXR0Y29sbGF0aW9uKTsKKworCQlkZWYtPmlzX25v dF9udWxsID0gYXR0cmlidXRlLT5hdHRub3RudWxsOworCisJCS8qIEFkZCB0byBjb2x1bW4g bGlzdCAqLworCQljb2xMaXN0ID0gbGFwcGVuZChjb2xMaXN0LCBkZWYpOworCisJCS8qCisJ CSAqIEFsdGhvdWdoIHdlIGRvbid0IHRyYW5zZmVyIHRoZSBjb2x1bW4ncyBkZWZhdWx0L2dl bmVyYXRpb24KKwkJICogZXhwcmVzc2lvbiBub3csIHdlIG5lZWQgdG8gbWFyayBpdCBHRU5F UkFURUQgaWYgYXBwcm9wcmlhdGUuCisJCSAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRoYXNk ZWYgJiYgYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQpCisJCQlkZWYtPmdlbmVyYXRlZCA9IGF0 dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkOworCisJCWRlZi0+c3RvcmFnZSA9IGF0dHJpYnV0ZS0+ YXR0c3RvcmFnZTsKKworCQkvKiBMaWtld2lzZSwgY29weSBjb21wcmVzc2lvbiBpZiByZXF1 ZXN0ZWQgKi8KKwkJaWYgKENvbXByZXNzaW9uTWV0aG9kSXNWYWxpZChhdHRyaWJ1dGUtPmF0 dGNvbXByZXNzaW9uKSkKKwkJCWRlZi0+Y29tcHJlc3Npb24gPQorCQkJCXBzdHJkdXAoR2V0 Q29tcHJlc3Npb25NZXRob2ROYW1lKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKTsKKwkJ ZWxzZQorCQkJZGVmLT5jb21wcmVzc2lvbiA9IE5VTEw7CisJfQorCisJcmV0dXJuIGNvbExp c3Q7Cit9CisKKworLyoKKyAqIGNyZWF0ZVRhYmxlQ29uc3RyYWludHM6IGNyZWF0ZSBjb25z dHJhaW50cywgZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVyYXRlZAorICogdmFsdWVzIChwcm90 b3R5cGUgaXMgZnVuY3Rpb24gZXhwYW5kVGFibGVMaWtlQ2xhdXNlKS4KKyAqLworc3RhdGlj IHZvaWQKK2NyZWF0ZVRhYmxlQ29uc3RyYWludHMoUmVsYXRpb24gbW9kZWxSZWwsIFJlbGF0 aW9uIG5ld1JlbCkKK3sKKwlUdXBsZURlc2MJdHVwbGVEZXNjOworCVR1cGxlQ29uc3RyICpj b25zdHI7CisJQXR0ck1hcCAgICAqYXR0bWFwOworCUF0dHJOdW1iZXIJcGFyZW50X2F0dG5v OworCWludAkJCWNjbnVtOworCUxpc3QJICAgKmNvb2tlZENvbnN0cmFpbnRzID0gTklMOwor CisJdHVwbGVEZXNjID0gUmVsYXRpb25HZXREZXNjcihtb2RlbFJlbCk7CisJY29uc3RyID0g dHVwbGVEZXNjLT5jb25zdHI7CisKKwlpZiAoIWNvbnN0cikKKwkJcmV0dXJuOworCisJLyoK KwkgKiBDb25zdHJ1Y3QgYSBtYXAgZnJvbSB0aGUgTElLRSByZWxhdGlvbidzIGF0dG5vcyB0 byB0aGUgY2hpbGQgcmVsJ3MuCisJICogVGhpcyByZS1jaGVja3MgdHlwZSBtYXRjaCBldGMs IGFsdGhvdWdoIGl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSB0bworCSAqIGhhdmUgYSBmYWls dXJlIHNpbmNlIGJvdGggdGFibGVzIGFyZSBsb2NrZWQuCisJICovCisJYXR0bWFwID0gYnVp bGRfYXR0cm1hcF9ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobmV3UmVsKSwKKwkJCQkJCQkJ ICAgdHVwbGVEZXNjLAorCQkJCQkJCQkgICBmYWxzZSk7CisKKwkvKiBDeWNsZSBmb3IgZGVm YXVsdCB2YWx1ZXMuICovCisJZm9yIChwYXJlbnRfYXR0bm8gPSAxOyBwYXJlbnRfYXR0bm8g PD0gdHVwbGVEZXNjLT5uYXR0czsgcGFyZW50X2F0dG5vKyspCisJeworCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywKKwkJCQkJCQkJ CQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKworCQkvKiBJZ25vcmUgZHJvcHBlZCBjb2x1bW5z IGluIHRoZSBwYXJlbnQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGlzZHJvcHBlZCkKKwkJ CWNvbnRpbnVlOworCisJCS8qIENvcHkgZGVmYXVsdCwgaWYgcHJlc2VudCBhbmQgaXQgc2hv dWxkIGJlIGNvcGllZC4gKi8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aGFzZGVmKQorCQl7CisJ CQlOb2RlCSAgICp0aGlzX2RlZmF1bHQgPSBOVUxMOworCQkJQXR0ckRlZmF1bHQgKmF0dHJk ZWYgPSBjb25zdHItPmRlZnZhbDsKKwkJCWJvb2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJCWlu dDE2CQludW07CisJCQlOb2RlCSAgICpkZWY7CisKKwkJCS8qIEZpbmQgZGVmYXVsdCBpbiBj b25zdHJhaW50IHN0cnVjdHVyZSAqLworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb25zdHIt Pm51bV9kZWZ2YWw7IGkrKykKKwkJCXsKKwkJCQlpZiAoYXR0cmRlZltpXS5hZG51bSA9PSBw YXJlbnRfYXR0bm8pCisJCQkJeworCQkJCQl0aGlzX2RlZmF1bHQgPSBzdHJpbmdUb05vZGUo YXR0cmRlZltpXS5hZGJpbik7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmICh0 aGlzX2RlZmF1bHQgPT0gTlVMTCkKKwkJCQllbG9nKEVSUk9SLCAiZGVmYXVsdCBleHByZXNz aW9uIG5vdCBmb3VuZCBmb3IgYXR0cmlidXRlICVkIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJ CQkJCSBwYXJlbnRfYXR0bm8sIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKG1vZGVsUmVsKSk7 CisKKwkJCW51bSA9IGF0dG1hcC0+YXR0bnVtc1twYXJlbnRfYXR0bm8gLSAxXTsKKwkJCWRl ZiA9IG1hcF92YXJpYWJsZV9hdHRub3ModGhpc19kZWZhdWx0LCAxLCAwLCBhdHRtYXAsIElu dmFsaWRPaWQsICZmb3VuZF93aG9sZV9yb3cpOworCisJCQkvKgorCQkJICogUHJldmVudCB0 aGlzIGZvciB0aGUgc2FtZSByZWFzb24gYXMgZm9yIGNvbnN0cmFpbnRzIGJlbG93LiBOb3Rl CisJCQkgKiB0aGF0IGRlZmF1bHRzIGNhbm5vdCBjb250YWluIGFueSB2YXJzLCBzbyBpdCdz IE9LIHRoYXQgdGhlCisJCQkgKiBlcnJvciBtZXNzYWdlIHJlZmVycyB0byBnZW5lcmF0ZWQg Y29sdW1ucy4KKwkJCSAqLworCQkJaWYgKGZvdW5kX3dob2xlX3JvdykKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCQllcnJtc2coImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVu Y2UiKSwKKwkJCQkJCWVycmRldGFpbCgiR2VuZXJhdGlvbiBleHByZXNzaW9uIGZvciBjb2x1 bW4gXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVz XCIuIiwKKwkJCQkJCQkJIE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwKKwkJCQkJCQkJ IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKG1vZGVsUmVsKSkpOworCisJCQkvKiBBZGQgYSBw cmUtY29va2VkIGRlZmF1bHQgZXhwcmVzc2lvbi4gKi8KKwkJCVN0b3JlQXR0ckRlZmF1bHQo bmV3UmVsLCBudW0sIGRlZiwgdHJ1ZSk7CisJCX0KKwl9CisKKwkvKiBDeWNsZSBmb3IgQ0hF Q0sgY29uc3RyYWludHMuICovCisJZm9yIChjY251bSA9IDA7IGNjbnVtIDwgY29uc3RyLT5u dW1fY2hlY2s7IGNjbnVtKyspCisJeworCQljaGFyCSAgICpjY25hbWUgPSBjb25zdHItPmNo ZWNrW2NjbnVtXS5jY25hbWU7CisJCWNoYXIJICAgKmNjYmluID0gY29uc3RyLT5jaGVja1tj Y251bV0uY2NiaW47CisJCWJvb2wJCWNjZW5mb3JjZWQgPSBjb25zdHItPmNoZWNrW2NjbnVt XS5jY2VuZm9yY2VkOworCQlib29sCQljY25vaW5oZXJpdCA9IGNvbnN0ci0+Y2hlY2tbY2Nu dW1dLmNjbm9pbmhlcml0OworCQlOb2RlCSAgICpjY2Jpbl9ub2RlOworCQlib29sCQlmb3Vu ZF93aG9sZV9yb3c7CisJCUNvb2tlZENvbnN0cmFpbnQgKmNvb2tlZDsKKworCQljY2Jpbl9u b2RlID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyhzdHJpbmdUb05vZGUoY2NiaW4pLAorCQkJCQkJ CQkJCSAxLCAwLAorCQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJCQkJCQkJIEludmFsaWRPaWQs ICZmb3VuZF93aG9sZV9yb3cpOworCisJCS8qCisJCSAqIFdlIHJlamVjdCB3aG9sZS1yb3cg dmFyaWFibGVzIGJlY2F1c2UgdGhlIHdob2xlIHBvaW50IG9mIExJS0UgaXMKKwkJICogdGhh dCB0aGUgbmV3IHRhYmxlJ3Mgcm93dHlwZSBtaWdodCBsYXRlciBkaXZlcmdlIGZyb20gdGhl IHBhcmVudCdzLgorCQkgKiBTbywgd2hpbGUgdHJhbnNsYXRpb24gbWlnaHQgYmUgcG9zc2li bGUgcmlnaHQgbm93LCBpdCB3b3VsZG4ndCBiZQorCQkgKiBwb3NzaWJsZSB0byBndWFyYW50 ZWUgaXQgd291bGQgd29yayBpbiBmdXR1cmUuCisJCSAqLworCQlpZiAoZm91bmRfd2hvbGVf cm93KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygiY2Fubm90IGNvbnZlcnQgd2hvbGUtcm93 IHRhYmxlIHJlZmVyZW5jZSIpLAorCQkJCQllcnJkZXRhaWwoIkNvbnN0cmFpbnQgXCIlc1wi IGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVzXCIuIiwKKwkJ CQkJCQkgICBjY25hbWUsCisJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9k ZWxSZWwpKSk7CisKKwkJY29va2VkID0gKENvb2tlZENvbnN0cmFpbnQgKikgcGFsbG9jKHNp emVvZihDb29rZWRDb25zdHJhaW50KSk7CisJCWNvb2tlZC0+Y29udHlwZSA9IENPTlNUUl9D SEVDSzsKKwkJY29va2VkLT5jb25vaWQgPSBJbnZhbGlkT2lkOworCQljb29rZWQtPm5hbWUg PSBjY25hbWU7CisJCWNvb2tlZC0+YXR0bnVtID0gMDsKKwkJY29va2VkLT5leHByID0gY2Ni aW5fbm9kZTsKKwkJY29va2VkLT5pc19lbmZvcmNlZCA9IGNjZW5mb3JjZWQ7CisJCWNvb2tl ZC0+c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CisJCWNvb2tlZC0+aXNfbG9jYWwgPSB0cnVl OworCQljb29rZWQtPmluaGNvdW50ID0gMDsKKwkJY29va2VkLT5pc19ub19pbmhlcml0ID0g Y2Nub2luaGVyaXQ7CisJCWNvb2tlZENvbnN0cmFpbnRzID0gbGFwcGVuZChjb29rZWRDb25z dHJhaW50cywgY29va2VkKTsKKwl9CisKKwkvKiBTdG9yZSBDSEVDSyBjb25zdHJhaW50cy4g Ki8KKwlTdG9yZUNvbnN0cmFpbnRzKG5ld1JlbCwgY29va2VkQ29uc3RyYWludHMsIGZhbHNl KTsKKworCS8qIERvbid0IG5lZWQgdGhlIGNvb2tlZENvbnN0cmFpbnRzIGFueSBtb3JlLiAq LworCWxpc3RfZnJlZV9kZWVwKGNvb2tlZENvbnN0cmFpbnRzKTsKKworCS8qIFJlcHJvZHVj ZSBub3QtbnVsbCBjb25zdHJhaW50cy4gKi8KKwlpZiAoY29uc3RyLT5oYXNfbm90X251bGwp CisJeworCQlMaXN0CSAgICpubmNvbnN0cmFpbnRzOworCisJCW5uY29uc3RyYWludHMgPSBS ZWxhdGlvbkdldE5vdE51bGxDb25zdHJhaW50cyhSZWxhdGlvbkdldFJlbGlkKG1vZGVsUmVs KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCB0cnVlKTsKKworCQlBc3NlcnQobGlzdF9sZW5n dGgobm5jb25zdHJhaW50cykgPiAwKTsKKwkJQWRkUmVsYXRpb25Ob3ROdWxsQ29uc3RyYWlu dHMobmV3UmVsLCBubmNvbnN0cmFpbnRzLCBOVUxMKTsKKwl9Cit9CisKKworLyoKKyAqIGNy ZWF0ZVBhcnRpdGlvblRhYmxlOiBjcmVhdGUgdGFibGUgZm9yIGEgbmV3IHBhcnRpdGlvbiB3 aXRoIGdpdmVuIG5hbWUKKyAqIChuZXdQYXJ0TmFtZSkgbGlrZSB0YWJsZSAobW9kZWxSZWws IHBhcnRpdGlvbmVkIHRhYmxlKS4gb3duZXJJZCBpcworICogZGV0ZXJtaW5lZCBieSB0aGUg cGFydGl0aW9uIG9uIHdoaWNoIHRoZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkLCBzbyBpdAor ICogaXMgcGFzc2VkIHNlcGFyYXRlbHkuCisgKgorICogQWxzbywgdGhpcyBmdW5jdGlvbiBz ZXRzIHRoZSBuZXcgcGFydGl0aW9uIGFjY2VzcyBtZXRob2Qgc2FtZSBhcyBwYXJlbnQKKyAq IHRhYmxlIGFjY2VzcyBtZXRob2RzIChzaW1pbGFybHkgdG8gQ1JFQVRFIFRBQkxFIC4uLiBQ QVJUSVRJT04gT0YpLiAgSXQKKyAqIGNoZWNrcyB0aGF0IHBhcmVudCBhbmQgY2hpbGQgdGFi bGVzIGhhdmUgY29tcGF0aWJsZSBwZXJzaXN0ZW5jZS4KKyAqCisgKiBGdW5jdGlvbiByZXR1 cm5zIHRoZSBjcmVhdGVkIHJlbGF0aW9uIChsb2NrZWQgaW4gQWNjZXNzRXhjbHVzaXZlTG9j ayBtb2RlKS4KKyAqLworc3RhdGljIFJlbGF0aW9uCitjcmVhdGVQYXJ0aXRpb25UYWJsZShS YW5nZVZhciAqbmV3UGFydE5hbWUsIFJlbGF0aW9uIG1vZGVsUmVsLCBPaWQgb3duZXJJZCkK K3sKKwlSZWxhdGlvbgluZXdSZWw7CisJT2lkCQkJbmV3UmVsSWQ7CisJVHVwbGVEZXNjCWRl c2NyaXB0b3I7CisJTGlzdAkgICAqY29sTGlzdCA9IE5JTDsKKwlPaWQJCQlyZWxhbUlkOwor CU9pZAkJCW5hbWVzcGFjZUlkOworCisJLyogSWYgZXhpc3RpbmcgcmVsIGlzIHRlbXAsIGl0 IG11c3QgYmVsb25nIHRvIHRoaXMgc2Vzc2lvbiAqLworCWlmIChtb2RlbFJlbC0+cmRfcmVs LT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QICYmCisJCSFtb2RlbFJl bC0+cmRfaXNsb2NhbHRlbXApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYXMg cGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBvZiBhbm90aGVyIHNlc3Npb24iKSk7 CisKKwkvKiBMb29rIHVwIGluaGVyaXRhbmNlIGFuY2VzdG9ycyBhbmQgZ2VuZXJhdGUgcmVs YXRpb24gc2NoZW1hLiAqLworCWNvbExpc3QgPSBnZXRBdHRyaWJ1dGVzTGlzdChtb2RlbFJl bCk7CisKKwkvKiBDcmVhdGUgYSB0dXBsZSBkZXNjcmlwdG9yIGZyb20gdGhlIHJlbGF0aW9u IHNjaGVtYS4gKi8KKwlkZXNjcmlwdG9yID0gQnVpbGREZXNjRm9yUmVsYXRpb24oY29sTGlz dCk7CisKKwkvKiBMb29rIHVwIHRoZSBhY2Nlc3MgbWV0aG9kIGZvciBuZXcgcmVsYXRpb24u ICovCisJcmVsYW1JZCA9IChtb2RlbFJlbC0+cmRfcmVsLT5yZWxhbSAhPSBJbnZhbGlkT2lk KSA/IG1vZGVsUmVsLT5yZF9yZWwtPnJlbGFtIDogSEVBUF9UQUJMRV9BTV9PSUQ7CisKKwkv KiBMb29rIHVwIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggd2UgYXJlIHN1cHBvc2VkIHRvIGNy ZWF0ZSB0aGUgcmVsYXRpb24uICovCisJbmFtZXNwYWNlSWQgPQorCQlSYW5nZVZhckdldEFu ZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UobmV3UGFydE5hbWUsIE5vTG9jaywgTlVMTCk7CisK KwkvKiBDcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5ld1JlbElkID0gaGVhcF9jcmVhdGVf d2l0aF9jYXRhbG9nKG5ld1BhcnROYW1lLT5yZWxuYW1lLAorCQkJCQkJCQkJCW5hbWVzcGFj ZUlkLAorCQkJCQkJCQkJCW1vZGVsUmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsCisJCQkJ CQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUlu dmFsaWRPaWQsCisJCQkJCQkJCQkJb3duZXJJZCwKKwkJCQkJCQkJCQlyZWxhbUlkLAorCQkJ CQkJCQkJCWRlc2NyaXB0b3IsCisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCVJFTEtJTkRf UkVMQVRJT04sCisJCQkJCQkJCQkJbmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlLAorCQkJ CQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCU9OQ09NTUlUX05P T1AsCisJCQkJCQkJCQkJKERhdHVtKSAwLAorCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJ YWxsb3dTeXN0ZW1UYWJsZU1vZHMsCisJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJSW52 YWxpZE9pZCwKKwkJCQkJCQkJCQlOVUxMKTsKKworCS8qCisJICogV2UgbXVzdCBidW1wIHRo ZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3bHktY3JlYXRlZCByZWxhdGlvbgor CSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5pbmcuCisJICovCisJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKworCS8qCisJICogT3BlbiB0aGUgbmV3IHBhcnRpdGlvbiB3aXRoIG5v IGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlCisJICogQWNjZXNzRXhjbHVzaXZlTG9j ayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCisJICovCisJbmV3UmVsID0gdGFibGVf b3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKKworCS8qCisJICogV2UgaW50ZW5kZWQgdG8gY3Jl YXRlIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyB0aGUKKwkg KiBwYXJlbnQgdGFibGUsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSB0 aGF0IG1pZ2h0IGJlCisJICogYWZmZWN0ZWQgYnkgdGhlIHNlYXJjaF9wYXRoLiAgSWYgdGhl IHBhcmVudCBpcyBwZXJtYW5lbnQsIHNvIG11c3QgYmUKKwkgKiBhbGwgb2YgaXRzIHBhcnRp dGlvbnMuCisJICovCisJaWYgKG1vZGVsUmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlICE9 IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJbmV3UmVsLT5yZF9yZWwtPnJlbHBlcnNpc3Rl bmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJy Y29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBj cmVhdGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCBy ZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShtb2Rl bFJlbCkpKTsKKworCS8qIFBlcm1hbmVudCByZWxzIGNhbm5vdCBiZSBwYXJ0aXRpb25zIGJl bG9uZ2luZyB0byB0ZW1wb3JhcnkgcGFyZW50ICovCisJaWYgKG5ld1JlbC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QICYmCisJCW1vZGVsUmVsLT5y ZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJ CQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0 aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShtb2RlbFJlbCkpKTsKKworCS8qIENyZWF0ZSBjb25zdHJhaW50cywg ZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVyYXRlZCB2YWx1ZXMgKi8KKwljcmVhdGVUYWJsZUNv bnN0cmFpbnRzKG1vZGVsUmVsLCBuZXdSZWwpOworCisJcmV0dXJuIG5ld1JlbDsKK30KKwor LyoKKyAqIG1vdmVNZXJnZWRUYWJsZXNSb3dzOiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVy Z2VkIChtZXJnaW5nUGFydGl0aW9uc0xpc3QpCisgKiBvZiB0aGUgcGFydGl0aW9uZWQgdGFi bGUgKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIHRoZSBuZXcgcGFydGl0aW9uCisgKiAobmV3 UGFydFJlbCkuCisgKi8KK3N0YXRpYyB2b2lkCittb3ZlTWVyZ2VkVGFibGVzUm93cyhSZWxh dGlvbiByZWwsIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zTGlzdCwKKwkJCQkJIFJlbGF0aW9u IG5ld1BhcnRSZWwpCit7CisJQ29tbWFuZElkCW15Y2lkOworCisJLyogVGhlIEZTTSBpcyBl bXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlvbnMg PSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlCdWxr SW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0 aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKworCW15Y2lkID0gR2V0Q3Vy cmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUg Zm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0gR2V0QnVsa0luc2VydFN0 YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJZHN0c2xv dCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKG5ld1BhcnRS ZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MobmV3UGFydFJlbCkpOwor CUV4ZWNTdG9yZUFsbE51bGxUdXBsZShkc3RzbG90KTsKKworCWZvcmVhY2gobGlzdHB0ciwg bWVyZ2luZ1BhcnRpdGlvbnNMaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlv biA9IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIpOworCQlUdXBsZVRhYmxlU2xvdCAqc3Jj c2xvdDsKKwkJVHVwbGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJCVRhYmxlU2NhbkRl c2Mgc2NhbjsKKwkJU25hcHNob3QJc25hcHNob3Q7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNs b3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihtZXJnaW5nUGFydGl0aW9uKSwKKwkJCQkJCQkJ CQkgICB0YWJsZV9zbG90X2NhbGxiYWNrcyhtZXJnaW5nUGFydGl0aW9uKSk7CisKKwkJLyoK KwkJICogTWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2YgbWVyZ2VkIHBh cnRpdGlvbiB0byBuZXcKKwkJICogcGFydGl0aW9uLgorCQkgKi8KKwkJdHVwbGVfbWFwID0g Y29udmVydF90dXBsZXNfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKG1lcmdpbmdQYXJ0aXRp b24pLAorCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IobmV3UGFydFJlbCkpOworCisJ CS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMKTsKKworCQl3aGlsZSAodGFi bGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xv dCkpCisJCXsKKwkJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90OworCisJCQkvKiBFeHRy YWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUuICovCisJCQlzbG90X2dldGFsbGF0dHJzKHNyY3Ns b3QpOworCisJCQlpZiAodHVwbGVfbWFwKQorCQkJeworCQkJCS8qIE5lZWQgdG8gdXNlIG1h cCB0byBjb3B5IGF0dHJpYnV0ZXMuICovCisJCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0 cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJNYXAsIHNyY3Nsb3QsIGRzdHNsb3QpOworCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8K KwkJCQlpbnNlcnRzbG90ID0gZHN0c2xvdDsKKworCQkJCUV4ZWNDbGVhclR1cGxlKGluc2Vy dHNsb3QpOworCisJCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3Qt PnR0c192YWx1ZXMsCisJCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZh bGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRz X2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7 CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCQl9CisKKwkJ CS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxhdGlvbi4gKi8KKwkJCXRh YmxlX3R1cGxlX2luc2VydChuZXdQYXJ0UmVsLCBpbnNlcnRzbG90LCBteWNpZCwKKwkJCQkJ CQkgICB0aV9vcHRpb25zLCBiaXN0YXRlKTsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKKwkJfQorCisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVnaXN0ZXJTbmFwc2hv dChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVfY29udmVyc2lvbl9t YXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Ns b3QpOworCX0KKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QoZHN0c2xvdCk7CisJ RnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2lu c2VydChuZXdQYXJ0UmVsLCB0aV9vcHRpb25zKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxF IDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TIDxwYXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0 aW9uLW5hbWU+CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJ CSAgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4 dCkKK3sKKwlSZWxhdGlvbgluZXdQYXJ0UmVsOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisJ TGlzdAkgICAqbWVyZ2luZ1BhcnRpdGlvbnNMaXN0ID0gTklMOworCU9pZAkJCWRlZmF1bHRQ YXJ0T2lkOworCU9pZAkJCW5hbWVzcGFjZUlkOworCU9pZAkJCWV4aXN0aW5nUmVsaWQ7CisJ T2lkCQkJb3duZXJJZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJc2F2ZV91c2VyaWQ7CisJaW50 CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKworCS8qCisJ ICogTG9jayBhbGwgbWVyZ2VkIHBhcnRpdGlvbnMsIGNoZWNrIHRoZW0gYW5kIGNyZWF0ZSBs aXN0IHdpdGggcGFydGl0aW9ucworCSAqIGNvbnRleHRzLgorCSAqLworCWZvcmVhY2gobGlz dHB0ciwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VW YXIgKikgbGZpcnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgltZXJnaW5nUGFydGl0aW9uOwor CisJCS8qCisJCSAqIFdlIGFyZSBnb2luZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0aGlzIHBh cnRpdGlvbjogbmVlZCB0byB1c2UKKwkJICogZXhjbHVzaXZlIGxvY2sgZm9yIHByZXZlbnRp bmcgRE1MLXF1ZXJpZXMgdG8gdGhlIHBhcnRpdGlvbi4KKwkJICovCisJCW1lcmdpbmdQYXJ0 aXRpb24gPSB0YWJsZV9vcGVucnYobmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJ aWYgKE9pZElzVmFsaWQob3duZXJJZCkpCisJCXsKKwkJCS8qIERvIHRoZSBwYXJ0aXRpb25z IGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnM/ICovCisJCQlpZiAob3duZXJJ ZCAhPSBtZXJnaW5nUGFydGl0aW9uLT5yZF9yZWwtPnJlbG93bmVyKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJCWVycm1zZygicGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQg b3duZXJzIikpOworCQl9CisJCWVsc2UKKwkJCW93bmVySWQgPSBtZXJnaW5nUGFydGl0aW9u LT5yZF9yZWwtPnJlbG93bmVyOworCisJCS8qIFN0b3JlIGEgbmV4dCBtZXJnaW5nIHBhcnRp dGlvbiBpbnRvIHRoZSBsaXN0LiAqLworCQltZXJnaW5nUGFydGl0aW9uc0xpc3QgPSBsYXBw ZW5kKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCwKKwkJCQkJCQkJCQltZXJnaW5nUGFydGl0aW9u KTsKKwl9CisKKwkvKgorCSAqIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3ZSBh cmUgc3VwcG9zZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRpb24sCisJICogY2hlY2sgd2UgaGF2 ZSBwZXJtaXNzaW9uIHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdCBhZ2FpbnN0IGNvbmN1cnJl bnQKKwkgKiBkcm9wLCBhbmQgbWFyayBzdG10LT5yZWxhdGlvbiBhcyBSRUxQRVJTSVNURU5D RV9URU1QIGlmIGEgdGVtcG9yYXJ5CisJICogbmFtZXNwYWNlIGlzIHNlbGVjdGVkLgorCSAq LworCWNtZC0+bmFtZS0+cmVscGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lz dGVuY2U7CisJbmFtZXNwYWNlSWQgPQorCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25O YW1lc3BhY2UoY21kLT5uYW1lLCBOb0xvY2ssIE5VTEwpOworCisJLyoKKwkgKiBDaGVjayBp ZiB0aGlzIG5hbWUgaXMgYWxyZWFkeSB0YWtlbi4gIFRoaXMgaGVscHMgdXMgdG8gZGV0ZWN0 IHRoZQorCSAqIHNpdHVhdGlvbiB3aGVuIG9uZSBvZiB0aGUgbWVyZ2luZyBwYXJ0aXRpb25z IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZQorCSAqIG5ldyBwYXJ0aXRpb24uICBPdGhlcndp c2UsIHRoaXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgYnV0IGNhdGNoaW5nCisJICog dGhpcyBoZXJlIGFsbG93cyB1cyB0byBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkg Ki8KKwlleGlzdGluZ1JlbGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQoY21kLT5uYW1lLT5yZWxu YW1lLCBuYW1lc3BhY2VJZCk7CisKKwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkK Kwl7CisJCVJlbGF0aW9uCXNhbWVOYW1lUGFydGl0aW9uID0gTlVMTDsKKworCQlmb3JlYWNo X3B0cihSZWxhdGlvbkRhdGEsIG1lcmdpbmdQYXJ0aXRpb24sIG1lcmdpbmdQYXJ0aXRpb25z TGlzdCkKKwkJeworCQkJaWYgKFJlbGF0aW9uR2V0UmVsaWQobWVyZ2luZ1BhcnRpdGlvbikg PT0gZXhpc3RpbmdSZWxpZCkKKwkJCXsKKwkJCQlzYW1lTmFtZVBhcnRpdGlvbiA9IG1lcmdp bmdQYXJ0aXRpb247CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoc2FtZU5hbWVQ YXJ0aXRpb24pCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgbmV3IHBhcnRpdGlvbiBoYXMgdGhl IHNhbWUgbmFtZSBhcyBvbmUgb2YgbWVyZ2luZworCQkJICogcGFydGl0aW9ucy4KKwkJCSAq LworCQkJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxFTl07CisKKwkJCS8qIEdlbmVyYXRl IHRlbXBvcmFyeSBuYW1lLiAqLworCQkJc3ByaW50Zih0bXBSZWxOYW1lLCAibWVyZ2UtJXUt JVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVByb2NQaWQpOworCisJCQkvKgor CQkJICogUmVuYW1lIHRoZSBleGlzdGluZyBwYXJ0aXRpb24gd2l0aCBhIHRlbXBvcmFyeSBu YW1lLCBsZWF2aW5nIGl0CisJCQkgKiBmcmVlIGZvciB0aGUgbmV3IHBhcnRpdGlvbi4gIFdl IGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB0aGlzCisJCQkgKiBpbiB0aGUgZnV0dXJlIGJl Y2F1c2Ugd2UncmUgZ29pbmcgdG8gZXZlbnR1YWxseSBkcm9wIHRoZQorCQkJICogZXhpc3Rp bmcgcGFydGl0aW9uIGFueXdheS4KKwkJCSAqLworCQkJUmVuYW1lUmVsYXRpb25JbnRlcm5h bChSZWxhdGlvbkdldFJlbGlkKHNhbWVOYW1lUGFydGl0aW9uKSwKKwkJCQkJCQkJICAgdG1w UmVsTmFtZSwgZmFsc2UsIGZhbHNlKTsKKworCQkJLyoKKwkJCSAqIFdlIG11c3QgYnVtcCB0 aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIG5ldyBwYXJ0aXRpb24KKwkJCSAqIHR1 cGxlIHZpc2libGUgZm9yIHJlbmFtZS4KKwkJCSAqLworCQkJQ29tbWFuZENvdW50ZXJJbmNy ZW1lbnQoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQllcnJtc2coInJlbGF0aW9u IFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIGNtZC0+bmFtZS0+cmVsbmFtZSkpOworCQl9CisJ fQorCisJLyogRGV0YWNoIGFsbCBtZXJnZWQgcGFydGl0aW9ucy4gKi8KKwlkZWZhdWx0UGFy dE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFy dGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKKwlmb3JlYWNoKGxpc3RwdHIsIG1lcmdpbmdQYXJ0 aXRpb25zTGlzdCkKKwl7CisJCVJlbGF0aW9uCW1lcmdpbmdQYXJ0aXRpb24gPSAoUmVsYXRp b24pIGxmaXJzdChsaXN0cHRyKTsKKworCQkvKiBSZW1vdmUgdGhlIHBnX2luaGVyaXRzIHJv dyBmaXJzdC4gKi8KKwkJUmVtb3ZlSW5oZXJpdGFuY2UobWVyZ2luZ1BhcnRpdGlvbiwgcmVs LCBmYWxzZSk7CisJCS8qIERvIHRoZSBmaW5hbCBwYXJ0IG9mIGRldGFjaGluZy4gKi8KKwkJ RGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCBtZXJnaW5nUGFydGl0aW9uLCBmYWxzZSwg ZGVmYXVsdFBhcnRPaWQpOworCX0KKworCS8qIENyZWF0ZSB0YWJsZSBmb3IgbmV3IHBhcnRp dGlvbiwgdXNlIHBhcnRpdGlvbmVkIHRhYmxlIGFzIG1vZGVsLiAqLworCUFzc2VydChPaWRJ c1ZhbGlkKG93bmVySWQpKTsKKwluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUo Y21kLT5uYW1lLCByZWwsIG93bmVySWQpOworCisJLyoKKwkgKiBTd2l0Y2ggdG8gdGhlIHRh YmxlIG93bmVyJ3MgdXNlcmlkLCBzbyB0aGF0IGFueSBpbmRleCBmdW5jdGlvbnMgYXJlIHJ1 bgorCSAqIGFzIHRoYXQgdXNlci4gIEFsc28gbG9jayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0 ZWQgb3BlcmF0aW9ucyBhbmQKKwkgKiBhcnJhbmdlIHRvIG1ha2UgR1VDIHZhcmlhYmxlIGNo YW5nZXMgbG9jYWwgdG8gdGhpcyBjb21tYW5kLgorCSAqCisJICogTmVlZCB0byBkbyBpdCBh ZnRlciBkZXRlcm1pbmUgbmFtZXNwYWNlIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlIGNhbGwu CisJICovCisJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3Nl Y19jb250ZXh0KTsKKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KG93bmVySWQsCisJCQkJCQkg ICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwor CXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQ YXRoKCk7CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQgcGFydGl0aW9ucyB0byBuZXcg cGFydGl0aW9uLiAqLworCW1vdmVNZXJnZWRUYWJsZXNSb3dzKHJlbCwgbWVyZ2luZ1BhcnRp dGlvbnNMaXN0LCBuZXdQYXJ0UmVsKTsKKworCS8qIERyb3AgdGhlIGN1cnJlbnQgcGFydGl0 aW9ucyBiZWZvcmUgYXR0YWNoaW5nIHRoZSBuZXcgb25lLiAqLworCWZvcmVhY2gobGlzdHB0 ciwgbWVyZ2luZ1BhcnRpdGlvbnNMaXN0KQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7 CisJCVJlbGF0aW9uCW1lcmdpbmdQYXJ0aXRpb24gPSAoUmVsYXRpb24pIGxmaXJzdChsaXN0 cHRyKTsKKworCQkvKiBHZXQgcmVsYXRpb24gaWQgYmVmb3JlIHRhYmxlX2Nsb3NlKCkgY2Fs bC4gKi8KKwkJb2JqZWN0Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChtZXJnaW5nUGFy dGl0aW9uKTsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9i amVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21t aXQuICovCisJCXRhYmxlX2Nsb3NlKG1lcmdpbmdQYXJ0aXRpb24sIE5vTG9jayk7CisKKwkJ cGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCX0KKwlsaXN0 X2ZyZWUobWVyZ2luZ1BhcnRpdGlvbnNMaXN0KTsKKworCS8qCisJICogQXR0YWNoIGEgbmV3 IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuIHdxdWV1ZSA9IE5VTEw6CisJ ICogdmVyaWZpY2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdCBuZWVk ZWQuCisJICovCisJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVs LCBjbWQtPmJvdW5kKTsKKworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwor CXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisKKwkvKiBSb2xsIGJhY2sgYW55 IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLworCUF0RU9YYWN0 X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOworCisJLyogUmVzdG9yZSB1c2VyaWQgYW5k IHNlY3VyaXR5IGNvbnRleHQgKi8KKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNl cmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDBiNTY1MjA3 MWQuLjQ3ODIzZWY3YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNzU2LDcgKzc1Niw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VU X1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9X TkVSCiAKLQlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBB U1NJTkcgUEFTU1dPUkQgUEFUSAorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElB TCBQQVJUSVRJT04gUEFSVElUSU9OUyBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKIAlQRVJJT0Qg UExBQ0lORyBQTEFOIFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJ T04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdF UyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04K QEAgLTIzMzIsNiArMjMzMiw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUg PSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQt PmJvdW5kID0gJDQ7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29u Y3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIz NDYsNiArMjM0Nyw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9E ZXRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5k ID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJy ZW50ID0gJDQ7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMjM1OSw2ICsy MzYxLDIxIEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQ YXJ0aXRpb25GaW5hbGl6ZTsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91 bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOworCQkJCQljbWQtPmNvbmN1 cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9 IChOb2RlICopIG47CisJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBB UlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCisJCQl8IE1FUkdFIFBBUlRJ VElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUK KwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21k KTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOwor CisJCQkJCW4tPnN1YnR5cGUgPSBBVF9NZXJnZVBhcnRpdGlvbnM7CisJCQkJCWNtZC0+bmFt ZSA9ICQ3OworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9 ICQ0OwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5v ZGUgKikgY21kOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC0yMzc1LDYgKzIzOTIsNyBA QCBpbmRleF9wYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFy dGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7 CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZh bHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTE3OTA5LDYgKzE3OTI3 LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAog CQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBB U1NXT1JECiAJCQl8IFBBVEgKQEAgLTE4NTM2LDYgKzE4NTU1LDcgQEAgYmFyZV9sYWJlbF9r ZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJ CXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDYyMDE1NDMxZmQuLjBkM2Fi MzVhNTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzIsNiArMzIs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5k ZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJh aW50LmgiCkBAIC01OCw2ICs1OSw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZXIuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKKyNpbmNs dWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3 cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKQEAgLTM0ODgsNiArMzQ5MSwxMTkgQEAgdHJhbnNmb3JtUnVsZVN0bXQo UnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogfQogCiAKKy8qCisg KiBjaGVja1BhcnRpdGlvbgorICoJCUNoZWNrIHRoYXQgcGFydFJlbE9pZCBpcyBhbiBvaWQg b2YgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgcmVsCisgKi8KK3N0YXRpYyB2b2lk CitjaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkKQoreworCVJl bGF0aW9uCXBhcnRSZWw7CisKKwlwYXJ0UmVsID0gcmVsYXRpb25fb3BlbihwYXJ0UmVsT2lk LCBBY2Nlc3NTaGFyZUxvY2spOworCisJaWYgKHBhcnRSZWwtPnJkX3JlbC0+cmVsa2luZCAh PSBSRUxLSU5EX1JFTEFUSU9OKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJS Q09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEg dGFibGUiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSkpOwor CisJaWYgKCFwYXJ0UmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJy bXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIiwKKwkJCQkJICAgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocGFydFJlbCkpKTsKKworCWlmIChnZXRfcGFydGl0aW9uX3BhcmVudChw YXJ0UmVsT2lkLCBmYWxzZSkgIT0gUmVsYXRpb25HZXRSZWxpZChyZWwpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAorCQkJCWVy cm1zZygicmVsYXRpb24gXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiBc IiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwKKwkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOworCisJLyogUGVybWlzc2lv bnMgY2hlY2tzICovCisJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJlbGF0aW9u SWQsIFJlbGF0aW9uR2V0UmVsaWQocGFydFJlbCksIEdldFVzZXJJZCgpKSkKKwkJYWNsY2hl Y2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKHBhcnRS ZWwtPnJkX3JlbC0+cmVsa2luZCksCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHBhcnRSZWwpKTsKKworCXJlbGF0aW9uX2Nsb3NlKHBhcnRSZWwsIEFjY2Vzc1NoYXJlTG9j ayk7Cit9CisKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZQorICoJCUFu YWx5emUgdGhlIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNvbW1hbmQKKyAq CisgKiBEb2VzIHNpbXBsZSBjaGVja3MgZm9yIG1lcmdlZCBwYXJ0aXRpb25zLiBDYWxjdWxh dGVzIGJvdW5kIG9mIHJlc3VsdGluZworICogcGFydGl0aW9uLgorICovCitzdGF0aWMgdm9p ZAordHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4 dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQoreworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOwor CU9pZAkJCXBhcnRPaWQ7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7CisJUGFydGl0 aW9uS2V5IGtleTsKKwljaGFyCQlzdHJhdGVneTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAor CQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlzRGVmYXVsdFBhcnQgPSBmYWxzZTsKKwlMaXN0 CSAgICpwYXJ0T2lkcyA9IE5JTDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5 KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisK KwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0hBU0gpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJZXJybXNnKCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3Qg YmUgbWVyZ2VkIikpOworCisJLyogSXMgY3VycmVudCBwYXJ0aXRpb24gYSBERUZBVUxUIHBh cnRpdGlvbj8gKi8KKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3Bh cnRkZXNjKAorCQkJCQkJCQkJCQkJICAgUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVu dCwgdHJ1ZSkpOworCisJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7 CisJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIpOwor CisJCS8qIFBhcnRpdGlvbnMgaW4gdGhlIGxpc3Qgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5h bWVzLiAqLworCQlmb3JfZWFjaF9jZWxsKGxpc3RwdHIyLCBwYXJ0Y21kLT5wYXJ0bGlzdCwg bG5leHQocGFydGNtZC0+cGFydGxpc3QsIGxpc3RwdHIpKQorCQl7CisJCQlSYW5nZVZhciAg ICpuYW1lMiA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cjIpOworCisJCQlpZiAoZXF1 YWwobmFtZSwgbmFtZTIpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVS UkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGgg bmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlw YXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUyLT5sb2NhdGlvbikpOworCQl9 CisKKwkJLyoKKwkJICogU2VhcmNoIERFRkFVTFQgcGFydGl0aW9uIGluIHRoZSBsaXN0LiBM b2NrIHBhcnRpdGlvbnMgYmVmb3JlCisJCSAqIGNhbGN1bGF0aW5nIHRoZSBib3VuZGFyeSBm b3IgcmVzdWx0aW5nIHBhcnRpdGlvbi4KKwkJICovCisJCXBhcnRPaWQgPSBSYW5nZVZhckdl dFJlbGlkKG5hbWUsIEFjY2Vzc1NoYXJlTG9jaywgZmFsc2UpOworCQlpZiAocGFydE9pZCA9 PSBkZWZhdWx0UGFydE9pZCkKKwkJCWlzRGVmYXVsdFBhcnQgPSB0cnVlOworCisJCWNoZWNr UGFydGl0aW9uKHBhcmVudCwgcGFydE9pZCk7CisKKwkJcGFydE9pZHMgPSBsYXBwZW5kX29p ZChwYXJ0T2lkcywgcGFydE9pZCk7CisJfQorCisJLyogQWxsb2NhdGUgYm91bmQgb2YgcmVz dWx0aW5nIHBhcnRpdGlvbi4gKi8KKwlBc3NlcnQocGFydGNtZC0+Ym91bmQgPT0gTlVMTCk7 CisJcGFydGNtZC0+Ym91bmQgPSBtYWtlTm9kZShQYXJ0aXRpb25Cb3VuZFNwZWMpOworCisJ LyogRmlsbCBwYXJ0aXRpb24gYm91bmQuICovCisJcGFydGNtZC0+Ym91bmQtPnN0cmF0ZWd5 ID0gc3RyYXRlZ3k7CisJcGFydGNtZC0+Ym91bmQtPmxvY2F0aW9uID0gLTE7CisJcGFydGNt ZC0+Ym91bmQtPmlzX2RlZmF1bHQgPSBpc0RlZmF1bHRQYXJ0OworCWlmICghaXNEZWZhdWx0 UGFydCkKKwkJY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UocGFyZW50LCBw YXJ0Y21kLT5wYXJ0bGlzdCwKKwkJCQkJCQkJCQkJcGFydE9pZHMsIHBhcnRjbWQtPmJvdW5k LAorCQkJCQkJCQkJCQljeHQtPnBzdGF0ZSk7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1BbHRl clRhYmxlU3RtdCAtCiAgKgkJcGFyc2UgYW5hbHlzaXMgZm9yIEFMVEVSIFRBQkxFCkBAIC0z NzY1LDYgKzM4ODEsMTkgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBB bHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBj bWQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQl7 CisJCQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQgKikgY21kLT5k ZWY7CisKKwkJCQkJaWYgKGxpc3RfbGVuZ3RoKHBhcnRjbWQtPnBhcnRsaXN0KSA8IDIpCisJ CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCWVycm1zZygibGlzdCBvZiBuZXcgcGFydGl0 aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMiKSk7CisJCQkJCXRyYW5z Zm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRz ID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRl ZmF1bHQ6CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMK aW5kZXggNGJkYzI5NDFlZi4uY2I3MTlmMWZmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5jCkBAIC0zMjE0LDggKzMyMTQsOSBAQCBjaGVja19uZXdfcGFydGl0 aW9uX2JvdW5kKGNoYXIgKnJlbG5hbWUsIFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCVBhcnRp dGlvblJhbmdlRGF0dW0gKmRhdHVtOwogCiAJCQkJCQkvKgotCQkJCQkJICogUG9pbnQgdG8g cHJvYmxlbWF0aWMga2V5IGluIHRoZSBsb3dlciBkYXR1bXMgbGlzdDsKLQkJCQkJCSAqIGlm IHdlIGhhdmUgZXF1YWxpdHksIHBvaW50IHRvIHRoZSBmaXJzdCBvbmUuCisJCQkJCQkgKiBQ b2ludCB0byBwcm9ibGVtYXRpYyBrZXkgaW4gdGhlIGxpc3Qgb2YgbG93ZXIKKwkJCQkJCSAq IGRhdHVtczsgaWYgd2UgaGF2ZSBlcXVhbGl0eSwgcG9pbnQgdG8gdGhlIGZpcnN0CisJCQkJ CQkgKiBvbmUuCiAJCQkJCQkgKi8KIAkJCQkJCWRhdHVtID0gY21wdmFsID09IDAgPyBsaW5p dGlhbChzcGVjLT5sb3dlcmRhdHVtcykgOgogCQkJCQkJCWxpc3RfbnRoKHNwZWMtPmxvd2Vy ZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOwpAQCAtNDk3NywzICs0OTc4LDIxMCBAQCBzYXRp c2ZpZXNfaGFzaF9wYXJ0aXRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9C T09MKHJvd0hhc2ggJSBtb2R1bHVzID09IHJlbWFpbmRlcik7CiB9CisKKy8qCisgKiBjaGVj a190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZ IFJBTkdFIHBhcnRpdGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9u IGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICogY2FsY3VsYXRlX3Bh cnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KKyAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMg dXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCisgKiBzZWNv bmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdoZW4KKyAq ICJkZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBw YXJ0aXRpb25zIGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9m IGZpcnN0X2JvdW5kIGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29u ZF9ib3VuZCBiZWNhdXNlIHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5j bHVkZWQgaW4KKyAqIERFRkFVTFQgcGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0 aXRpb25lZCB0YWJsZQorICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9u CisgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgorICogc2Vjb25k X25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIHNlY29uZF9ib3VuZDoJYm91 bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBv ZiBzcGxpdCBwYXJ0aXRpb25zIGlzIERFRkFVTFQKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRv IFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgorICov CitzdGF0aWMgdm9pZAorY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0 aW9uIHBhcmVudCwKKwkJCQkJCQkJICBSYW5nZVZhciAqZmlyc3RfbmFtZSwKKwkJCQkJCQkJ ICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZpcnN0X2JvdW5kLAorCQkJCQkJCQkgIFJhbmdlVmFy ICpzZWNvbmRfbmFtZSwKKwkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9i b3VuZCwKKwkJCQkJCQkJICBib29sIGRlZmF1bHRQYXJ0LAorCQkJCQkJCQkgIFBhcnNlU3Rh dGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpmaXJzdF91cHBlcjsKKwlQ YXJ0aXRpb25SYW5nZUJvdW5kICpzZWNvbmRfbG93ZXI7CisJaW50CQkJY21wdmFsOworCisJ QXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKwor CWZpcnN0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBmaXJz dF9ib3VuZC0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKwlzZWNvbmRfbG93ZXIgPSBtYWtlX29u ZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMs IHRydWUpOworCisJLyoKKwkgKiBsb3dlcjE9ZmFsc2UgKHRoZSBzZWNvbmQgdG8gbGFzdCBh cmd1bWVudCkgZm9yIGNvcnJlY3QgY29tcGFyaXNvbiBvZgorCSAqIGxvd2VyIGFuZCB1cHBl ciBib3VuZHMuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5w YXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXkt PnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgc2Vjb25kX2xvd2VyLT5kYXR1bXMsIHNlY29u ZF9sb3dlci0+a2luZCwKKwkJCQkJCQkJICBmYWxzZSwgZmlyc3RfdXBwZXIpOworCWlmICgo IWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDAp KQorCXsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRf Ym91bmQtPmxvd2VyZGF0dW1zKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygibG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3Vu ZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCXNlY29uZF9uYW1lLT5y ZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGdldF9wYXJ0 aXRpb25fYm91bmRfc3BlYworICoKKyAqIFJldHVybnMgZGVzY3JpcHRpb24gb2YgcGFydGl0 aW9uIHdpdGggT2lkICJwYXJ0T2lkIiBhbmQgbmFtZSAibmFtZSIuCisgKi8KK3N0YXRpYyBQ YXJ0aXRpb25Cb3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0 T2lkLCBSYW5nZVZhciAqbmFtZSkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWRh dHVtOworCWJvb2wJCWlzbnVsbDsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kc3BlYyA9 IE5VTEw7CisKKwkvKiBUcnkgZmV0Y2hpbmcgdGhlIHR1cGxlIGZyb20gdGhlIGNhdGNhY2hl LCBmb3Igc3BlZWQuICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBwYXJ0 T2lkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBuYW1lLT5y ZWxuYW1lKTsKKworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFJFTE9JRCwgdHVwbGUsCisJ CQkJCQkJQW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJJmlzbnVsbCk7CisJ aWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgInBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRp b24gXCIlc1wiIGlzIG51bGwiLAorCQkJIG5hbWUtPnJlbG5hbWUpOworCisJYm91bmRzcGVj ID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKworCWlmICgh SXNBKGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRTcGVjKSkKKwkJZWxvZyhFUlJPUiwgImV4 cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBu YW1lLT5yZWxuYW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcmV0dXJuIGJv dW5kc3BlYzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21l cmdlCisgKgorICogQ2FsY3VsYXRlcyB0aGUgYm91bmQgb2YgbWVyZ2VkIHBhcnRpdGlvbiAi c3BlYyIgYnkgdXNpbmcgdGhlIGJvdW5kcyBvZgorICogcGFydGl0aW9ucyB0byBiZSBtZXJn ZWQuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0TmFtZXM6 CQluYW1lcyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICogcGFydE9pZHM6CQlPaWRz IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBzcGVjIChvdXQpOgkJYm91bmRzIHNw ZWNpZmljYXRpb24gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2lu dGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24K KyAqLwordm9pZAorY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRp b24gcGFyZW50LAorCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJTGlzdCAq cGFydE9pZHMsCisJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJ CQlQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9u R2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsK KworCUFzc2VydCghc3BlYy0+aXNfZGVmYXVsdCk7CisKKwlzd2l0Y2ggKGtleS0+c3RyYXRl Z3kpCisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQlp bnQJCQlpOworCQkJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCQkJ aW50CQkJbnBhcnRzID0gbGlzdF9sZW5ndGgocGFydE9pZHMpOworCQkJCUxpc3QJICAgKmJv dW5kcyA9IE5JTDsKKworCQkJCWxvd2VyX2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5k ICoqKQorCQkJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5k ICopKTsKKworCQkJCS8qCisJCQkJICogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJvdW5kcyBh bmQgbGlzdCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4KKwkJCQkgKi8KKwkJCQlm b3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCQkJeworCQkJCQlib3VuZCA9IGdldF9w YXJ0aXRpb25fYm91bmRfc3BlYyhsaXN0X250aF9vaWQocGFydE9pZHMsIGkpLAorCQkJCQkJ CQkJCQkJCSAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBpKSk7CisKKwkJCQkJ bG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGksIGJv dW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCQkJCWJvdW5kcyA9IGxhcHBlbmQoYm91bmRz LCBib3VuZCk7CisJCQkJfQorCisJCQkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMu ICovCisJCQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0 aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAs ICh2b2lkICopIGtleSk7CisKKwkJCQkvKiBSYW5nZXMgb2YgcGFydGl0aW9ucyBzaG91bGQg bm90IG92ZXJsYXAuICovCisJCQkJZm9yIChpID0gMTsgaSA8IG5wYXJ0czsgaSsrKQorCQkJ CXsKKwkJCQkJaW50CQkJaW5kZXggPSBsb3dlcl9ib3VuZHNbaV0tPmluZGV4OworCQkJCQlp bnQJCQlwcmV2X2luZGV4ID0gbG93ZXJfYm91bmRzW2kgLSAxXS0+aW5kZXg7CisKKwkJCQkJ Y2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwKKwkJCQkJCQkJCQkJ CQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIHByZXZfaW5kZXgpLAorCQkJ CQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHBy ZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnRO YW1lcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBs aXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCBwc3RhdGUp OworCQkJCX0KKworCQkJCS8qCisJCQkJICogTG93ZXIgYm91bmQgb2YgZmlyc3QgcGFydGl0 aW9uIGlzIHRoZSBsb3dlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJ CQkJICovCisJCQkJc3BlYy0+bG93ZXJkYXR1bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5k U3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1swXS0+aW5kZXgpKS0+bG93 ZXJkYXR1bXM7CisKKwkJCQkvKgorCQkJCSAqIFVwcGVyIGJvdW5kIG9mIGxhc3QgcGFydGl0 aW9uIGlzIHRoZSB1cHBlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJ CQkJICovCisJCQkJc3BlYy0+dXBwZXJkYXR1bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5k U3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1tucGFydHMgLSAxXS0+aW5k ZXgpKS0+dXBwZXJkYXR1bXM7CisKKwkJCQlwZnJlZShsb3dlcl9ib3VuZHMpOworCQkJCWxp c3RfZnJlZShib3VuZHMpOworCQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgUEFSVElUSU9O X1NUUkFURUdZX0xJU1Q6CisJCQl7CisJCQkJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCQkJ CSAgICpsaXN0cHRyMjsKKworCQkJCS8qIENvbnNvbGlkYXRlIGJvdW5kcyBmb3IgYWxsIHBh cnRpdGlvbnMgaW4gdGhlIGxpc3QuICovCisJCQkJZm9yYm90aChsaXN0cHRyLCBwYXJ0T2lk cywgbGlzdHB0cjIsIHBhcnROYW1lcykKKwkJCQl7CisJCQkJCVJhbmdlVmFyICAgKm5hbWUg PSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIyKTsKKwkJCQkJT2lkCQkJY3VyT2lkID0g bGZpcnN0X29pZChsaXN0cHRyKTsKKworCQkJCQlib3VuZCA9IGdldF9wYXJ0aXRpb25fYm91 bmRfc3BlYyhjdXJPaWQsIG5hbWUpOworCQkJCQlzcGVjLT5saXN0ZGF0dW1zID0gbGlzdF9j b25jYXQoc3BlYy0+bGlzdGRhdHVtcywgYm91bmQtPmxpc3RkYXR1bXMpOworCQkJCX0KKwkJ CQlicmVhazsKKwkJCX0KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+c3RyYXRlZ3kp OworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBlYzY1YWI3OWZlLi40YmYx NTYwYzg5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysr IGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yNzIxLDYgKzI3MjEsNyBA QCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJCQkJICAiT1dORVIg VE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQiLAogCQkJCQkgICJSRVBMSUNBIElE RU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkgICJERVRBQ0ggUEFSVElUSU9O IiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCisJCQkJCSAgIk1FUkdFIFBBUlRJVElP TlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRBQkxFIHh4eCBB REQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAi QUREIikpCkBAIC0yOTg3LDYgKzI5ODgsMTUgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50 IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJ VEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5h bWU+IE1FUkdFIFBBUlRJVElPTlMgKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkKKwl7CisJ CXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBMRVRFX1dJVEhf U0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOworCX0KKwllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0UiLCAiUEFS VElUSU9OUyIsICIoKikiKSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyIpOworCiAJLyogQUxU RVIgVEFCTEUgPG5hbWU+IE9GICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIk9GIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX2NvbXBvc2l0ZV9kYXRhdHlwZXMpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaApp bmRleCBkYmQzMzllOWRmLi5jMTMwYmMwYzM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL2hlYXAuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtMTE5 LDYgKzExOSw5IEBAIGV4dGVybiBMaXN0ICpBZGRSZWxhdGlvbk5vdE51bGxDb25zdHJhaW50 cyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICAgTGlzdCAqY29uc3RyYWludHMsCiAJCQkJ CQkJCQkJICAgTGlzdCAqb2xkX25vdG51bGxzKTsKIAorZXh0ZXJuIHZvaWQgU3RvcmVDb25z dHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3QgKmNvb2tlZF9jb25zdHJhaW50cywKKwkJCQkJ CQkgYm9vbCBpc19pbnRlcm5hbCk7CisKIGV4dGVybiB2b2lkIFJlbGF0aW9uQ2xlYXJNaXNz aW5nKFJlbGF0aW9uIHJlbCk7CiAKIGV4dGVybiB2b2lkIFN0b3JlQXR0ck1pc3NpbmdWYWwo UmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCBkZDAwYWI0MjBiLi4yMzBhNDJiOTY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC05NTMsMTQgKzk1MywyNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5n ZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCisvKgorICogUGFydGl0 aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlvbiBmb3IgQUxURVIgVEFCTEUg U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2luZ2xlUGFy dGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisKKwlSYW5nZVZhciAgICpuYW1lOwkJ CS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJ LyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCit9IFNpbmdsZVBhcnRpdGlvblNwZWM7 CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBB VFRBQ0gvREVUQUNIIFBBUlRJVElPTiBjb21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVjdCBQ YXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7CQkJ LyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaCAqLworCVJhbmdlVmFyICAg Km5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZSAq LwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFj aGluZyAqLworCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25zLCBm b3IgTUVSR0UvU1BMSVQKKwkJCQkJCQkJICogUEFSVElUSU9OIGNvbW1hbmQgKi8KIAlib29s CQljb25jdXJyZW50OwogfSBQYXJ0aXRpb25DbWQ7CiAKQEAgLTI0NzMsNiArMjQ4Niw3IEBA IHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFjaFBhcnRpdGlvbiwJCQkv KiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8qIERFVEFD SCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwgLyogREVUQUNI IFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX01lcmdlUGFydGl0aW9ucywJCQkvKiBNRVJH RSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFERCBJREVOVElUWSAq LwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29sdW1uIG9wdGlvbnMg Ki8KIAlBVF9Ecm9wSWRlbnRpdHksCQkJLyogRFJPUCBJREVOVElUWSAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3 bGlzdC5oCmluZGV4IGE0YWYzZjcxN2EuLjkwZThjZGRmOGIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKQEAgLTMzNyw2ICszMzcsNyBAQCBQR19LRVlXT1JEKCJwYXJhbWV0ZXIiLCBQQVJBTUVU RVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnNl ciIsIFBBUlNFUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicGFydGlhbCIsIFBBUlRJQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBBUlRJVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGFydGl0aW9ucyIsIFBBUlRJVElPTlMsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQ QVNTSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJw YXNzd29yZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwYXRoIiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggNjVmMTYxZjcx OC4uNjkwZDI1OTYxOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o CkBAIC0xNDMsNCArMTQzLDEwIEBAIGV4dGVybiBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVt X2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25f aGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAg IGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJuIHZvaWQgY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJ CQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCisJCQkJ CQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkJCQlQYXJzZVN0 YXRlICpwc3RhdGUpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSVEJPVU5EU19IICovCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91 dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjk4NDQ2YWFhYjUKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1l cmdlLm91dApAQCAtMCwwICsxLDE5OSBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vz c2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsK K3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJH RSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBf MjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0g J3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENP TU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0t LS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2Rp ZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMg czJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzog QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6 IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7Cisg aXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0 MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFi cyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz Mmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0 cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjog QkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3 aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1 OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU ICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4 dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAg ICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBz MmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBh cnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRw YXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBT RVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAor LS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4 dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxF IHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5U TyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBh cnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+Citz dGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAg ICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAx fHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMyaSBzMmMgczFicyBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUg dHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRP IHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFy dCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAg IAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8 dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYiBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFt ZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwg dHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVw IHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1 fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQz NSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBz MmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1l cmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0 cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8 dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1 ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMy YyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFM VEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8x MF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBV UERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGlu ZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgor c3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8 dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1 ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAK Kyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4 IGUzYzY2OWEyOWMuLjBkY2E2ODQ5NTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bl9zY2hlZHVsZQpAQCAtMTA3LDYgKzEwNyw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBk YXRlLTEKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRpdGlvbi1r ZXktdXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKK3Rlc3Q6IHBhcnRp dGlvbi1tZXJnZQogdGVzdDogcGxwZ3NxbC10b2FzdAogdGVzdDogY2x1c3Rlci1jb25mbGlj dAogdGVzdDogY2x1c3Rlci1jb25mbGljdC1wYXJ0aXRpb24KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYyBiL3NyYy90ZXN0L2lz b2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5kYzJiOWQzNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCkBAIC0wLDAgKzEs NTQgQEAKKyMgVmVyaWZ5IHRoYXQgTUVSR0Ugb3BlcmF0aW9uIGxvY2tzIERNTCBvcGVyYXRp b25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAKK3sKKyAgRFJPUCBUQUJMRSBJ RiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChpIGludCwgdCB0ZXh0KSBw YXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0cGFydF8wMF8xMCBQQVJU SVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworICBDUkVBVEUg VEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJUSVRJT04gT0Yg dHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRBQkxFIHRw YXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUsICd0 ZXh0MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScpOwor fQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9uIHMx CitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMW1lcmcJeyBBTFRFUiBUQUJMRSB0cGFydCBN RVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRf MDBfMjA7IH0KK3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKworc2Vzc2lvbiBzMgorc3RlcCBz MmIJeyBCRUdJTjsgfQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczJicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJ QUxJWkFCTEU7IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7IH0KK3N0ZXAgczJ1CXsgVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1v ZGlmJyB3aGVyZSBpID0gMTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsg U0VMRUNUICogRlJPTSB0cGFydDsgfQorCisKKyMgczIgaW5zZXJ0cyByb3cgaW50byB0YWJs ZS4gczEgc3RhcnRzIE1FUkdFIFBBUlRJVElPTlMgdGhlbgorIyBzMiBpcyB0cnlpbmcgdG8g dXBkYXRlIGluc2VydGVkIHJvdyBhbmQgd2FpdHMgdW50aWwgczEgZmluaXNoZXMKKyMgTUVS R0Ugb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYnJyIHMxbWVy ZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJzIHMx bWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnJyIHMyaSBzMmMg czFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJyciBzMmkg czJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJy ciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKKworcGVybXV0YXRp b24gczJicyBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0 YXRpb24gczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitw ZXJtdXRhdGlvbiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3Rf ZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMKaW5kZXggMTkzNjY5ZjJiYy4uN2RlNWRkYjg3OCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2Uu YworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVw YXJzZS5jCkBAIC0yOTYsNiArMjk2LDkgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21kaW5mbyhQ R19GVU5DVElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToK IAkJCQlzdHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKIAkJCQli cmVhazsKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXN0cnR5cGUgPSAiTUVS R0UgUEFSVElUSU9OUyI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUX0FkZElkZW50aXR5Ogog CQkJCXN0cnR5cGUgPSAiQUREIElERU5USVRZIjsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hMjQ4NzQ3OThkCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CkBAIC0w LDAgKzEsMTAwMyBAQAorLS0KKy0tIFBBUlRJVElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAi QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgLi4uIiBjb21tYW5kCistLQorQ1JF QVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0t CistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIw MjEtMTItMzEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy XzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRU QUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHBhcnRpdGlvbiB3 aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFy MjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJP UjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNl ZAorTElORSAxOiAuLi5lIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVz X21hcjIwMjIsIHNhbGVzX2ZlYjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogICJzYWxlc19h cHIyMDIyIiBpcyBub3QgYSB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAy MikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJPUjogICJzYWxlc19hcHIyMDIy IiBpcyBub3QgYSB0YWJsZQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX21hcjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3Vz IHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25z IHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJ TlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZp b3VzIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3Vu ZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSAoc3BhY2UgYmV0 d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIyKQorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZGVjMjAyMSwgc2Fs ZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7 CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgY29u ZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19k ZWMyMDIxIgorLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVy LCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNlYXJjaF9wYXRoCitTRVQgc2VhcmNo X3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxF IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMg KAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyLAorICBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitTRUxFQ1Qg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGlu ZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAg V0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5n ZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAg ICAgICAgICAgICAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAg ICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19qYW5fZmViX21h cjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAo JzAxLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX2FwcjIwMjIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQor IHNhbGVzX2RlYzIwMjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzEyLTAxLTIwMjEn KSBUTyAoJzEyLTMxLTIwMjEnKQorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQK Kyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRkIHJvd3Mg aW50byBwYXJ0aXRpb25lZCB0YWJsZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2Rh dGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKK1NFTEVDVCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5n ZSc6OnJlZ2NsYXNzKTsKKyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0t LS0tLQorIFJBTkdFIChzYWxlc19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlv bnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywg cGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBB TkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVM VCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAg ICBvaWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8g KCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIy JykKKyBzYWxlc19qYW4yMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19t YXIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00g KCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCistLSBjaGVj ayBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVz X21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRp dGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwg aW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBn X2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVu dCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgICAgICAgICAgICAg ICAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBl bmRpbmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5z YWxlc19mZWJfbWFyX2FwcjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZP UiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVz X2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAo JzAyLTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKygzIHJv d3MpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2Fs ZXNfZmViX21hcl9hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTInOworICAgICAgICBzY2hlbWFuYW1lICAgICAgICB8ICAgICAgIHRhYmxlbmFt ZSAgICAgICB8ICAgICAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgICAgICB8IHRhYmxl c3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hMiB8IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8IHNhbGVzX2ZlYl9tYXJf YXByMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2Fs ZXNfZmViX21hcl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICAy IHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0y MDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAg ICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQ bGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAw NC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRo ICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0z MS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8 ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwg ICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8 IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAg ICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAy MgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQt MDYtMjAyMgorKDEwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKKy0tIFVzZSBpbmRleHNj YW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VM RUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygx MCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRp b24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFu Z2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2Rh dGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisg ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwK KyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp LAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAs ICAnMjAyMi0wNS0wNCcpOworLS0gTWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVkZSBERUZBVUxU IHBhcnRpdGlvbikgaW50byBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFtZQorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUworICAoc2FsZXNfamFuMjAy Miwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfb3RoZXJz KSBJTlRPIHNhbGVzX290aGVyczsKK3NlbGVjdCAqIGZyb20gc2FsZXNfb3RoZXJzOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEz IHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAg ICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAg ICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoNyByb3dzKQorCistLSBzaG93 IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5p bmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBP UkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkg PSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRl eHQ7CisgICAgICBvaWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0y MDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcw My0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBERUZBVUxUCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0K Ky0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAq IEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwK KyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQ QUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250 aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcw JykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdT YWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRP ICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2Rh dGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwg MTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywg MjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2Vy MicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFu YWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAo J01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Cisg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2Rh eSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAg ICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAg ICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAg ICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8 IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVj MjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwg c2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIg fCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2Fs ZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAg MSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBT YWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIw MjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNh bGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwg ICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19k ZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5h Z2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwg MjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJv d3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf amFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCks CisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Rh dGU7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNh bGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAy MSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwg ICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4w MS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwg ICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4w Mi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwg ICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4w My4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwg ICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxl c19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBN YW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3 IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwg ICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNh bGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2Zl YjIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8 IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAy Mi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAy Mi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyg2IHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfb3RoZXI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19t b250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAx IHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKK0RST1AgVEFC TEUgc2FsZXNfZGF0ZTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIG9mIHBhcnRp dGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8y MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc3Bl b3BsZSBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlMzBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAo MzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9p cm90Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAor QkVHSU4KKwlSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3 aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xF VkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIg c2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIg SU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAg ICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVv cGxlJyk7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBF QUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dl cignc2FsZXNwZW9wbGUnKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93 ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdN YXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0g SU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNh bGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZl bCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKK05P VElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3 aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxl c3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7CistLSAyIHRyaWdnZXJzIHNo b3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNw ZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0g Uk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElO U0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNo b3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZB TFVFUyAoMzAsICdGb3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxs ZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNU ICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3Bs ZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAgfCBNYXkKKyAg ICAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAg ICAgICAgICAgICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9w bGU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0t IFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz cGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBP RiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUg cGFydGl0aW9ucyB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUyMF8zMChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElO VCwgIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlMzBfNDAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBEQVRFLCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl MTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3Yn KTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgRFJPUCBDT0xVTU4gZDE7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUzMF80MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVSIFRBQkxFIHNhbGVzcGVv cGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElP TiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAg Rk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9y ZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNw ZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBz YWxlc3Blb3BsZTEwXzQwOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisgICAgICAgICAgICAgMTkg fCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDIwIHwgU21p cm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAgICAgMzAgfCBGb3Jk CisoNiByb3dzKQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxl Y3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBfNDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAg ICAgMjAgfCBTbWlybm9mZgorICAgICAgICAgICAgIDMxIHwgUG9wb3YKKyAgICAgICAgICAg ICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CistLQor LS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpOworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFu Z2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIs ICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAg IDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAo NiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAg ICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAy Mi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisg ICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcy MDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwK KyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJP TSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIw MjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcg fCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAg ICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVy aWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAg ICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgor ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAz LTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAg ICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUx MCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1IHwgRGVldiAgICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8w MV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDEx IHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xMF8yMDsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fw cjIwMjJfMjBfMzA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxIHJvdykK KworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19h cHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMw KSBJTlRPIHNhbGVzX2Fwcl9hbGw7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEz IHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBN dWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAg ICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0 IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMg fCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHJfYWxsOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAg ICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZv cmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5n CistLQorLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRp b25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElO VCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElO VCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NS RUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVq aW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2Vu dHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJ S0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVF UyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZBVUxUOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsIChMSUtFIHNhbGVzX2xpc3QpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2V4dGVybmFsMiAodmNoIFZBUkNIQVIoNSkpOworLS0gRVJST1I6ICAi c2FsZXNfZXh0ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19l eHRlcm5hbCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMg bm90IGEgcGFydGl0aW9uCistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBh IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChz YWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxs OworRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24KKy0tIEVS Uk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVs YXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQyLCBzYWxlc19lYXN0KSBJTlRPIHNhbGVz X2FsbDsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3QgYSBwYXJ0aXRp b24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFs MjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Qy OworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0 aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURF TlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBW QVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlz dF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxl c3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lk eCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn T3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5 aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1Ry dW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdT bWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisgICgn Rm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAorICAo J0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwKKyAg KCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3JyksCisg ICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAor ICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKSwK KyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyks CisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScp LAorICAoJ0hhbGRlcicsICAgJ09zbG8nLCAgICAgICAgICAgIDgwMCwgJzIwMjItMDMtMDIn KSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1 JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0x MCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMt MDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAz LTA1Jyk7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcs IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdI RVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6 OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6 OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgIG9pZCAgICAgIHwgcmVsa2luZCB8IGluaGRldGFj aHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNfY2VudHJhbCB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpCisgc2FsZXNfZWFzdCAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpCisgc2FsZXNfbm9yZCAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVy c2J1cmcnLCAnSGVsc2lua2knKQorIHNhbGVzX3dlc3QgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBE RUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2Fs ZXNfYWxsOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5n LCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBX SEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX2xpc3Qn OjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz OjpwZ19jYXRhbG9nLnRleHQ7CisgICAgIG9pZCAgICAgIHwgcmVsa2luZCB8IGluaGRldGFj aHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgc2FsZXNfYWxsICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykK KyBzYWxlc19ub3JkICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxV RVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJykKKyBzYWxlc19v dGhlcnMgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICAgICB8IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMt MjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8IExpc2JvbiAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgTXVs bGVyICAgICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUt MjAyMgorICAgICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAgICAgICB8IExpc2JvbiAgICAg ICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgICAgICAxIHwgVHJ1 bXAgICAgICAgICAgICB8IEJlamluZyAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEt MjAyMgorICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICAgICB8IFZsYWRpdm9zdG9r ICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQt MjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAg ICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICAgIDEyIHwgU21p dGggICAgICAgICAgICB8IEt5aXYgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAt MjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUt MjAyMgorICAgICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IEhlbHNpbmtpICAg ICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICAgICA5IHwgTWF5 ICAgICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEt MjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8IE9zbG8gICAgICAg ICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfbm9yZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAg ICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgorICAgICAg ICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAg ICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICAg ICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAgICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAg ICAgODAwIHwgMDMtMDItMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19h bGw7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICB8ICAg ICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCBMaXNib24gICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICB8ICAgICAgICAg IDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAg fCBMaXNib24gICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAg ICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICB8ICAgICAgICAgMTAwMCB8 IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFk aXZvc3RvayB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0 LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAg ICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFNtaXRo ICAgICAgICAgICAgfCBLeWl2ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygxMCByb3dzKQorCistLSBVc2UgaW5kZXhzY2Fu IGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgbWVyZ2luZyBwYXJ0aXRpb25zCitTRVQgZW5h YmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxl c19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwg V2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAw My0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUw IHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdI RVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgor KDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgc2FsZXNfbGlz dDsKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiBhbm90aGVyIHRhYmxlLgor LS0KK0NSRUFURSBUQUJMRSB0MSAoaSBpbnQsIGEgaW50LCBiIGludCwgYyBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoYSwgYik7CitDUkVBVEUgVEFCTEUgdDFwMSBQQVJUSVRJT04gT0Yg dDEgRk9SIFZBTFVFUyBGUk9NICgxLCAxKSBUTyAoMSwgMik7CitDUkVBVEUgVEFCTEUgdDIg KGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAodCk7CitDUkVBVEUgVEFCTEUg dDJwYSBQQVJUSVRJT04gT0YgdDIgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQycpOwor Q1JFQVRFIFRBQkxFIHQzIChpIGludCwgdCB0ZXh0KTsKKy0tIEVSUk9SOiAgcmVsYXRpb24g InQxcDEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJM RSB0MiBNRVJHRSBQQVJUSVRJT05TICh0MXAxLCB0MnBhKSBJTlRPIHQycDsKK0VSUk9SOiAg cmVsYXRpb24gInQxcDEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCist LSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0MiBNRVJH RSBQQVJUSVRJT05TICh0MnBhLCB0MykgSU5UTyB0MnA7CitFUlJPUjogICJ0MyIgaXMgbm90 IGEgcGFydGl0aW9uCitEUk9QIFRBQkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFC TEUgdDE7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRh YmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcs IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAg IHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRw XzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAorIHRwXzFfMiB8IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93cykKKworQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBQYXJ0 aXRpb24gc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp LCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19j YXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBp LmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgyKSB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0Owor LS0KKy0tIENoZWNrIHRoZSBwYXJ0aXRpb24gaW5kZXggbmFtZSBpZiB0aGUgcGFydGl0aW9u IG5hbWUgaXMgdGhlIHNhbWUgYXMgb25lCistLSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMu CistLQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBQUklNQVJZIEtFWShpKSkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ1JFQVRFIElOREVYIHRpZHgg T04gdChpKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMV8yLCB0cF8w XzEpIElOVE8gdHBfMV8yOworLS0gSW5kZXhuYW1lIHZhbHVlcyBzaG91bGQgYmUgJ3RwXzFf Ml9wa2V5JyBhbmQgJ3RwXzFfMl9pX2lkeCcuCistLSBOb3QtbnVsbCBjb25zdHJhaW50IG5h bWUgc2hvdWxkIGJlICd0cF8xXzJfaV9ub3RfbnVsbCcuCitcZCsgdHBfMV8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8x XzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQ YXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBj b25zdHJhaW50OiAoKGkgSVMgTk9UIE5VTEwpIEFORCAoaSA+PSAwKSBBTkQgKGkgPCAyKSkK K0luZGV4ZXM6CisgICAgInRwXzFfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCisg ICAgInRwXzFfMl9pX2lkeCIgYnRyZWUgKGkpCitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAg ICAidF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKworRFJPUCBUQUJM RSB0OworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0 aW9ucy4KKy0tCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cGdfdGVtcCwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworIG9pZCB8IHJlbHBlcnNpc3RlbmNl IAorLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHQgICB8IHAKKygxIHJvdykKKworU0VMRUNU IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRh bG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9p ZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRF UiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAn REVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7 CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5j ZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLQorIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgcAorIHRwXzFf MiB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgcAorKDIgcm93cykKKworU0VUIHNl YXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK Ky0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5 IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRw XzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3Jhcnkg cmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLSBDYW4n dCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRlbXBvcmFyeSBwYXJ0aXRp b24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gcGdfdGVtcC50cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3Jhcnkg cmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIKK0RST1Ag VEFCTEUgdDsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLCBwdWJsaWM7CitCRUdJTjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKyBvaWQgfCByZWxwZXJz aXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgfCB0CisoMSByb3cpCisK K1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hF UkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MK KyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxv Zy50ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVy c2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8IHQK KyB0cF8xXzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3MpCisK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBw dWJsaWM7CistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVy c2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CistLSBDaGVjayB0aGUgbmV3 IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQgc2VhcmNoX3Bh dGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQg KGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwg dGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0Jywg J3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJwor ICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgICAgdGFi bGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAg ICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIgICAgfCByZWdyZXNzX3RibHNwYWNlCiso MiByb3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJP TSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5E IHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRh YmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICBpbmRleG5h bWUgIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgdF9wa2V5ICAgICAgfCByZWdyZXNzX3Ri bHNwYWNlCisgdHBfMF8yICAgIHwgdHBfMF8yX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCiso MiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBp bmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRI T0QgcGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxl YW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChpKSBVU0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8yOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBK T0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpy ZWdjbGFzcywgJ3RwXzBfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lOworIHJl bG5hbWUgfCAgICAgICAgYW1uYW1lICAgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0aW9uc19tZXJnZV9oZWFwCisgdHBfMF8y ICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorKDIgcm93cykKKworRFJPUCBUQUJMRSB0Owor RFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKy0tIFRlc3QgcGVy bWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJs ZSBhbmQgYWxsCistLSB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4K K0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFJP TEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGlj ZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK K0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRw XzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBf MF8xCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzEg T1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9S OiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8xXzIKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0 aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwor RFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRp b25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNl OworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIFRlc3Q6IHdl IGNhbid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCitDUkVBVEUg Uk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdy ZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitH UkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3Nf cGFydGl0aW9uc19tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jl c3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBpbnQp OworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworQ1JFQVRFIFRBQkxFIHRwXzFf MihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitBTFRFUiBUQUJMRSB0IEFUVEFD SCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2UnOgor XGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJs ZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAg ICAgICAgT3duZXIgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8wXzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0 aW9uc19tZXJnZV9hbGljZQorKDEgcm93KQorCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0 aXRpb25zX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFt ZSAgfCBUeXBlICB8ICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8 IHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2IKKygxIHJvdykKKworLS0gRVJST1I6ICBw YXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0FMVEVSIFRB QkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor RVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMK K0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworUkVWT0tFIEFM TCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRp dGlvbnNfbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9h bGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworLS0gVGVz dCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQ QVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJM RSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJ TkRFUiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFi bGUgY2Fubm90IGJlIG1lcmdlZAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cDEsIHRwMikgSU5UTyB0cDM7CitFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlv bmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFy dGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKK0VSUk9SOiAgbGlzdCBvZiBu ZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0RST1Ag VEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggYTQyNGJlMmE2Yi4uNjQ2 NGEyMzhhYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMsNyAr MTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21h aW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRlc3Qg cmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2Fu IGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9q b2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0 aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXBy ZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRpdGlvbl9t ZXJnZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3Bh cnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNv cnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCiAK ICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBj b25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5jNTNhYzVhMTk5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApAQCAtMCwwICsxLDY2MiBAQAor LS0KKy0tIFBBUlRJVElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMgLi4uIiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworCistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorCistLQorLS0g VGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjEtMTItMzEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8x IFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDQtMTUnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMiBQQVJU SVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTE1Jykg VE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRo IG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAy Miwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBFUlJP UjogICJzYWxlc19hcHIyMDIyIiBpcyBub3QgYSB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwg c2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgY29uZmxpY3RzIHdp dGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgor LS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfamFuMjAyMiBhbmQgc2FsZXNfbWFy MjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2phbjIwMjIsIHNhbGVzX21hcjIwMjIpIElOVE8gc2FsZXNfamFuX21hcjIwMjI7CistLSBF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgY29uZmxp Y3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMy MDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2Fs ZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2Fs ZXNfZGVjX2phbl9mZWIyMDIyOworCistLSBOTyBFUlJPUjogdGVzdCBmb3IgY3VzdG9tIHBh cnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBpbiB0aGUgc2VhcmNoX3Bh dGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMiwgcHVibGlj OworQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfcmFuZ2UgTUVS R0UgUEFSVElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIw MjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIwMjIsCisgIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYl9t YXIyMDIyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1 YmxpYzsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQs IGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlLCB0 aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVB VEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJ TkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCBwZ19jYXRh bG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsKKworLS0g c2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MK KyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxv Zy50ZXh0OworCistLSBjaGVjayBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG5ldyBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKworLS0gc2hvdyBw YXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVz X2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9z Y2hlbWEyJzsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00g c2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIu c2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor CistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vf c2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp OworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAor ICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyks CisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVM VCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIw MjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVy cykgSU5UTyBzYWxlc19vdGhlcnM7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNfb3RoZXJzOwor CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2Nh dGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMu b2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdj bGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19j YXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0 IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFU RUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVz X2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVz X3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQs IDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9S RUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVw YXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIy LCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9S IFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwg NyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIy LCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywg MjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2Vy MScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFu YWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VM RUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcjsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworCitJ TlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwg MTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2phbl9mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworRFJP UCBUQUJMRSBzYWxlc19kYXRlOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBv ZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Bl b3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUxMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIFBBUlRJVElPTiBP RiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMzBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxV RVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVF UyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJf aW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3Fs JyBBUyAkQk9EWSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDog YWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBU R19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKKwor Q1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmln Z2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFD SCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2Fm dGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVz cGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJf aW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCistLSAyIHRyaWdnZXJzIHNo b3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVy ZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgxOSwgJ0l2 YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJ TlRPIHNhbGVzcGVvcGxlMTBfNDA7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVy ZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAo MjAsICdTbWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNw ZW9wbGUxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsKK0RST1AgRlVOQ1RJT04g YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0 aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUgcGFydGl0aW9ucyB3aXRo IHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAo ZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8z MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAoc2Fs ZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBEQVRFLCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMg KCdkdW1teSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlMjBfMzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYnKTsKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMSwgbm93KCksICdQb3BvdicpOworCitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxl MzBfNDAgRFJPUCBDT0xVTU4gZDM7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MjApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVT CisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CisK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxl MTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNw ZW9wbGUxMF80MDsKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTsKK3NlbGVjdCAqIGZy b20gc2FsZXNwZW9wbGUwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUxMF80MDsK KworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1w YXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNh bGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFf MTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJf MTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIw MjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYn LCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAg KDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3Qn LCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAor ICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAn MjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyks CisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21p dGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jh bmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19hcHIyMDIyXzAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOworCitBTFRFUiBUQUJMRSBzYWxl c19hcHIyMDIyIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2FwcjIwMjJfMDFfMTAsIHNhbGVz X2FwcjIwMjJfMTBfMjAsIHNhbGVzX2FwcjIwMjJfMjBfMzApIElOVE8gc2FsZXNfYXByX2Fs bDsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQor LS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0K K0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRF RCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwK KyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVz X2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ugc2Fs ZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAo J09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZBVUxUOworCisKK0NS RUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBU QUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKworLS0gRVJST1I6ICAi c2FsZXNfZXh0ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19l eHRlcm5hbCkgSU5UTyBzYWxlc19hbGw7CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbDIi IGlzIG5vdCBhIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJU SVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8g c2FsZXNfYWxsOworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBh IHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVz X2Vhc3QpIElOVE8gc2FsZXNfYWxsOworCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsMjsK K0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3QyOwor RFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRp b25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVO VElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZB UkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFS VElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xp c3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2Fs ZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9p ZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisg ICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAor ICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwK KyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyks CisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcp LAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcn KSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0w NicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMt MDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAz LTExJyksCisgICgnSGFsZGVyJywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAyMi0w My0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjIt MDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIy LTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAy Mi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIw MjItMDMtMDUnKTsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NF TEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hw ZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkK KyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMg aQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVz X2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkg SU5UTyBzYWxlc19hbGw7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0 YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdz YWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xp c3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fs bDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdp bmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICog RlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOwor CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCist LQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitD UkVBVEUgVEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZP UiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGlu dCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEg UEFSVElUSU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFU RSBUQUJMRSB0MyAoaSBpbnQsIHQgdGV4dCk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQx cDEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0 MiBNRVJHRSBQQVJUSVRJT05TICh0MXAxLCB0MnBhKSBJTlRPIHQycDsKKy0tIEVSUk9SOiAg InQzIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElP TlMgKHQycGEsIHQzKSBJTlRPIHQycDsKKworRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFCTEUg dDI7CitEUk9QIFRBQkxFIHQxOworCistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMg b2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAgVEFC TEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOwor CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdI RVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNz CisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFs b2cudGV4dDsKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRw XzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFBhcnRpdGlvbiBzaG91bGQgYmUgdGVtcG9yYXJ5 LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBX SEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFz cworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRh bG9nLnRleHQ7CisKK0RST1AgVEFCTEUgdDsKKworLS0KKy0tIENoZWNrIHRoZSBwYXJ0aXRp b24gaW5kZXggbmFtZSBpZiB0aGUgcGFydGl0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXMgb25l CistLSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHQgKGkg aW50LCBQUklNQVJZIEtFWShpKSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworQ1JFQVRF IFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMik7CisKK0NSRUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKwor LS0gSW5kZXhuYW1lIHZhbHVlcyBzaG91bGQgYmUgJ3RwXzFfMl9wa2V5JyBhbmQgJ3RwXzFf Ml9pX2lkeCcuCistLSBOb3QtbnVsbCBjb25zdHJhaW50IG5hbWUgc2hvdWxkIGJlICd0cF8x XzJfaV9ub3RfbnVsbCcuCitcZCsgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKKworLS0KKy0t IFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVi bGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz cywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBj Lm9pZCA9ICd0Jzo6cmVnY2xhc3M7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5y ZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworU0VUIHNlYXJjaF9wYXRoID0gcGdf dGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworLS0gQ2FuJ3QgbWVy Z2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRw XzBfMjsKKworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1 YmxpYzsKKworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0 ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworRFJPUCBUQUJMRSB0OworCitT RVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVi bGljOworCitCRUdJTjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworU0VMRUNUIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMs IHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQg QU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFVCBzZWFyY2hf cGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CisKKy0t IENhbid0IG1lcmdlIHRlbXBvcmFyeSBwYXJ0aXRpb25zIGludG8gYSBwZXJzaXN0ZW50IHBh cnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyB0cF8wXzI7CitST0xMQkFDSzsKKworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRp b24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQorU0VUIHNlYXJjaF9wYXRoID0gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCBQ UklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisg IFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3Bh Y2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzIn KSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIg QlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1l LCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0 JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h JworICBPUkRFUiBCWSB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKK0RST1Ag VEFCTEUgdDsKKworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50 J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNf bWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitD UkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFy dGl0aW9uc19tZXJnZV9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVD VCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9O IGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8w XzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZTsKK0RST1AgVEFCTEUgdDsKK0RS T1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CisKKy0tIFRlc3QgcGVy bWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJs ZSBhbmQgYWxsCistLSB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4K K0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFJP TEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGlj ZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8x XzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgT1dO RVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworUkVW T0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworCisK Ky0tIFRlc3Q6IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3du ZXJzCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVB VEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVy Z2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h IFRPIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0 cF8wXzEoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworQ1JFQVRF IFRBQkxFIHRwXzFfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisK K0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworQUxU RVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlv bnNfbWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFy dGl0aW9uc19tZXJnZV9ib2InOgorXGR0IHRwXzFfMgorCistLSBFUlJPUjogIHBhcnRpdGlv bnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVycworQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKK0RST1Ag VEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h IEZST00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbnNf bWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsK K0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworCisKKy0tIFRlc3Qg Zm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUg dHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5E RVIgMSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFi bGUgY2Fubm90IGJlIG1lcmdlZAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cDEsIHRwMikgSU5UTyB0cDM7CisKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9u cyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKKworRFJPUCBUQUJMRSB0OworCitSRVNF VCBzZWFyY2hfcGF0aDsKKworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAppbmRleCBhODM0NmNkYTYzLi4yMDM4NjAzYzA4IDEwMDY0NAot LS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjc2MCw2ICsyNzYwLDcgQEAgU2ltcGxlU3Rh dHMKIFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBsZVN0cmluZ0xpc3RDZWxsCiBTaW5nbGVCb3Vu ZFNvcnRJdGVtCitTaW5nbGVQYXJ0aXRpb25TcGVjCiBTaXplCiBTa2lwUGFnZXMKIFNraXBT dXBwb3J0Ci0tIAoyLjQwLjEud2luZG93cy4xCgo= --------------XrzLG5ahQ1YxYNPpUUs7c2fS Content-Type: text/plain; charset=UTF-8; name="v40-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v40-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4MTk4MjQ5ZWJmNGY0ZGMxOWZkMGNmZDY1NzZkOGNjYmYzZWIyOTJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDAgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcwoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBBbGV4YW5kZXIg S29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJbG1hcmkgTWFu bnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29y b3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jpc292ClJldmll d2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4s IEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5OiBEYW5pZWwg R3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3JjL3NnbWwvZGRs LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgODQgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MjIgKysrKwogc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICA1OSArLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDY4OSAr KysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAg fCAgIDE4ICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAg ICB8ICAgMTAgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgICB8ICAgIDMgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu aCAgICAgICAgIHwgICAgNSArCiBzcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAg ICAgICAgICAgICAgfCAgICAyICsKIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9u LXNwbGl0Lm91dCAgICB8ICAxOTAgKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Bh cnRpdGlvbi1zcGxpdC5zcGVjIHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDE3NDEgKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAgICB8IDEwNzAgKysr KysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAg IHwgICAgMSArCiAyMCBmaWxlcyBjaGFuZ2VkLCA0Mzk0IGluc2VydGlvbnMoKyksIDE4IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBl Y3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv aXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNx bAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9k ZGwuc2dtbAppbmRleCAxOTlkNTdmNGM3Li4yNzk0M2I1ZmZmIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00NDYw LDYgKzQ0NjAsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICAgICAgICAgICAg ICAgICAgICBtZWFzdXJlbWVudF95MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAwNnEx OwogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAg U2ltaWxhcmx5IHRvIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucywgdGhlcmUg aXMgYW4gb3B0aW9uIGZvcgorICAgICBzcGxpdHRpbmcgYSBzaW5nbGUgcGFydGl0aW9uIGlu dG8gbXVsdGlwbGUgdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnRh YmxlLXNwbGl0LXBhcnRpdGlvbiI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNQTElUIFBB UlRJVElPTjwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUgY291bGQgY29t ZSBpbiBoYW5keSB3aGVuIG9uZSBwYXJ0aXRpb24gZ3Jvd3MgdG9vIGJpZworICAgICBhbmQg bmVlZHMgdG8gYmUgc3BsaXQgaW50byBtdWx0aXBsZS4gIEl0J3MgaW1wb3J0YW50IHRvIG5v dGUgdGhhdAorICAgICB0aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBoYXNo LXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMKKyAgICAgYW4gPGxpdGVyYWw+QUND RVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0IGhpZ2gt bG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0aXZlIG5hdHVy ZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gc3BsaXQKKyAgICAgdGhlIHF1YXJ0ZXIgcGFydGl0 aW9uIGJhY2sgdG8gbW9udGhseSBwYXJ0aXRpb25zOgorPHByb2dyYW1saXN0aW5nPgorQUxU RVIgVEFCTEUgbWVhc3VyZW1lbnQgU1BMSVQgUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2 cTEgSU5UTworICAgKFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMSBGT1IgVkFMVUVT IEZST00gKCcyMDA2LTAxLTAxJykgVE8gKCcyMDA2LTAyLTAxJyksCisgICAgUEFSVElUSU9O IG1lYXN1cmVtZW50X3kyMDA2bTAyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDItMDEnKSBU TyAoJzIwMDYtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDMg Rk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMy0wMScpIFRPICgnMjAwNi0wNC0wMScpKTsKKzwv cHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9wYXJhPgorCiAgICA8L3NlY3QzPgogCiAgICA8c2Vj dDMgaWQ9ImRkbC1wYXJ0aXRpb25pbmctZGVjbGFyYXRpdmUtbGltaXRhdGlvbnMiPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IDcyYmI1M2IwODQuLjAxZTI5MzcwOTIg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM3LDYgKzM3LDEwIEBAIEFM VEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFDSCBQQVJUSVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4geyBGT1Ig VkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRf c3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CiBBTFRFUiBUQUJMRSBbIElGIEVYSVNU UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K ICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsgQ09OQ1VSUkVOVExZIHwgRklOQUxJWkUg XQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAgU1BMSVQgUEFSVElUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IElO VE8KKyAgICAgICAgKFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+ IHwgREVGQVVMVCB9LAorICAgICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9y ZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSkKIEFMVEVSIFRBQkxFIFsgSUYgRVhJ U1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PgogICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pCiAgICAg ICAgIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l PC9yZXBsYWNlYWJsZT4KQEAgLTExNTAsNiArMTE1NCw2MyBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg PHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj4KKyAg ICA8dGVybT48bGl0ZXJhbD5TUExJVCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5UTyAoUEFSVElUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBs YWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0p PC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGlzIGZvcm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRh YmxlLiBIYXNoLXBhcnRpdGlvbmluZworICAgICAgaXMgbm90IHN1cHBvcnRlZC4gQm91bmRz IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQKKyAg ICAgIGV4aXN0aW5nIHBhcnRpdGlvbnMgKGV4Y2VwdCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPikuCisgICAgICBJZiB0aGUg c3BsaXQgcGFydGl0aW9uIGlzIGEgREVGQVVMVCBwYXJ0aXRpb24sIG9uZSBvZiB0aGUgbmV3 IHBhcnRpdGlvbnMgbXVzdCBiZSBERUZBVUxULgorICAgICAgSW4gY2FzZSBvbmUgb2YgdGhl IG5ldyBwYXJ0aXRpb25zIG9yIG9uZSBvZiBleGlzdGluZyBwYXJ0aXRpb25zIGlzIERFRkFV TFQsCisgICAgICBuZXcgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBj YW4gaGF2ZSBzcGFjZXMKKyAgICAgIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMuICBJZiB0 aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBhIERFRkFVTFQKKyAgICAgIHBh cnRpdGlvbiwgdGhlIERFRkFVTFQgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBv ZiB0aGUgbmV3IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAg ICBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBjb250YWluIGEgREVGQVVMVCBwYXJ0 aXRpb24gYW5kIHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICAgICAgZG9lcyBub3QgaGF2ZSBh IERFRkFVTFQgcGFydGl0aW9uLCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJv dW5kcyBvZgorICAgICAgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAu Li4gc2hvdWxkIGJlCisgICAgICBlcXVhbCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4uCisgICAgICBPbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxh Y2VhYmxlPiwgLi4uIGNhbiBoYXZlCisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBh cnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPgorICAgICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxp dHRpbmcgYSBERUZBVUxUIHBhcnRpdGlvbjogd2Ugc3BsaXQgaXQsIGJ1dCBhZnRlcgorICAg ICAgc3BsaXR0aW5nIHdlIGhhdmUgYSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lKS4K KyAgICAgIE9ubHkgc2ltcGxlLCBub24tcGFydGl0aW9uZWQgcGFydGl0aW9uIGNhbiBiZSBz cGxpdC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIE5ldyBwYXJ0aXRpb25z IHdpbGwgaGF2ZSB0aGUgc2FtZSBvd25lciBhcyB0aGUgcGFyZW50IHBhcnRpdGlvbi4KKyAg ICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9u c2liaWxpdHkgdG8gc2V0dXAgPGFjcm9ueW0+QUNMPC9hY3JvbnltPiBvbiBuZXcKKyAgICAg IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgaW5k ZXhlcyBhbmQgaWRlbnRpdHkgYXJlIGNyZWF0ZWQgbGF0ZXIsIGFmdGVyIG1vdmluZyB0aGUg ZGF0YQorICAgICAgaW50byB0aGUgbmV3IHBhcnRpdGlvbnMuCisgICAgICBFeHRlbmRlZCBz dGF0aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBmb3IgY29u c2lzdGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJVElPTiBP RjwvY29tbWFuZD4uCisKKyAgICAgIE5ldyBwYXJ0aXRpb25zIHdpbGwgaGF2ZSB0aGUgc2Ft ZSB0YWJsZSBhY2Nlc3MgbWV0aG9kIGFzIHRoZSBwYXJlbnQuCisgICAgICBJZiB0aGUgcGFy ZW50IHRhYmxlIGlzIHBlcnNpc3RlbnQgdGhlbiBuZXcgcGFydGl0aW9ucyBhcmUgY3JlYXRl ZAorICAgICAgcGVyc2lzdGVudC4gIElmIHRoZSBwYXJlbnQgdGFibGUgaXMgdGVtcG9yYXJ5 IHRoZW4gbmV3IHBhcnRpdGlvbnMKKyAgICAgIGFyZSBhbHNvIGNyZWF0ZWQgdGVtcG9yYXJ5 LiAgTmV3IHBhcnRpdGlvbnMgd2lsbCBhbHNvIGJlIGNyZWF0ZWQgaW4KKyAgICAgIHRoZSBz YW1lIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudC4KKyAgICAgPC9wYXJhPgorICAgICA8bm90 ZT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgY29tbWFuZCBhY3F1aXJlcyBhbiA8bGl0 ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLgorICAgICAgIFRoaXMgaXMg YSBzaWduaWZpY2FudCBsaW1pdGF0aW9uLCB3aGljaCBsaW1pdHMgdGhlIHVzYWdlIG9mIHRo aXMKKyAgICAgICBjb21tYW5kIHdpdGggbGFyZ2UgcGFydGl0aW9uZWQgdGFibGVzIHVuZGVy IGEgaGlnaCBsb2FkLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwt YWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj4KICAgICA8dGVybT48bGl0ZXJhbD5NRVJH RSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRl cmFsPjwvdGVybT4KIApAQCAtMTIzNiw3ICsxMjk3LDggQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgIEFsbCB0aGUgZm9ybXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFCTEU8L2Nv bW1hbmQ+IHRoYXQgYWN0IG9uIGEgc2luZ2xlIHRhYmxlLAogICAgZXhjZXB0IDxsaXRlcmFs PlJFTkFNRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAogICAg PGxpdGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQ QVJUSVRJT048L2xpdGVyYWw+LAotICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8 L2xpdGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5TUExJVCBQQVJU SVRJT048L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJh bD4KKyAgIGNhbiBiZSBjb21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0 ZXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAg aXMgcG9zc2libGUgdG8gYWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5 cGUgb2Ygc2V2ZXJhbAogICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBp cyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UKQEAgLTE0ODAsNyArMTU0Miw3IEBA IFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmlj X2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAg PHBhcmE+CiAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBu ZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCi0gICAgICAgIG9y IHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICAgb3IgdGhl IG5hbWUgb2Ygc3BsaXQgcGFydGl0aW9uLCBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdl ZCBwYXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAg PC92YXJsaXN0ZW50cnk+CkBAIC0xOTEzLDYgKzE5NzUsMjQgQEAgQUxURVIgVEFCTEUgbWVh c3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDE1bTEyOwog PC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNp bmdsZSBwYXJ0aXRpb24gb2YgdGhlIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dy YW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMyBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wMi0wMScpIFRPICgnMjAyMy0wMy0wMScpLAorICAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEn KSBUTyAoJzIwMjMtMDQtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMyBGT1Ig VkFMVUVTIEZST00gKCcyMDIzLTA0LTAxJykgVE8gKCcyMDIzLTA1LTAxJykpOworPC9wcm9n cmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBw YXJ0aXRpb24gb2YgdGhlIGxpc3QtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rp bmc+CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgIFBB UlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGlu JywgJ0t5aXYnKSk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwogICA8cGFyYT4KICAg IFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhl IHRhcmdldCB0YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggYjRlYzY2OTFkOC4uNThlOTVjNjVmYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKQEAgLTc0MCw2ICs3NDAsOSBAQCBzdGF0aWMgdm9pZCBBVERldGFjaENo ZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIg R2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21w cmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBp ZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCitzdGF0aWMgdm9pZCBBVEV4ZWNTcGxp dFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJ CQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkgQWx0ZXJU YWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIEFURXhlY01lcmdl UGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxp dHlDb250ZXh0ICpjb250ZXh0KTsKIApAQCAtNDgzNiw2ICs0ODM5LDEwIEBAIEFsdGVyVGFi bGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBTaGFyZVVw ZGF0ZUV4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0 aXRpb246CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQli cmVhazsKKwogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJY21kX2xvY2ttb2Rl ID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKQEAgLTUyNzUsNiArNTI4Miwx MSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxl Q21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJ CQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0 aXRpb246CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRf UEFSVElUSU9ORURfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQljYXNlIEFU X01lcmdlUGFydGl0aW9uczoKIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBl LCByZWwsIEFUVF9QQVJUSVRJT05FRF9UQUJMRSk7CiAJCQkvKiBObyBjb21tYW5kLXNwZWNp ZmljIHByZXAgbmVlZGVkICovCkBAIC01Njc2LDYgKzU2ODgsMTQgQEAgQVRFeGVjQ21kKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9EZXRhY2hQ YXJ0aXRpb25GaW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRhY2hQYXJ0aXRpb25G aW5hbGl6ZShyZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFtZSk7CiAJCQli cmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9IEFUUGFyc2VUcmFu c2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJ CQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJ CQlBc3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSk7CisJCQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRhYiwgcmVsLCAoUGFy dGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7CisJCQlicmVhazsK IAkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3Jt Q21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJ ICBjdXJfcGFzcywgY29udGV4dCk7CkBAIC02NzI0LDYgKzY3NDQsOCBAQCBhbHRlcl90YWJs ZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJE RVRBQ0ggUEFSVElUSU9OIjsKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToK IAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOworCQljYXNlIEFU X1NwbGl0UGFydGl0aW9uOgorCQkJcmV0dXJuICJTUExJVCBQQVJUSVRJT04iOwogCQljYXNl IEFUX01lcmdlUGFydGl0aW9uczoKIAkJCXJldHVybiAiTUVSR0UgUEFSVElUSU9OUyI7CiAJ CWNhc2UgQVRfQWRkSWRlbnRpdHk6CkBAIC0yMjA0Nyw2ICsyMjA2OSwyNTcgQEAgR2V0QXR0 cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKQog CXJldHVybiBjc3RvcmFnZTsKIH0KIAorLyoKKyAqIFN0cnVjdCB3aXRoIGNvbnRleHQgb2Yg bmV3IHBhcnRpdGlvbiBmb3IgaW5zZXJ0aW5nIHJvd3MgZnJvbSBzcGxpdCBwYXJ0aXRpb24K KyAqLwordHlwZWRlZiBzdHJ1Y3QgU3BsaXRQYXJ0aXRpb25Db250ZXh0Cit7CisJRXhwclN0 YXRlICAqcGFydHF1YWxzdGF0ZTsJLyogZXhwcmVzc2lvbiBmb3IgY2hlY2tpbmcgc2xvdCBm b3IgcGFydGl0aW9uCisJCQkJCQkJCSAqIChOVUxMIGZvciBERUZBVUxUIHBhcnRpdGlvbikg Ki8KKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRz IGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsJLyogc2xvdCBm b3IgaW5zZXJ0aW5nIHJvdyBpbnRvIHBhcnRpdGlvbiAqLworCVJlbGF0aW9uCXBhcnRSZWw7 CQkvKiByZWxhdGlvbiBmb3IgcGFydGl0aW9uICovCit9IFNwbGl0UGFydGl0aW9uQ29udGV4 dDsKKworCisvKgorICogY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29u dGV4dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxsIGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRp dGlvbkNvbnRleHQgKgorY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBh cnRSZWwpCit7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0 UGFydGl0aW9uQ29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRl eHQpKTsKKwlwYy0+cGFydFJlbCA9IHBhcnRSZWw7CisKKwkvKgorCSAqIFByZXBhcmUgYSBC dWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gVGhlIEZTTSBpcyBlbXB0 eSwgc28KKwkgKiBkb24ndCBib3RoZXIgdXNpbmcgaXQuCisJICovCisJcGMtPmJpc3RhdGUg PSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBu ZXcgcGFydGl0aW9uLiAqLworCXBjLT5kc3RzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVT bG90KFJlbGF0aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwpLAorCQkJCQkJCQkJCSAgIHRhYmxl X3Nsb3RfY2FsbGJhY2tzKHBjLT5wYXJ0UmVsKSk7CisJRXhlY1N0b3JlQWxsTnVsbFR1cGxl KHBjLT5kc3RzbG90KTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAqIGRlbGV0ZVNwbGl0 UGFydGl0aW9uQ29udGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgorICovCitz dGF0aWMgdm9pZAorZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9u Q29udGV4dCAqcGMsIGludCB0aV9vcHRpb25zKQoreworCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3QocGMtPmRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUocGMtPmJpc3Rh dGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0UmVsLCB0aV9vcHRp b25zKTsKKworCXBmcmVlKHBjKTsKK30KKworLyoKKyAqIG1vdmVTcGxpdFRhYmxlUm93czog c2NhbiBzcGxpdCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBwYXJ0aXRpb25lZCB0YWJsZQor ICogKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgorICoKKyAqIE5l dyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9uOgorICogcGFydGxpc3Q6IGxpc3Qgb2YgcG9pbnRl cnMgdG8gU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3R1cmVzLgorICogbmV3UGFydFJlbHM6 IGxpc3Qgb2YgUmVsYXRpb25zLgorICogZGVmYXVsdFBhcnRPaWQ6IG9pZCBvZiBERUZBVUxU IHBhcnRpdGlvbiwgZm9yIHRhYmxlIHJlbC4KKyAqLworc3RhdGljIHZvaWQKK21vdmVTcGxp dFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0ICpwYXJ0 bGlzdCwgTGlzdCAqbmV3UGFydFJlbHMsIE9pZCBkZWZhdWx0UGFydE9pZCkKK3sKKwkvKiBU aGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJ dGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5kSWQJbXljaWQ7 CisJRVN0YXRlCSAgICplc3RhdGU7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICps aXN0cHRyMjsKKwlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwlFeHByQ29udGV4dCAqZWNv bnRleHQ7CisJVGFibGVTY2FuRGVzYyBzY2FuOworCVNuYXBzaG90CXNuYXBzaG90OworCU1l bW9yeUNvbnRleHQgb2xkQ3h0OworCUxpc3QJICAgKnBhcnRDb250ZXh0cyA9IE5JTDsKKwlU dXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQg KmRlZmF1bHRQYXJ0Q3R4ID0gTlVMTCwKKwkJCSAgICpwYzsKKwlib29sCQlpc09sZERlZmF1 bHRQYXJ0ID0gZmFsc2U7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7 CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlmb3Jib3RoKGxpc3Rw dHIsIHBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQYXJ0 aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0 cik7CisKKwkJcGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFJlbGF0aW9uKSBs Zmlyc3QobGlzdHB0cjIpKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJ eworCQkJLyogV2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBmb3IgZGV0YWNoZWQg REVGQVVMVCBwYXJ0aXRpb24uICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQl9CisJ CWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8qIEJ1aWxk IGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxz LiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWws IHNwcy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxf Y29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25z dHJhaW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2so KS4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGlj aXQocGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0 aGUgY29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBz cGxpdFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25f dmFyYXR0bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwg cmVsKTsKKworCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigo RXhwciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQo cGMtPnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRp b24gY29udGV4dCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFy dENvbnRleHRzLCBwYyk7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgcGFydGl0aW9uIGNvbnRl eHQgZm9yIERFRkFVTFQgcGFydGl0aW9uLiBXZSBjYW4gaW5zZXJ0IHZhbHVlcworCSAqIGlu dG8gdGhpcyBwYXJ0aXRpb24gaW4gY2FzZSBzcGFjZXMgd2l0aCB2YWx1ZXMgYmV0d2VlbiBu ZXcgcGFydGl0aW9ucy4KKwkgKi8KKwlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYmIE9pZElzVmFs aWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJLyogSW5kaWNhdGUgdGhhdCB3ZSBhbGxvY2F0 ZSBjb250ZXh0IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJaXNPbGREZWZhdWx0 UGFydCA9IHRydWU7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25D b250ZXh0KHRhYmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sp KTsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsK KworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNzbG90ID0gTWFr ZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJ CQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3Moc3BsaXRSZWwpKTsKKworCS8qCisJICog TWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9u IHRvIG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24sIGJ1dCBv dGhlciBuZXcgcGFydGl0aW9ucyBjYW4gdXNlIHRoZSBzYW1lCisJICogbWFwKS4KKwkgKi8K KwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0 Q29udGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0 aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihw Yy0+cGFydFJlbCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBz aG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0g dGFibGVfYmVnaW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgor CSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZv ciBlYWNoIHR1cGxlCisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5Lgor CSAqLworCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9y eUNvbnRleHQoZXN0YXRlKSk7CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChz Y2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJeworCQlib29sCQlmb3Vu ZCA9IGZhbHNlOworCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkvKiBFeHRy YWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUuICovCisJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xv dCk7CisKKwkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc3Jjc2xvdDsKKworCQkvKiBT ZWFyY2ggcGFydGl0aW9uIGZvciBjdXJyZW50IHNsb3Qgc3Jjc2xvdC4gKi8KKwkJZm9yZWFj aChsaXN0cHRyLCBwYXJ0Q29udGV4dHMpCisJCXsKKwkJCXBjID0gKFNwbGl0UGFydGl0aW9u Q29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJCWlmIChwYy0+cGFydHF1YWxzdGF0 ZSAvKiBza2lwIERFRkFVTFQgcGFydGl0aW9uICovICYmCisJCQkJRXhlY0NoZWNrKHBjLT5w YXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJ CWJyZWFrOworCQkJfQorCQkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJCX0KKwkJ aWYgKCFmb3VuZCkKKwkJeworCQkJLyogVXNlIERFRkFVTFQgcGFydGl0aW9uIGlmIGl0IGV4 aXN0cy4gKi8KKwkJCWlmIChkZWZhdWx0UGFydEN0eCkKKwkJCQlwYyA9IGRlZmF1bHRQYXJ0 Q3R4OworCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNP REVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCWVycm1zZygiY2FuIG5vdCBmaW5kIHBhcnRp dGlvbiBmb3Igc3BsaXQgcGFydGl0aW9uIHJvdyIpLAorCQkJCQkJZXJydGFibGUoc3BsaXRS ZWwpKTsKKwkJfQorCisJCWlmICh0dXBsZV9tYXApCisJCXsKKwkJCS8qIE5lZWQgdG8gdXNl IG1hcCB0byBjb3B5IGF0dHJpYnV0ZXMuICovCisJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9h dHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgcGMtPmRzdHNsb3Qp OworCQl9CisJCWVsc2UKKwkJeworCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAq LworCQkJaW5zZXJ0c2xvdCA9IHBjLT5kc3RzbG90OworCisJCQlFeGVjQ2xlYXJUdXBsZShp bnNlcnRzbG90KTsKKworCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Ns b3QtPnR0c192YWx1ZXMsCisJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0c19u dmFsaWQpOworCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c19pc251bGwsIHNyY3Nsb3QtPnR0 c19pc251bGwsCisJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7 CisKKwkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJfQorCisJCS8q IFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxhdGlvbi4gKi8KKwkJdGFibGVf dHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVsLCBpbnNlcnRzbG90LCBteWNpZCwKKwkJCQkJCSAg IHRpX29wdGlvbnMsIHBjLT5iaXN0YXRlKTsKKworCQlSZXNldEV4cHJDb250ZXh0KGVjb250 ZXh0KTsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCX0KKworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRDeHQpOworCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwlVbnJlZ2lz dGVyU25hcHNob3Qoc25hcHNob3QpOworCisJaWYgKHR1cGxlX21hcCkKKwkJZnJlZV9jb252 ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xv dChzcmNzbG90KTsKKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwlmb3JlYWNo KGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0 KChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpLCB0aV9vcHRpb25z KTsKKworCS8qIE5lZWQgdG8gY2xvc2UgdGFibGUgYW5kIGZyZWUgYnVmZmVycyBmb3IgREVG QVVMVCBwYXJ0aXRpb24uICovCisJaWYgKGlzT2xkRGVmYXVsdFBhcnQpCisJeworCQlSZWxh dGlvbglkZWZhdWx0UGFydFJlbCA9IGRlZmF1bHRQYXJ0Q3R4LT5wYXJ0UmVsOworCisJCWRl bGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFydEN0eCwgdGlfb3B0aW9ucyk7 CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShk ZWZhdWx0UGFydFJlbCwgTm9Mb2NrKTsKKwl9Cit9CisKKwogLyoKICAqIGdldEF0dHJpYnV0 ZXNMaXN0OiByZXR1cm4gbGlzdCBvZiBjb2x1bW5zIChDb2x1bW5EZWYpIGxpa2UgbW9kZWwg dGFibGUKICAqIChtb2RlbFJlbCkKQEAgLTIyMzUwLDYgKzIyNjIzLDE1NSBAQCBjcmVhdGVQ YXJ0aXRpb25UYWJsZShSYW5nZVZhciAqbmV3UGFydE5hbWUsIFJlbGF0aW9uIG1vZGVsUmVs LCBPaWQgb3duZXJJZCkKIAlyZXR1cm4gbmV3UmVsOwogfQogCisvKgorICogQUxURVIgVEFC TEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IElOVE8gPHBhcnRp dGlvbi1saXN0PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJ CSBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0 KQoreworCVJlbGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNwbGl0UmVsT2lkOworCWNoYXIJ CXJlbG5hbWVbTkFNRURBVEFMRU5dOworCU9pZAkJCW5hbWVzcGFjZUlkOworCUxpc3RDZWxs ICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZh bHNlOworCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCUxpc3QJICAgKm5ld1Bh cnRSZWxzID0gTklMOworCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCU9pZAkJCWRlZmF1bHRQ YXJ0T2lkOworCU9pZAkJCXNhdmVfdXNlcmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7 CisJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZh dWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRy dWUpKTsKKworCS8qCisJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRo aXMgcGFydGl0aW9uOiBuZWVkIHRvIHVzZSBleGNsdXNpdmUKKwkgKiBsb2NrIGZvciBwcmV2 ZW50aW5nIERNTC1xdWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJICovCisJc3BsaXRSZWwg PSB0YWJsZV9vcGVucnYoY21kLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCXNw bGl0UmVsT2lkID0gUmVsYXRpb25HZXRSZWxpZChzcGxpdFJlbCk7CisKKwkvKiBDaGVjayBk ZXNjcmlwdGlvbnMgb2YgbmV3IHBhcnRpdGlvbnMuICovCisJZm9yZWFjaChsaXN0cHRyLCBj bWQtPnBhcnRsaXN0KQorCXsKKwkJT2lkCQkJZXhpc3RpbmdfcmVsaWQ7CisJCVNpbmdsZVBh cnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0 cHRyKTsKKworCQlzdHJsY3B5KHJlbG5hbWUsIHNwcy0+bmFtZS0+cmVsbmFtZSwgTkFNRURB VEFMRU4pOworCisJCS8qCisJCSAqIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3 ZSBhcmUgc3VwcG9zZWQgdG8gY3JlYXRlIHRoZQorCQkgKiBwYXJ0aXRpb24sIGNoZWNrIHdl IGhhdmUgcGVybWlzc2lvbiB0byBjcmVhdGUgdGhlcmUsIGxvY2sgaXQKKwkJICogYWdhaW5z dCBjb25jdXJyZW50IGRyb3AsIGFuZCBtYXJrIHN0bXQtPnJlbGF0aW9uIGFzCisJCSAqIFJF TFBFUlNJU1RFTkNFX1RFTVAgaWYgYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGlzIHNlbGVjdGVk LgorCQkgKi8KKwkJc3BzLT5uYW1lLT5yZWxwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZTsKKwkJbmFtZXNwYWNlSWQgPQorCQkJUmFuZ2VWYXJHZXRBbmRDaGVj a0NyZWF0aW9uTmFtZXNwYWNlKHNwcy0+bmFtZSwgTm9Mb2NrLCBOVUxMKTsKKworCQkvKgor CQkgKiBUaGlzIHdvdWxkIGZhaWwgbGF0ZXIgb24gYW55d2F5IGlmIHRoZSByZWxhdGlvbiBh bHJlYWR5IGV4aXN0cy4gQnV0CisJCSAqIGJ5IGNhdGNoaW5nIGl0IGhlcmUgd2UgY2FuIGVt aXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorCQkgKi8KKwkJZXhpc3RpbmdfcmVsaWQgPSBn ZXRfcmVsbmFtZV9yZWxpZChyZWxuYW1lLCBuYW1lc3BhY2VJZCk7CisJCWlmIChleGlzdGlu Z19yZWxpZCA9PSBzcGxpdFJlbE9pZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcg cGFydGl0aW9uIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAq LworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisJCWVsc2UgaWYgKGV4aXN0aW5nX3JlbGlkICE9 IEludmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVf RFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFk eSBleGlzdHMiLCByZWxuYW1lKSk7CisJfQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlv bi4gKi8KKwlSZW1vdmVJbmhlcml0YW5jZShzcGxpdFJlbCwgcmVsLCBmYWxzZSk7CisJLyog RG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCURldGFjaFBhcnRpdGlvbkZp bmFsaXplKHJlbCwgc3BsaXRSZWwsIGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgor CSAqIElmIG5ldyBwYXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0 aW9uIHRoZW4gd2Ugc2hvdWxkCisJICogcmVuYW1lIHNwbGl0IHBhcnRpdGlvbiBmb3IgcmV1 c2luZyBuYW1lLgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2Ug bXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0 aW9uIHR1cGxlCisJCSAqIHZpc2libGUgZm9yIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFu ZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KKwkJc3By aW50Zih0bXBSZWxOYW1lLCAic3BsaXQtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChy ZWwpLCBNeVByb2NQaWQpOworCQlSZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0UmVsT2lk LCB0bXBSZWxOYW1lLCBmYWxzZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFdlIG11c3QgYnVt cCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBs ZQorCQkgKiB2aXNpYmxlIGFmdGVyIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50 ZXJJbmNyZW1lbnQoKTsKKwl9CisKKwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ug c3BsaXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2gobGlzdHB0 ciwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChT aW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3 UGFydFJlbDsKKworCQluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUoc3BzLT5u YW1lLCByZWwsCisJCQkJCQkJCQkJICBzcGxpdFJlbC0+cmRfcmVsLT5yZWxvd25lcik7CisJ CW5ld1BhcnRSZWxzID0gbGFwcGVuZChuZXdQYXJ0UmVscywgbmV3UGFydFJlbCk7CisJfQor CisJLyoKKwkgKiBTd2l0Y2ggdG8gdGhlIHRhYmxlIG93bmVyJ3MgdXNlcmlkLCBzbyB0aGF0 IGFueSBpbmRleCBmdW5jdGlvbnMgYXJlIHJ1bgorCSAqIGFzIHRoYXQgdXNlci4gIEFsc28g bG9jayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBhbmQKKwkgKiBhcnJh bmdlIHRvIG1ha2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8gdGhpcyBjb21tYW5k LgorCSAqCisJICogTmVlZCB0byBkbyBpdCBhZnRlciBkZXRlcm1pbmUgbmFtZXNwYWNlIGlu IGNyZWF0ZVBhcnRpdGlvblRhYmxlIGNhbGwuCisJICovCisJR2V0VXNlcklkQW5kU2VjQ29u dGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwlTZXRVc2VySWRBbmRT ZWNDb250ZXh0KHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyLAorCQkJCQkJICAgc2F2ZV9z ZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9OKTsKKwlzYXZlX25l c3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwor CisJLyogQ29weSBkYXRhIGZyb20gc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBwYXJ0aXRpb25z LiAqLworCW1vdmVTcGxpdFRhYmxlUm93cyhyZWwsIHNwbGl0UmVsLCBjbWQtPnBhcnRsaXN0 LCBuZXdQYXJ0UmVscywgZGVmYXVsdFBhcnRPaWQpOworCS8qIEtlZXAgdGhlIGxvY2sgdW50 aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKHNwbGl0UmVsLCBOb0xvY2spOworCisJLyog QXR0YWNoIG5ldyBwYXJ0aXRpb25zIHRvIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWZvcmJv dGgobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxzKQorCXsK KwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikg bGZpcnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsID0gKFJlbGF0aW9uKSBs Zmlyc3QobGlzdHB0cjIpOworCisJCS8qCisJCSAqIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNh dGlvbiBmb3IgZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QKKwkJICogbmVlZGVkLgor CQkgKi8KKwkJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBz cHMtPmJvdW5kKTsKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRh YmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisJfQorCisJLyogRHJvcCBzcGxpdCBw YXJ0aXRpb24uICovCisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJ b2JqZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7CisJb2JqZWN0Lm9iamVjdFN1YklkID0g MDsKKwkvKiBQcm9iYWJseSBEUk9QX0NBU0NBREUgaXMgbm90IG5lZWRlZC4gKi8KKwlwZXJm b3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisKKwkvKiBSb2xsIGJh Y2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLworCUF0 RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOworCisJLyogUmVzdG9yZSB1c2Vy aWQgYW5kIHNlY3VyaXR5IGNvbnRleHQgKi8KKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNh dmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KKwogLyoKICAqIG1vdmVNZXJnZWRU YWJsZXNSb3dzOiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIChtZXJnaW5nUGFydGl0 aW9uc0xpc3QpCiAgKiBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgKHJlbCkgYW5kIG1vdmUg cm93cyBpbnRvIHRoZSBuZXcgcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA0NzgyM2Vm N2E1Li43NTBmNTMxYjgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1OCw2ICsyNTgsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVBhcnRpdGlvbkVsZW0gKnBhcnRlbGVtOwog CVBhcnRpdGlvblNwZWMgKnBhcnRzcGVjOwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJv dW5kc3BlYzsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzaW5nbGVwYXJ0c3BlYzsKIAlSb2xl U3BlYyAgICpyb2xlc3BlYzsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1YmxpY2F0aW9ub2Jq ZWN0c3BlYzsKIAlzdHJ1Y3QgU2VsZWN0TGltaXQgKnNlbGVjdGxpbWl0OwpAQCAtNjQxLDYg KzY0Miw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8cGFydGVsZW0+ CXBhcnRfZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFtcwogJXR5cGUgPHBhcnRib3Vu ZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNpbmdsZXBhcnRzcGVjPglTaW5n bGVQYXJ0aXRpb25TcGVjCisldHlwZSA8bGlzdD4JCXBhcnRpdGlvbnNfbGlzdAogJXR5cGUg PGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5k X2VsZW0KIApAQCAtNzcxLDcgKzc3NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJU0FWRVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09O RF9QIFNFQ1VSSVRZIFNFTEVDVAogCVNFUVVFTkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJM RSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hP VwotCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTT1VSQ0Ug U1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAorCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJ TlQgU05BUFNIT1QgU09NRSBTUExJVCBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVf UAogCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElOIFNURE9VVCBTVE9SQUdFIFNU T1JFRCBTVFJJQ1RfUCBTVFJJTkdfUCBTVFJJUF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklO RyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNURU1fVVNFUgogCkBAIC0y MzIyLDYgKzIzMjUsMjMgQEAgYWx0ZXJfdGFibGVfY21kczoKIAkJCXwgYWx0ZXJfdGFibGVf Y21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJ OwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjCQkJCQkJCXsg JCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRpb25zX2xpc3QgJywnIFNpbmds ZVBhcnRpdGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK1Npbmds ZVBhcnRpdGlvblNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9u Qm91bmRTcGVjCisJCQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpuID0gbWFrZU5v ZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisKKwkJCQkJbi0+bmFtZSA9ICQyOworCQkJCQlu LT5ib3VuZCA9ICQzOworCisJCQkJCSQkID0gbjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9u X2NtZDoKIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJs ZV9uYW1lPiBGT1IgVkFMVUVTICovCiAJCQlBVFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9u YW1lIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAtMjM2Niw2ICsyMzg2LDIwIEBAIHBhcnRpdGlv bl9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAq KSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04g PHBhcnRpdGlvbl9uYW1lPiBJTlRPICgpICovCisJCQl8IFNQTElUIFBBUlRJVElPTiBxdWFs aWZpZWRfbmFtZSBJTlRPICcoJyBwYXJ0aXRpb25zX2xpc3QgJyknCisJCQkJeworCQkJCQlB bHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRp dGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0 eXBlID0gQVRfU3BsaXRQYXJ0aXRpb247CisJCQkJCWNtZC0+bmFtZSA9ICQzOworCQkJCQlj bWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ2OworCQkJCQljbWQt PmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJ CQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1F UkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCiAJCQl8IE1FUkdF IFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVk X25hbWUKIAkJCQl7CkBAIC0xNzk5Niw2ICsxODAzMCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29y ZDoKIAkJCXwgU0tJUAogCQkJfCBTTkFQU0hPVAogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQK IAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApAQCAtMTg2MzYs NiArMTg2NzEsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNOQVBTSE9UCiAJCQl8 IFNPTUUKIAkJCXwgU09VUkNFCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJM RQogCQkJfCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmlu ZGV4IDBkM2FiMzVhNTcuLjUxMGY4NTRkZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYwpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnN0 cmFpbnRBdHRycyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJIExpc3QgKmNv bnN0cmFpbnRMaXN0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtblR5cGUoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pOwogc3RhdGljIHZvaWQgc2V0 U2NoZW1hTmFtZShjb25zdCBjaGFyICpjb250ZXh0X3NjaGVtYSwgY2hhciAqKnN0bXRfc2No ZW1hX25hbWUpOwotc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKTsKK3N0YXRpYyB2b2lkIHRyYW5z Zm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25Cb3Vu ZFNwZWMgKmJvdW5kKTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1QYXJ0aXRpb25SYW5nZUJv dW5kcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0LAogCQkJCQkJCQkJCSAgIFJl bGF0aW9uIHBhcmVudCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUluZmluaXRlQm91bmRzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QpOwpAQCAtMzUyOSw2ICszNTI5LDQwIEBA IGNoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQpCiAJcmVsYXRp b25fY2xvc2UocGFydFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIH0KIAorLyoKKyAqIHRyYW5z Zm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0CisgKgkJQW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUg Li4uIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKgorICogRm9yIGVhY2ggbmV3IHBhcnRp dGlvbiBzcHMtPmJvdW5kIGlzIHNldCB0byB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgb2YgYm91 bmQuCisgKiBEb2VzIGNoZWNrcyBmb3IgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zLgorICov CitzdGF0aWMgdm9pZAordHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQoreworCVJlbGF0aW9uCXBh cmVudCA9IGN4dC0+cmVsOworCU9pZAkJCXNwbGl0UGFydE9pZDsKKwlMaXN0Q2VsbCAgICps aXN0cHRyOworCisJLyogVHJhbnNmb3JtIHBhcnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0 aXRpb25zIGluIHRoZSBsaXN0OiAqLworCWZvcmVhY2gobGlzdHB0ciwgcGFydGNtZC0+cGFy dGxpc3QpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0 aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJY3h0LT5wYXJ0Ym91bmQgPSBOVUxM OworCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoY3h0LCBzcHMtPmJvdW5kKTsKKwkJLyogQXNz aWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91bmQuICovCisJCXNw cy0+Ym91bmQgPSBjeHQtPnBhcnRib3VuZDsKKwl9CisKKwlzcGxpdFBhcnRPaWQgPSBSYW5n ZVZhckdldFJlbGlkKHBhcnRjbWQtPm5hbWUsIEFjY2Vzc1NoYXJlTG9jaywgZmFsc2UpOwor CisJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBzcGxpdFBhcnRPaWQpOworCisJLyogVGhlbiB3 ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8K KwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFydE9pZCwgcGFy dGNtZC0+bmFtZSwgcGFydGNtZC0+cGFydGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKworCiAv KgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKICAqCQlBbmFseXplIHRoZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCkBAIC0zODczLDcgKzM5 MDcsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVT dG10ICpzdG10LAogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRp dGlvbkNtZCAqKSBjbWQtPmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4 dCwgcGFydGNtZCk7CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21k LT5ib3VuZCk7CiAJCQkJCS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgcGFy dGl0aW9uIGJvdW5kICovCiAJCQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0LnBhcnRib3VuZDsK IAkJCQl9CkBAIC0zODgxLDYgKzM5MTUsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5k KG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRp b246CiAJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCQl7CiAJCQkJCVBhcnRpdGlv bkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWY7CkBAIC0zODg5LDcg KzM5MjQsMTEgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRh YmxlU3RtdCAqc3RtdCwKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCQkJZXJybXNnKCJs aXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVt cyIpKTsKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwgcGFydGNt ZCk7CisKKwkJCQkJaWYgKGNtZC0+c3VidHlwZSA9PSBBVF9TcGxpdFBhcnRpdGlvbikKKwkJ CQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KCZjeHQsIHBhcnRjbWQpOworCQkJ CQllbHNlCisJCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0 Y21kKTsKIAkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQkJYnJl YWs7CiAJCQkJfQpAQCAtNDMyNCwxMyArNDM2MywxMyBAQCBzZXRTY2hlbWFOYW1lKGNvbnN0 IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSkKIAogLyoK ICAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZAotICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRB Q0ggUEFSVElUSU9OIGNvbW1hbmQKKyAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIL1NQ TElUIFBBUlRJVElPTiBjb21tYW5kCiAgKgotICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIIFBB UlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCi0gKiB0cmFu c2Zvcm1lZCB2YWx1ZSBvZiBjbWQtPmJvdW5kLgorICogSW4gY2FzZSBvZiB0aGUgQVRUQUNI L1NQTElUIFBBUlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhl CisgKiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KICAqLwogc3RhdGljIHZvaWQKLXRy YW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25D bWQgKmNtZCkKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKQogewogCVJlbGF0aW9uCXBhcmVudFJlbCA9 IGN4dC0+cmVsOwogCkBAIC00MzM5LDkgKzQzNzgsOSBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25D bWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCWNhc2Ug UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKIAkJCS8qIHRyYW5zZm9ybSB0aGUgcGFydGl0 aW9uIGJvdW5kLCBpZiBhbnkgKi8KIAkJCUFzc2VydChSZWxhdGlvbkdldFBhcnRpdGlvbktl eShwYXJlbnRSZWwpICE9IE5VTEwpOwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJ CWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWN4dC0+cGFydGJvdW5kID0gdHJhbnNmb3JtUGFy dGl0aW9uQm91bmQoY3h0LT5wc3RhdGUsIHBhcmVudFJlbCwKLQkJCQkJCQkJCQkJCQkJIGNt ZC0+Ym91bmQpOworCQkJCQkJCQkJCQkJCQkgYm91bmQpOwogCQkJYnJlYWs7CiAJCWNhc2Ug UkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWDoKIApAQCAtNDM0OSw3ICs0Mzg4LDcgQEAgdHJh bnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNt ZCAqY21kKQogCQkJICogQSBwYXJ0aXRpb25lZCBpbmRleCBjYW5ub3QgaGF2ZSBhIHBhcnRp dGlvbiBib3VuZCBzZXQuICBBTFRFUgogCQkJICogSU5ERVggcHJldmVudHMgdGhhdCB3aXRo IGl0cyBncmFtbWFyLCBidXQgbm90IEFMVEVSIFRBQkxFLgogCQkJICovCi0JCQlpZiAoY21k LT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCiAJCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUi LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggY2I3MTlmMWZm NS4uNDIxNDZjM2JmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5j CkBAIC01MDQxLDEwICs1MDQxLDY5IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19y YW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJfQogfQogCisvKgorICogY2hlY2tfcGFydGl0aW9u c19ub3Rfb3ZlcmxhcF9saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRp dGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjaGVja19w YXJ0aXRpb25zX2Zvcl9zcGxpdCgpLgorICogQ2hlY2tzIHRoYXQgdGhlIHZhbHVlcyBvZiB0 aGUgbmV3IHBhcnRpdGlvbnMgZG8gbm90IG92ZXJsYXAuCisgKgorICogcGFyZW50OglwYXJ0 aXRpb25lZCB0YWJsZQorICogcGFydHM6CWFycmF5IG9mIFNpbmdsZVBhcnRpdGlvblNwZWMg c3RydWN0cyB3aXRoIGluZm8gYWJvdXQgc3BsaXQgcGFydGl0aW9ucworICogbnBhcnRzOglz aXplIG9mIGFycmF5ICJwYXJ0cyIKKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlv bnNfbm90X292ZXJsYXBfbGlzdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCSAgU2luZ2xl UGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJ CSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgUEdfVVNFRF9G T1JfQVNTRVJUU19PTkxZID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlp bnQJCQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNpbmds ZVBhcnRpdGlvblNwZWMgKnNwczEsCisJCQkgICAqc3BzMjsKKwlMaXN0CSAgICpvdmVybGFw OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJc3BzMSA9IHBhcnRz W2ldOworCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJCXNw czIgPSBwYXJ0c1tqXTsKKworCQkJLyoKKwkJCSAqIENhbGN1bGF0ZSBpbnRlcnNlY3Rpb24g YmV0d2VlbiB2YWx1ZXMgb2YgdHdvIHBhcnRpdGlvbnMuCisJCQkgKi8KKwkJCW92ZXJsYXAg PSBsaXN0X2ludGVyc2VjdGlvbihzcHMxLT5ib3VuZC0+bGlzdGRhdHVtcywKKwkJCQkJCQkJ CQlzcHMyLT5ib3VuZC0+bGlzdGRhdHVtcyk7CisJCQlpZiAobGlzdF9sZW5ndGgob3Zlcmxh cCkgPiAwKQorCQkJeworCQkJCUNvbnN0CSAgICp2YWwgPSAoQ29uc3QgKikgbGZpcnN0KGxp c3RfaGVhZChvdmVybGFwKSk7CisKKwkJCQlvdmVybGFwX2xvY2F0aW9uID0gdmFsLT5sb2Nh dGlvbjsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwi JXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uIFwiJXNcIiIs CisJCQkJCQkJICAgc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3BzMi0+bmFtZS0+cmVsbmFtZSks CisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7 CisJCQl9CisJCX0KKwl9Cit9CisKIC8qCiAgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMK ICAqCiAgKiBSZXR1cm5zIGRlc2NyaXB0aW9uIG9mIHBhcnRpdGlvbiB3aXRoIE9pZCAicGFy dE9pZCIgYW5kIG5hbWUgIm5hbWUiLgorICoKKyAqIHBhcnRPaWQ6CXBhcnRpdGlvbiBPaWQK KyAqIG5hbWU6CXBhcnRpdGlvbiBuYW1lCiAgKi8KIHN0YXRpYyBQYXJ0aXRpb25Cb3VuZFNw ZWMgKgogZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lkLCBSYW5nZVZhciAq bmFtZSkKQEAgLTUwNzcsNiArNTEzNiw2MzYgQEAgZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVj KE9pZCBwYXJ0T2lkLCBSYW5nZVZhciAqbmFtZSkKIAlyZXR1cm4gYm91bmRzcGVjOwogfQog CisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UKKyAqCisg KiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlvbmluZykKKyAqCisgKiBDaGVja3Mg dGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiAic3BlYyIgYXJlIGluc2lkZSBib3VuZHMg b2Ygc3BsaXQKKyAqIHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4gSWYgZmly c3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBpcworICogdGhlIGZpcnN0IG9mIG5l dyBwYXJ0aXRpb25zKSB0aGVuIGxvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1 YWwgKG9yCisgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgaW4gY2FzZSBkZWZhdWx0UGFydD10 cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdAorICogcGFydGl0aW9uLiBJZiBsYXN0PXRy dWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMgdGhlIGxhc3Qgb2YgbmV3CisgKiBwYXJ0 aXRpb25zKSB0aGVuIHVwcGVyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9y IGxlc3MgdGhhbiBvcgorICogZXF1YWwgaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byB1 cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisgKgorICogcGFyZW50OgkJCXBhcnRp dGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24K KyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG5ldyBwYXJ0aXRpb24K KyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogc3BsaXRQYXJ0TmFt ZToJc3BsaXQgcGFydGl0aW9uIG5hbWUKKyAqIGZpcnN0OgkJCXRydWUgaW4gY2FzZSBuZXcg cGFydGl0aW9uICJzcGVjIiBpcyBmaXJzdCBvZiBuZXcgcGFydGl0aW9ucworICogbGFzdDoJ CQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAic3BlYyIgaXMgbGFzdCBvZiBuZXcgcGFy dGl0aW9ucworICogZGVmYXVsdFBhcnQ6CQl0cnVlIGluIGNhc2UgcGFydGl0aW9uZWQgdGFi bGUgaGFzIERFRkFVTFQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJz ZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRp YyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShSZWxhdGlv biBwYXJlbnQsCisJCQkJCQkJCQkgICBjaGFyICpyZWxuYW1lLAorCQkJCQkJCQkJICAgUGFy dGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwK KwkJCQkJCQkJCSAgIFJhbmdlVmFyICpzcGxpdFBhcnROYW1lLAorCQkJCQkJCQkJICAgYm9v bCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVm YXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0 aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0 aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFsOwor CisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsK KwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsK KworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVjLT5s b3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5k KGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZpcnN0 IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBzcGVj aWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3VuZF9j bXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJvdW5k IGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3Vu ZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJ CQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywg bG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2YWwg IT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVtYXRp YyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5nZURh dHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAxKTsK KworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmll ZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJCWVycmRl dGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVh bCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0 cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91bmRf c3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVlZCB0byBjaGVjayBmaXJz dCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcgcGFydGl0aW9ucykgKi8K KwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BsaXRf c3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBhcnRPaWQsIHNwbGl0UGFy dE5hbWUpOworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3Qp CisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxp dF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3Bl Yy0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5k X2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJ CQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0 dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKwor CQkJLyoKKwkJCSAqIExvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9y IGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorCQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVl KSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICgh ZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJ ZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsK KwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJaWYgKGNtcHZhbCA8IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRo KHNwZWMtPmxvd2VyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQkJCQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMg bGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAg IHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlv blJhbmdlQm91bmQgKnNwbGl0X3VwcGVyOworCisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25l X3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZh bHNlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0 dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5w YXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgdXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQs CisJCQkJCQkJCQkJICBmYWxzZSwgc3BsaXRfdXBwZXIpOworCisJCQkvKgorCQkJICogVXBw ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVx dWFsIGluCisJCQkgKiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsK KwkJCQlpZiAoY21wdmFsICE9IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNw ZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90 IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAg IHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFs ID4gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMs IGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJ fQorCQkJfQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19m b3Jfc3BsaXRfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25p bmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gYXJlIGlu c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0 T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6 CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lm aWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBw YXJ0aXRpb24gT2lkCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVj dCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVj a19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hh ciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJ CQkJCQkJICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3Rh dGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9u RGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0g cGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3Zlcmxh cCA9IGZhbHNlOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlMaXN0Q2VsbCAg ICpjZWxsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZ X0xJU1QpOworCUFzc2VydChzcGVjLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lf TElTVCk7CisJQXNzZXJ0KGJvdW5kaW5mbyAmJiBib3VuZGluZm8tPnN0cmF0ZWd5ID09IFBB UlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCS8qCisJICogU2VhcmNoIGVhY2ggdmFsdWUg b2YgbmV3IHBhcnRpdGlvbiAic3BlYyIgaW4gZXhpc3RpbmcgcGFydGl0aW9ucy4gQWxsCisJ ICogb2YgdGhlbSBzaG91bGQgYmUgaW4gc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBzcGxp dFBhcnRPaWQpLgorCSAqLworCWZvcmVhY2goY2VsbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7 CisJCUNvbnN0CSAgICp2YWwgPSBsZmlyc3Rfbm9kZShDb25zdCwgY2VsbCk7CisKKwkJb3Zl cmxhcF9sb2NhdGlvbiA9IHZhbC0+bG9jYXRpb247CisJCWlmICghdmFsLT5jb25zdGlzbnVs bCkKKwkJeworCQkJaW50CQkJb2Zmc2V0OworCQkJYm9vbAkJZXF1YWw7CisKKwkJCW9mZnNl dCA9IHBhcnRpdGlvbl9saXN0X2JzZWFyY2goJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJ CQkJCQkJCWtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJYm91bmRpbmZvLAorCQkJ CQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCSZlcXVhbCk7CisJCQlpZiAo b2Zmc2V0ID49IDAgJiYgZXF1YWwpCisJCQl7CisJCQkJd2l0aCA9IGJvdW5kaW5mby0+aW5k ZXhlc1tvZmZzZXRdOworCQkJCWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRoXSAhPSBzcGxpdFBh cnRPaWQpCisJCQkJeworCQkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJfQorCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBw YXJ0aXRpb24gXCIlc1wiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBw YXJ0aXRpb24gZG9lcyBub3QgaGF2ZSIsCisJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJCX0KKwkJ ZWxzZSBpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRpbmZvKSkKKwkJ eworCQkJd2l0aCA9IGJvdW5kaW5mby0+bnVsbF9pbmRleDsKKwkJCWlmIChwYXJ0ZGVzYy0+ b2lkc1t3aXRoXSAhPSBzcGxpdFBhcnRPaWQpCisJCQl7CisJCQkJb3ZlcmxhcCA9IHRydWU7 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQll cnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVj YXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZSIsCisJCQkJCQkgICByZWxuYW1l KSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikp OworCX0KKworCWlmIChvdmVybGFwKQorCXsKKwkJQXNzZXJ0KHdpdGggPj0gMCk7CisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgd291bGQgb3Zlcmxh cCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAg IHJlbG5hbWUsIGdldF9yZWxfbmFtZShwYXJ0ZGVzYy0+b2lkc1t3aXRoXSkpLAorCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9Cit9CisK Ky8qCisgKiBmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QKKyAqCisgKiAoZnVu Y3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIEZ1bmN0aW9uIHJldHVy bnMgdHJ1ZSBpbiBjYXNlIGFueSBvZiBuZXcgcGFydGl0aW9ucyBjb250YWlucyB2YWx1ZSAi dmFsdWUiLgorICoKKyAqIHBhcnRzdXBmdW5jOgkJaW5mb3JtYXRpb24gYWJvdXQgY29tcGFy aXNvbiBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhcnRpdGlvbiBrZXkKKyAqIHBh cnRjb2xsYXRpb246CXBhcnRpdGlvbmluZyBjb2xsYXRpb24KKyAqIHBhcnRzOgkJCXBvaW50 ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbnMKKyAqIG5wYXJ0 czoJCQludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHZhbHVlOgkJCXRoZSB2YWx1ZSB0 aGF0IHdlIGFyZSBsb29raW5nIGZvcgorICogaXNudWxsOgkJCXRydWUgaWYgdGhlIHZhbHVl IHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yIGlzIE5VTEwKKyAqLworc3RhdGljIGJvb2wKK2Zp bmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdChGbWdySW5mbyAqcGFydHN1cGZ1bmMs CisJCQkJCQkJCSAgT2lkICpwYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkgIFNpbmdsZVBhcnRp dGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJCQkgIERh dHVtIHZhbHVlLAorCQkJCQkJCQkgIGJvb2wgaXNudWxsKQoreworCUxpc3RDZWxsICAgKnZh bHB0cjsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsK KwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisKKwkJZm9yZWFjaCh2 YWxwdHIsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsKKwkJCUNvbnN0CSAgICp2YWwg PSBsZmlyc3Rfbm9kZShDb25zdCwgdmFscHRyKTsKKworCQkJaWYgKGlzbnVsbCAmJiB2YWwt PmNvbnN0aXNudWxsKQorCQkJCXJldHVybiB0cnVlOworCisJCQlpZiAoIWlzbnVsbCAmJiAh dmFsLT5jb25zdGlzbnVsbCkKKwkJCXsKKwkJCQlpZiAoRGF0dW1HZXRJbnQzMihGdW5jdGlv bkNhbGwyQ29sbCgmcGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkJcGFydGNvbGxhdGlv blswXSwKKwkJCQkJCQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCQkJdmFs dWUpKSA9PSAwKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4g ZmFsc2U7Cit9CisKKy8qCisgKiBjaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRp b25zCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisg KiBDaGVja3MgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQg cGFydE9pZCkgY29udGFpbnMgaW4gbmV3CisgKiBwYXJ0aXRpb25zLgorICoKKyAqIHBhcmVu dDoJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQK KyAqIHBhcnRzOglwb2ludGVyIHRvIGFycmF5IHdpdGggbmV3IHBhcnRpdGlvbnMgZGVzY3Jp cHRpb25zCisgKiBucGFydHM6CW51bWJlciBvZiBuZXcgcGFydGl0aW9ucworICogcHN0YXRl Oglwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9z aXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3Bh cnRpdGlvbnMoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICBPaWQgcGFydE9pZCwKKwkJ CQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkJICBpbnQg bnBhcnRzLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9u S2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9u RGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNl KTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5m bzsKKwlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0gdHJ1ZTsKKwlib29sCQlzZWFyY2hOdWxs ID0gZmFsc2U7CisJRGF0dW0JCWRhdHVtID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCisJ QXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJ LyoKKwkgKiBTcGVjaWFsIHByb2Nlc3NpbmcgZm9yIE5VTEwgdmFsdWUuIFNlYXJjaCBOVUxM IHZhbHVlIGlmIHRoZSBzcGxpdAorCSAqIHBhcnRpdGlvbiAocGFydE9pZCkgY29udGFpbnMg aXQuCisJICovCisJaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2NlcHRzX251bGxzKGJvdW5kaW5m bykgJiYKKwkJcGFydGRlc2MtPm9pZHNbYm91bmRpbmZvLT5udWxsX2luZGV4XSA9PSBwYXJ0 T2lkKQorCXsKKwkJaWYgKCFmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoJmtl eS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlvbiwg cGFydHMsIG5wYXJ0cywgZGF0dW0sIHRydWUpKQorCQl7CisJCQlmb3VuZCA9IGZhbHNlOwor CQkJc2VhcmNoTnVsbCA9IHRydWU7CisJCX0KKwl9CisKKwkvKgorCSAqIFNlYXJjaCBhbGwg dmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiB3aXRoIHBhcnRPaWQgaW4gUGFydGl0aW9uRGVz YyBvZgorCSAqIHBhcnRpdGlvbmVkIHRhYmxlLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBi b3VuZGluZm8tPm5kYXR1bXM7IGkrKykKKwl7CisJCWlmIChwYXJ0ZGVzYy0+b2lkc1tib3Vu ZGluZm8tPmluZGV4ZXNbaV1dID09IHBhcnRPaWQpCisJCXsKKwkJCS8qIFdlIGZvdW5kIHZh bHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zLiAqLworCQkJZGF0dW0gPSBib3Vu ZGluZm8tPmRhdHVtc1tpXVswXTsKKwkJCWlmICghZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0 aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJICAga2V5LT5w YXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgZmFsc2UpKQorCQkJeworCQkJ CWZvdW5kID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIWZv dW5kKQorCXsKKwkJQ29uc3QJICAgKm5vdEZvdW5kVmFsOworCisJCWlmICghc2VhcmNoTnVs bCkKKworCQkJLyoKKwkJCSAqIE1ha2UgQ29uc3QgZm9yIGdldHRpbmcgc3RyaW5nIHJlcHJl c2VudGF0aW9uIG9mIG5vdCBmb3VuZAorCQkJICogdmFsdWUuCisJCQkgKi8KKwkJCW5vdEZv dW5kVmFsID0gbWFrZUNvbnN0KGtleS0+cGFydHR5cGlkWzBdLAorCQkJCQkJCQkJa2V5LT5w YXJ0dHlwbW9kWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwY29sbFswXSwKKwkJCQkJCQkJ CWtleS0+cGFydHR5cGxlblswXSwKKwkJCQkJCQkJCWRhdHVtLAorCQkJCQkJCQkJZmFsc2Us CS8qIGlzbnVsbCAqLworCQkJCQkJCQkJa2V5LT5wYXJ0dHlwYnl2YWxbMF0pOworCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUg JXMgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzIiwKKwkJCQkJICAgc2VhcmNoTnVsbCA/ICJO VUxMIiA6IGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcobm90Rm91bmRWYWwpKSk7CisJfQor fQorCisvKgorICogY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQKKyAqCisgKiBDaGVja3Mg bmV3IHBhcnRpdGlvbnMgZm9yIFNQTElUIFBBUlRJVElPTlMgY29tbWFuZDoKKyAqIDEuIERF RkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUuCisgKiAyLiBOZXcgcGFydGl0aW9ucyBz aG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMKKyAqICAgICh3aXRoIGV4aXN0aW5nIHBhcnRp dGlvbnMgdG9vKS4KKyAqIDMuIEJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90 IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5nCisgKiAgICBwYXJ0aXRpb25zLgorICog NC4gSW4gY2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCBwYXJ0aXRpb24sIG9uZSBv ZiBuZXcgcGFydGl0aW9ucworICogICAgc2hvdWxkIGJlIERFRkFVTFQuCisgKiA1LiBJbiBj YXNlIG5ldyBwYXJ0aXRpb25zIG9yIGV4aXN0aW5nIHBhcnRpdGlvbnMgY29udGFpbnMgREVG QVVMVAorICogICAgcGFydGl0aW9uLCBuZXcgcGFydGl0aW9ucyBjYW4gaGF2ZSBhbnkgYm91 bmRzIGluc2lkZSBzcGxpdAorICogICAgcGFydGl0aW9uIGJvdW5kIChjYW4gYmUgc3BhY2Vz IGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMpLgorICogNi4gSW4gY2FzZSBwYXJ0aXRpb25l ZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9uLCBERUZBVUxUCisgKiAg ICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIG5ldyBwYXJ0aXRpb24uCisg KiA3LiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG5vdCBjb250YWlucyBERUZBVUxUIHBhcnRp dGlvbiBhbmQKKyAqICAgIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVM VCBwYXJ0aXRpb24gdGhlIGZvbGxvd2luZworICogICAgc2hvdWxkIGJlIHRydWU6IHN1bSBi b3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGVxdWFsCisgKiAgICB0byBib3Vu ZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRh YmxlCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHNwbGl0UGFy dE5hbWU6CXNwbGl0IHBhcnRpdGlvbiBuYW1lCisgKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBh cnRpdGlvbnMKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZv ciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9u c19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9p ZCwKKwkJCQkJCSAgIFJhbmdlVmFyICpzcGxpdFBhcnROYW1lLAorCQkJCQkJICAgTGlzdCAq cGFydGxpc3QsCisJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9u S2V5IGtleTsKKwljaGFyCQlzdHJhdGVneTsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwli b29sCQlpc1NwbGl0UGFydERlZmF1bHQ7CisJYm9vbAkJZXhpc3RzRGVmYXVsdFBhcnQ7CisJ TGlzdENlbGwgICAqbGlzdHB0cjsKKwlpbnQJCQlkZWZhdWx0X2luZGV4ID0gLTE7CisJaW50 CQkJaSwKKwkJCQlqOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKipuZXdfcGFydHM7CisJU2lu Z2xlUGFydGl0aW9uU3BlYyAqc3BzUHJldiA9IE5VTEw7CisJaW50CQkJbnBhcnRzID0gMDsK KworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3RyYXRlZ3kg PSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisKKwlzd2l0Y2ggKHN0cmF0ZWd5KQor CXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJY2FzZSBQQVJUSVRJT05f U1RSQVRFR1lfUkFOR0U6CisJCQl7CisJCQkJLyoKKwkJCQkgKiBNYWtlIGFycmF5IG5ld19w YXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25zIGV4Y2VwdCBERUZBVUxUCisJCQkJICogcGFydGl0 aW9uLgorCQkJCSAqLworCQkJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoq KQorCQkJCQlwYWxsb2MwKGxpc3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQ YXJ0aXRpb25TcGVjICopKTsKKwkJCQlpID0gMDsKKwkJCQlmb3JlYWNoKGxpc3RwdHIsIHBh cnRsaXN0KQorCQkJCXsKKwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0KKwkJCQkJ CShTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkJCQlpZiAo c3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJCQkJeworCQkJCQkJaWYgKGRlZmF1bHRfaW5k ZXggPj0gMCkKKwkJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQkJZXJybXNnKCJERUZB VUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lIiksCisJCQkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBzcHMtPm5hbWUtPmxvY2F0aW9uKSk7CisJCQkJCQlkZWZhdWx0X2lu ZGV4ID0gaTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCW5ld19wYXJ0c1tu cGFydHMrK10gPSBzcHM7CisJCQkJCX0KKwkJCQkJaSsrOworCQkJCX0KKwkJCX0KKwkJCWJy ZWFrOworCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0hBU0g6CisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkJZXJybXNnKCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3Qg YmUgc3BsaXQiKSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg InVuZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+ c3RyYXRlZ3kpOworCQkJYnJlYWs7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElP Tl9TVFJBVEVHWV9SQU5HRSkKKwl7CisJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9i b3VuZHM7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKip0bXBfbmV3X3BhcnRzOworCisJCS8q CisJCSAqIEZvciBzaW1wbGlmeSBjaGVjayBmb3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25z IG5lZWQgdG8gc29ydCBhbGwKKwkJICogcGFydGl0aW9ucyBpbiBhc2NlbmRpbmcgb3JkZXIg b2YgdGhlbSBib3VuZHMgKHdlIGNvbXBhcmUgdXBwZXIKKwkJICogYm91bmQgb25seSkuCisJ CSAqLworCQlsb3dlcl9ib3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCXBh bGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCS8q IENyZWF0ZSBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCWZvciAoaSA9IDA7IGkgPCBu cGFydHM7IGkrKykKKwkJeworCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0 aW9uX3Jib3VuZChrZXksIGksCisJCQkJCQkJCQkJCQkJCW5ld19wYXJ0c1tpXS0+Ym91bmQt Pmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJfQorCisJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIg Ym91bmRzLiAqLworCQlxc29ydF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVvZihQ YXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9j bXAsICh2b2lkICopIGtleSk7CisKKwkJLyogUmVvcmRlciBhcnJheSBvZiBwYXJ0aXRpb25z LiAqLworCQl0bXBfbmV3X3BhcnRzID0gbmV3X3BhcnRzOworCQluZXdfcGFydHMgPSAoU2lu Z2xlUGFydGl0aW9uU3BlYyAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFNpbmds ZVBhcnRpdGlvblNwZWMgKikpOworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJ CQluZXdfcGFydHNbaV0gPSB0bXBfbmV3X3BhcnRzW2xvd2VyX2JvdW5kc1tpXS0+aW5kZXhd OworCisJCXBmcmVlKHRtcF9uZXdfcGFydHMpOworCQlwZnJlZShsb3dlcl9ib3VuZHMpOwor CX0KKworCWRlZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRl c2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJLyogaXNT cGxpdFBhcnREZWZhdWx0IGZsYWc6IGlzIHNwbGl0IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFy dGl0aW9uPyAqLworCWlzU3BsaXRQYXJ0RGVmYXVsdCA9IChkZWZhdWx0UGFydE9pZCA9PSBz cGxpdFBhcnRPaWQpOworCisJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCAmJiBkZWZhdWx0X2lu ZGV4IDwgMCkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1zZygib25lIHBhcnRpdGlvbiBp biB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBp cyBERUZBVUxUIiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgKChTaW5nbGVQ YXJ0aXRpb25TcGVjICopIGxpbml0aWFsKHBhcnRsaXN0KSktPm5hbWUtPmxvY2F0aW9uKSk7 CisJfQorCWVsc2UgaWYgKCFpc1NwbGl0UGFydERlZmF1bHQgJiYgKGRlZmF1bHRfaW5kZXgg Pj0gMCkgJiYgT2lkSXNWYWxpZChkZWZhdWx0UGFydE9pZCkpCisJeworCQlTaW5nbGVQYXJ0 aXRpb25TcGVjICpzcHNEZWYgPQorCQkJKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGlzdF9u dGgocGFydGxpc3QsIGRlZmF1bHRfaW5kZXgpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1z ZygibmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFy dGl0aW9uIGFscmVhZHkgZXhpc3RzIiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgc3BzRGVmLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKworCS8qIEluZGljYXRvciB0aGF0 IHBhcnRpdGlvbmVkIHRhYmxlIGhhcyAob3Igd2lsbCBoYXZlKSBERUZBVUxUIHBhcnRpdGlv biAqLworCWV4aXN0c0RlZmF1bHRQYXJ0ID0gT2lkSXNWYWxpZChkZWZhdWx0UGFydE9pZCkg fHwgKGRlZmF1bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBp KyspCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFydHNbaV07CisK KwkJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIEluIGNhc2Ug c3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1c2UgYW55CisJ CQkgKiBmcmVlIHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFydGl0aW9uLgor CQkJICovCisJCQljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFtZS0+cmVsbmFt ZSwgcGFyZW50LCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOworCQl9CisJCWVs c2UKKwkJeworCQkJLyoKKwkJCSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1cnJlbnQgcGFy dGl0aW9uIGlzIGluc2lkZSBib3VuZCBvZiBzcGxpdAorCQkJICogcGFydGl0aW9uLiBGb3Ig cmFuZ2UgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCB1cHBlciBib3VuZCBvZgorCQkJICog cHJldmlvdXMgcGFydGl0aW9uIGlzIGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIGN1cnJlbnQK KwkJCSAqIHBhcnRpdGlvbi4gRm9yIGxpc3QgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCBz cGxpdCBwYXJ0aXRpb24KKwkJCSAqIGNvbnRhaW5zIGFsbCB2YWx1ZXMgb2YgY3VycmVudCBw YXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRF R1lfUkFOR0UpCisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9PSAwKTsKKwkJCQlib29s CQlsYXN0ID0gKGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNrX3BhcnRpdGlvbl9i b3VuZHNfZm9yX3NwbGl0X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLCBzcHMt PmJvdW5kLAorCQkJCQkJCQkJCQkJCSAgIHNwbGl0UGFydE9pZCwgc3BsaXRQYXJ0TmFtZSwK KwkJCQkJCQkJCQkJCQkgICBmaXJzdCwgbGFzdCwKKwkJCQkJCQkJCQkJCQkgICBleGlzdHNE ZWZhdWx0UGFydCwgcHN0YXRlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljaGVja19wYXJ0aXRp b25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLAor CQkJCQkJCQkJCQkJCSAgc3BzLT5ib3VuZCwgc3BsaXRQYXJ0T2lkLCBwc3RhdGUpOworCQl9 CisKKwkJLyogUmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4g Ki8KKwkJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSAmJiBzcHNQ cmV2KQorCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwgc3Bz UHJldi0+bmFtZSwgc3BzUHJldi0+Ym91bmQsCisJCQkJCQkJCQkJCSAgc3BzLT5uYW1lLCBz cHMtPmJvdW5kLCBleGlzdHNEZWZhdWx0UGFydCwgcHN0YXRlKTsKKworCQlzcHNQcmV2ID0g c3BzOworCisJCS8qIENoZWNrOiBuZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJl bnQgbmFtZXMuICovCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsK KwkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczIgPSBuZXdfcGFydHNbal07CisKKwkJCWlm IChlcXVhbChzcHMtPm5hbWUsIHNwczItPm5hbWUpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygi bmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgc3BzMi0+bmFtZS0+cmVsbmFtZSksCisJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMyLT5uYW1lLT5sb2NhdGlvbikp OworCQl9CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU KQorCXsKKwkJLyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3Zlcmxh cC4gKi8KKwkJY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KHBhcmVudCwgbmV3 X3BhcnRzLCBucGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCS8qCisJCSAqIE5l ZWQgdG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiBjb250YWlu cyBpbiBuZXcKKwkJICogcGFydGl0aW9ucy4gU2tpcCB0aGlzIGNoZWNrIGlmIERFRkFVTFQg cGFydGl0aW9uIGV4aXN0cy4KKwkJICovCisJCWlmICghZXhpc3RzRGVmYXVsdFBhcnQpCisJ CQljaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKHBhcmVudCwgc3BsaXRQ YXJ0T2lkLAorCQkJCQkJCQkJCQkJICBuZXdfcGFydHMsIG5wYXJ0cywgcHN0YXRlKTsKKwl9 CisKKwlwZnJlZShuZXdfcGFydHMpOworfQorCiAvKgogICogY2FsY3VsYXRlX3BhcnRpdGlv bl9ib3VuZF9mb3JfbWVyZ2UKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5k ZXggM2Q2ZTZiZGJmZC4uM2UxNjg5YjExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwpAQCAtMTM3MDcsMyArMTM3MDcsMjEgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJp bmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoK KyAqIGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5nIHJlcHJlc2Vu dGF0aW9uIG9mIG9uZSBsaXN0IHBhcnRpdGlvbiB2YWx1ZQorICovCitjaGFyICoKK2dldF9s aXN0X3BhcnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZhbCkKK3sKKwlkZXBhcnNlX2NvbnRleHQg Y29udGV4dDsKKwlTdHJpbmdJbmZvCWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwltZW1z ZXQoJmNvbnRleHQsIDAsIHNpemVvZihkZXBhcnNlX2NvbnRleHQpKTsKKwljb250ZXh0LmJ1 ZiA9IGJ1ZjsKKworCWdldF9jb25zdF9leHByKHZhbCwgJmNvbnRleHQsIC0xKTsKKworCXJl dHVybiBidWYtPmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNGJmMTU2 MGM4OS4uMjBhYzY5OTVkMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjcyMSw3 ICsyNzIxLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCQkJ CSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05TVFJBSU5UIiwKIAkJCQkJICAi UkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAiREVUQUNI IFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLAotCQkJCQkgICJNRVJH RSBQQVJUSVRJT05TICgiLAorCQkJCQkgICJTUExJVCBQQVJUSVRJT04iLCAiTUVSR0UgUEFS VElUSU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUg eHh4IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hB bnksICJBREQiKSkKQEAgLTI5NzcsMTAgKzI5NzcsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29y ZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIkZST00gKCIsICJJTiAoIiwg IldJVEggKCIpOwogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERF VEFDSCBQQVJUSVRJT04sIHByb3ZpZGUgYSBsaXN0IG9mCisJICogSWYgd2UgaGF2ZSBBTFRF UiBUQUJMRSA8Zm9vPiBERVRBQ0h8U1BMSVQgUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBv ZgogCSAqIHBhcnRpdGlvbnMgb2YgPGZvbz4uCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iKSkKKwll bHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIfFNQ TElUIiwgIlBBUlRJVElPTiIpKQogCXsKIAkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHBy ZXYzX3dkKTsKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRp dGlvbl9vZl90YWJsZSk7CkBAIC0yOTg4LDYgKzI5ODgsMTAgQEAgbWF0Y2hfcHJldmlvdXNf d29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNP TVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIg VEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRj aGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElUSU9OIiwg TWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisKIAkv KiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElP TlMiLCAiKCIpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAyMzBhNDJiOTY2 Li5iYmQxMTEwYTQwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05NzAsNyArOTcw LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2luZ2xlUGFydGl0aW9uU3BlYwogdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uQ21kCiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpuYW1l OwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2UgKi8KKwlS YW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRh Y2gvbWVyZ2Uvc3BsaXQgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1Ig VkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KIAlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qg b2YgcGFydGl0aW9ucywgZm9yIE1FUkdFL1NQTElUCiAJCQkJCQkJCSAqIFBBUlRJVElPTiBj b21tYW5kICovCkBAIC0yNDg2LDYgKzI0ODYsNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJs ZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwog CUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0 YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8K KwlBVF9TcGxpdFBhcnRpdGlvbiwJCQkvKiBTUExJVCBQQVJUSVRJT04gKi8KIAlBVF9NZXJn ZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5 LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlk ZW50aXR5IGNvbHVtbiBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggOTBlOGNk ZGY4Yi4uNjZjODg3NjY1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtNDIxLDYgKzQyMSw3 IEBAIFBHX0tFWVdPUkQoInNtYWxsaW50IiwgU01BTExJTlQsIENPTF9OQU1FX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzbmFwc2hvdCIsIFNOQVBTSE9ULCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzb21lIiwgU09NRSwgUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNvdXJjZSIsIFNPVVJD RSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgic3BsaXQi LCBTUExJVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi c3FsIiwgU1FMX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInN0YWJsZSIsIFNUQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic3RhbmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgK aW5kZXggNjkwZDI1OTYxOS4uNzc2NWE5ZDM2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNiArMTQzLDExIEBAIGV4dGVybiBpbnQJcGFydGl0 aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJu IGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGlu Zm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJu IHZvaWQgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJ CQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIFJhbmdlVmFyICpzcGxp dFBhcnROYW1lLAorCQkJCQkJCQkJICAgTGlzdCAqcGFydGxpc3QsCisJCQkJCQkJCQkgICBQ YXJzZVN0YXRlICpwc3RhdGUpOwogZXh0ZXJuIHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9i b3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJTGlzdCAqcGFy dE5hbWVzLAogCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGls cy5oCmluZGV4IDVmMmVhMmU0ZDAuLjYyMDQzZDNiZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3J1bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGls cy5oCkBAIC01NCw0ICs1NCw2IEBAIGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5k X3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3N0 YXRpc3RpY3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCitleHRlcm4gY2hhciAq Z2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKTsKKwogI2VuZGlmCQkJCQkJ CS8qIFJVTEVVVElMU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3Rl ZC9wYXJ0aXRpb24tc3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjVkOWU4YjA5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApAQCAtMCwwICsxLDE5MCBAQAorUGFy c2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3Rl cCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8y MCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSst LS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8 dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0 IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6 IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJ CQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgx NSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUp IFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJP TSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQor MTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJ VElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1 XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJ U09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1 fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1Ciso NSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJiIHMy aSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVB VEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJU SVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8x NV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsK K3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdh aXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRl ZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsK KyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1 CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjog QkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxF IFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBj b21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00g dHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1 fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFz cGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5U TworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00g KDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJP TSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQor MTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6 IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJ CQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgx NSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUp IFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1 fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1Ciso NSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmJyciBz MmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJ T04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8y MCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8g dHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBD T01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQor IDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUK Kyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnMg czJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJ QUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElU SU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVf MjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8 dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1 IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2No ZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IDBk Y2E2ODQ5NTUuLjQwNGE3ZmQ4MzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9p c29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9z Y2hlZHVsZQpAQCAtMTA4LDYgKzEwOCw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRl LTIKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXkt dXBkYXRlLTQKIHRlc3Q6IHBhcnRpdGlvbi1tZXJnZQordGVzdDogcGFydGl0aW9uLXNwbGl0 CiB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBj bHVzdGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjA4NzIzOWE0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29s YXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKQEAgLTAsMCArMSw1NCBAQAorIyBW ZXJpZnkgdGhhdCBTUExJVCBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBw YXJ0aXRpb25lZCB0YWJsZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0 cGFydDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRpdGlvbiBi eSByYW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0 cGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBUQUJMRSB0cGFy dF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFydCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVs dCBQQVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0 ZXh0MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQyNScpOwor ICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJk b3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFi CXsgQkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFU QUJMRSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFM SVpBQkxFOyB9CitzdGVwIHMxc3BsdAl7IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJ VElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1 XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOyB9CitzdGVwIHMxYwl7IENPTU1J VDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJ eyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJ eyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMyYwl7IENP TU1JVDsgfQorc3RlcCBzMnMJeyBTRUxFQ1QgKiBGUk9NIHRwYXJ0OyB9CisKKworIyBzMSBz dGFydHMgU1BMSVQgUEFSVElUSU9OIHRoZW4gczIgdHJ5aW5nIHRvIGluc2VydCByb3cgYW5k CisjIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkIFNQTElUIG9wZXJhdGlvbi4KKworcGVybXV0 YXRpb24gczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIg czFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3BsdCBz MmJzIHMyaSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJiIHMy aSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMg czJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJz CisKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11 dGF0aW9uIHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24g czFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDdk ZTVkZGI4NzguLjE3ZDcyZTQxMmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5 IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNh c2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0gg UEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX1NwbGl0 UGFydGl0aW9uOgorCQkJCXN0cnR5cGUgPSAiU1BMSVQgUEFSVElUSU9OIjsKKwkJCQlicmVh azsKIAkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJCXN0cnR5cGUgPSAiTUVSR0Ug UEFSVElUSU9OUyI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uNTE4ODZjNjZiNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMCwwICsxLDE3NDEgQEAKKy0t CistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQ TElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEy OworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOwor LS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0IGZvciBlcnJv ciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQg aW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBz YWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK Ky0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc194eHggSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3Qg ZXhpc3QKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhp c3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0aW9u ICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworLS0gRVJST1I6ICBpbnZhbGlkIGJv dW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAx JywgJzIwMjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CitFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3Ig YSByYW5nZSBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIg Rk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBlbXB0eSByYW5n ZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQg c3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitMSU5FIDM6ICAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU Ty4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK0RFVEFJTDogIFNwZWNpZmllZCBsb3dlciBib3VuZCAoJzAzLTAxLTIwMjInKSBp cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgKCcwMi0wMS0yMDIyJyku CistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0 IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykp OworRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxl YXN0IHR3byBpdGVtcworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2ZlYjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRp b24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAg bmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChXZSBj YW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0 aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFt ZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitM SU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBu YW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFk eSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0g RVJST1I6ICAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0 YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9S OiAgQUxURVIgYWN0aW9uIFNQTElUIFBBUlRJVElPTiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9u IHJlbGF0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCitERVRBSUw6ICBUaGlzIG9wZXJh dGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCistLSBFUlJPUjogIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVwcGVy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAx JykpOworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIi IGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUg NDogLi4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19tYXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTy4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFRlc3RzIGZv ciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3 aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBERVRB Q0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQg b2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90 IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSAyOiAgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykg VE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBDaGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhlIHNlYXJj aCBwYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVi bGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZQor U1BMSVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICAgQ29sdW1uICAgICAgfCAgICAgICAgIFR5 cGUgICAgICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdl ICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29u X2lkICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25h bWUgfCBjaGFyYWN0ZXIgdmFyeWluZygzMCkgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAg ICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2Ftb3VudCAgICAg fCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAg ICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAgICAgfCBk YXRlICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg fCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFOR0UgKHNh bGVzX2RhdGUpCitQYXJ0aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjIn KSwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpLAorICAg ICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJyksCisgICAgICAgICAg ICBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAy LTAxLTIwMjInKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxl c19vdGhlcnM7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVu IHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXkn LCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAg JzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp LAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0Rl ZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1 MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAg NTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK K1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMx LTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYg ICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8 IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAg ICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAy MgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8 IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAg IDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19qYW4yMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAg ICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgt MjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3 NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAy MjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAg ICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIy CisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjI7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAg ICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0g QWRkIHNwbGl0IHBhcnRpdGlvbiwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRh YmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0g U3BsaXQgcGFydGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5l dyBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5n ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBh cnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAgICB8 ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisg c2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2Fs ZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNf YW1vdW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0 ZSAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5 OiBSQU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgn MDQtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIw MjInKSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEt MDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfb3RoZXJz IERFRkFVTFQKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAg IHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAt MjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1 MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAg ICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAg IDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx NCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFy dGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAw NC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSBy b3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0IGZv cjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQg Y29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2Rh dGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3ll YXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIs ICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQs CisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0 bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwg MSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxV RSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAy MSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIz JywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5h Z2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgn TWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAor ICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7 Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAg ICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAg ICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAg ICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf ZGVjMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRo IHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAg ICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAg MTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0 ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAy LjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf eWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2Rl cGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFn ZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAy MDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93 cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfamFu X2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKSk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwg MSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJPTSBz YWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8 IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8 IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8 IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAg ICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIu MDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250 aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwg MjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNh bGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQg CistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0 IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVh ciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFy dG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIx ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIy LjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUg fCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykK KworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhp c3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitFUlJPUjogIHJlbGF0aW9u ICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUICog RlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyAgICAgICAgICAgICAgICAgICAgICBeCitEUk9Q IFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxU IHBhcnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4 IGFmdGVyIHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jh bmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAg ICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAor ICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyks CisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIy CisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDMtMTEtMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDExIHJvd3MpCisK K1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3Ro ZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBC WSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8 ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhl cnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRF IElOREVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykK KworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERF RkFVTFQpOworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNU ICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBv aXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAg ICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgor KDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2Rh dGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4 MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAy Mi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21p dGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKwor U0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOwor U0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIy MDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBC WSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAg fCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNh bGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAg ICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0 ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8 ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVz cGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVf aWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2Rh dGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBi dHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVz IFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2No ZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAg ICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2FwcjIwMjIgfCBzYWxlc19hcHIy MDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19h cHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNf YXByMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFt ZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAg aW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgfCBz YWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIHwgICAgICAgICAgICB8IENSRUFURSBJTkRF WCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVzdDogc29tZSBjYXNl cyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAobG93ZXIgYm91bmQpCist LSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZs aWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBG T1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVy IGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0xJTkUgMzog ICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRP ICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIy ICh1cHBlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19mZWIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIw MiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBj b25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVz X2Vycm9yIgorTElORSA0OiAgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMjAxKSBUTyAoMjAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3Rz IHdpdGggc2FsZXNfZGVjMjAyMiAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBi b3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91 cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxl c19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMS4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAoZXhhY3RseSB0aGUgc2Ft ZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlv biAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkg VE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0 cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgYWxsIHBhcnRpdGlvbnMgaW4gdGhl IGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVG QVVMVAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMw MSkpOworRVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZB VUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0xJTkUgMjogICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIw Li4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNh bGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAy MgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7Cist LSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVxdWFsIHRvIGxvd2Vy IGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjEx MjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9S RUlHTiBLRVkgQ09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZB TFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxl c3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCks CitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2Fs ZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBL RVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3Mp CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKy0tIFdlIHNob3VsZCBzZWUg dGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBhcnRp dGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtl eSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAyMic6 OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sg KChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JF SUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIg cm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNv bmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAy Mic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hF Q0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBG T1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQor KDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUs IGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXBy MjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg Q0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0K KyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsx fQorKDIgcm93cykKKworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNf bWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNf YW1vdW50X2NoZWNrIgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAn MjAyMi0wMy0xMScpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFy MjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1v dW50X2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDEsIDAsIDAzLTEx LTIwMjIpLgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19t YXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9z YWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgt MSwgMTAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFi bGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNh bGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVy c29uX2lkKT0oLTEpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCist LSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMt MTEnKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2Fs ZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFy dGl0aW9uZWQgdGFibGUgaW4gY2FzZSBvZiBleGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVu Y2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFC TEUgc2FsZXMgKHNhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUx MF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3Qn KSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9m ZicpLAorICAoMzAsICdGb3JkJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAgKDEs ICAxMDAsICcyMDIyLTAzLTAxJyksCisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAo MTAsIDE1MCwgJzIwMjItMDMtMDEnKSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisg ICgxOSwgMjAwLCAnMjAyMi0wMy0wNCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwK KyAgKDIwLCAxNzAsICcyMDIyLTAzLTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcp OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBz YWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAg fCBNYXkKKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDIwIHwgU21p cm5vZmYKKyAgICAgICAgICAgICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIw KSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBG Uk9NICgzMCkgVE8gKDQwKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfMjA7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMjBfMzA7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUzMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIDMwIHwgRm9yZAorKDEgcm93KQorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxl c19zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0MCwg NTAsICAnMjAyMi0wMy0wNCcpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNw ZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25faWQpPSg0MCkgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9rCitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitEUk9QIFRBQkxFIHNh bGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dl cnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAn cGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBj YWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBU R19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9E WSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50 X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZP UiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9y b3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxl X2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNh bGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworLS0gMiB0cmlnZ2VycyBz aG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3Bs ZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cK K05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJU LCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxk IGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVT ICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVk OiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00g KDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKSk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUg KHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIw LCAnU21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDog YWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0 cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFG VEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUg KHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3Jk Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElO U0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNUICogRlJPTSBzYWxlc3Bl b3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2ly b3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzIwOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAxOSB8 IEl2YW5vdgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTIwXzMwOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMzBfNDA7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxl c3Blb3BsZSBDQVNDQURFOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoKTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29s dW1uCistLSBJZiBzcGxpdCBwYXJ0aXRpb24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwg Y29sdW1ucyBvZiBuZXcgcGFydGl0aW9ucyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFU RUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlk ZW50aXR5IGNvbHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNv bl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBG T1IgVkFMVUVTIEZST00gKDIpIFRPICg1KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChz YWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdQb2lyb3QnKSwgKCdJdmFub3YnKTsKK1NFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRl IFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNwbGl0 IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4g MCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5l cmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25h bWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9w bGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc3Blb3BsZTJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElP TiBzYWxlc3Blb3BsZTNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJ VElPTiBzYWxlc3Blb3BsZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnTWF5Jyks ICgnRm9yZCcpOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTFfMjsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUyXzM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMiB8IEl2YW5vdgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlM180 OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBNYXkKKygxIHJvdykK KworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTRfNTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICA0IHwgRm9yZAorKDEgcm93KQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVy YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Cisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFt ZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRl bnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAw IEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVy YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Cisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFt ZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBOZXcgcGFydGl0aW9ucyBoYXZl IGlkZW50aXR5LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdl bmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxp ZCA9ICdzYWxlc3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwor ICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJz b25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAg ICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdl bmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxp ZCA9ICdzYWxlc3Blb3BsZTNfNCc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwor ICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJz b25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAg ICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdl bmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxp ZCA9ICdzYWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwor ICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJz b25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAg ICAgIHwgCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7Cist LQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3Jl YXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJ TlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1 bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZh bHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUx MF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJP UCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9O IHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdN YXknKSwKKyAgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQg UEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJU SVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsK K3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc2Fs ZXNwZW9wbGUxMF8yMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE5IHwg SXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKygyIHJvd3MpCisKK3NlbGVjdCAqIGZy b20gc2FsZXNwZW9wbGUyMF8zMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg IDIwIHwgU21pcm5vZmYKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTMw XzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoMSBy b3cpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBz cGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJf YWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFU VEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIw MjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAor ICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAn MjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBH YW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAg ICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIK KyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAg ICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAg ICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxl ciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAg MTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAg ICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAg ICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxNCB8 IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAg fCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQor CitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJf YWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAo JzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMwIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisg ICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEt MjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAg fCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3Qg ICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4 IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAg ICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIK KyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAw NC0zMC0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAg ICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAg ICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAy MDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyXzAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAg ICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMl8yMF8zMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDEg cm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1QgcGFydGl0 aW9uaW5nCistLQorLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBw YXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29u X2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRl IFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQor UEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19u b3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0 LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywg J0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlv biAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkg cGFydGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQ QVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBW QUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRp dm9zdG9rJywgJ0hlbHNpbmtpJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcg cGFydGl0aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90 IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitMSU5FIDM6IC4uLiBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJy4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQg b3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJ TiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNh bGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnTGlzYm9u JywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxk IG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitM SU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNh bm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3Qg aGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxs IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBj YW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90 IGhhdmUKK0xJTkUgMjogLi4uc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2Fs ZXNfbGlzdDsKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNU IHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBOVUxM IHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5ULAorIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisg c2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElT VCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRlcnNidXJn JywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZv c3RvaycsIE5VTEwpOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2 YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcg cGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24g ZG9lcworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lp dicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAn VmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworRVJST1I6ICBuZXcgcGFydGl0aW9u cyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitE Uk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25p bmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf bGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQs Cisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsK K0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVz X2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNh bGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNh bGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdP c2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJp ZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2sn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg REVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1RydW1w JywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdTbWly bm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisgICgnRm9y ZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAorICAoJ0l2 YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdE ZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3JyksCisgICgn UG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAo J01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKSwKKyAg KCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5JyksCisg ICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpLAor ICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKSwK KyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1Jyks CisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcp LAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgn KSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1 Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAwMCB8 IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFk aXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJs aW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAx MiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJz YXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8 IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBPc2xv ICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgICAg OSB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8 IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBIZWxz aW5raSAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAzLTAzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNi b24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAgICAx MSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAgICAgIDY1MCB8 IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNi b24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKygxNCByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg ICAgfCBOZXcgWW9yayAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAgfCBN YWRyaWQgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAx NCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNib24gICAgICB8ICAgICAgICAgIDk1MCB8IDAz LTA1LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZWFzdDsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAxIHwgVHJ1bXAgICAgICAgICAgICB8IEJlamluZyAgICAgIHwgICAgICAgICAxMDAw IHwgMDMtMDEtMjAyMgorICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICAgICB8IFZs YWRpdm9zdG9rIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorKDIgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisg ICAgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAg ICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgICAgIDkgfCBNYXkgICAgICAg ICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisg ICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAg ICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2NlbnRyYWw7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcg ICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBv aXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIw MjIKKyAgICAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyg0 IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBz cGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVu YWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdIRVJF IHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1 MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBX SEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAg ICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xp c3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0y MDIyCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxl X3NlcXNjYW4gPSBPTjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0IGZv cjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGgg c3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRp b25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorICAgICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMl8xZGVjYWRlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAg ICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAg ICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAg ICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoOCByb3dzKQorCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5v bi1ERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4g Ym91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBB UlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAor ICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJf MWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEw JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2phbjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwg ICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKygyIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAw My0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xZGVj YWRlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEg fCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8 IDA1LTA0LTIwMjIKKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAg ICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoOCByb3dzKQorCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlv biB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGggc3BhY2VzIGJl dHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycs ICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAg fCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAg ICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNt aXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgor ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAy LTIzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgt MjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAg ICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2ZlYjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisg ICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAg ICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBs YXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAg ICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgor KDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUcnkgdG8gU1BM SVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkg aW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBh IFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQy IChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworLS0gRVJST1I6ICBy ZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FM VEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJVElPTiB0MXBhIElOVE8KKyAgIChQQVJUSVRJT04g dDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0InKSwKKyAgICBQQVJUSVRJT04gdDJi IEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBUTyAoJ0MnKSk7CitFUlJPUjogIHJlbGF0aW9uICJ0 MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorRFJPUCBUQUJMRSB0 MjsKK0RST1AgVEFCTEUgdDE7CistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0 ZW1wb3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxp ZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8y IHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cpCisKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8x IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CistLSBQYXJ0aXRpb25zIHNob3VsZCBiZSB0ZW1w b3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQor ICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBp CisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJl Z2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBn X2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8 IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSkgfCB0CisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikgfCB0CisoMiBy b3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbnMgaW5o ZXJpdCBwYXJlbnQncyB0YWJsZXNwYWNlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFS WSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJU SVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFU RSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo Mik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFS VElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElP TiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIHRhYmxlbmFt ZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0 JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVu YW1lIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorIHQgICAgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCByZWdyZXNz X3RibHNwYWNlCisgdHBfMV8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKwor U0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhl cworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJs ZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1l ICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190Ymxz cGFjZQorIHRwXzBfMSAgICB8IHRwXzBfMV9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorIHRw XzFfMiAgICB8IHRwXzFfMl9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKwor RFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50 J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9u X3NwbGl0X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOwor Q1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBh cnRpdGlvbl9zcGxpdF9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFS VElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBj IEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6 OnJlZ2NsYXNzLCAndHBfMF8xJzo6cmVnY2xhc3MsICd0cF8xXzInOjpyZWdjbGFzcykKK09S REVSIEJZIGMucmVsbmFtZTsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgfCBwYXJ0aXRpb25f c3BsaXRfaGVhcAorIHRwXzBfMSAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorIHRwXzFfMiAg fCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJP UCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwOworLS0gVGVzdCBwZXJtaXNz aW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFu ZCB0aGUKKy0tIHRoZSBwYXJ0aXRpb24gdG8gc3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JF QVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitH UkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFS VElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKSk7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRw XzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7 CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8yCitSRVNFVCBTRVNTSU9O IEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikp OworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBUQUJMRSB0OworUkVWT0tF IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9M RSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9ib2I7CistLSBTcGxpdCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3Jhcnkg dGFibGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0 aGUgc2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1Q IFRBQkxFIHQgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAg VEFCTEUgdHBfMCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9O IHRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMSBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayBk ZWZhdWx0cyBhbmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJM RSB0X2JpZ2ludCAoCisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAg aiBpbnQgREVGQVVMVCAxMDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTAp IFNUT1JFRAorKQorUEFSVElUSU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2Jp Z2ludF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBk ZWZhdWx0cy9jb25zdHJhaW50cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdp bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJs ZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludCIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAg ICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChiKQorUGFydGl0aW9u czogdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUCisKK1xkKyB0X2JpZ2ludF9kZWZhdWx0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3Nw bGl0X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAg ICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAx MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAx ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAg ICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBn ZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxUCitObyBwYXJ0aXRp b24gY29uc3RyYWludAorCitBTFRFUiBUQUJMRSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04g dF9iaWdpbnRfZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMTApLAorICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1 bHQgREVGQVVMVCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElU IFBBUlRJVElPTgorXGQrIHRfYmlnaW50X2RlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50 X2RlZmF1bHQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg ICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0 cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2lu dCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMg KChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRp b24gb2Y6IHRfYmlnaW50IERFRkFVTFQKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoTk9UICgo YiBJUyBOT1QgTlVMTCkgQU5EICgoYiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6 YmlnaW50KSkpKQorCitcZCsgdF9iaWdpbnRfMDFfMTAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2lu dF8wMV8xMCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAg ICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRz IHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50 ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAo KGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlv biBvZjogdF9iaWdpbnQgRk9SIFZBTFVFUyBGUk9NICgnMCcpIFRPICgnMTAnKQorUGFydGl0 aW9uIGNvbnN0cmFpbnQ6ICgoYiBJUyBOT1QgTlVMTCkgQU5EIChiID49ICcwJzo6YmlnaW50 KSBBTkQgKGIgPCAnMTAnOjpiaWdpbnQpKQorCitEUk9QIFRBQkxFIHRfYmlnaW50OworLS0g VGVzdDogb3duZXIgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG93 bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAo aSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBf MihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0 IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOwor LS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8w XzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAg ICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25l ciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIHwgdHBfMF8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZQorKDEgcm93KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5U TworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAg IFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gT3du ZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBf MF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAg ICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3du ZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0 X3NjaGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2UKKygxIHJvdykKKworXGR0IHRwXzFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBU eXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JF Vk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBi ZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0gcGFydGl0aW9uCitDUkVB VEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9hbGljZTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7 CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBp bnRlZ2VyIEFTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBt ZSBhcyAlJywgQ1VSUkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdF IFBMUEdTUUwgSU1NVVRBQkxFOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBPTiB0IChydW5fbWUoaSkpOworTk9USUNFOiAg eW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitO T1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2UKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKy0tIE93bmVyIHNob3VsZCBi ZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMTBfMjAgSU5UTworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUg YXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK05PVElDRTogIHlvdSBhcmUgcnVu bmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorRFJPUCBUQUJMRSB0 OworRFJPUCBGVU5DVElPTiBydW5fbWUoaW50ZWdlcik7CitSRVZPS0UgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CistLSBU ZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRB QkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVN QUlOREVSIDEpOworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0 YWJsZSBjYW5ub3QgYmUgc3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRw MSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQs IFJFTUFJTkRFUiAwKSwKKyAgIFBBUlRJVElPTiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1P RFVMVVMgNCwgUkVNQUlOREVSIDIpKTsKK0VSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFy dGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CistLSBFUlJPUjogIGxpc3Qgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZP UiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworRVJST1I6ICBsaXN0 IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcwor RFJPUCBUQUJMRSB0OworUkVTRVQgc2VhcmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBi L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNjQ2NGEyMzhhYy4u YTk4YWVmN2NhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMs NyArMTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBk b21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRl c3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3Mg Y2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlv bl9tZXJnZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNo X3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBs ZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1h Cit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2lu IHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRp b25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNz aW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2VyIGRl cGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAj IGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjY4 MmE4Mzc5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsMTA3MCBAQAorLS0KKy0tIFBBUlRJVElPTl9T UExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4u LiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h OworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hf cGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJB TkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVz cGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUg ZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJP UjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkg ZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAg aW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgn MjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5k IHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRp b25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBF UlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCist LSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0 IHBhcnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBz YW1lIG5hbWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNl ZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogICJzYWxl c19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBU QUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVw cGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2 LTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf bWFyMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0 aW9uICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQg YmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0tIEVSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwg dG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CisKKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0 aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisK Ky0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFy dGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisg ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsK K1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFy MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCist LSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQg dGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisK Ky0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBv ZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9u X3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNf cmFuZ2UKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyks CisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdN dWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VM RUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIy OworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVS QVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2Fs ZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2Fs ZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4 dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNU T1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBk ZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIw MjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwg TUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFn ZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAo J01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwK KyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwg MSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIs IDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCAqIEZST00g c2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZS T00gc2FsZXNfamFuX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCitB TFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKKworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEw KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJPTSBzYWxl c19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBz YWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICog RlJPTSBzYWxlc19vdGhlcjsKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmVi MjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7 CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3Bs aXQgREVGQVVMVCBwYXJ0aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBj aGVjayBpbmRleCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBP TiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAx LTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMs ICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjIt MDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29u JywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisg ICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8n LCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcy MDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsK KworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4 ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAn cGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisK Ky0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJP TSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAx JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIw MjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0 ZSA+ICcyMDIyLTAxLTAxJzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IE9OOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUg dGFibGVuYW1lID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlv bl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdf aW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5h bWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VM RUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIy JyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBp bmRleG5hbWU7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0g J3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVt YScgT1JERVIgQlkgaW5kZXhuYW1lOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NB REU7CisKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBw YXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRo IHNhbGVzX2RlYzIwMjIgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBv ZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEw MSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIz MCkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2Fs ZXNfZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfZmViMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2Yg cHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBU TyAoMjAyMjAyMDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19k ZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZp b3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAo MjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMy MDIyIChleGFjdGx5IHRoZSBzYW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQg b2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAx MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxUKTsKKworLS0gRVJST1I6ICBhbGwgcGFydGl0aW9ucyBpbiB0aGUg bGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZB VUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAx KSk7CisKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2Vl biBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSks CisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEw KSBUTyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIG5vIGVycm9yOiBib3Vu ZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5k cyBvZiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEw MSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEw MTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCist LSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkgQ09O U1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQ b2lyb3QnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzcGVyc29uX2lk IElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwKK3NhbGVzX2Ft b3VudCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBjb25uYW1lOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u cmVsaWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFt ZTs7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNv bm5hbWU7OworCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIy MDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91 bnRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDAsICcyMDIy LTAzLTExJyk7CistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVz X21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3Jhbmdl X3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KC0xLCAxMCwgJzIwMjItMDMtMTEnKTsKKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScpOworCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCist LSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBv ZiBleGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRhYmxlCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZ IEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzcGVyc29uX2lk IElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl MDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxl c3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAor ICAoMTksICdJdmFub3YnKSwKKyAgKDIwLCAnU21pcm5vZmYnKSwKKyAgKDMwLCAnRm9yZCcp OworCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAgKDEsICAxMDAsICcyMDIyLTAzLTAx JyksCisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAoMTAsIDE1MCwgJzIwMjItMDMt MDEnKSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisgICgxOSwgMjAwLCAnMjAyMi0w My0wNCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwKKyAgKDIwLCAxNzAsICcyMDIy LTAzLTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworCitTRUxFQ1QgKiBGUk9N IHNhbGVzcGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfNDA7CisK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEw XzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFM VUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAg Rk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNw ZW9wbGUwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF8yMDsKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUyMF8zMDsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUzMF80 MDsKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtl eSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsK Ky0tIG9rCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0 Jyk7CisKK0RST1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9w bGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRp b25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl KHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80 MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQw KTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOwor CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo KSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4K KwlSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0g JSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOwor ICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxl c3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNF UlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVY RUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUn KTsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmln Z2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFD SCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo J3NhbGVzcGVvcGxlJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93 ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdN YXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00g KDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKSk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVy ZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAo MjAsICdTbWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNw ZW9wbGUxMF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUyMF8zMDsKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUzMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVND QURFOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKworLS0K Ky0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0tIElm IHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRlbnRpdHkgY29sdW1uLCBjb2x1bW5zIG9m IG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eSBjb2x1bW5zIHRvby4KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMg QVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUxXzIgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eSBj b2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5U IE5PVCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgRk9SIFZBTFVF UyBGUk9NICgyKSBUTyAoNSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3Bl cnNvbl9uYW1lKSBWQUxVRVMgKCdQb2lyb3QnKSwgKCdJdmFub3YnKTsKKworU0VMRUNUIGF0 dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6 b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5IGNvbHVtbjoKK1NFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJF IGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBhdHRudW07CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElU IFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9w bGUyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNw ZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04gc2Fs ZXNwZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSkpOworCitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnTWF5JyksICgnRm9y ZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMV8yOworU0VMRUNUICogRlJPTSBz YWxlc3Blb3BsZTJfMzsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUzXzQ7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzcGVvcGxlNF81OworCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHks IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBh dHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVt OworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19h dHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUx XzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKy0tIE5ldyBwYXJ0aXRpb25z IGhhdmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0 dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRu dW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBn X2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3Bs ZTNfNCc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUs IGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0 bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGU0XzUnOjpyZWdjbGFzczo6b2lk IE9SREVSIEJZIGF0dG51bTsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOwor CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZ IEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7Cist LSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29u X2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCBkMyBEQVRFLCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMK KyAgKCdkdW1teSB2YWx1ZSAxJywgMTksIDEwMCwgbm93KCksICdJdmFub3YnKSwKKyAgKCdk dW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworCitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxl MTBfNDAgRFJPUCBDT0xVTU4gZDM7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo NDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3Qn KSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKKworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFS VElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwK KyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00g KDMwKSBUTyAoNDApKTsKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEwOworc2Vs ZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzIwOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3Bs ZTIwXzMwOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTMwXzQwOworCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFydGl0 aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fw cjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9O IE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVz X2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJP TSBzYWxlc19hcHIyMDIyOworCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBB UlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIy XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2FwcjIwMjJfMjBfMzA7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBC WSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9y cyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlz dAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2Fs ZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdC ZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCistLSBF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBh bm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxF IHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBv dmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdMaXNib24n LCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBj YW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90 IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vh c3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0g VGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6Cist LSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3Bs aXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBh IHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQs Cisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsK KworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRlcnNidXJnJywgJ09zbG8nKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0Jlamlu ZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycsIE5VTEwpOwor CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0 IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZB TFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlv bnMgZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcwor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04g c2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsIE5VTEwp KTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBw YXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVz X3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9p ZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVB VEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lO RyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBl dGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2Jywg J1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz cGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZB TFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMt MDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAz LTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0w My0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjIt MDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIy LTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAy Mi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIw MjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcy MDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAn MjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwg JzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAs ICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUw LCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1 MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5 NTAsICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0 OworU0VMRUNUICogRlJPTSBzYWxlc193ZXN0OworU0VMRUNUICogRlJPTSBzYWxlc19lYXN0 OworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50 cmFsOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3Bs aXR0aW5nIHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdIRVJF IHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hF UkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBX SEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisKK1NFVCBlbmFibGVfaW5kZXhz Y2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworRFJPUCBUQUJMRSBzYWxl c19saXN0OworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0 aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAg KiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFu ZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0w OScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ph bjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFk ZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAq IEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1E RUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91 bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJ VElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTA5JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisg ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy XzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0x MCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8x ZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNhZGU7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3Ro ZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3Igc3Bs aXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsgcGFydGl0 aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0z MCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAx NTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAg IDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjIt MDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAo MTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUICogRlJPTSBz YWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZS T00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVD VCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCist LQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVyIHRhYmxlLgorLS0KK0NS RUFURSBUQUJMRSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVCAodCk7CitD UkVBVEUgVEFCTEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZBTFVFUyBJTiAoJ0EnKTsK K0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0 KTsKKworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9m IHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJVElPTiB0MXBhIElO VE8KKyAgIChQQVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0InKSwK KyAgICBQQVJUSVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBUTyAoJ0MnKSk7CisK K0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworCistLQorLS0gVHJ5IHRvIFNQTElU IHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0 cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisKK1NF TEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAg T1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp ID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50 ZXh0OworCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBQYXJ0aXRp b25zIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwg Yy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5p bmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworRFJPUCBUQUJMRSB0OworCist LSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdCBwYXJlbnQncyB0YWJsZXNwYWNl CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikpOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3Rh YmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBB TkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0 YWJsZW5hbWUsIHRhYmxlc3BhY2U7CitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRh Ymxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAn dHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOwor RFJPUCBUQUJMRSB0OworCistLSBDaGVjayBuZXcgcGFydGl0aW9ucyBpbmhlcml0cyBwYXJl bnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitDUkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRp b25fc3BsaXRfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcg cGFydGl0aW9uX3NwbGl0X2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQ QVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpKTsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNz IGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0 Jzo6cmVnY2xhc3MsICd0cF8wXzEnOjpyZWdjbGFzcywgJ3RwXzFfMic6OnJlZ2NsYXNzKQor T1JERVIgQlkgYy5yZWxuYW1lOworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9E IHBhcnRpdGlvbl9zcGxpdF9oZWFwOworCistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAg VGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZQorLS0gdGhl IHBhcnRpdGlvbiB0byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitDUkVBVEUgUk9MRSByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRw XzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7 CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgT1dORVIg VE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBU QUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitB TFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9O IHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitS RVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKwor LS0gU3BsaXQgcGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxlIHdoZW4gb25lIG9mIHRo ZSBwYXJ0aXRpb25zIGFmdGVyCistLSBzcGxpdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUg cGFydGl0aW9uIGJlaW5nIHNwbGl0CitDUkVBVEUgVEVNUCBUQUJMRSB0IChhIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzAgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8wIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMikpOworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayBkZWZhdWx0cyBhbmQgY29uc3Ry YWludHMgb2YgbmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJMRSB0X2JpZ2ludCAoCisgIGIg YmlnaW50LAorICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAgaiBpbnQgREVGQVVMVCAxMDEs CisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTApIFNUT1JFRAorKQorUEFSVElU SU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2JpZ2ludF9kZWZhdWx0IFBBUlRJ VElPTiBPRiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50 cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQKK1xkKyB0X2JpZ2ludF9k ZWZhdWx0CitBTFRFUiBUQUJMRSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04gdF9iaWdpbnRf ZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMTApLAorICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgREVGQVVM VCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElUIFBBUlRJVElP TgorXGQrIHRfYmlnaW50X2RlZmF1bHQKK1xkKyB0X2JpZ2ludF8wMV8xMAorRFJPUCBUQUJM RSB0X2JpZ2ludDsKKworCistLSBUZXN0OiBvd25lciBvZiBuZXcgcGFydGl0aW9ucyBzaG91 bGQgYmUgdGhlIHNhbWUgYXMgb3duZXIgb2Ygc3BsaXQgcGFydGl0aW9uCitDUkVBVEUgUk9M RSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEg cGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZTsKKworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzIgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8yCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKSk7CisKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMQorXGR0IHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7 CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CisKKworLS0gVGVzdDogaW5kZXggb2YgbmV3IHBhcnRpdGlvbnMg c2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBzYW1lIG93bmVyIGFzIHNwbGl0CistLSBwYXJ0aXRp b24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQg QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MTEpLCAoMTYpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcnVuX21lKGludGVnZXIp IFJFVFVSTlMgaW50ZWdlciBBUyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd5b3UgYXJl IHJ1bm5pbmcgbWUgYXMgJScsIENVUlJFTlRfVVNFUjsKKyAgUkVUVVJOICQxOworRU5ECisk JCBMQU5HVUFHRSBQTFBHU1FMIElNTVVUQUJMRTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBPTiB0IChydW5fbWUoaSkp OworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCistLSBPd25lciBzaG91bGQgYmUg J3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwXzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8xNSBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIwIEZPUiBWQUxV RVMgRlJPTSAoMTUpIFRPICgyMCkpOworCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9O IHJ1bl9tZShpbnRlZ2VyKTsKKworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworCistLSBUZXN0IGZvciBoYXNo IHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOwor CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5v dCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAg KFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVS IDApLAorICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBS RU1BSU5ERVIgMikpOworCistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworCitEUk9QIFRBQkxFIHQ7CisKK1JFU0VUIHNl YXJjaF9wYXRoOworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsK K0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCAyMDM4NjAzYzA4Li41NmFjNDQ3Mjg4IDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMjgyNyw2ICsyODI3LDcgQEAgU3BlY2lhbEpvaW5JbmZv CiBTcGluRGVsYXlTdGF0dXMKIFNwbGl0SW50ZXJ2YWwKIFNwbGl0TFIKK1NwbGl0UGFydGl0 aW9uQ29udGV4dAogU3BsaXRQYWdlTGF5b3V0CiBTcGxpdFBvaW50CiBTcGxpdFRleHRPdXRw dXREYXRhCi0tIAoyLjQwLjEud2luZG93cy4xCgo= --------------XrzLG5ahQ1YxYNPpUUs7c2fS--