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 1uNDdg-00ETnk-4w for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jun 2025 16:40:25 +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 1uNDde-00BeSl-6i for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jun 2025 16:40:22 +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 1uNDdd-00BeNF-6v for pgsql-hackers@lists.postgresql.org; Thu, 05 Jun 2025 16:40:22 +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 1uNDda-000OFa-06 for pgsql-hackers@lists.postgresql.org; Thu, 05 Jun 2025 16:40:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1749141615; bh=kqVYF3/gX0IEX2nVBctpH2Sx+8W2aRMcPdCUCucsWcU=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=HpuKeYDkHwUz9BzXzux4OLiDzdKp6Ken9iUh6E6jaFuf10pPxHiT0CJqiA5JYcj3p LKawK11LHNhEYe5xzYjxN5yd49/KmKG4VYYp6MquqsBkrxeDgiNdPahZEQekahy9PK 2HW4uYKqO/lLDd4yzFTvKapQhCmFNwlNE5bIil+MblGvamfksfnohTO3n6LpxeYWkQ MgCU6c0m/4NyS5ry9+5RzezvdjFIi+IoGnjyuJ57G0kPq4Mxb5qCTc55YfOy89q/Mf PjrrCK6WS2l2nOw3aGI20b4aquPbhwLl1LDzVGvwjULm1kPvbX6xw+rjiSvZ/H5Kjr Ayk4KBBEzXjWA== Received: from [172.30.49.154] (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 3F0CA60B4B; Thu, 5 Jun 2025 19:40:15 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------RnP9P61yxRX2bFOuVDWtLN8L" Message-ID: Date: Thu, 5 Jun 2025 19:40:12 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Alexander Korotkov Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <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> <67ecf5fb-e63d-4284-be75-d0479eef81aa@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/06/05 15:32: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/05 14:53:00 #27542404 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. --------------RnP9P61yxRX2bFOuVDWtLN8L Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Alexander! Thanks for your notes! 1. >Why don't you use *existing_relation_id argument of >RangeVarGetAndCheckCreationNamespace(), when it is called from >createPartitionTable() and ATExecSplitPartition()? This argument >provide an elegant way to find a duplicate table with the same name. Code changed. 2. >It also seems that 0002 patch has the following error message, which >aren't experienced in the regression tests. 2a. Added tests for these error messages: +errmsg("upper bound of partition \"%s\" is not equal to upper bound of split partition", +errmsg("new partition \"%s\" cannot have this value because split partition does not have", +errmsg("DEFAULT partition should be one"), +errmsg("new partition cannot be DEFAULT because DEFAULT partition already exists"), 2b. Tests for these error messages already exists: +errmsg("new partitions do not have value %s but split partition does", +errmsg("one partition in the list should be DEFAULT because split partition is DEFAULT"), 2c. The error message +errmsg("can not find partition for split partition row"), cannot be reproduced using regression tests, because it is issued when partition contains a record that should not be there (i.e. when the database is corrupted). -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------RnP9P61yxRX2bFOuVDWtLN8L Content-Type: text/plain; charset=UTF-8; name="v41-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v41-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1MDJlZTI1OTg3YTUyYmEwMmEyNDgxMzZhNjYxNTdkNWQ5ZGRjNDJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDEgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF 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 ICAgICAgICAgICAgIHwgIDY1NSArKysrKysrKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArLQogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDEyOSArKysKIHNyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICAyMTIgKysrLQogc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICAxMCArCiBzcmMvaW5j bHVkZS9jYXRhbG9nL2hlYXAuaCAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgMTYgKy0KIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwog c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCAgICAgICAgIHwgICAgNiAr CiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgICAgfCAgMTk5 ICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8 ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVj IHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAg ICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdl Lm91dCB8IDEwMDMgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8ICA2NjIgKysrKysrKysrKysKIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgIDEgKwogMjAgZmls ZXMgY2hhbmdlZCwgMzA3MCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIGNyZWF0 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 YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDE2 NGVjNTZhNTkuLjU1NzliMGNlMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz 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 VElUWSI7CiAJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CkBAIC0yMDE2Niw2ICsyMDE4NywzNyBA QCBRdWV1ZVBhcnRpdGlvbkNvbnN0cmFpbnRWYWxpZGF0aW9uKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHNjYW5yZWwsCiAJfQogfQogCisvKgorICogYXR0YWNoUGFydGl0aW9uVGFibGU6 IGF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlCisgKgor ICogd3F1ZXVlOiB0aGUgQUxURVIgVEFCTEUgd29yayBxdWV1ZTsgY2FuIGJlIE5VTEwgd2hl biBub3QgcnVubmluZyBhcyBwYXJ0CisgKiAgIG9mIGFuIEFMVEVSIFRBQkxFIHNlcXVlbmNl LgorICogcmVsOiBwYXJ0aXRpb25lZCByZWxhdGlvbjsKKyAqIGF0dGFjaHJlbDogcmVsYXRp b24gb2YgYXR0YWNoZWQgcGFydGl0aW9uOworICogYm91bmQ6IGJvdW5kcyBvZiBhdHRhY2hl ZCByZWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2F0dGFjaFBhcnRpdGlvblRhYmxlKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0YWNocmVsLCBQYXJ0aXRp b25Cb3VuZFNwZWMgKmJvdW5kKQoreworCS8qIE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4g IFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KKwlDcmVhdGVJbmhlcml0 YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7CisKKwkvKiBVcGRhdGUgdGhlIHBnX2NsYXNz IGVudHJ5LiAqLworCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0YWNocmVsLCByZWwsIGJvdW5k KTsKKworCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVz IGluIHRoZSBwYXJ0aXRpb24uICovCisJQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3 cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKKworCS8qIGFuZCB0cmlnZ2VycyAqLworCUNsb25l Um93VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7CisKKwkvKgorCSAqIENs b25lIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZv ciBzZXR0aW5nIHVwCisJICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24u CisJICovCisJQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFj aHJlbCk7Cit9CisKIC8qCiAgKiBBTFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElP TiA8cGFydGl0aW9uLW5hbWU+IEZPUiBWQUxVRVMKICAqCkBAIC0yMDM2OSwyMyArMjA0MjEs OCBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVs LCBQYXJ0aXRpb25DbWQgKmNtZCwKIAljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKGF0dGFjaHJlbCksIHJlbCwKIAkJCQkJCQkgIGNtZC0+Ym91 bmQsIHBzdGF0ZSk7CiAKLQkvKiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9m IHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICovCi0JQ3JlYXRlSW5oZXJpdGFuY2UoYXR0 YWNocmVsLCByZWwsIHRydWUpOwotCi0JLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4g Ki8KLQlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBjbWQtPmJvdW5kKTsK LQotCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVzIGlu IHRoZSBwYXJ0aXRpb24uICovCi0JQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3cXVl dWUsIHJlbCwgYXR0YWNocmVsKTsKLQotCS8qIGFuZCB0cmlnZ2VycyAqLwotCUNsb25lUm93 VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKgotCSAqIENsb25l IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBz ZXR0aW5nIHVwCi0JICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24uCi0J ICovCi0JQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFjaHJl bCk7CisJLyogQXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFi bGUuICovCisJYXR0YWNoUGFydGl0aW9uVGFibGUod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCwg Y21kLT5ib3VuZCk7CiAKIAkvKgogCSAqIEdlbmVyYXRlIHBhcnRpdGlvbiBjb25zdHJhaW50 IGZyb20gdGhlIHBhcnRpdGlvbiBib3VuZCBzcGVjaWZpY2F0aW9uLgpAQCAtMjIwMzIsMyAr MjIwNjksNTg3IEBAIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBj 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 K3sKKwlSZWxhdGlvbgluZXdSZWw7CisJT2lkCQkJbmV3UmVsSWQ7CisJT2lkCQkJZXhpc3Rp bmdSZWxpZDsKKwlUdXBsZURlc2MJZGVzY3JpcHRvcjsKKwlMaXN0CSAgICpjb2xMaXN0ID0g TklMOworCU9pZAkJCXJlbGFtSWQ7CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisKKwkvKiBJZiBl eGlzdGluZyByZWwgaXMgdGVtcCwgaXQgbXVzdCBiZWxvbmcgdG8gdGhpcyBzZXNzaW9uICov CisJaWYgKG1vZGVsUmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RF TkNFX1RFTVAgJiYKKwkJIW1vZGVsUmVsLT5yZF9pc2xvY2FsdGVtcCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVy cm1zZygiY2Fubm90IGNyZWF0ZSBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9u IG9mIGFub3RoZXIgc2Vzc2lvbiIpKTsKKworCS8qIExvb2sgdXAgaW5oZXJpdGFuY2UgYW5j ZXN0b3JzIGFuZCBnZW5lcmF0ZSByZWxhdGlvbiBzY2hlbWEuICovCisJY29sTGlzdCA9IGdl dEF0dHJpYnV0ZXNMaXN0KG1vZGVsUmVsKTsKKworCS8qIENyZWF0ZSBhIHR1cGxlIGRlc2Ny aXB0b3IgZnJvbSB0aGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWRlc2NyaXB0b3IgPSBCdWls ZERlc2NGb3JSZWxhdGlvbihjb2xMaXN0KTsKKworCS8qIExvb2sgdXAgdGhlIGFjY2VzcyBt ZXRob2QgZm9yIG5ldyByZWxhdGlvbi4gKi8KKwlyZWxhbUlkID0gKG1vZGVsUmVsLT5yZF9y ZWwtPnJlbGFtICE9IEludmFsaWRPaWQpID8gbW9kZWxSZWwtPnJkX3JlbC0+cmVsYW0gOiBI RUFQX1RBQkxFX0FNX09JRDsKKworCS8qIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGlj aCB3ZSBhcmUgc3VwcG9zZWQgdG8gY3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluYW1lc3Bh Y2VJZCA9CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShuZXdQYXJ0 TmFtZSwgTm9Mb2NrLCAmZXhpc3RpbmdSZWxpZCk7CisJaWYgKE9pZElzVmFsaWQoZXhpc3Rp bmdSZWxpZCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJ Q0FURV9UQUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlz dHMiLCBuZXdQYXJ0TmFtZS0+cmVsbmFtZSkpOworCisJLyogQ3JlYXRlIHRoZSByZWxhdGlv bi4gKi8KKwluZXdSZWxJZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFt ZS0+cmVsbmFtZSwKKwkJCQkJCQkJCQluYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQltb2RlbFJl bC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJ CQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCW93 bmVySWQsCisJCQkJCQkJCQkJcmVsYW1JZCwKKwkJCQkJCQkJCQlkZXNjcmlwdG9yLAorCQkJ CQkJCQkJCU5JTCwKKwkJCQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJCW5l d1BhcnROYW1lLT5yZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJ CQlmYWxzZSwKKwkJCQkJCQkJCQlPTkNPTU1JVF9OT09QLAorCQkJCQkJCQkJCShEYXR1bSkg MCwKKwkJCQkJCQkJCQl0cnVlLAorCQkJCQkJCQkJCWFsbG93U3lzdGVtVGFibGVNb2RzLAor CQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJTlVM TCk7CisKKwkvKgorCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1h a2UgdGhlIG5ld2x5LWNyZWF0ZWQgcmVsYXRpb24KKwkgKiB0dXBsZSB2aXNpYmxlIGZvciBv cGVuaW5nLgorCSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkvKgorCSAq IE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gd2l0aCBubyBsb2NrLCBiZWNhdXNlIHdlIGFscmVh ZHkgaGF2ZQorCSAqIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgcGxhY2VkIHRoZXJlIGFmdGVyIGNy ZWF0aW9uLgorCSAqLworCW5ld1JlbCA9IHRhYmxlX29wZW4obmV3UmVsSWQsIE5vTG9jayk7 CisKKwkvKgorCSAqIFdlIGludGVuZGVkIHRvIGNyZWF0ZSB0aGUgcGFydGl0aW9uIHdpdGgg dGhlIHNhbWUgcGVyc2lzdGVuY2UgYXMgdGhlCisJICogcGFyZW50IHRhYmxlLCBidXQgd2Ug c3RpbGwgbmVlZCB0byByZWNoZWNrIGJlY2F1c2UgdGhhdCBtaWdodCBiZQorCSAqIGFmZmVj dGVkIGJ5IHRoZSBzZWFyY2hfcGF0aC4gIElmIHRoZSBwYXJlbnQgaXMgcGVybWFuZW50LCBz byBtdXN0IGJlCisJICogYWxsIG9mIGl0cyBwYXJ0aXRpb25zLgorCSAqLworCWlmIChtb2Rl bFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QICYm CisJCW5ld1JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9U RU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJlbGF0 aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJ ICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKSk7CisKKwkvKiBQZXJtYW5l bnQgcmVscyBjYW5ub3QgYmUgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8gdGVtcG9yYXJ5IHBh cmVudCAqLworCWlmIChuZXdSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVS U0lTVEVOQ0VfVEVNUCAmJgorCQltb2RlbFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9 PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRl IGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRp b24gXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwp KSk7CisKKwkvKiBDcmVhdGUgY29uc3RyYWludHMsIGRlZmF1bHQgdmFsdWVzIGFuZCBnZW5l cmF0ZWQgdmFsdWVzICovCisJY3JlYXRlVGFibGVDb25zdHJhaW50cyhtb2RlbFJlbCwgbmV3 UmVsKTsKKworCXJldHVybiBuZXdSZWw7Cit9CisKKy8qCisgKiBtb3ZlTWVyZ2VkVGFibGVz Um93czogc2NhbiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCAobWVyZ2luZ1BhcnRpdGlvbnNM aXN0KQorICogb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIChyZWwpIGFuZCBtb3ZlIHJvd3Mg aW50byB0aGUgbmV3IHBhcnRpdGlvbgorICogKG5ld1BhcnRSZWwpLgorICovCitzdGF0aWMg dm9pZAorbW92ZU1lcmdlZFRhYmxlc1Jvd3MoUmVsYXRpb24gcmVsLCBMaXN0ICptZXJnaW5n UGFydGl0aW9uc0xpc3QsCisJCQkJCSBSZWxhdGlvbiBuZXdQYXJ0UmVsKQoreworCUNvbW1h bmRJZAlteWNpZDsKKworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1 c2luZyBpdC4gKi8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNN OworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8q IHN0YXRlIG9mIGJ1bGsgaW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNs b3QgKmRzdHNsb3Q7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisK KwkvKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQu ICovCisJYmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIG5l Y2Vzc2FyeSB0dXBsZSBzbG90LiAqLworCWRzdHNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJs ZVNsb3QoUmVsYXRpb25HZXREZXNjcihuZXdQYXJ0UmVsKSwKKwkJCQkJCQkJCSAgIHRhYmxl X3Nsb3RfY2FsbGJhY2tzKG5ld1BhcnRSZWwpKTsKKwlFeGVjU3RvcmVBbGxOdWxsVHVwbGUo ZHN0c2xvdCk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIG1lcmdpbmdQYXJ0aXRpb25zTGlzdCkK Kwl7CisJCVJlbGF0aW9uCW1lcmdpbmdQYXJ0aXRpb24gPSAoUmVsYXRpb24pIGxmaXJzdChs aXN0cHRyKTsKKwkJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJCVR1cGxlQ29udmVyc2lv bk1hcCAqdHVwbGVfbWFwOworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCVNuYXBzaG90CXNu YXBzaG90OworCisJCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBuZXcgcGFydGl0aW9uLiAq LworCQlzcmNzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVz Y3IobWVyZ2luZ1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFj a3MobWVyZ2luZ1BhcnRpdGlvbikpOworCisJCS8qCisJCSAqIE1hcCBjb21wdXRpbmcgZm9y IG1vdmluZyBhdHRyaWJ1dGVzIG9mIG1lcmdlZCBwYXJ0aXRpb24gdG8gbmV3CisJCSAqIHBh cnRpdGlvbi4KKwkJICovCisJCXR1cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUo UmVsYXRpb25HZXREZXNjcihtZXJnaW5nUGFydGl0aW9uKSwKKwkJCQkJCQkJCQkgICBSZWxh dGlvbkdldERlc2NyKG5ld1BhcnRSZWwpKTsKKworCQkvKiBTY2FuIHRocm91Z2ggdGhlIHJv d3MuICovCisJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hv dCgpKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihtZXJnaW5nUGFydGl0aW9uLCBzbmFw c2hvdCwgMCwgTlVMTCk7CisKKwkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2Nh biwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNyY3Nsb3QpKQorCQl7CisJCQlUdXBsZVRhYmxl U2xvdCAqaW5zZXJ0c2xvdDsKKworCQkJLyogRXh0cmFjdCBkYXRhIGZyb20gb2xkIHR1cGxl LiAqLworCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNzbG90KTsKKworCQkJaWYgKHR1cGxlX21h cCkKKwkJCXsKKwkJCQkvKiBOZWVkIHRvIHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1dGVzLiAq LworCQkJCWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QodHVwbGVfbWFwLT5h dHRyTWFwLCBzcmNzbG90LCBkc3RzbG90KTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkv KiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQkJaW5zZXJ0c2xvdCA9IGRzdHNs b3Q7CisKKwkJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsKKworCQkJCW1lbWNweShp bnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCQkgICBz aXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQkJbWVtY3B5KGluc2Vy dHNsb3QtPnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGwsCisJCQkJCSAgIHNpemVv Zihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQkJRXhlY1N0b3JlVmlydHVh bFR1cGxlKGluc2VydHNsb3QpOworCQkJfQorCisJCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0 IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCQl0YWJsZV90dXBsZV9pbnNlcnQobmV3UGFy dFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkJICAgdGlfb3B0aW9ucywgYmlzdGF0 ZSk7CisKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKworCQl0YWJsZV9lbmRz Y2FuKHNjYW4pOworCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCisJCWlmICh0 dXBsZV9tYXApCisJCQlmcmVlX2NvbnZlcnNpb25fbWFwKHR1cGxlX21hcCk7CisKKwkJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNzbG90KTsKKwl9CisKKwlFeGVjRHJvcFNp bmdsZVR1cGxlVGFibGVTbG90KGRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUoYmlz dGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQobmV3UGFydFJlbCwgdGlfb3B0 aW9ucyk7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9O UyA8cGFydGl0aW9uLWxpc3Q+IElOVE8gPHBhcnRpdGlvbi1uYW1lPgorICovCitzdGF0aWMg dm9pZAorQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBB bHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24JbmV3UGFy dFJlbDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyOworCUxpc3QJICAgKm1lcmdpbmdQYXJ0aXRp b25zTGlzdCA9IE5JTDsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlleGlzdGlu Z1JlbGlkOworCU9pZAkJCW93bmVySWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCXNhdmVfdXNl cmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7 CisKKwkvKgorCSAqIExvY2sgYWxsIG1lcmdlZCBwYXJ0aXRpb25zLCBjaGVjayB0aGVtIGFu ZCBjcmVhdGUgbGlzdCB3aXRoIHBhcnRpdGlvbnMKKwkgKiBjb250ZXh0cy4KKwkgKi8KKwlm b3JlYWNoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QpCisJeworCQlSYW5nZVZhciAgICpuYW1l ID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbWVyZ2luZ1Bh cnRpdGlvbjsKKworCQkvKgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gZGV0YWNoIGFuZCByZW1v dmUgdGhpcyBwYXJ0aXRpb246IG5lZWQgdG8gdXNlCisJCSAqIGV4Y2x1c2l2ZSBsb2NrIGZv ciBwcmV2ZW50aW5nIERNTC1xdWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJCSAqLworCQlt ZXJnaW5nUGFydGl0aW9uID0gdGFibGVfb3BlbnJ2KG5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2spOworCisJCWlmIChPaWRJc1ZhbGlkKG93bmVySWQpKQorCQl7CisJCQkvKiBEbyB0aGUg cGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzPyAqLworCQkJ aWYgKG93bmVySWQgIT0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcikKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUg ZGlmZmVyZW50IG93bmVycyIpKTsKKwkJfQorCQllbHNlCisJCQlvd25lcklkID0gbWVyZ2lu Z1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcjsKKworCQkvKiBTdG9yZSBhIG5leHQgbWVy Z2luZyBwYXJ0aXRpb24gaW50byB0aGUgbGlzdC4gKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbnNM aXN0ID0gbGFwcGVuZChtZXJnaW5nUGFydGl0aW9uc0xpc3QsCisJCQkJCQkJCQkJbWVyZ2lu Z1BhcnRpdGlvbik7CisJfQorCisJLyoKKwkgKiBMb29rIHVwIGV4aXN0aW5nIHJlbGF0aW9u IGJ5IG5ldyBwYXJ0aXRpb24gbmFtZSwgY2hlY2sgd2UgaGF2ZQorCSAqIHBlcm1pc3Npb24g dG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0IGFnYWluc3QgY29uY3VycmVudCBkcm9wLCBhbmQg bWFyaworCSAqIHN0bXQtPnJlbGF0aW9uIGFzIFJFTFBFUlNJU1RFTkNFX1RFTVAgaWYgYSB0 ZW1wb3JhcnkgbmFtZXNwYWNlIGlzCisJICogc2VsZWN0ZWQuCisJICovCisJY21kLT5uYW1l LT5yZWxwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKKwlSYW5n ZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UoY21kLT5uYW1lLCBOb0xvY2ssICZl eGlzdGluZ1JlbGlkKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhpcyBuYW1lIGlzIGFscmVh ZHkgdGFrZW4uICBUaGlzIGhlbHBzIHVzIHRvIGRldGVjdCB0aGUKKwkgKiBzaXR1YXRpb24g d2hlbiBvbmUgb2YgdGhlIG1lcmdpbmcgcGFydGl0aW9ucyBoYXMgdGhlIHNhbWUgbmFtZSBh cyB0aGUKKwkgKiBuZXcgcGFydGl0aW9uLiAgT3RoZXJ3aXNlLCB0aGlzIHdvdWxkIGZhaWwg bGF0ZXIgb24gYW55d2F5IGJ1dCBjYXRjaGluZworCSAqIHRoaXMgaGVyZSBhbGxvd3MgdXMg dG8gZW1pdCBhIG5pY2VyIGVycm9yIG1lc3NhZ2UuCisJICovCisJaWYgKE9pZElzVmFsaWQo ZXhpc3RpbmdSZWxpZCkpCisJeworCQlSZWxhdGlvbglzYW1lTmFtZVBhcnRpdGlvbiA9IE5V TEw7CisKKwkJZm9yZWFjaF9wdHIoUmVsYXRpb25EYXRhLCBtZXJnaW5nUGFydGl0aW9uLCBt ZXJnaW5nUGFydGl0aW9uc0xpc3QpCisJCXsKKwkJCWlmIChSZWxhdGlvbkdldFJlbGlkKG1l cmdpbmdQYXJ0aXRpb24pID09IGV4aXN0aW5nUmVsaWQpCisJCQl7CisJCQkJc2FtZU5hbWVQ YXJ0aXRpb24gPSBtZXJnaW5nUGFydGl0aW9uOworCQkJCWJyZWFrOworCQkJfQorCQl9CisK KwkJaWYgKHNhbWVOYW1lUGFydGl0aW9uKQorCQl7CisJCQkvKgorCQkJICogVGhlIG5ldyBw YXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIG1lcmdpbmcKKwkJCSAqIHBh cnRpdGlvbnMuCisJCQkgKi8KKwkJCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOwor CisJCQkvKiBHZW5lcmF0ZSB0ZW1wb3JhcnkgbmFtZS4gKi8KKwkJCXNwcmludGYodG1wUmVs TmFtZSwgIm1lcmdlLSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9j UGlkKTsKKworCQkJLyoKKwkJCSAqIFJlbmFtZSB0aGUgZXhpc3RpbmcgcGFydGl0aW9uIHdp dGggYSB0ZW1wb3JhcnkgbmFtZSwgbGVhdmluZyBpdAorCQkJICogZnJlZSBmb3IgdGhlIG5l dyBwYXJ0aXRpb24uICBXZSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcworCQkJICog aW4gdGhlIGZ1dHVyZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGV2ZW50dWFsbHkgZHJvcCB0 aGUKKwkJCSAqIGV4aXN0aW5nIHBhcnRpdGlvbiBhbnl3YXkuCisJCQkgKi8KKwkJCVJlbmFt ZVJlbGF0aW9uSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChzYW1lTmFtZVBhcnRpdGlvbiks CisJCQkJCQkJCSAgIHRtcFJlbE5hbWUsIGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qCisJCQkg KiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcgcGFy dGl0aW9uCisJCQkgKiB0dXBsZSB2aXNpYmxlIGZvciByZW5hbWUuCisJCQkgKi8KKwkJCUNv bW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJ ZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBjbWQtPm5hbWUtPnJl bG5hbWUpKTsKKwkJfQorCX0KKworCS8qIERldGFjaCBhbGwgbWVyZ2VkIHBhcnRpdGlvbnMu ICovCisJZGVmYXVsdFBhcnRPaWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVz YyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKSk7CisJZm9yZWFjaChsaXN0 cHRyLCBtZXJnaW5nUGFydGl0aW9uc0xpc3QpCisJeworCQlSZWxhdGlvbgltZXJnaW5nUGFy dGl0aW9uID0gKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogUmVtb3ZlIHRo ZSBwZ19pbmhlcml0cyByb3cgZmlyc3QuICovCisJCVJlbW92ZUluaGVyaXRhbmNlKG1lcmdp bmdQYXJ0aXRpb24sIHJlbCwgZmFsc2UpOworCQkvKiBEbyB0aGUgZmluYWwgcGFydCBvZiBk ZXRhY2hpbmcuICovCisJCURldGFjaFBhcnRpdGlvbkZpbmFsaXplKHJlbCwgbWVyZ2luZ1Bh cnRpdGlvbiwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKwl9CisKKwkvKiBDcmVhdGUgdGFi bGUgZm9yIG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2RlbC4g Ki8KKwlBc3NlcnQoT2lkSXNWYWxpZChvd25lcklkKSk7CisJbmV3UGFydFJlbCA9IGNyZWF0 ZVBhcnRpdGlvblRhYmxlKGNtZC0+bmFtZSwgcmVsLCBvd25lcklkKTsKKworCS8qCisJICog U3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhhdCBhbnkgaW5kZXgg ZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0IHVzZXIuICBBbHNvIGxvY2sgZG93biBz ZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5kCisJICogYXJyYW5nZSB0byBtYWtl IEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMgY29tbWFuZC4KKwkgKgorCSAq IE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5lIG5hbWVzcGFjZSBpbiBjcmVhdGVQYXJ0 aXRpb25UYWJsZSBjYWxsLgorCSAqLworCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVf dXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChv d25lcklkLAorCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNU RURfT1BFUkFUSU9OKTsKKwlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwor CVJlc3RyaWN0U2VhcmNoUGF0aCgpOworCisJLyogQ29weSBkYXRhIGZyb20gbWVyZ2VkIHBh cnRpdGlvbnMgdG8gbmV3IHBhcnRpdGlvbi4gKi8KKwltb3ZlTWVyZ2VkVGFibGVzUm93cyhy ZWwsIG1lcmdpbmdQYXJ0aXRpb25zTGlzdCwgbmV3UGFydFJlbCk7CisKKwkvKiBEcm9wIHRo ZSBjdXJyZW50IHBhcnRpdGlvbnMgYmVmb3JlIGF0dGFjaGluZyB0aGUgbmV3IG9uZS4gKi8K Kwlmb3JlYWNoKGxpc3RwdHIsIG1lcmdpbmdQYXJ0aXRpb25zTGlzdCkKKwl7CisJCU9iamVj dEFkZHJlc3Mgb2JqZWN0OworCQlSZWxhdGlvbgltZXJnaW5nUGFydGl0aW9uID0gKFJlbGF0 aW9uKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogR2V0IHJlbGF0aW9uIGlkIGJlZm9yZSB0 YWJsZV9jbG9zZSgpIGNhbGwuICovCisJCW9iamVjdC5vYmplY3RJZCA9IFJlbGF0aW9uR2V0 UmVsaWQobWVyZ2luZ1BhcnRpdGlvbik7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25S ZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCS8qIEtlZXAgdGhl IGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9u LCBOb0xvY2spOworCisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RSSUNU LCAwKTsKKwl9CisJbGlzdF9mcmVlKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCk7CisKKwkvKgor CSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiB3 cXVldWUgPSBOVUxMOgorCSAqIHZlcmlmaWNhdGlvbiBmb3IgZWFjaCBjbG9uZWQgY29uc3Ry YWludCBpcyBub3QgbmVlZGVkLgorCSAqLworCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEws IHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3VuZCk7CisKKwkvKiBLZWVwIHRoZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCisJ LyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlv bnMgKi8KKwlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKKworCS8qIFJl c3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0ICovCisJU2V0VXNlcklkQW5kU2Vj Q29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQppbmRleCAwYjU2NTIwNzFkLi40NzgyM2VmN2E1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTc1 Niw3ICs3NTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU9SREVSIE9SRElO QUxJVFkgT1RIRVJTIE9VVF9QIE9VVEVSX1AKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZF UlJJRElORyBPV05FRCBPV05FUgogCi0JUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJU SUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKKwlQQVJBTExFTCBQQVJBTUVU RVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBUlRJVElPTlMgUEFTU0lORyBQQVNTV09S RCBQQVRICiAJUEVSSU9EIFBMQUNJTkcgUExBTiBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQ UkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQog CVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9H UkFNIFBVQkxJQ0FUSU9OCkBAIC0yMzMyLDYgKzIzMzIsNyBAQCBwYXJ0aXRpb25fY21kOgog CQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUg PSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9ICQ0OworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklM OwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUg KikgY21kOwogCkBAIC0yMzQ2LDYgKzIzNDcsNyBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQlu LT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAkMzsK IAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJ CQkJCWNtZC0+Y29uY3VycmVudCA9ICQ0OwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7 CiAKQEAgLTIzNTksNiArMjM2MSwyMSBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0 eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU7CiAJCQkJCWNtZC0+bmFtZSA9ICQz OwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsK KwkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRlZiA9IChOb2RlICop IGNtZDsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxF IDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TICgpIElOVE8gPHBhcnRpdGlvbl9uYW1lPiAqLwor CQkJfCBNRVJHRSBQQVJUSVRJT05TICcoJyBxdWFsaWZpZWRfbmFtZV9saXN0ICcpJyBJTlRP IHF1YWxpZmllZF9uYW1lCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5v ZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUo UGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfTWVyZ2VQYXJ0aXRpb25z OworCQkJCQljbWQtPm5hbWUgPSAkNzsKKwkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJ CWNtZC0+cGFydGxpc3QgPSAkNDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJ CQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAt MjM3NSw2ICsyMzkyLDcgQEAgaW5kZXhfcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlw ZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNt ZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJCQljbWQt PmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBA IC0xNzkwOSw2ICsxNzkyNyw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSU0VS CiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwg UEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQQVRICkBAIC0xODUzNiw2ICsxODU1NSw3 IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJ CXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNT V09SRAogCQkJfCBQQVRICmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA2 MjAxNTQzMWZkLi4wZDNhYjM1YTU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2hlYXAuaCIKICNpbmNs dWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf YW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfY29uc3RyYWludC5oIgpAQCAtNTgsNiArNTksOCBAQAogI2luY2x1ZGUgInBh cnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3V0aWxjbWQuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3Bh cnRkZXNjLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0zNDg4LDYgKzM0OTEsMTE5IEBAIHRy YW5zZm9ybVJ1bGVTdG10KFJ1bGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmlu ZywKIH0KIAogCisvKgorICogY2hlY2tQYXJ0aXRpb24KKyAqCQlDaGVjayB0aGF0IHBhcnRS ZWxPaWQgaXMgYW4gb2lkIG9mIHBhcnRpdGlvbiBvZiB0aGUgcGFyZW50IHRhYmxlIHJlbAor ICovCitzdGF0aWMgdm9pZAorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFy dFJlbE9pZCkKK3sKKwlSZWxhdGlvbglwYXJ0UmVsOworCisJcGFydFJlbCA9IHJlbGF0aW9u X29wZW4ocGFydFJlbE9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCWlmIChwYXJ0UmVsLT5y ZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygi XCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocGFydFJlbCkpKTsKKworCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv bikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNU X1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiIsCisJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpKSk7CisKKwlpZiAoZ2V0X3Bh cnRpdGlvbl9wYXJlbnQocGFydFJlbE9pZCwgZmFsc2UpICE9IFJlbGF0aW9uR2V0UmVsaWQo cmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X1RBQkxFKSwKKwkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBub3QgYSBwYXJ0aXRp b24gb2YgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocGFydFJlbCksCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKTsK KworCS8qIFBlcm1pc3Npb25zIGNoZWNrcyAqLworCWlmICghb2JqZWN0X293bmVyY2hlY2so UmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHBhcnRSZWwpLCBHZXRVc2Vy SWQoKSkpCisJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtp bmRfb2JqdHlwZShwYXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQpLAorCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSk7CisKKwlyZWxhdGlvbl9jbG9zZShwYXJ0UmVs LCBBY2Nlc3NTaGFyZUxvY2spOworfQorCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21k Rm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElU SU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBtZXJnZWQgcGFy dGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHRpbmcKKyAqIHBhcnRpdGlvbi4K KyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlk ZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4 dC0+cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENl bGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0 ID0gZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlrZXkgPSBSZWxhdGlv bkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9z dHJhdGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9I QVNIKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9u ZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKTsKKworCS8qIElzIGN1cnJlbnQgcGFydGl0 aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYygKKwkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UGFy dGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCWZvcmVhY2gobGlzdHB0ciwgcGFydGNt ZC0+cGFydGxpc3QpCisJeworCQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxm aXJzdChsaXN0cHRyKTsKKworCQkvKiBQYXJ0aXRpb25zIGluIHRoZSBsaXN0IHNob3VsZCBo YXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yX2VhY2hfY2VsbChsaXN0cHRyMiwgcGFy dGNtZC0+cGFydGxpc3QsIGxuZXh0KHBhcnRjbWQtPnBhcnRsaXN0LCBsaXN0cHRyKSkKKwkJ eworCQkJUmFuZ2VWYXIgICAqbmFtZTIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIy KTsKKworCQkJaWYgKGVxdWFsKG5hbWUsIG5hbWUyKSkKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCQllcnJtc2co InBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVhZHkgdXNlZCIsIG5hbWUtPnJl bG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lMi0+ bG9jYXRpb24pKTsKKwkJfQorCisJCS8qCisJCSAqIFNlYXJjaCBERUZBVUxUIHBhcnRpdGlv biBpbiB0aGUgbGlzdC4gTG9jayBwYXJ0aXRpb25zIGJlZm9yZQorCQkgKiBjYWxjdWxhdGlu ZyB0aGUgYm91bmRhcnkgZm9yIHJlc3VsdGluZyBwYXJ0aXRpb24uCisJCSAqLworCQlwYXJ0 T2lkID0gUmFuZ2VWYXJHZXRSZWxpZChuYW1lLCBBY2Nlc3NTaGFyZUxvY2ssIGZhbHNlKTsK KwkJaWYgKHBhcnRPaWQgPT0gZGVmYXVsdFBhcnRPaWQpCisJCQlpc0RlZmF1bHRQYXJ0ID0g dHJ1ZTsKKworCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCisJCXBhcnRP aWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOworCX0KKworCS8qIEFsbG9j YXRlIGJvdW5kIG9mIHJlc3VsdGluZyBwYXJ0aXRpb24uICovCisJQXNzZXJ0KHBhcnRjbWQt PmJvdW5kID09IE5VTEwpOworCXBhcnRjbWQtPmJvdW5kID0gbWFrZU5vZGUoUGFydGl0aW9u Qm91bmRTcGVjKTsKKworCS8qIEZpbGwgcGFydGl0aW9uIGJvdW5kLiAqLworCXBhcnRjbWQt PmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5OworCXBhcnRjbWQtPmJvdW5kLT5sb2NhdGlv biA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZhdWx0ID0gaXNEZWZhdWx0UGFydDsK KwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9y X21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3QsCisJCQkJCQkJCQkJCXBhcnRPaWRz LCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0LT5wc3RhdGUpOworfQorCiAvKgog ICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBhcnNlIGFuYWx5c2lzIGZvciBB TFRFUiBUQUJMRQpAQCAtMzc2NSw2ICszODgxLDE5IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVT dG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxh cHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBh cnRpdGlvbnM6CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0 aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0Y21kLT5w YXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coImxp c3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1z IikpOworCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21k KTsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKKwkJCQkJYnJlYWs7 CisJCQkJfQorCiAJCQlkZWZhdWx0OgogCiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5jCmluZGV4IDRiZGMyOTQxZWYuLmNiNzE5ZjFmZjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtMzIxNCw4ICszMjE0LDkgQEAg Y2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChjaGFyICpyZWxuYW1lLCBSZWxhdGlvbiBwYXJl bnQsCiAJCQkJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKIAogCQkJCQkJLyoKLQkJ CQkJCSAqIFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIgZGF0dW1zIGxp c3Q7Ci0JCQkJCQkgKiBpZiB3ZSBoYXZlIGVxdWFsaXR5LCBwb2ludCB0byB0aGUgZmlyc3Qg b25lLgorCQkJCQkJICogUG9pbnQgdG8gcHJvYmxlbWF0aWMga2V5IGluIHRoZSBsaXN0IG9m IGxvd2VyCisJCQkJCQkgKiBkYXR1bXM7IGlmIHdlIGhhdmUgZXF1YWxpdHksIHBvaW50IHRv IHRoZSBmaXJzdAorCQkJCQkJICogb25lLgogCQkJCQkJICovCiAJCQkJCQlkYXR1bSA9IGNt cHZhbCA9PSAwID8gbGluaXRpYWwoc3BlYy0+bG93ZXJkYXR1bXMpIDoKIAkJCQkJCQlsaXN0 X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKQEAgLTQ5NzcsMyAr NDk3OCwyMTAgQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAlQR19SRVRVUk5fQk9PTChyb3dIYXNoICUgbW9kdWx1cyA9PSByZW1haW5kZXIpOwog fQorCisvKgorICogY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlCisgKgorICog KGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBh IGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoKSBhbmQK KyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGZ1 bmN0aW9uIGNvbXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCBsb3dlciBi b3VuZCBvZgorICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVxdWFs IGV4Y2VwdCB3aGVuCisgKiAiZGVmYXVsdFBhcnQgPT0gdHJ1ZSIgKHRoaXMgbWVhbnMgdGhh dCBvbmUgb2Ygc3BsaXQgcGFydGl0aW9ucyBpcyBERUZBVUxUKS4KKyAqIEluIHRoaXMgY2Fz ZSB1cHBlciBib3VuZCBvZiBmaXJzdF9ib3VuZCBjYW4gYmUgbGVzcyB0aGFuIGxvd2VyIGJv dW5kIG9mCisgKiBzZWNvbmRfYm91bmQgYmVjYXVzZSBzcGFjZSBiZXR3ZWVuIHRoZXNlIGJv dW5kcyB3aWxsIGJlIGluY2x1ZGVkIGluCisgKiBERUZBVUxUIHBhcnRpdGlvbi4KKyAqCisg KiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIGZpcnN0X25hbWU6CQluYW1lIG9m IGZpcnN0IHBhcnRpdGlvbgorICogZmlyc3RfYm91bmQ6CQlib3VuZCBvZiBmaXJzdCBwYXJ0 aXRpb24KKyAqIHNlY29uZF9uYW1lOgkJbmFtZSBvZiBzZWNvbmQgcGFydGl0aW9uCisgKiBz ZWNvbmRfYm91bmQ6CWJvdW5kIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIGRlZmF1bHRQYXJ0 OgkJdHJ1ZSBpZiBvbmUgb2Ygc3BsaXQgcGFydGl0aW9ucyBpcyBERUZBVUxUCisgKiBwc3Rh dGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5pbmcgZXJy b3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3R3b19wYXJ0aXRpb25zX2Jv dW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCSAgUmFuZ2VWYXIgKmZpcnN0 X25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpmaXJzdF9ib3VuZCwKKwkJ CQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91 bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgYm9vbCBkZWZhdWx0UGFydCwKKwkJ CQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJl bGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAq Zmlyc3RfdXBwZXI7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqc2Vjb25kX2xvd2VyOworCWlu dAkJCWNtcHZhbDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJB VEVHWV9SQU5HRSk7CisKKwlmaXJzdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91 bmQoa2V5LCAtMSwgZmlyc3RfYm91bmQtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisJc2Vjb25k X2xvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzZWNvbmRfYm91 bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKworCS8qCisJICogbG93ZXIxPWZhbHNlICh0aGUg c2Vjb25kIHRvIGxhc3QgYXJndW1lbnQpIGZvciBjb3JyZWN0IGNvbXBhcmlzb24gb2YKKwkg KiBsb3dlciBhbmQgdXBwZXIgYm91bmRzLgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlvbl9y Ym91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMs CisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkgIHNlY29uZF9sb3dl ci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgZmFsc2UsIGZpcnN0 X3VwcGVyKTsKKwlpZiAoKCFkZWZhdWx0UGFydCAmJiBjbXB2YWwpIHx8IChkZWZhdWx0UGFy dCAmJiBjbXB2YWwgPCAwKSkKKwl7CisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0g bGluaXRpYWwoc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAor CQkJCSBlcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgY29uZmxpY3Rz IHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJ CQlzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwl9Cit9CisK Ky8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMKKyAqCisgKiBSZXR1cm5zIGRlc2Ny aXB0aW9uIG9mIHBhcnRpdGlvbiB3aXRoIE9pZCAicGFydE9pZCIgYW5kIG5hbWUgIm5hbWUi LgorICovCitzdGF0aWMgUGFydGl0aW9uQm91bmRTcGVjICoKK2dldF9wYXJ0aXRpb25fYm91 bmRfc3BlYyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIgKm5hbWUpCit7CisJSGVhcFR1cGxlCXR1 cGxlOworCURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisJUGFydGl0aW9uQm91bmRT cGVjICpib3VuZHNwZWMgPSBOVUxMOworCisJLyogVHJ5IGZldGNoaW5nIHRoZSB0dXBsZSBm cm9tIHRoZSBjYXRjYWNoZSwgZm9yIHNwZWVkLiAqLworCXR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFJFTE9JRCwgcGFydE9pZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uIFwiJXNc IiIsCisJCQkgbmFtZS0+cmVsbmFtZSk7CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihS RUxPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfY2xhc3NfcmVscGFydGJvdW5kLAorCQkJ CQkJCSZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJwYXJ0aXRpb24g Ym91bmQgZm9yIHJlbGF0aW9uIFwiJXNcIiBpcyBudWxsIiwKKwkJCSBuYW1lLT5yZWxuYW1l KTsKKworCWJvdW5kc3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRh dHVtKSk7CisKKwlpZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5kU3BlYykpCisJ CWVsb2coRVJST1IsICJleHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHJlbGF0aW9u IFwiJXNcIiIsCisJCQkgbmFtZS0+cmVsbmFtZSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVw bGUpOworCXJldHVybiBib3VuZHNwZWM7Cit9CisKKy8qCisgKiBjYWxjdWxhdGVfcGFydGl0 aW9uX2JvdW5kX2Zvcl9tZXJnZQorICoKKyAqIENhbGN1bGF0ZXMgdGhlIGJvdW5kIG9mIG1l cmdlZCBwYXJ0aXRpb24gInNwZWMiIGJ5IHVzaW5nIHRoZSBib3VuZHMgb2YKKyAqIHBhcnRp dGlvbnMgdG8gYmUgbWVyZ2VkLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJs ZQorICogcGFydE5hbWVzOgkJbmFtZXMgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQKKyAq IHBhcnRPaWRzOgkJT2lkcyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICogc3BlYyAo b3V0KToJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9uCisg KiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5l IGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRf Zm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywK KwkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJUGFydGl0aW9uQm91bmRTcGVj ICpzcGVjLAorCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktl eSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkJv dW5kU3BlYyAqYm91bmQ7CisKKwlBc3NlcnQoIXNwZWMtPmlzX2RlZmF1bHQpOworCisJc3dp dGNoIChrZXktPnN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfUkFO R0U6CisJCQl7CisJCQkJaW50CQkJaTsKKwkJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93 ZXJfYm91bmRzOworCQkJCWludAkJCW5wYXJ0cyA9IGxpc3RfbGVuZ3RoKHBhcnRPaWRzKTsK KwkJCQlMaXN0CSAgICpib3VuZHMgPSBOSUw7CisKKwkJCQlsb3dlcl9ib3VuZHMgPSAoUGFy dGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoUGFy dGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisKKwkJCQkvKgorCQkJCSAqIENyZWF0ZSBhcnJheSBv ZiBsb3dlciBib3VuZHMgYW5kIGxpc3Qgb2YKKwkJCQkgKiBQYXJ0aXRpb25Cb3VuZFNwZWMu CisJCQkJICovCisJCQkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQkJCXsKKwkJ CQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMobGlzdF9udGhfb2lkKHBhcnRP aWRzLCBpKSwKKwkJCQkJCQkJCQkJCQkgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1l cywgaSkpOworCisJCQkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9y Ym91bmQoa2V5LCBpLCBib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQkJCQlib3VuZHMg PSBsYXBwZW5kKGJvdW5kcywgYm91bmQpOworCQkJCX0KKworCQkJCS8qIFNvcnQgYXJyYXkg b2YgbG93ZXIgYm91bmRzLiAqLworCQkJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0 cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJCQkgIHFzb3J0X3BhcnRp dGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCQkJLyogUmFuZ2VzIG9mIHBh cnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQkJCWZvciAoaSA9IDE7IGkgPCBu cGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWludAkJCWluZGV4ID0gbG93ZXJfYm91bmRzW2ld LT5pbmRleDsKKwkJCQkJaW50CQkJcHJldl9pbmRleCA9IGxvd2VyX2JvdW5kc1tpIC0gMV0t PmluZGV4OworCisJCQkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShwYXJl bnQsCisJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBw cmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlz dF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAq KSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRp b25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJ ICBmYWxzZSwgcHN0YXRlKTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIExvd2VyIGJvdW5k IG9mIGZpcnN0IHBhcnRpdGlvbiBpcyB0aGUgbG93ZXIgYm91bmQgb2YgbWVyZ2VkCisJCQkJ ICogcGFydGl0aW9uLgorCQkJCSAqLworCQkJCXNwZWMtPmxvd2VyZGF0dW1zID0KKwkJCQkJ KChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNb MF0tPmluZGV4KSktPmxvd2VyZGF0dW1zOworCisJCQkJLyoKKwkJCQkgKiBVcHBlciBib3Vu ZCBvZiBsYXN0IHBhcnRpdGlvbiBpcyB0aGUgdXBwZXIgYm91bmQgb2YgbWVyZ2VkCisJCQkJ ICogcGFydGl0aW9uLgorCQkJCSAqLworCQkJCXNwZWMtPnVwcGVyZGF0dW1zID0KKwkJCQkJ KChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNb bnBhcnRzIC0gMV0tPmluZGV4KSktPnVwcGVyZGF0dW1zOworCisJCQkJcGZyZWUobG93ZXJf Ym91bmRzKTsKKwkJCQlsaXN0X2ZyZWUoYm91bmRzKTsKKwkJCQlicmVhazsKKwkJCX0KKwor CQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQkJeworCQkJCUxpc3RDZWxsICAg Kmxpc3RwdHIsCisJCQkJCQkgICAqbGlzdHB0cjI7CisKKwkJCQkvKiBDb25zb2xpZGF0ZSBi b3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAqLworCQkJCWZvcmJvdGgo bGlzdHB0ciwgcGFydE9pZHMsIGxpc3RwdHIyLCBwYXJ0TmFtZXMpCisJCQkJeworCQkJCQlS YW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisJCQkJ CU9pZAkJCWN1ck9pZCA9IGxmaXJzdF9vaWQobGlzdHB0cik7CisKKwkJCQkJYm91bmQgPSBn ZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoY3VyT2lkLCBuYW1lKTsKKwkJCQkJc3BlYy0+bGlz dGRhdHVtcyA9IGxpc3RfY29uY2F0KHNwZWMtPmxpc3RkYXR1bXMsIGJvdW5kLT5saXN0ZGF0 dW1zKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVmYXVsdDoKKwkJCWVsb2co RVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAoaW50 KSBrZXktPnN0cmF0ZWd5KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXgg ZWM2NWFiNzlmZS4uNGJmMTU2MGM4OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAt MjcyMSw2ICsyNzIxLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQs CiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05TVFJBSU5UIiwKIAkJ CQkJICAiUkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAi REVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLAorCQkJCQkg ICJNRVJHRSBQQVJUSVRJT05TICgiLAogCQkJCQkgICJPRiIsICJOT1QgT0YiKTsKIAkvKiBB TFRFUiBUQUJMRSB4eHggQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIkFERCIpKQpAQCAtMjk4Nyw2ICsyOTg4LDE1IEBAIG1hdGNoX3By ZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0giLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkp KQogCQlDT01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFkiLCAiRklOQUxJWkUiKTsKIAorCS8q IEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TICggKi8KKwllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0UiLCAiUEFSVElUSU9O UyIsICIoIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOwor CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfcGFydGl0aW9uX29mX3Rh YmxlKTsKKwl9CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFu eSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCopIikpCisJCUNPTVBMRVRFX1dJVEgoIklO VE8iKTsKKwogCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBPRiAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJPRiIpKQogCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9jb21wb3NpdGVfZGF0YXR5cGVzKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9oZWFwLmgKaW5kZXggZGJkMzM5ZTlkZi4uYzEzMGJjMGMzOCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9oZWFwLmgKQEAgLTExOSw2ICsxMTksOSBAQCBleHRlcm4gTGlzdCAqQWRkUmVsYXRpb25O b3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKmNv bnN0cmFpbnRzLAogCQkJCQkJCQkJCSAgIExpc3QgKm9sZF9ub3RudWxscyk7CiAKK2V4dGVy biB2b2lkIFN0b3JlQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLCBMaXN0ICpjb29rZWRfY29u c3RyYWludHMsCisJCQkJCQkJIGJvb2wgaXNfaW50ZXJuYWwpOworCiBleHRlcm4gdm9pZCBS ZWxhdGlvbkNsZWFyTWlzc2luZyhSZWxhdGlvbiByZWwpOwogCiBleHRlcm4gdm9pZCBTdG9y ZUF0dHJNaXNzaW5nVmFsKFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0sCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZGQwMGFiNDIwYi4uMjMwYTQyYjk2NiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTUzLDE0ICs5NTMsMjcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4g bG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUGFydGl0aW9uUmFuZ2VEYXR1bTsK IAorLyoKKyAqIFBhcnRpdGlvbkRlc2MgLSBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24g Zm9yIEFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKi8KK3R5cGVkZWYg c3RydWN0IFNpbmdsZVBhcnRpdGlvblNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJUmFu Z2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlvbkJv dW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBTaW5n bGVQYXJ0aXRpb25TcGVjOworCiAvKgogICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxU RVIgVEFCTEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKICAqLwog dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5n ZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gg Ki8KKwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFj aC9kZXRhY2gvbWVyZ2UgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1Ig VkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qg b2YgcGFydGl0aW9ucywgZm9yIE1FUkdFL1NQTElUCisJCQkJCQkJCSAqIFBBUlRJVElPTiBj b21tYW5kICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0y NDczLDYgKzI0ODYsNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRh Y2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRp dGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmlu YWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9NZXJnZVBhcnRp dGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJCQkv KiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50aXR5 IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1AgSURFTlRJ VFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBhNGFmM2Y3MTdhLi45MGU4Y2RkZjhiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcsNiArMzM3LDcgQEAgUEdfS0VZV09SRCgicGFy YW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhcnRpdGlvbnMi LCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o CmluZGV4IDY1ZjE2MWY3MTguLjY5MGQyNTk2MTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRp dGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVy biBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRp bmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVy biB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBh cmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCQkJCUxpc3Qg KnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJ CQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlRC T1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3Bh cnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0 aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45 ODQ0NmFhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVj dGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAsMCArMSwxOTkgQEAKK1BhcnNlZCB0ZXN0 IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJp IHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsK K3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIg VEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIw KSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFU RSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAg ICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAg IAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUg cm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFicnIgczFt ZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE Oworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRw YXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBC RUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdo ZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6 IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1Qg KiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0 MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAg IAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVS R0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAw XzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9 ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBD T01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0t LS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9k aWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFj IHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxF IFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6 IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFy dF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1 OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0Owor IGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4 dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAg ICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMyaSBzMmMg czFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8g dHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFt ZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwg dHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVw IHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1 fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQz NSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkg czJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lO IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElO VE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1l cmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0 cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8 dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1 ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMy YyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNP TEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjog QkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9O UyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBz MmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2Rp Zicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVw IHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNF TEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1 fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQy NSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitz dGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUg UkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05T ICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMy YjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlm JyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8 dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1 ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3Rl cCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6 IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsK K3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFy dF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVH SU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVy ZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICog RlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1 ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAK KzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29s YXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bl9zY2hlZHVsZQppbmRleCBlM2M2NjlhMjljLi4wZGNhNjg0OTU1IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lz b2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEwNyw2ICsxMDcsNyBAQCB0ZXN0OiBw YXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0 ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0 ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6 IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNw ZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGMyYjlkMzQ0NQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uu c3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0IE1FUkdFIG9wZXJhdGlvbiBs b2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3NldHVwCit7 CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUgdHBhcnQo aSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUgVEFCTEUg dHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFydCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMjBf MzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7Cisg IENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBERUZBVUxU OworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0cGFydDsK K30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJycgl7IEJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7IEJF R0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFtZXJnCXsgQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEw XzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nl c3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMydQl7IFVQREFURSB0cGFydCBT RVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJjCXsgQ09NTUlU OyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMyIGluc2Vy dHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBNRVJHRSBQQVJUSVRJT05TIHRoZW4KKyMg czIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRlZCByb3cgYW5kIHdhaXRzIHVudGlsIHMx IGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczJiIHMyaSBz MmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJp IHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJi IHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRhdGlv biBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0 YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycwor cGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMg czJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFj IHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDE5MzY2OWYyYmMuLjdkZTVk ZGI4NzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90 ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5IEBAIGdldF9hbHRlcnRh YmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFy dGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBG SU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJ CQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOworCQkJCWJyZWFrOwogCQkJY2FzZSBB VF9BZGRJZGVudGl0eToKIAkJCQlzdHJ0eXBlID0gIkFERCBJREVOVElUWSI7CiAJCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9t ZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTI0ODc0Nzk4ZAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X21lcmdlLm91dApAQCAtMCwwICsxLDEwMDMgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdF CistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIg Y29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitD UkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0Ug cGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19k ZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIx LTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25f aWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJS T1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVz ZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2Zl YjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21h cl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIw MjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6 ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKKy0tIEVSUk9SOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBi b3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCistLSAoc3BhY2Ug YmV0d2VlbiBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwg c2FsZXNfbWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsKK0VSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBl ciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCistLSBFUlJP UjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgY29uZmxpY3Rz IHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIx IgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf amFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNf ZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2phbjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20g cGFydGl0aW9ucyBvcmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hf cGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJs aWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmVi MjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmVi X21hcjIwMjI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQs IGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICAgICAgICAgICAg ICAgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hw ZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIu c2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxl c19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8g KCcwNS0wMS0yMDIyJykKKyBzYWxlc19kZWMyMDIxICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZS T00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19vdGhlcnMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBERUZBVUxUCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor LS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFy dGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQg SU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxl c19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2Fs ZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwg ICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAn KSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdE ZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUw LCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0w OCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAg J011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAz NTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0 LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEz LCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAg IDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtl eWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSQU5HRSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKwor LS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRh bG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9p ZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xh c3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0OworICAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGlu ZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXBy MjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgn MDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicp IFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEt MjAyMicpCisgc2FsZXNfbWFyMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2Fs ZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUg cm93cykKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBzaG93IHBhcnRp dGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxp ZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBC WSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVG QVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7Cisg ICAgICAgICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGtp bmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwNS0w MS0yMDIyJykKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcw MS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUg dGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAn cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKKyAgICAgICAgc2NoZW1hbmFtZSAgICAgICAg fCAgICAgICB0YWJsZW5hbWUgICAgICAgfCAgICAgICAgICAgICAgaW5kZXhuYW1lICAgICAg ICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIg fCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwg Q1JFQVRFIElOREVYIHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jhbmdl OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAg ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIK KyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAw Mi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAg ICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAg ICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAg IDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAg ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5 LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwg ICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAg ICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFy X2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisg ICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0y MDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygxMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTQgfCBT bWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQor CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNh bGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg ICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2ly b3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAg ICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0w OC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDUg fCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAg ICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIw MjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAg fCAwNC0zMC0yMDIyCisoMTAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRv IERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRF IElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5H IGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUwor ICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJu b2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAn MjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyks CisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9p cm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwg ICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMn KSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdI YWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgw LCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0x OScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwg J1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMg KGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNh bWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMK KyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CitzZWxlY3QgKiBmcm9tIHNh bGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBN YXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAg ICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAg ICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcg cm93cykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5n LCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBX SEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3Jhbmdl Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBh cnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz czo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0 YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg c2FsZXNfYXByMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAy MiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDIt MDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0 aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRo IERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQs IHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFM V0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8 IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNf ZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hB UigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEs IDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIw MjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxl c19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhW QUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9u YW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdN YW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwg NCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIs IDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAy MDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJP TSBzYWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNf bW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAg MSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg MSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAg MSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIg fCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFy dG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwg c2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIg fCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIw MjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFu X2ZlYjIwMjI7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIx JywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNU ICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIu MDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEg fCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEu MDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAg ICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEu MTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBz YWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8 IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2phbl9mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFy IHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0 bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIu MDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIu MDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoNiByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNf ZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8 IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFy dGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3Bl cnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBG T1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUg VkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBn c3FsJyBBUyAkQk9EWSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxl ZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09Q LCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsK K0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJp Z2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVB Q0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNw ZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9p bnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3Vs ZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9U SUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdo ZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmly ZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5 LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFj dGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNw ZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOwor LS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6 ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9 IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2Fs bGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQK Ky0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihz YWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2 ZWwgPSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAy MCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9Q IFRBQkxFIHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIoKTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBj b2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElO VCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUw MV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoK K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3Bl cnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkp OworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZ IEtFWSwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2 YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEs ICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMx LCBub3coKSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1Ag Q09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBk MjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxl IEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIw KSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBz YWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5 JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVv cGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNw ZW9wbGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAor ICAgICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAg ICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAg ICAgICAgIDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3Bs ZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QK KygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8 IE1heQorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBv cG92CisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNh bGVzcGVvcGxlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQt MTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjIt MDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIw MjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVf aWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAx LTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAg ICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3 NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIy CisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAg ICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQt MDYtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjJfMDFfMTA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBf MjA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKygxIHJvdykKKworU0VMRUNU ICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2Fs ZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworU0VMRUNUICogRlJPTSBz YWxlc19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBN YXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAg ICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTEx LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAg ICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAy MgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8 IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgor ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAg ICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBM SVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9y IEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhz YWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAor IHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJ U1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywg J0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxl c19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNp bmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdDIgREVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxl c19saXN0KTsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUp KTsKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICAic2Fs ZXNfZXh0ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlvbgorLS0gRVJST1I6ICAic2FsZXNfZXh0 ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwy KSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEg cGFydGl0aW9uCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEg cGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNf ZWFzdCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIg aXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorRFJPUCBUQUJM RSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBU QUJMRSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0 OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFU RUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks Cisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxl c19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRF IElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBV U0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlz dF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsK K0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf Y2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRl KSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIy LTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAy Mi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIw MjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcy MDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAn MjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwg JzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAs ICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUw LCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIw MCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdPc2xvJywgICAgICAgICAgICA4 MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAg NjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAg IDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAg ICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAg ICAgOTUwLCAnMjAyMi0wMy0wNScpOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0 aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBp bmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdf aW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50 ID0gJ3NhbGVzX2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8IHJl bGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf ZXhwciAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2NlbnRyYWwgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KQorIHNhbGVzX2Vhc3QgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKQorIHNhbGVzX25v cmQgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdP c2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJykKKyBzYWxlc193ZXN0ICAgIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcpCisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19j ZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRp dGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwg aW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBn X2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVu dCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICBvaWQgICAgICB8IHJl bGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgICB8IHIgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnLCAnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpCisgc2FsZXNfbm9yZCAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxz aW5raScpCisgc2FsZXNfb3RoZXJzIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBE RUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAg ICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAg ICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAg ICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyAgICAg ICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAg ICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAg ICAgfCBWbGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg ICAgfCBCZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAg ICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAg ICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAg ICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAg ICAgICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAg ICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAg ICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKygxNCBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAz LTA1LTIwMjIKKyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5r aSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgICAgOSB8 IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAz LTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAg ICAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfYWxsOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwg TmV3IFlvcmsgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgfCAgICAgICAgICAyNTAgfCAw My0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlk ICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgMTQgfCBQ bGF0byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0y MDIyCisgICAgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAg fCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgIDggfCBMaSAgICAg ICAgICAgICAgIHwgVmxhZGl2b3N0b2sgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAg ICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgQmVybGluICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAg ICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwg V2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMTAgcm93cykKKwor LS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFy dGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxl c19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAy MgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwg ICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0 LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAg ICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1 MCB8IDAzLTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9Q IFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2Yg YW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBp bnQsIGMgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQx cDEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOwor Q1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQp OworQ1JFQVRFIFRBQkxFIHQycGEgUEFSVElUSU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAo J0EnKSBUTyAoJ0MnKTsKK0NSRUFURSBUQUJMRSB0MyAoaSBpbnQsIHQgdGV4dCk7CistLSBF UlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24g InQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5U TyB0MnA7CitFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2Yg cmVsYXRpb24gInQyIgorLS0gRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbgorQUxU RVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworRVJS T1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbgorRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFC TEUgdDI7CitEUk9QIFRBQkxFIHQxOworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25z IG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1QIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK K1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hF UkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MK KyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxv Zy50ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVy c2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8IHQK KyB0cF8xXzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3MpCisK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8yOworLS0gUGFydGl0aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0g aS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZ IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZB VUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAg b2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAor LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t CisgdHBfMF8yIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cpCisK K0RST1AgVEFCTEUgdDsKKy0tCistLSBDaGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUg aWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1l cmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBL RVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NS RUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKy0tIEluZGV4bmFtZSB2YWx1ZXMg c2hvdWxkIGJlICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorLS0gTm90LW51 bGwgY29uc3RyYWludCBuYW1lIHNob3VsZCBiZSAndHBfMV8yX2lfbm90X251bGwnLgorXGQr IHRwXzFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19t ZXJnZV9zY2hlbWEudHBfMV8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChpIElTIE5PVCBOVUxMKSBBTkQgKGkgPj0g MCkgQU5EIChpIDwgMikpCitJbmRleGVzOgorICAgICJ0cF8xXzJfcGtleSIgUFJJTUFSWSBL RVksIGJ0cmVlIChpKQorICAgICJ0cF8xXzJfaV9pZHgiIGJ0cmVlIChpKQorTm90LW51bGwg Y29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0 ZWQpCisKK0RST1AgVEFCTEUgdDsKKy0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQg dGVtcG9yYXJ5IHBhcnRpdGlvbnMuCistLQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBf MV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNU IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKyBvaWQg fCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgfCBwCiso MSByb3cpCisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNl CisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRz IGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6 cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRi b3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6 cGdfY2F0YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAg IHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSB8IHAKKyB0cF8xXzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHAKKygy IHJvd3MpCisKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMg aW50byBhIHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3Jl YXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVs YXRpb24gInQiCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0 ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3Jl YXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVs YXRpb24gInQiCitEUk9QIFRBQkxFIHQ7CitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQkVHSU47CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK K1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBG Uk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7 Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAg IHwgdAorKDEgcm93KQorCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJz aXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19p bmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQg PSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIg ICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSkgfCB0CisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikg fCB0CisoMiByb3dzKQorCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSwgcGdfdGVtcCwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgdGVtcG9yYXJ5IHBhcnRp dGlvbnMgaW50byBhIHBlcnNpc3RlbnQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JPTExCQUNLOwor LS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFj ZQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK K0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NF TEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFi bGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25z X21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworIHRh YmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgcmVn cmVzc190YmxzcGFjZQorKDIgcm93cykKKworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1l LCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0 JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h JworICBPUkRFUiBCWSB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKKyB0YWJs ZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAg ICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5IHwgcmVn cmVzc190YmxzcGFjZQorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhl IG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAor U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NS RUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhB TkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JF QVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitG Uk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUg Yy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZ IGMucmVsbmFtZTsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlvbnNfbWVy Z2VfaGVhcAorIHRwXzBfMiAgfCBwYXJ0aXRpb25zX21lcmdlX2hlYXAKKygyIHJvd3MpCisK K0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hl YXA7CistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3du IHRoZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0 byBkbyB0aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9h bGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5U IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUg VEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyB0cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93 bmVyIG9mIHRhYmxlIHRwXzBfMQorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxU RVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9i OworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMV8yCitSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBB UlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTjsKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxp Y2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9N IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CistLSBUZXN0OiB3ZSBjYW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGlmZmVyZW50 IG93bmVycworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOwor Q1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25z X21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFC TEUgdHBfMF8xKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0NS RUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQUxU RVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25z X21lcmdlX2FsaWNlJzoKK1xkdCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAg fCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUg fCByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2UKKygxIHJvdykKKworLS0gT3duZXIg aXMgJ3JlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2InOgorXGR0IHRwXzFfMgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1h ICAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgIE93bmVyICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwg dHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iCisoMSByb3cp CisKKy0tIEVSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQg b3duZXJzCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8y KSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBk aWZmZXJlbnQgb3duZXJzCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9h bGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZS T00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21l cmdlX2JvYjsKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAx IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIg MCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNo LXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworRVJST1I6ICBwYXJ0aXRpb24g b2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCistLSBFUlJPUjog IGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0 ZW1zCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CitF UlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3Qg dHdvIGl0ZW1zCitEUk9QIFRBQkxFIHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tCitEUk9Q IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IGE0MjRiZTJhNmIuLjY0NjRhMjM4YWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3Fs IGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAj IFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcg c3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10 ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3Bh cnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNv cnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0 ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJl bG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0 aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBw cmVkaWNhdGUgbnVtYQogCiAjIGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0g YW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5z IERETApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdl LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYzUzYWM1YTE5OQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKQEAg LTAsMCArMSw2NjIgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3Ig IkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKwor Q1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmlu ZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykg VE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6 ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIw MjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9h cHIyMDIyOworLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIy MDIyOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAi c2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIw MjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2ph bl9tYXIyMDIyOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2phbjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRp dGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVz X2RlYzIwMjEgYW5kIHNhbGVzX2phbjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBzYWxlc19m ZWIyMDIyKSBJTlRPIHNhbGVzX2RlY19qYW5fZmViMjAyMjsKKworLS0gTk8gRVJST1I6IHRl c3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3Qg aW4gdGhlIHNlYXJjaF9wYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LnNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYS5zYWxlc19mZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19t YXIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRP IHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdj bGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVs aWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIg QlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RF RkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0Owor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0 aXRpb25lZCB0YWJsZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9O IHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycs ICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOwor CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpy ZWdjbGFzcyk7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxF Q1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVu ZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisg IEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkK KyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19y YW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBu YW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIy MDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIw MjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywg cGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hF UkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6 OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6 OnBnX2NhdGFsb2cudGV4dDsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRh YmxlbmFtZSA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMic7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyczsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVz CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRl ID4gJzIwMjItMDEtMDEnOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERF RkFVTFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElO REVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwK KyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCistLSBNZXJnZSBwYXJ0aXRpb25z IChpbmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBpbnRvIHBhcnRpdGlvbiB3aXRoIHRoZSBz YW1lCistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T CisgIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYS5zYWxlc19vdGhlcnMpIElOVE8gc2FsZXNfb3RoZXJzOworCitzZWxlY3QgKiBmcm9t IHNhbGVzX290aGVyczsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoK K1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRh Y2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJp dHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3Nh bGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7 CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxU IHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19k YXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMK KyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNh bGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4 dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERF RkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFCTEUgc2FsZXNf ZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEs IDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRP ICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwg TUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFn ZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAo J01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwK KyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwg MSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIs IDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCAqIEZST00g c2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZS T00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVD VCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19q YW5fZmViMjAyMjsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1l LCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5h Z2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKwor U0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXI7CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKworLS0KKy0tIFRlc3Q6IG1l cmdlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0K K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBL RVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUy MF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8g KDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxl c3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBM QU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJp Z2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19B UkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitF TkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2Vy dF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVv cGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCitDUkVBVEUgVFJJR0dF UiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNF UlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUg UFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKwor LS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworLS0gMSB0cmlnZ2Vy IHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIw IFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2Fs ZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworCistLSAyIHRyaWdnZXJz IHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQg ZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMg KDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7CitTRUxF Q1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7 CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0g VGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNw ZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04g T0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRl IHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJ TUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJ TlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlMTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9w b3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENPTFVNTiBkMTsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzAp OworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAg KDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMw XzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9w bGU7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7CitzZWxlY3QgKiBmcm9tIHNh bGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CisKKy0tCistLSBU ZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CisKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19y YW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwK KyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp LAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMl8xMF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsKKwor QUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIy MDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJ TlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlv bmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBw YXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29u X2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1v dW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNf c3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2kn KTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVz X2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qy IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIg REVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNf bGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7 CisKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICAi c2FsZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNf ZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVz X25vcmQyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitB TFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNh bGVzX25vcmQyLCBzYWxlc19lYXN0KSBJTlRPIHNhbGVzX2FsbDsKKworRFJPUCBUQUJMRSBz YWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJM RSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6 IEJZIExJU1QgcGFydGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRF RCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwK KyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVz X2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFU RSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3Qg VVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xp c3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0 YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2kn KTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xp c3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwg JzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAs ICcyMDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAw LCAnMjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1 MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAy NTAsICcyMDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAx MDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAg MTIwMCwgJzIwMjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAg IDExNTAsICcyMDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAg ICAxMjAwLCAnMjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ09zbG8nLCAgICAgICAg ICAgIDgwMCwgJzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAg ICAgICA2NTAsICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAg ICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAg ICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAg ICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRo IGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVs a2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBh cnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRh bG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmlu aHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3Qs IHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworCistLSBzaG93IHBhcnRpdGlvbnMg d2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBj LnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdf Y2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQg aS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworU0VMRUNU ICogRlJPTSBzYWxlc19saXN0OworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworU0VMRUNU ICogRlJPTSBzYWxlc19hbGw7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5k ZXhlcyBhZnRlciBtZXJnaW5nIHBhcnRpdGlvbnMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9G RjsKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fy c2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdX YXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25h bWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3Ro ZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBj IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBB UlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFU RSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NS RUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykg VE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworCistLSBFUlJP UjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQy IgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0 MnA7CistLSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0 MiBNRVJHRSBQQVJUSVRJT05TICh0MnBhLCB0MykgSU5UTyB0MnA7CisKK0RST1AgVEFCTEUg dDM7CitEUk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworLS0KKy0tIFRyeSB0byBN RVJHRSBwYXJ0aXRpb25zIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRB QkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsK K0NSRUFURSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVy c2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdf aW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50 ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworCistLSBQYXJ0aXRpb24gc2hv dWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywg cGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBl cnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBn X2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVu dCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHQ7CisKKy0tCistLSBD aGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlz IHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NS RUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitDUkVBVEUgSU5ERVggdGlkeCBPTiB0 KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkg SU5UTyB0cF8xXzI7CisKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJf cGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorLS0gTm90LW51bGwgY29uc3RyYWludCBuYW1l IHNob3VsZCBiZSAndHBfMV8yX2lfbm90X251bGwnLgorXGQrIHRwXzFfMgorCitEUk9QIFRB QkxFIHQ7CisKKy0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5IHBh cnRpdGlvbnMuCistLQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hl bWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcs IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFVCBz ZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7 CisKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9y YXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFy dGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0RS T1AgVEFCTEUgdDsKKworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworQkVHSU47CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VMRUNU IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKK1NFTEVD VCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVt cCwgcHVibGljOworCistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRv IGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CisKKy0tIENoZWNr IHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlc3BhY2UKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUg VEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgdGFi bGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJ TiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9z Y2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKK1NFTEVDVCB0YWJs ZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUg dGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRp b25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRh Ymxlc3BhY2U7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9u IGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgQUNDRVNTIE1F VEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFi bGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpIFVTSU5HIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8w XzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUg VEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzI7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBj IEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6 OnJlZ2NsYXNzLCAndHBfMF8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CitE Uk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFw OworCistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3du IHRoZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0 byBkbyB0aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9h bGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5U IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFU RSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJM RSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitD UkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitB TFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRw XzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRB QkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0cF8xXzIgT1dO RVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKKworCistLSBUZXN0OiB3ZSBjYW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdp dGggZGlmZmVyZW50IG93bmVycworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21l cmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVz c19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7 CitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25zX21l cmdlX2JvYjsKK0NSRUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJ T04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCistLSBPd25lciBpcyAn cmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlJzoKK1xkdCB0cF8wXzEKKy0tIE93bmVy IGlzICdyZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iJzoKK1xkdCB0cF8xXzIKKworLS0g RVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8yOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsK K1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVn cmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlv bnNfbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2Jv YjsKKworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFC TEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDAp OworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1P RFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNo LXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworCistLSBFUlJPUjogIGxpc3Qg b2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CisKK0RST1Ag VEFCTEUgdDsKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTgzNDZjZGE2My4uMjAz ODYwM2MwOCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI3NjAsNiArMjc2 MCw3IEBAIFNpbXBsZVN0YXRzCiBTaW1wbGVTdHJpbmdMaXN0CiBTaW1wbGVTdHJpbmdMaXN0 Q2VsbAogU2luZ2xlQm91bmRTb3J0SXRlbQorU2luZ2xlUGFydGl0aW9uU3BlYwogU2l6ZQog U2tpcFBhZ2VzCiBTa2lwU3VwcG9ydAotLSAKMi40MC4xLndpbmRvd3MuMQoK --------------RnP9P61yxRX2bFOuVDWtLN8L Content-Type: text/plain; charset=UTF-8; name="v41-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v41-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxYzFhMzdhMjY4MDE5NzM5NjgyZGZmMzNjYzg2ZmE0N2E1YTYxNDU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDEgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU 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 L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MTkgKysrKwogc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICA1OSArLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDY4OSAr KysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAg fCAgIDE4ICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAg ICB8ICAgMTAgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgICB8ICAgIDMgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu aCAgICAgICAgIHwgICAgNSArCiBzcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAg ICAgICAgICAgICAgfCAgICAyICsKIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9u LXNwbGl0Lm91dCAgICB8ICAxOTAgKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Bh cnRpdGlvbi1zcGxpdC5zcGVjIHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDE3ODEgKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAgICB8IDExMDYgKysr KysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAg IHwgICAgMSArCiAyMCBmaWxlcyBjaGFuZ2VkLCA0NDY3IGluc2VydGlvbnMoKyksIDE4IGRl 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 bWRzLmMKaW5kZXggNTU3OWIwY2UwMS4uMjg2MWI4ZDc0MiAxMDA2NDQKLS0tIGEvc3JjL2Jh 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 CWNhc2UgQVRfQWRkSWRlbnRpdHk6CkBAIC0yMjA3MCw2ICsyMjA5MiwyNTcgQEAgR2V0QXR0 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 dGFibGUKICAqIChtb2RlbFJlbCkKQEAgLTIyMzc4LDYgKzIyNjUxLDE1MiBAQCBjcmVhdGVQ YXJ0aXRpb25UYWJsZShSYW5nZVZhciAqbmV3UGFydE5hbWUsIFJlbGF0aW9uIG1vZGVsUmVs LCBPaWQgb3duZXJJZCkKIAlyZXR1cm4gbmV3UmVsOwogfQogCisvKgorICogQUxURVIgVEFC TEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IElOVE8gPHBhcnRp dGlvbi1saXN0PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJ CSBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0 KQoreworCVJlbGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNwbGl0UmVsT2lkOworCWNoYXIJ CXJlbG5hbWVbTkFNRURBVEFMRU5dOworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAq bGlzdHB0cjI7CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCWNoYXIJCXRtcFJlbE5h bWVbTkFNRURBVEFMRU5dOworCUxpc3QJICAgKm5ld1BhcnRSZWxzID0gTklMOworCU9iamVj dEFkZHJlc3Mgb2JqZWN0OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCU9pZAkJCXNhdmVf dXNlcmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2 ZWw7CisKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNj KFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKKworCS8qCisJICogV2Ug YXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFydGl0aW9uOiBuZWVkIHRv IHVzZSBleGNsdXNpdmUKKwkgKiBsb2NrIGZvciBwcmV2ZW50aW5nIERNTC1xdWVyaWVzIHRv IHRoZSBwYXJ0aXRpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJsZV9vcGVucnYoY21kLT5u YW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCXNwbGl0UmVsT2lkID0gUmVsYXRpb25H ZXRSZWxpZChzcGxpdFJlbCk7CisKKwkvKiBDaGVjayBkZXNjcmlwdGlvbnMgb2YgbmV3IHBh cnRpdGlvbnMuICovCisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJ T2lkCQkJZXhpc3RpbmdSZWxpZDsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNp bmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCXN0cmxjcHkocmVs bmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFUQUxFTik7CisKKwkJLyoKKwkJICog TG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9uIG5hbWUsIGNoZWNr IHdlIGhhdmUKKwkJICogcGVybWlzc2lvbiB0byBjcmVhdGUgdGhlcmUsIGxvY2sgaXQgYWdh aW5zdCBjb25jdXJyZW50IGRyb3AsIGFuZCBtYXJrCisJCSAqIHN0bXQtPnJlbGF0aW9uIGFz IFJFTFBFUlNJU1RFTkNFX1RFTVAgaWYgYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGlzCisJCSAq IHNlbGVjdGVkLgorCQkgKi8KKwkJc3BzLT5uYW1lLT5yZWxwZXJzaXN0ZW5jZSA9IHJlbC0+ cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKKwkJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9u TmFtZXNwYWNlKHNwcy0+bmFtZSwgTm9Mb2NrLCAmZXhpc3RpbmdSZWxpZCk7CisKKwkJLyoK KwkJICogVGhpcyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSBpZiB0aGUgcmVsYXRpb24g YWxyZWFkeSBleGlzdHMuIEJ1dAorCQkgKiBieSBjYXRjaGluZyBpdCBoZXJlIHdlIGNhbiBl bWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkJICovCisJCWlmIChleGlzdGluZ1JlbGlk ID09IHNwbGl0UmVsT2lkICYmICFpc1NhbWVOYW1lKQorCQkJLyogT25lIG5ldyBwYXJ0aXRp b24gY2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24uICovCisJCQlp c1NhbWVOYW1lID0gdHJ1ZTsKKwkJZWxzZSBpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlk KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVf VEFCTEUpLAorCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIs IHJlbG5hbWUpKTsKKwl9CisKKwkvKiBEZXRhY2ggc3BsaXQgcGFydGl0aW9uLiAqLworCVJl bW92ZUluaGVyaXRhbmNlKHNwbGl0UmVsLCByZWwsIGZhbHNlKTsKKwkvKiBEbyB0aGUgZmlu YWwgcGFydCBvZiBkZXRhY2hpbmcuICovCisJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVs LCBzcGxpdFJlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKworCS8qCisJICogSWYgbmV3 IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24gdGhlbiB3 ZSBzaG91bGQKKwkgKiByZW5hbWUgc3BsaXQgcGFydGl0aW9uIGZvciByZXVzaW5nIG5hbWUu CisJICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAg dGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUK KwkJICogdmlzaWJsZSBmb3IgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCQkvKiBSZW5hbWUgcGFydGl0aW9uLiAqLworCQlzcHJpbnRmKHRtcFJl bE5hbWUsICJzcGxpdC0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJv Y1BpZCk7CisJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoc3BsaXRSZWxPaWQsIHRtcFJlbE5h bWUsIGZhbHNlLCBmYWxzZSk7CisKKwkJLyoKKwkJICogV2UgbXVzdCBidW1wIHRoZSBjb21t YW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxlCisJCSAqIHZp c2libGUgYWZ0ZXIgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCX0KKworCS8qIENyZWF0ZSBuZXcgcGFydGl0aW9ucyAobGlrZSBzcGxpdCBwYXJ0 aXRpb24pLCB3aXRob3V0IGluZGV4ZXMuICovCisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBh cnRsaXN0KQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRp dGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsOwor CisJCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZShzcHMtPm5hbWUsIHJlbCwK KwkJCQkJCQkJCQkgIHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyKTsKKwkJbmV3UGFydFJl bHMgPSBsYXBwZW5kKG5ld1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwl9CisKKwkvKgorCSAq IFN3aXRjaCB0byB0aGUgdGFibGUgb3duZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4 IGZ1bmN0aW9ucyBhcmUgcnVuCisJICogYXMgdGhhdCB1c2VyLiAgQWxzbyBsb2NrIGRvd24g c2VjdXJpdHktcmVzdHJpY3RlZCBvcGVyYXRpb25zIGFuZAorCSAqIGFycmFuZ2UgdG8gbWFr ZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0byB0aGlzIGNvbW1hbmQuCisJICoKKwkg KiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRldGVybWluZSBuYW1lc3BhY2UgaW4gY3JlYXRlUGFy dGl0aW9uVGFibGUgY2FsbC4KKwkgKi8KKwlHZXRVc2VySWRBbmRTZWNDb250ZXh0KCZzYXZl X3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQo c3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIsCisJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0 IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVzdGxldmVsID0g TmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisKKwkvKiBDb3B5 IGRhdGEgZnJvbSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbnMuICovCisJbW92 ZVNwbGl0VGFibGVSb3dzKHJlbCwgc3BsaXRSZWwsIGNtZC0+cGFydGxpc3QsIG5ld1BhcnRS ZWxzLCBkZWZhdWx0UGFydE9pZCk7CisJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQu ICovCisJdGFibGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9jayk7CisKKwkvKiBBdHRhY2ggbmV3 IHBhcnRpdGlvbnMgdG8gcGFydGl0aW9uZWQgdGFibGUuICovCisJZm9yYm90aChsaXN0cHRy LCBjbWQtPnBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQ YXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlz dHB0cik7CisJCVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsaXN0 cHRyMik7CisKKwkJLyoKKwkJICogd3F1ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9uIGZvciBl YWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdAorCQkgKiBuZWVkZWQuCisJCSAqLworCQlh dHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIHNwcy0+Ym91bmQp OworCQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwkJdGFibGVfY2xvc2Uo bmV3UGFydFJlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKiBEcm9wIHNwbGl0IHBhcnRpdGlvbi4g Ki8KKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2Jq ZWN0SWQgPSBzcGxpdFJlbE9pZDsKKwlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCS8qIFBy b2JhYmx5IERST1BfQ0FTQ0FERSBpcyBub3QgbmVlZGVkLiAqLworCXBlcmZvcm1EZWxldGlv bigmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKKworCS8qIFJvbGwgYmFjayBhbnkgR1VD IGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCisJQXRFT1hhY3RfR1VD KGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkvKiBSZXN0b3JlIHVzZXJpZCBhbmQgc2Vj dXJpdHkgY29udGV4dCAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQs IHNhdmVfc2VjX2NvbnRleHQpOworfQorCiAvKgogICogbW92ZU1lcmdlZFRhYmxlc1Jvd3M6 IHNjYW4gcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCkK ICAqIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSAocmVsKSBhbmQgbW92ZSByb3dzIGludG8g dGhlIG5ldyBwYXJ0aXRpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDQ3ODIzZWY3YTUuLjc1MGY1 MzFiODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjU4LDYgKzI1OCw3IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAJUGFydGl0aW9uRWxlbSAqcGFydGVsZW07CiAJUGFydGl0aW9u U3BlYyAqcGFydHNwZWM7CiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmRzcGVjOwor CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNpbmdsZXBhcnRzcGVjOwogCVJvbGVTcGVjICAgKnJv bGVzcGVjOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVibGljYXRpb25vYmplY3RzcGVjOwog CXN0cnVjdCBTZWxlY3RMaW1pdCAqc2VsZWN0bGltaXQ7CkBAIC02NDEsNiArNjQyLDggQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVt CiAldHlwZSA8bGlzdD4JCXBhcnRfcGFyYW1zCiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFy dGl0aW9uQm91bmRTcGVjCisldHlwZSA8c2luZ2xlcGFydHNwZWM+CVNpbmdsZVBhcnRpdGlv blNwZWMKKyV0eXBlIDxsaXN0PgkJcGFydGl0aW9uc19saXN0CiAldHlwZSA8bGlzdD4JCWhh c2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQogCkBA IC03NzEsNyArNzc0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlTQVZFUE9J TlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJ VFkgU0VMRUNUCiAJU0VRVUVOQ0UgU0VRVUVOQ0VTCiAJU0VSSUFMSVpBQkxFIFNFUlZFUiBT RVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRPRiBTSEFSRSBTSE9XCi0JU0lNSUxB UiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNPVVJDRSBTUUxfUCBTVEFC TEUgU1RBTkRBTE9ORV9QCisJU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hP VCBTT01FIFNQTElUIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCiAJU1RBUlQg U1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklD VF9QIFNUUklOR19QIFNUUklQX1AKIAlTVUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNVUFBPUlQg U1lNTUVUUklDIFNZU0lEIFNZU1RFTV9QIFNZU1RFTV9VU0VSCiAKQEAgLTIzMjIsNiArMjMy NSwyMyBAQCBhbHRlcl90YWJsZV9jbWRzOgogCQkJfCBhbHRlcl90YWJsZV9jbWRzICcsJyBh bHRlcl90YWJsZV9jbWQJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK3BhcnRp dGlvbnNfbGlzdDoKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMJCQkJCQkJeyAkJCA9IGxpc3Rf bWFrZTEoJDEpOyB9CisJCQl8IHBhcnRpdGlvbnNfbGlzdCAnLCcgU2luZ2xlUGFydGl0aW9u U3BlYwl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworU2luZ2xlUGFydGl0aW9u U3BlYzoKKwkJCVBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBQYXJ0aXRpb25Cb3VuZFNwZWMK KwkJCQl7CisJCQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKm4gPSBtYWtlTm9kZShTaW5nbGVQ YXJ0aXRpb25TcGVjKTsKKworCQkJCQluLT5uYW1lID0gJDI7CisJCQkJCW4tPmJvdW5kID0g JDM7CisKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJOworCiBwYXJ0aXRpb25fY21kOgogCQkJ LyogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHRhYmxlX25hbWU+IEZP UiBWQUxVRVMgKi8KIAkJCUFUVEFDSCBQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0 aW9uQm91bmRTcGVjCkBAIC0yMzY2LDYgKzIzODYsMjAgQEAgcGFydGl0aW9uX2NtZDoKIAkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJ fQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9u X25hbWU+IElOVE8gKCkgKi8KKwkJCXwgU1BMSVQgUEFSVElUSU9OIHF1YWxpZmllZF9uYW1l IElOVE8gJygnIHBhcnRpdGlvbnNfbGlzdCAnKScKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVD bWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpj bWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9T cGxpdFBhcnRpdGlvbjsKKwkJCQkJY21kLT5uYW1lID0gJDM7CisJCQkJCWNtZC0+Ym91bmQg PSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDY7CisJCQkJCWNtZC0+Y29uY3VycmVu dCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5v ZGUgKikgbjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElU SU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KIAkJCXwgTUVSR0UgUEFSVElUSU9O UyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQogCQkJ CXsKQEAgLTE3OTk2LDYgKzE4MDMwLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBT S0lQCiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPVVJDRQorCQkJfCBTUExJVAogCQkJfCBTUUxf UAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCkBAIC0xODYzNiw2ICsxODY3MSw3 IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgU05BUFNIT1QKIAkJCXwgU09NRQogCQkJ fCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNU QU5EQUxPTkVfUApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggMGQzYWIz NWE1Ny4uNTEwZjg1NGRlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBA IC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29uc3RyYWludEF0dHJz KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgTGlzdCAqY29uc3RyYWludExp c3QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29sdW1uVHlwZShDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbik7CiBzdGF0aWMgdm9pZCBzZXRTY2hlbWFOYW1l KGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSk7 Ci1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgUGFydGl0aW9uQ21kICpjbWQpOworc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0 aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91 bmQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybVBhcnRpdGlvblJhbmdlQm91bmRzKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QsCiAJCQkJCQkJCQkJICAgUmVsYXRpb24gcGFy ZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlSW5maW5pdGVCb3VuZHMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpibGlzdCk7CkBAIC0zNTI5LDYgKzM1MjksNDAgQEAgY2hlY2tQYXJ0 aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKIAlyZWxhdGlvbl9jbG9zZShw YXJ0UmVsLCBBY2Nlc3NTaGFyZUxvY2spOwogfQogCisvKgorICogdHJhbnNmb3JtUGFydGl0 aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+ Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqIERv ZXMgY2hlY2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0YXRpYyB2 b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0 LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisK KwkvKiBUcmFuc2Zvcm0gcGFydGl0aW9uIGJvdW5kcyBmb3IgYWxsIHBhcnRpdGlvbnMgaW4g dGhlIGxpc3Q6ICovCisJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7 CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICop IGxmaXJzdChsaXN0cHRyKTsKKworCQljeHQtPnBhcnRib3VuZCA9IE5VTEw7CisJCXRyYW5z Zm9ybVBhcnRpdGlvbkNtZChjeHQsIHNwcy0+Ym91bmQpOworCQkvKiBBc3NpZ24gdHJhbnNm b3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZC4gKi8KKwkJc3BzLT5ib3VuZCA9 IGN4dC0+cGFydGJvdW5kOworCX0KKworCXNwbGl0UGFydE9pZCA9IFJhbmdlVmFyR2V0UmVs aWQocGFydGNtZC0+bmFtZSwgQWNjZXNzU2hhcmVMb2NrLCBmYWxzZSk7CisKKwljaGVja1Bh cnRpdGlvbihwYXJlbnQsIHNwbGl0UGFydE9pZCk7CisKKwkvKiBUaGVuIHdlIHNob3VsZCBj aGVjayBwYXJ0aXRpb25zIHdpdGggdHJhbnNmb3JtZWQgYm91bmRzLiAqLworCWNoZWNrX3Bh cnRpdGlvbnNfZm9yX3NwbGl0KHBhcmVudCwgc3BsaXRQYXJ0T2lkLCBwYXJ0Y21kLT5uYW1l LCBwYXJ0Y21kLT5wYXJ0bGlzdCwgY3h0LT5wc3RhdGUpOworfQorCisKIC8qCiAgKiB0cmFu c2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZQogICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIGNvbW1hbmQKQEAgLTM4NzMsNyArMzkwNyw3IEBAIHRy YW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQs CiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICop IGNtZC0+ZGVmOwogCi0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21k KTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQtPmJvdW5kKTsK IAkJCQkJLyogYXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91 bmQgKi8KIAkJCQkJcGFydGNtZC0+Ym91bmQgPSBjeHQucGFydGJvdW5kOwogCQkJCX0KQEAg LTM4ODEsNiArMzkxNSw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwg QWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywg Y21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKIAkJCWNh c2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0 Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKQEAgLTM4ODksNyArMzkyNCwxMSBA QCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpz dG10LAogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAogCQkJCQkJCQllcnJtc2coImxpc3Qgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zIikpOwotCQkJ CQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKworCQkJ CQlpZiAoY21kLT5zdWJ0eXBlID09IEFUX1NwbGl0UGFydGl0aW9uKQorCQkJCQkJdHJhbnNm b3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoJmN4dCwgcGFydGNtZCk7CisJCQkJCWVsc2UKKwkJ CQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOwogCQkJ CQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOwogCQkJCQlicmVhazsKIAkJCQl9 CkBAIC00MzI0LDEzICs0MzYzLDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29u dGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJhbnNm b3JtUGFydGl0aW9uQ21kCi0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJ T04gY29tbWFuZAorICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElU SU9OIGNvbW1hbmQKICAqCi0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNv bW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZh bHVlIG9mIGNtZC0+Ym91bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFS VElUSU9OIGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRyYW5z Zm9ybWVkIHZhbHVlIG9mIGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3JtUGFy dGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQor dHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlv bkJvdW5kU3BlYyAqYm91bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5yZWw7 CiAKQEAgLTQzMzksOSArNDM3OCw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVT dG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFOgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91bmQs IGlmIGFueSAqLwogCQkJQXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudFJl bCkgIT0gTlVMTCk7Ci0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5k ICE9IE5VTEwpCiAJCQkJY3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3Vu ZChjeHQtPnBzdGF0ZSwgcGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3VuZCk7 CisJCQkJCQkJCQkJCQkJCSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BB UlRJVElPTkVEX0lOREVYOgogCkBAIC00MzQ5LDcgKzQzODgsNyBAQCB0cmFuc2Zvcm1QYXJ0 aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJ CQkgKiBBIHBhcnRpdGlvbmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5k IHNldC4gIEFMVEVSCiAJCQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1t YXIsIGJ1dCBub3QgQUxURVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9 IE5VTEwpCisJCQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJ CSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCBjYjcxOWYxZmY1Li40MjE0NmMz YmZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTUwNDEs MTAgKzUwNDEsNjkgQEAgY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0 aW9uIHBhcmVudCwKIAl9CiB9CiAKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX25vdF9vdmVy bGFwX2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQor ICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNf Zm9yX3NwbGl0KCkuCisgKiBDaGVja3MgdGhhdCB0aGUgdmFsdWVzIG9mIHRoZSBuZXcgcGFy dGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRh YmxlCisgKiBwYXJ0czoJYXJyYXkgb2YgU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3RzIHdp dGggaW5mbyBhYm91dCBzcGxpdCBwYXJ0aXRpb25zCisgKiBucGFydHM6CXNpemUgb2YgYXJy YXkgInBhcnRzIgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19ub3Rfb3Zl cmxhcF9saXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25T cGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBQYXJzZVN0 YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSBQR19VU0VEX0ZPUl9BU1NFUlRT X09OTFkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCWludAkJCW92ZXJs YXBfbG9jYXRpb24gPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzMSwKKwkJCSAgICpzcHMyOworCUxpc3QJICAgKm92ZXJsYXA7CisKKwlBc3Nl cnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlzcHMxID0gcGFydHNbaV07CisKKwkJ Zm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJc3BzMiA9IHBhcnRz W2pdOworCisJCQkvKgorCQkJICogQ2FsY3VsYXRlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHZh bHVlcyBvZiB0d28gcGFydGl0aW9ucy4KKwkJCSAqLworCQkJb3ZlcmxhcCA9IGxpc3RfaW50 ZXJzZWN0aW9uKHNwczEtPmJvdW5kLT5saXN0ZGF0dW1zLAorCQkJCQkJCQkJCXNwczItPmJv dW5kLT5saXN0ZGF0dW1zKTsKKwkJCWlmIChsaXN0X2xlbmd0aChvdmVybGFwKSA+IDApCisJ CQl7CisJCQkJQ29uc3QJICAgKnZhbCA9IChDb25zdCAqKSBsZmlyc3QobGlzdF9oZWFkKG92 ZXJsYXApKTsKKworCQkJCW92ZXJsYXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxk IG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQkg ICBzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwkJCX0KKwkJ fQorCX0KK30KKwogLyoKICAqIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYwogICoKICAqIFJl dHVybnMgZGVzY3JpcHRpb24gb2YgcGFydGl0aW9uIHdpdGggT2lkICJwYXJ0T2lkIiBhbmQg bmFtZSAibmFtZSIuCisgKgorICogcGFydE9pZDoJcGFydGl0aW9uIE9pZAorICogbmFtZToJ cGFydGl0aW9uIG5hbWUKICAqLwogc3RhdGljIFBhcnRpdGlvbkJvdW5kU3BlYyAqCiBnZXRf cGFydGl0aW9uX2JvdW5kX3NwZWMoT2lkIHBhcnRPaWQsIFJhbmdlVmFyICpuYW1lKQpAQCAt NTA3Nyw2ICs1MTM2LDYzNiBAQCBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoT2lkIHBhcnRP aWQsIFJhbmdlVmFyICpuYW1lKQogCXJldHVybiBib3VuZHNwZWM7CiB9CiAKKy8qCisgKiBj aGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZQorICoKKyAqIChmdW5jdGlv biBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5k cyBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBhcmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAor ICogcGFydGl0aW9uICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLiBJZiBmaXJzdD10cnVlICh0 aGlzIG1lYW5zIHRoYXQgInNwZWMiIGlzCisgKiB0aGUgZmlyc3Qgb2YgbmV3IHBhcnRpdGlv bnMpIHRoZW4gbG93ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IKKyAq IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxv d2VyIGJvdW5kIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9dHJ1ZSAodGhpcyBt ZWFucyB0aGF0ICJzcGVjIiBpcyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRpdGlvbnMpIHRo ZW4gdXBwZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFu IG9yCisgKiBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFi bGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJ CQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQ YXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBzcGxpdFBhcnROYW1lOglzcGxpdCBw YXJ0aXRpb24gbmFtZQorICogZmlyc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24g InNwZWMiIGlzIGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBsYXN0OgkJCXRydWUgaW4g Y2FzZSBuZXcgcGFydGl0aW9uICJzcGVjIiBpcyBsYXN0IG9mIG5ldyBwYXJ0aXRpb25zCisg KiBkZWZhdWx0UGFydDoJCXRydWUgaW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgREVG QVVMVCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3Ry dWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2No ZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwK KwkJCQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3Vu ZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJ ICAgUmFuZ2VWYXIgKnNwbGl0UGFydE5hbWUsCisJCQkJCQkJCQkgICBib29sIGZpcnN0LAor CQkJCQkJCQkJICAgYm9vbCBsYXN0LAorCQkJCQkJCQkJICAgYm9vbCBkZWZhdWx0UGFydCwK KwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5 ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25SYW5nZUJv dW5kICpsb3dlciwKKwkJCSAgICp1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQo a2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCUFzc2VydChz cGVjLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93ZXIg PSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPmxvd2VyZGF0dW1z LCB0cnVlKTsKKwl1cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwg c3BlYy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKworCS8qCisJICogRmlyc3QgY2hlY2sgaWYg dGhlIHJlc3VsdGluZyByYW5nZSB3b3VsZCBiZSBlbXB0eSB3aXRoIHNwZWNpZmllZCBsb3dl cgorCSAqIGFuZCB1cHBlciBib3VuZHMuICBwYXJ0aXRpb25fcmJvdW5kX2NtcCBjYW5ub3Qg cmV0dXJuIHplcm8gaGVyZSwgc2luY2UKKwkgKiB0aGUgbG93ZXItYm91bmQgZmxhZ3MgYXJl IGRpZmZlcmVudC4KKwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXkt PnBhcnRuYXR0cywKKwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtl eS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2lu ZCwKKwkJCQkJCQkJICB0cnVlLCB1cHBlcik7CisJQXNzZXJ0KGNtcHZhbCAhPSAwKTsKKwlp ZiAoY21wdmFsID4gMCkKKwl7CisJCS8qIFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0 aGUgbG93ZXIgZGF0dW1zIGxpc3QuICovCisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVt ID0gbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGNtcHZhbCAtIDEpOworCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCWVycm1zZygiZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0 aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgcmVsbmFtZSksCisJCQkJZXJyZGV0YWlsKCJTcGVj aWZpZWQgbG93ZXIgYm91bmQgJXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHVwcGVy IGJvdW5kICVzLiIsCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMt Pmxvd2VyZGF0dW1zKSwKKwkJCQkJCSAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoc3Bl Yy0+dXBwZXJkYXR1bXMpKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1 bS0+bG9jYXRpb24pKTsKKwl9CisKKwkvKiBOZWVkIHRvIGNoZWNrIGZpcnN0IGFuZCBsYXN0 IHBhcnRpdGlvbnMgKGZyb20gc2V0IG9mIG5ldyBwYXJ0aXRpb25zKSAqLworCWlmIChmaXJz dCB8fCBsYXN0KQorCXsKKwkJUGFydGl0aW9uQm91bmRTcGVjICpzcGxpdF9zcGVjID0gZ2V0 X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHNwbGl0UGFydE9pZCwgc3BsaXRQYXJ0TmFtZSk7CisJ CVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtOworCisJCWlmIChmaXJzdCkKKwkJeworCQkJ UGFydGl0aW9uUmFuZ2VCb3VuZCAqc3BsaXRfbG93ZXI7CisKKwkJCXNwbGl0X2xvd2VyID0g bWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGxpdF9zcGVjLT5sb3dlcmRh dHVtcywgdHJ1ZSk7CisKKwkJCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+ cGFydG5hdHRzLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkg IGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxvd2Vy LT5raW5kLAorCQkJCQkJCQkJCSAgdHJ1ZSwgc3BsaXRfbG93ZXIpOworCisJCQkvKgorCQkJ ICogTG93ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgZ3JlYXRlciB0 aGFuIG9yIGVxdWFsCisJCQkgKiBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxvd2Vy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFy dCkKKwkJCXsKKwkJCQlpZiAoY21wdmFsICE9IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxp c3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQkJCQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVz XCIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJ CQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlp ZiAoY21wdmFsIDwgMCkKKwkJCQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+bG93 ZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJ CWVycm1zZygibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBsZXNzIHRoYW4g bG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSks CisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7 CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJUGFydGl0aW9uUmFuZ2VCb3Vu ZCAqc3BsaXRfdXBwZXI7CisKKwkJCXNwbGl0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9u X3Jib3VuZChrZXksIC0xLCBzcGxpdF9zcGVjLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJ CQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJ CQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRp b24sCisJCQkJCQkJCQkJICB1cHBlci0+ZGF0dW1zLCB1cHBlci0+a2luZCwKKwkJCQkJCQkJ CQkgIGZhbHNlLCBzcGxpdF91cHBlcik7CisKKwkJCS8qCisJCQkgKiBVcHBlciBib3VuZCBv ZiAic3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvciBsZXNzIHRoYW4gb3IgZXF1YWwgaW4KKwkJ CSAqIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFy dGl0aW9uLgorCQkJICovCisJCQlpZiAoIWRlZmF1bHRQYXJ0KQorCQkJeworCQkJCWlmIChj bXB2YWwgIT0gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+dXBwZXJk YXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVy cm1zZygidXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8g dXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSks CisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7 CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWlmIChjbXB2YWwgPiAwKQorCQkJ CXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT51cHBlcmRhdHVtcywgYWJzKGNtcHZh bCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJ1cHBlciBib3Vu ZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJ CX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9s aXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisg KiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiBhcmUgaW5zaWRlIGJvdW5k cyBvZiBzcGxpdCBwYXJ0aXRpb24KKyAqICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLgorICoK KyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogcmVsbmFtZToJCQluYW1lIG9m IHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGVjOgkJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9m IHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBP aWQKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRl cm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlv bl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QoUmVsYXRpb24gcGFyZW50LCBjaGFyICpyZWxuYW1l LAorCQkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgIE9p ZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQ YXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQ YXJ0aXRpb25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVu dCwgZmFsc2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+ Ym91bmRpbmZvOworCWludAkJCXdpdGggPSAtMTsKKwlib29sCQlvdmVybGFwID0gZmFsc2U7 CisJaW50CQkJb3ZlcmxhcF9sb2NhdGlvbiA9IC0xOworCUxpc3RDZWxsICAgKmNlbGw7CisK KwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJ QXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlB c3NlcnQoYm91bmRpbmZvICYmIGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBTZWFyY2ggZWFjaCB2YWx1ZSBvZiBuZXcgcGFy dGl0aW9uICJzcGVjIiBpbiBleGlzdGluZyBwYXJ0aXRpb25zLiBBbGwKKwkgKiBvZiB0aGVt IHNob3VsZCBiZSBpbiBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lkIHNwbGl0UGFydE9pZCku CisJICovCisJZm9yZWFjaChjZWxsLCBzcGVjLT5saXN0ZGF0dW1zKQorCXsKKwkJQ29uc3QJ ICAgKnZhbCA9IGxmaXJzdF9ub2RlKENvbnN0LCBjZWxsKTsKKworCQlvdmVybGFwX2xvY2F0 aW9uID0gdmFsLT5sb2NhdGlvbjsKKwkJaWYgKCF2YWwtPmNvbnN0aXNudWxsKQorCQl7CisJ CQlpbnQJCQlvZmZzZXQ7CisJCQlib29sCQllcXVhbDsKKworCQkJb2Zmc2V0ID0gcGFydGl0 aW9uX2xpc3RfYnNlYXJjaCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJa2V5 LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCQlib3VuZGluZm8sCisJCQkJCQkJCQkJCXZh bC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJJmVxdWFsKTsKKwkJCWlmIChvZmZzZXQgPj0g MCAmJiBlcXVhbCkKKwkJCXsKKwkJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNl dF07CisJCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJ CQl7CisJCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJ CQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBc IiVzXCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBk b2VzIG5vdCBoYXZlIiwKKwkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwkJfQorCQllbHNlIGlmIChw YXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pKQorCQl7CisJCQl3aXRo ID0gYm91bmRpbmZvLT5udWxsX2luZGV4OworCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhd ICE9IHNwbGl0UGFydE9pZCkKKwkJCXsKKwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQlicmVh azsKKwkJCX0KKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygibmV3 IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0 IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorCisJ aWYgKG92ZXJsYXApCisJeworCQlBc3NlcnQod2l0aCA+PSAwKTsKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5v dGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgcmVsbmFtZSwg Z2V0X3JlbF9uYW1lKHBhcnRkZXNjLT5vaWRzW3dpdGhdKSksCisJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGZp bmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3Ig QlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogRnVuY3Rpb24gcmV0dXJucyB0cnVlIGlu IGNhc2UgYW55IG9mIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW5zIHZhbHVlICJ2YWx1ZSIuCisg KgorICogcGFydHN1cGZ1bmM6CQlpbmZvcm1hdGlvbiBhYm91dCBjb21wYXJpc29uIGZ1bmN0 aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFydGl0aW9uIGtleQorICogcGFydGNvbGxhdGlv bjoJcGFydGl0aW9uaW5nIGNvbGxhdGlvbgorICogcGFydHM6CQkJcG9pbnRlciB0byBhcnJh eSB3aXRoIG5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgkJCW51bWJl ciBvZiBuZXcgcGFydGl0aW9ucworICogdmFsdWU6CQkJdGhlIHZhbHVlIHRoYXQgd2UgYXJl IGxvb2tpbmcgZm9yCisgKiBpc251bGw6CQkJdHJ1ZSBpZiB0aGUgdmFsdWUgdGhhdCB3ZSBh cmUgbG9va2luZyBmb3IgaXMgTlVMTAorICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9p bl9uZXdfcGFydGl0aW9uc19saXN0KEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkJ ICBPaWQgKnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAq KnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgRGF0dW0gdmFsdWUs CisJCQkJCQkJCSAgYm9vbCBpc251bGwpCit7CisJTGlzdENlbGwgICAqdmFscHRyOworCWlu dAkJCWk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlTaW5nbGVQ YXJ0aXRpb25TcGVjICpzcHMgPSBwYXJ0c1tpXTsKKworCQlmb3JlYWNoKHZhbHB0ciwgc3Bz LT5ib3VuZC0+bGlzdGRhdHVtcykKKwkJeworCQkJQ29uc3QJICAgKnZhbCA9IGxmaXJzdF9u b2RlKENvbnN0LCB2YWxwdHIpOworCisJCQlpZiAoaXNudWxsICYmIHZhbC0+Y29uc3Rpc251 bGwpCisJCQkJcmV0dXJuIHRydWU7CisKKwkJCWlmICghaXNudWxsICYmICF2YWwtPmNvbnN0 aXNudWxsKQorCQkJeworCQkJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xs KCZwYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJ CQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDAp CisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCXJldHVybiBmYWxzZTsKK30K KworLyoKKyAqIGNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisg KiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0 aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBwYXJ0T2lkKSBj b250YWlucyBpbiBuZXcKKyAqIHBhcnRpdGlvbnMuCisgKgorICogcGFyZW50OglwYXJ0aXRp b25lZCB0YWJsZQorICogcGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcGFydHM6 CXBvaW50ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbnMKKyAq IG5wYXJ0czoJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3RhdGU6CXBvaW50ZXIg dG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICov CitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhS ZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lkLAorCQkJCQkJCQkJICBT aW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCQkgIGludCBucGFydHMsCisJ CQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRk ZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRp dGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJ CWk7CisJYm9vbAkJZm91bmQgPSB0cnVlOworCWJvb2wJCXNlYXJjaE51bGwgPSBmYWxzZTsK KwlEYXR1bQkJZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisKKwlBc3NlcnQoa2V5 LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNw ZWNpYWwgcHJvY2Vzc2luZyBmb3IgTlVMTCB2YWx1ZS4gU2VhcmNoIE5VTEwgdmFsdWUgaWYg dGhlIHNwbGl0CisJICogcGFydGl0aW9uIChwYXJ0T2lkKSBjb250YWlucyBpdC4KKwkgKi8K KwlpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRpbmZvKSAmJgorCQlw YXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPm51bGxfaW5kZXhdID09IHBhcnRPaWQpCisJewor CQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3Vw ZnVuY1swXSwKKwkJCQkJCQkJCQkJICAga2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBh cnRzLCBkYXR1bSwgdHJ1ZSkpCisJCXsKKwkJCWZvdW5kID0gZmFsc2U7CisJCQlzZWFyY2hO dWxsID0gdHJ1ZTsKKwkJfQorCX0KKworCS8qCisJICogU2VhcmNoIGFsbCB2YWx1ZXMgb2Yg c3BsaXQgcGFydGl0aW9uIHdpdGggcGFydE9pZCBpbiBQYXJ0aXRpb25EZXNjIG9mCisJICog cGFydGl0aW9uZWQgdGFibGUuCisJICovCisJZm9yIChpID0gMDsgaSA8IGJvdW5kaW5mby0+ bmRhdHVtczsgaSsrKQorCXsKKwkJaWYgKHBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+aW5k ZXhlc1tpXV0gPT0gcGFydE9pZCkKKwkJeworCQkJLyogV2UgZm91bmQgdmFsdWUgdGhhdCBz cGxpdCBwYXJ0aXRpb24gY29udGFpbnMuICovCisJCQlkYXR1bSA9IGJvdW5kaW5mby0+ZGF0 dW1zW2ldWzBdOworCQkJaWYgKCFmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3Qo JmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRp b24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCBmYWxzZSkpCisJCQl7CisJCQkJZm91bmQgPSBm YWxzZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWlmICghZm91bmQpCisJewor CQlDb25zdAkgICAqbm90Rm91bmRWYWw7CisKKwkJaWYgKCFzZWFyY2hOdWxsKQorCisJCQkv KgorCQkJICogTWFrZSBDb25zdCBmb3IgZ2V0dGluZyBzdHJpbmcgcmVwcmVzZW50YXRpb24g b2Ygbm90IGZvdW5kCisJCQkgKiB2YWx1ZS4KKwkJCSAqLworCQkJbm90Rm91bmRWYWwgPSBt YWtlQ29uc3Qoa2V5LT5wYXJ0dHlwaWRbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBtb2Rb MF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBjb2xsWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0 dHlwbGVuWzBdLAorCQkJCQkJCQkJZGF0dW0sCisJCQkJCQkJCQlmYWxzZSwJLyogaXNudWxs ICovCisJCQkJCQkJCQlrZXktPnBhcnR0eXBieXZhbFswXSk7CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAlcyBidXQgc3Bs aXQgcGFydGl0aW9uIGRvZXMiLAorCQkJCQkgICBzZWFyY2hOdWxsID8gIk5VTEwiIDogZ2V0 X2xpc3RfcGFydHZhbHVlX3N0cmluZyhub3RGb3VuZFZhbCkpKTsKKwl9Cit9CisKKy8qCisg KiBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdAorICoKKyAqIENoZWNrcyBuZXcgcGFydGl0 aW9ucyBmb3IgU1BMSVQgUEFSVElUSU9OUyBjb21tYW5kOgorICogMS4gREVGQVVMVCBwYXJ0 aXRpb24gc2hvdWxkIGJlIG9uZS4KKyAqIDIuIE5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZl IGRpZmZlcmVudCBuYW1lcworICogICAgKHdpdGggZXhpc3RpbmcgcGFydGl0aW9ucyB0b28p LgorICogMy4gQm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3 aXRoIG5ldyBhbmQgZXhpc3RpbmcKKyAqICAgIHBhcnRpdGlvbnMuCisgKiA0LiBJbiBjYXNl IHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiwgb25lIG9mIG5ldyBwYXJ0 aXRpb25zCisgKiAgICBzaG91bGQgYmUgREVGQVVMVC4KKyAqIDUuIEluIGNhc2UgbmV3IHBh cnRpdGlvbnMgb3IgZXhpc3RpbmcgcGFydGl0aW9ucyBjb250YWlucyBERUZBVUxUCisgKiAg ICBwYXJ0aXRpb24sIG5ldyBwYXJ0aXRpb25zIGNhbiBoYXZlIGFueSBib3VuZHMgaW5zaWRl IHNwbGl0CisgKiAgICBwYXJ0aXRpb24gYm91bmQgKGNhbiBiZSBzcGFjZXMgYmV0d2VlbiBw YXJ0aXRpb25zIGJvdW5kcykuCisgKiA2LiBJbiBjYXNlIHBhcnRpdGlvbmVkIHRhYmxlIGRv ZXMgbm90IGhhdmUgREVGQVVMVCBwYXJ0aXRpb24sIERFRkFVTFQKKyAqICAgIHBhcnRpdGlv biBjYW4gYmUgZGVmaW5lZCBhcyBvbmUgb2YgbmV3IHBhcnRpdGlvbi4KKyAqIDcuIEluIGNh c2UgbmV3IHBhcnRpdGlvbnMgbm90IGNvbnRhaW5zIERFRkFVTFQgcGFydGl0aW9uIGFuZAor ICogICAgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlv biB0aGUgZm9sbG93aW5nCisgKiAgICBzaG91bGQgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBu ZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgZXF1YWwKKyAqICAgIHRvIGJvdW5kIG9mIHNwbGl0 IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHNw bGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogc3BsaXRQYXJ0TmFtZToJc3Bs aXQgcGFydGl0aW9uIG5hbWUKKyAqIGxpc3Q6CQkJbGlzdCBvZiBuZXcgcGFydGl0aW9ucwor ICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWlu ZSBlcnJvciBwb3NpdGlvbgorICovCit2b2lkCitjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxp dChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJ ICAgUmFuZ2VWYXIgKnNwbGl0UGFydE5hbWUsCisJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwK KwkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5Owor CWNoYXIJCXN0cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWJvb2wJCWlzU3Bs aXRQYXJ0RGVmYXVsdDsKKwlib29sCQlleGlzdHNEZWZhdWx0UGFydDsKKwlMaXN0Q2VsbCAg ICpsaXN0cHRyOworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJ CWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHNQcmV2ID0gTlVMTDsKKwlpbnQJCQlucGFydHMgPSAwOworCisJa2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0 aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNl IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9S QU5HRToKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGgg bmV3IHBhcnRpdGlvbnMgZXhjZXB0IERFRkFVTFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJ ICovCisJCQkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQkJCXBh bGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3QpICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNw ZWMgKikpOworCQkJCWkgPSAwOworCQkJCWZvcmVhY2gobGlzdHB0ciwgcGFydGxpc3QpCisJ CQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPQorCQkJCQkJKFNpbmdsZVBh cnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCQkJCWlmIChzcHMtPmJvdW5k LT5pc19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlpZiAoZGVmYXVsdF9pbmRleCA+PSAwKQor CQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCQllcnJtc2coIkRFRkFVTFQgcGFydGl0 aW9uIHNob3VsZCBiZSBvbmUiKSwKKwkJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIHNwcy0+bmFtZS0+bG9jYXRpb24pKTsKKwkJCQkJCWRlZmF1bHRfaW5kZXggPSBpOwor CQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJbmV3X3BhcnRzW25wYXJ0cysrXSA9 IHNwczsKKwkJCQkJfQorCQkJCQlpKys7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJ Y2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2co InBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdCIp KTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7 CisJCQlicmVhazsKKwl9CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZ X1JBTkdFKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqKnRtcF9uZXdfcGFydHM7CisKKwkJLyoKKwkJICogRm9y IHNpbXBsaWZ5IGNoZWNrIGZvciByYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgbmVlZCB0byBz b3J0IGFsbAorCQkgKiBwYXJ0aXRpb25zIGluIGFzY2VuZGluZyBvcmRlciBvZiB0aGVtIGJv dW5kcyAod2UgY29tcGFyZSB1cHBlcgorCQkgKiBib3VuZCBvbmx5KS4KKwkJICovCisJCWxv d2VyX2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoqKQorCQkJcGFsbG9jMChucGFy dHMgKiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisKKwkJLyogQ3JlYXRlIGFy cmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsr KQorCQl7CisJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5k KGtleSwgaSwKKwkJCQkJCQkJCQkJCQkJbmV3X3BhcnRzW2ldLT5ib3VuZC0+bG93ZXJkYXR1 bXMsIHRydWUpOworCQl9CisKKwkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICov CisJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJh bmdlQm91bmQgKiksCisJCQkJICBxc29ydF9wYXJ0aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQg Kikga2V5KTsKKworCQkvKiBSZW9yZGVyIGFycmF5IG9mIHBhcnRpdGlvbnMuICovCisJCXRt cF9uZXdfcGFydHMgPSBuZXdfcGFydHM7CisJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRp b25TcGVjICoqKQorCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9u U3BlYyAqKSk7CisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJCW5ld19wYXJ0 c1tpXSA9IHRtcF9uZXdfcGFydHNbbG93ZXJfYm91bmRzW2ldLT5pbmRleF07CisKKwkJcGZy ZWUodG1wX25ld19wYXJ0cyk7CisJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJfQorCisJZGVm YXVsdFBhcnRPaWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlv bkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwkvKiBpc1NwbGl0UGFydERl ZmF1bHQgZmxhZzogaXMgc3BsaXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICov CisJaXNTcGxpdFBhcnREZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9p ZCk7CisKKwlpZiAoaXNTcGxpdFBhcnREZWZhdWx0ICYmIGRlZmF1bHRfaW5kZXggPCAwKQor CXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0 IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQi KSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlvblNw ZWMgKikgbGluaXRpYWwocGFydGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisJZWxz ZSBpZiAoIWlzU3BsaXRQYXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCA+PSAwKSAmJiBP aWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMg KnNwc0RlZiA9CisJCQkoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaXN0X250aChwYXJ0bGlz dCwgZGVmYXVsdF9pbmRleCk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFy dGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxy ZWFkeSBleGlzdHMiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHNEZWYt Pm5hbWUtPmxvY2F0aW9uKSk7CisJfQorCisJLyogSW5kaWNhdG9yIHRoYXQgcGFydGl0aW9u ZWQgdGFibGUgaGFzIChvciB3aWxsIGhhdmUpIERFRkFVTFQgcGFydGl0aW9uICovCisJZXhp c3RzRGVmYXVsdFBhcnQgPSBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSB8fCAoZGVmYXVs dF9pbmRleCA+PSAwKTsKKworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IG5ld19wYXJ0c1tpXTsKKworCQlpZiAoaXNT cGxpdFBhcnREZWZhdWx0KQorCQl7CisJCQkvKgorCQkJICogSW4gY2FzZSBzcGxpdCBwYXJ0 aXRpb24gaXMgREVGQVVMVCBwYXJ0aXRpb24gd2UgY2FuIHVzZSBhbnkKKwkJCSAqIGZyZWUg cmFuZ2VzIC0gYXMgd2hlbiBjcmVhdGluZyBhIG5ldyBwYXJ0aXRpb24uCisJCQkgKi8KKwkJ CWNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoc3BzLT5uYW1lLT5yZWxuYW1lLCBwYXJlbnQs IHNwcy0+Ym91bmQsCisJCQkJCQkJCQkgIHBzdGF0ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJ CQkvKgorCQkJICogQ2hlY2tzIHRoYXQgYm91bmQgb2YgY3VycmVudCBwYXJ0aXRpb24gaXMg aW5zaWRlIGJvdW5kIG9mIHNwbGl0CisJCQkgKiBwYXJ0aXRpb24uIEZvciByYW5nZSBwYXJ0 aXRpb25pbmc6IGNoZWNrcyB0aGF0IHVwcGVyIGJvdW5kIG9mCisJCQkgKiBwcmV2aW91cyBw YXJ0aXRpb24gaXMgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2YgY3VycmVudAorCQkJICogcGFy dGl0aW9uLiBGb3IgbGlzdCBwYXJ0aXRpb25pbmc6IGNoZWNrcyB0aGF0IHNwbGl0IHBhcnRp dGlvbgorCQkJICogY29udGFpbnMgYWxsIHZhbHVlcyBvZiBjdXJyZW50IHBhcnRpdGlvbi4K KwkJCSAqLworCQkJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSkK KwkJCXsKKwkJCQlib29sCQlmaXJzdCA9IChpID09IDApOworCQkJCWJvb2wJCWxhc3QgPSAo aSA9PSAobnBhcnRzIC0gMSkpOworCisJCQkJY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jf c3BsaXRfcmFuZ2UocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsIHNwcy0+Ym91bmQsCisJ CQkJCQkJCQkJCQkJICAgc3BsaXRQYXJ0T2lkLCBzcGxpdFBhcnROYW1lLAorCQkJCQkJCQkJ CQkJCSAgIGZpcnN0LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAgIGV4aXN0c0RlZmF1bHRQYXJ0 LCBwc3RhdGUpOworCQkJfQorCQkJZWxzZQorCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNf Zm9yX3NwbGl0X2xpc3QocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJ CQkJICBzcHMtPmJvdW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0ZSk7CisJCX0KKworCQkvKiBS YW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQlpZiAo c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmIHNwc1ByZXYpCisJCQlj aGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LCBzcHNQcmV2LT5uYW1l LCBzcHNQcmV2LT5ib3VuZCwKKwkJCQkJCQkJCQkJICBzcHMtPm5hbWUsIHNwcy0+Ym91bmQs IGV4aXN0c0RlZmF1bHRQYXJ0LCBwc3RhdGUpOworCisJCXNwc1ByZXYgPSBzcHM7CisKKwkJ LyogQ2hlY2s6IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcy4g Ki8KKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJU2luZ2xl UGFydGl0aW9uU3BlYyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsKKworCQkJaWYgKGVxdWFsKHNw cy0+bmFtZSwgc3BzMi0+bmFtZSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJuYW1lIFwiJXNc IiBpcyBhbHJlYWR5IHVzZWQiLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwczItPm5hbWUtPmxvY2F0aW9uKSk7CisJCX0KKwl9 CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpCisJeworCQkv KiBWYWx1ZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQlj aGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QocGFyZW50LCBuZXdfcGFydHMsIG5w YXJ0cywKKwkJCQkJCQkJCQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICogTmVlZCB0byBjaGVj ayB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zIGluIG5ldwor CQkgKiBwYXJ0aXRpb25zLiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0aXRpb24g ZXhpc3RzLgorCQkgKi8KKwkJaWYgKCFleGlzdHNEZWZhdWx0UGFydCkKKwkJCWNoZWNrX3Bh cmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJ CQkJCQkJCQkJCQkgIG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVl KG5ld19wYXJ0cyk7Cit9CisKIC8qCiAgKiBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zv cl9tZXJnZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAzZDZlNmJk YmZkLi4zZTE2ODliMTE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0x MzcwNywzICsxMzcwNywyMSBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpi b3VuZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVmLT5kYXRhOwogfQorCisvKgorICogZ2V0X2xp c3RfcGFydHZhbHVlX3N0cmluZworICoJCUEgQyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Yg b25lIGxpc3QgcGFydGl0aW9uIHZhbHVlCisgKi8KK2NoYXIgKgorZ2V0X2xpc3RfcGFydHZh bHVlX3N0cmluZyhDb25zdCAqdmFsKQoreworCWRlcGFyc2VfY29udGV4dCBjb250ZXh0Owor CVN0cmluZ0luZm8JYnVmID0gbWFrZVN0cmluZ0luZm8oKTsKKworCW1lbXNldCgmY29udGV4 dCwgMCwgc2l6ZW9mKGRlcGFyc2VfY29udGV4dCkpOworCWNvbnRleHQuYnVmID0gYnVmOwor CisJZ2V0X2NvbnN0X2V4cHIodmFsLCAmY29udGV4dCwgLTEpOworCisJcmV0dXJuIGJ1Zi0+ ZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA0YmYxNTYwYzg5Li4yMGFj Njk5NWQzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysr IGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yNzIxLDcgKzI3MjEsNyBA QCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJCQkJICAiT1dORVIg VE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQiLAogCQkJCQkgICJSRVBMSUNBIElE RU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkgICJERVRBQ0ggUEFSVElUSU9O IiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCi0JCQkJCSAgIk1FUkdFIFBBUlRJVElP TlMgKCIsCisJCQkJCSAgIlNQTElUIFBBUlRJVElPTiIsICJNRVJHRSBQQVJUSVRJT05TICgi LAogCQkJCQkgICJPRiIsICJOT1QgT0YiKTsKIAkvKiBBTFRFUiBUQUJMRSB4eHggQUREICov CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkFERCIp KQpAQCAtMjk3NywxMCArMjk3NywxMCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSCgiRlJPTSAoIiwgIklOICgiLCAiV0lUSCAoIik7 CiAKIAkvKgotCSAqIElmIHdlIGhhdmUgQUxURVIgVEFCTEUgPGZvbz4gREVUQUNIIFBBUlRJ VElPTiwgcHJvdmlkZSBhIGxpc3Qgb2YKKwkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxm b28+IERFVEFDSHxTUExJVCBQQVJUSVRJT04sIHByb3ZpZGUgYSBsaXN0IG9mCiAJICogcGFy dGl0aW9ucyBvZiA8Zm9vPi4KIAkgKi8KLQllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJU QUJMRSIsIE1hdGNoQW55LCAiREVUQUNIIiwgIlBBUlRJVElPTiIpKQorCWVsc2UgaWYgKE1h dGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0h8U1BMSVQiLCAiUEFS VElUSU9OIikpCiAJewogCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjNfd2QpOwog CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfcGFydGl0aW9uX29mX3Rh YmxlKTsKQEAgLTI5ODgsNiArMjk4OCwxMCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQg cGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNo QW55LCAiREVUQUNIIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lU SCgiQ09OQ1VSUkVOVExZIiwgIkZJTkFMSVpFIik7CiAKKwkvKiBBTFRFUiBUQUJMRSA8bmFt ZT4gU1BMSVQgUEFSVElUSU9OIDxuYW1lPiAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlRBQkxFIiwgTWF0Y2hBbnksICJTUExJVCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkp CisJCUNPTVBMRVRFX1dJVEgoIklOVE8gKCBQQVJUSVRJT04iKTsKKwogCS8qIEFMVEVSIFRB QkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TICggKi8KIAllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIsICIoIikp CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDIzMGE0MmI5NjYuLmJiZDExMTBh NDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTk3MCw3ICs5NzAsNyBAQCB0eXBl ZGVmIHN0cnVjdCBTaW5nbGVQYXJ0aXRpb25TcGVjCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFt ZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZSAqLworCVJhbmdlVmFyICAg Km5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZS9z cGxpdCAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlm IGF0dGFjaGluZyAqLwogCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRp b25zLCBmb3IgTUVSR0UvU1BMSVQKIAkJCQkJCQkJICogUEFSVElUSU9OIGNvbW1hbmQgKi8K QEAgLTI0ODYsNiArMjQ4Niw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFU X0F0dGFjaFBhcnRpdGlvbiwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNo UGFydGl0aW9uLAkJCS8qIERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRp b25GaW5hbGl6ZSwgLyogREVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX1NwbGl0 UGFydGl0aW9uLAkJCS8qIFNQTElUIFBBUlRJVElPTiAqLwogCUFUX01lcmdlUGFydGl0aW9u cywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFE RCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29s dW1uIG9wdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA5MGU4Y2RkZjhiLi42NmM4 ODc2NjU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC00MjEsNiArNDIxLDcgQEAgUEdfS0VZ V09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic291cmNlIiwgU09VUkNFLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJzcGxpdCIsIFNQTElULCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzcWwiLCBTUUxf UCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhYmxl IiwgU1RBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJzdGFuZGFsb25lIiwgU1RBTkRBTE9ORV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCA2OTBk MjU5NjE5Li43NzY1YTlkMzY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmgKQEAgLTE0Myw2ICsxNDMsMTEgQEAgZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2Vf ZGF0dW1fYnNlYXJjaChGbWdySW5mbyAqcGFydHN1cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRp dGlvbl9oYXNoX2JzZWFyY2goUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJCQkJ CQkJICAgaW50IG1vZHVsdXMsIGludCByZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBjaGVj a19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBP aWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgUmFuZ2VWYXIgKnNwbGl0UGFydE5hbWUs CisJCQkJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUg KnBzdGF0ZSk7CiBleHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9t ZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCiAJ CQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3J1bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXgg NWYyZWEyZTRkMC4uNjIwNDNkM2JmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cnVsZXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTU0 LDQgKzU0LDYgQEAgZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExp c3QgKmJvdW5kX2RhdHVtcyk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29i amRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CiAKK2V4dGVybiBjaGFyICpnZXRfbGlzdF9w YXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwpOworCiAjZW5kaWYJCQkJCQkJLyogUlVMRVVU SUxTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0 aXRpb24tc3BsaXQub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlv bi1zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWQ5 ZThiMDkyNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3Rl ZC9wYXJ0aXRpb24tc3BsaXQub3V0CkBAIC0wLDAgKzEsMTkwIEBACitQYXJzZWQgdGVzdCBz cGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3Bs dCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDog QUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJ CSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkg VE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8 dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJicnIgczJp IHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFC TEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJU SVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAg ICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7 CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOwor c3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0Owor IGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUK KzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47 CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0 XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVw IHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNF TEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1Cisg MXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMg czJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE Oworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFy dF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBW QUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6 IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAg CistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQy NQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJy ciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxF IHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElU SU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAg UEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOwor c3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0 ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRp bmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4K K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBp fHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1Cisy NXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVS IFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAo UEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJ CQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgy MCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOwor c3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0Owor IGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUK KzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMWJzIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lO IElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFC TEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJU SVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAg ICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7 CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVw IHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNF TEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1Cisg MXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJj IHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOwor c3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8x MF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxV RVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0 ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczog U0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUK KyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMy YyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsK K3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRf MTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFM VUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAx fHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggMGRjYTY4NDk1NS4u NDA0YTdmZDgzMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9z Y2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBA IC0xMDgsNiArMTA4LDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDog cGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtNAog dGVzdDogcGFydGl0aW9uLW1lcmdlCit0ZXN0OiBwYXJ0aXRpb24tc3BsaXQKIHRlc3Q6IHBs cGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29u ZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv cGFydGl0aW9uLXNwbGl0LnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0 aW9uLXNwbGl0LnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MDg3MjM5YTRhMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVj cy9wYXJ0aXRpb24tc3BsaXQuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0 IFNQTElUIG9wZXJhdGlvbiBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVk IHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBD UkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkp OworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBB UlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBDUkVB VEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElP TiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0 ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOwor ICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAg RFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsg fQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0K K3N0ZXAgczFzcGx0CXsgQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0 XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7IH0KK3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKwor c2Vzc2lvbiBzMgorc3RlcCBzMmIJeyBCRUdJTjsgfQorc3RlcCBzMmJycgl7IEJFR0lOIElT T0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczJicwl7IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8g dHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9Citz dGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMxIHN0YXJ0cyBTUExJ VCBQQVJUSVRJT04gdGhlbiBzMiB0cnlpbmcgdG8gaW5zZXJ0IHJvdyBhbmQKKyMgd2FpdHMg dW50aWwgczEgZmluaXNoZWQgU1BMSVQgb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMWIg czFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJi cnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnMgczJpIHMx YyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMg czJzCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitw ZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0 YXRpb24gczFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFi cyBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3Bs dCBzMmJzIHMyaSBzMWMgczJjIHMycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggN2RlNWRkYjg3OC4u MTdkNzJlNDEyZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCkBAIC0yOTYsNiArMjk2LDkgQEAgZ2V0X2Fs dGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRh Y2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCQlzdHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04g Li4uIEZJTkFMSVpFIjsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246 CisJCQkJc3RydHlwZSA9ICJTUExJVCBQQVJUSVRJT04iOworCQkJCWJyZWFrOwogCQkJY2Fz ZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJc3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05T IjsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX3NwbGl0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0 aW9uX3NwbGl0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45 ZDQ3MTg3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC0wLDAgKzEsMTc4MSBAQAorLS0KKy0tIFBBUlRJ VElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElU SU9OIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQgc2Vh cmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkg UkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVz cGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUg ZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6 ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorLS0g RVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlzdHMKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2ph bjIwMjIiIGFscmVhZHkgZXhpc3RzCistLSBFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lm aWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyMi0w Ni0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKK0VSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBh cnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVT IElOICgnMjAyMi0wNS0wMScsICcyMDIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNw ZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQg Zm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVU QUlMOiAgU3BlY2lmaWVkIGxvd2VyIGJvdW5kICgnMDMtMDEtMjAyMicpIGlzIGdyZWF0ZXIg dGhhbiBvciBlcXVhbCB0byB1cHBlciBib3VuZCAoJzAyLTAxLTIwMjInKS4KKy0tRVJST1I6 ICBsaXN0IG9mIHNwbGl0IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdv IGl0ZW1zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CitFUlJPUjog IGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0 ZW1zCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAy MiIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxl c19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUg cGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBj YW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFt ZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5hbWUgInNhbGVz X2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJ TkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogICJz YWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRF UiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBBTFRFUiBh Y3Rpb24gU1BMSVQgUEFSVElUSU9OIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gcmVsYXRpb24g InNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5v dCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Yg c3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJP UjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRl ciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2 LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfbWFyMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIi IGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2Fs ZXNfZmViMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gVGVzdHMgZm9yIHNwYWNlcyBi ZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVG QVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8g bG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTy4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitBTFRF UiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJU SVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEu c2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAgICB8ICAgICAgICAgVHlwZSAgICAgICAg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMg dGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGlu dGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8 IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8IGNoYXJh Y3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IGV4 dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfYW1vdW50ICAgICB8IGludGVnZXIg ICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWlu ICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAgICAgICB8IGRhdGUgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAg IHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoc2FsZXNfZGF0ZSkK K1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpLAorICAgICAg ICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJyksCisgICAgICAgICAgICBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2ph bjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicp CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsK Ky0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFy dGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNUICog RlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAg ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4 LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAz NzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwg ICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8 IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAg ICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAy MgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQt MDYtMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAg IDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ph bjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAg ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAx MCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDkt MjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAg ICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwg RXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAg ICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8 IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cp CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBBZGQgc3BsaXQg cGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBTcGxpdCBwYXJ0 aXRpb24sIGFsc28gY2hlY2sgc2NoZW1hIHF1YWxpZmljYXRpb24gb2YgbmV3IHBhcnRpdGlv bnMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEu c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworXGQrIHNhbGVzX3JhbmdlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3Nw bGl0X3NjaGVtYS5zYWxlc19yYW5nZSIKKyAgICAgIENvbHVtbiAgICAgIHwgICAgICAgICBU eXBlICAgICAgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFn ZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNv bl9pZCAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9u YW1lIHwgY2hhcmFjdGVyIHZhcnlpbmcoMzApIHwgICAgICAgICAgIHwgICAgICAgICAgfCAg ICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19hbW91bnQgICAg IHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAg ICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19kYXRlICAgICAgIHwg ZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAg IHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChz YWxlc19kYXRlKQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIy JyksCisgICAgICAgICAgICBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAx LTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpLAorICAg ICAgICAgICAgc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykg VE8gKCcwMi0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19vdGhlcnMgREVGQVVMVAor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisg ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAg IDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAg ICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwg UGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy CisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEt MzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAg fCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAy IHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0y MDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIK KyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAg ICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21pdGgg ICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAq IGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47Cist LSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQs IHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFS KDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwg NCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAn LicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNf ZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1Ig VkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyks CisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAx LCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAy MiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScs IDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdl cjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAg MTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAy MDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAy MDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAy MDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorKDkgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOwor IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19k YXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAg ICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAg ICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNf ZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8 IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8 IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoNCByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2Fs ZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAg ICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitBTFRF UiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIs IDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisg ICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7 Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAg ICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAg ICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4w NCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAg ICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4w MyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAg ICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19k ZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5h Z2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwg MjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVz IGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsK KyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNf ZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEw IHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19m ZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGgg fCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIw MjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNf bW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAg MSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCistLUVSUk9S OiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VMRUNU ICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2ph bl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbl9mZWIyMDIyOworICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2Fs ZXNfZGF0ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0aW9u OyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3Bs aXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUg SU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcg YnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwK KyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA4IHwg RXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAg ICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTEgcm93cykKKworU0VMRUNUICog RlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFt ZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAg aW5kZXhuYW1lICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVz X290aGVyc19zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2Fs ZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2Fs ZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7Cist LSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhz Y2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAg ICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVy aWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAg ICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAg ICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAg ICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0x OS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYt MjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAg ICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxl X2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitTRUxFQ1QgKiBG Uk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFt ZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAg IGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfZmViMjAy MiB8IHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRF IElOREVYIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0 X3NjaGVtYS5zYWxlc19mZWIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVz X21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9S REVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5h bWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h IHwgc2FsZXNfbWFyMjAyMiB8IHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAg ICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04g cGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19tYXIyMDIyIFVTSU5HIGJ0cmVlIChzYWxl c19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9z cGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAg ICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0 YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNf ZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2FwcjIwMjJfc2Fs ZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2lu ZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworICAgICAg IHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUg ICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVy c19zYWxlc19kYXRlX2lkeDEgfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX290 aGVyc19zYWxlc19kYXRlX2lkeDEgT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19v dGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxp dHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIHNhbGVzX2Vycm9yIGlu dGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGgg dXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2Yg cHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorTElORSAzOiAgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJv dW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIw MjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAi c2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNf ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAyKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3 aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitM SU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxl c19kZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHBy ZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBU TyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlv biAic2FsZXNfZGVjMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGlu dGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChleGFjdGx5IHRoZSBzYW1lIGJvdW5kcykK Ky0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29u ZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19k ZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZS T00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9y IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAz MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBw ZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorTElORSAz OiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkg VE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gRVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3Vs ZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkg VE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKK0VSUk9S OiAgb25lIHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNl IHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMC4uLgorICAgICAg ICAgICAgICAgICAgICAgXgorLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9y IGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjIgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8g KDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gbm8gZXJyb3I6 IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBlcXVhbCB0byBsb3dlciBhbmQgdXBwZXIg Ym91bmRzIG9mIHNhbGVzX2RlYzIwMjIgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIw MjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQor LS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZIENP TlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAn UG9pcm90Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKAorc2FsZXNwZXJzb25faWQg SU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLAorc2FsZXNfYW1v dW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK1NFTEVDVCBwZ19nZXRfY29u c3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdI RVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQg T1JERVIgQlkgY29ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25z dHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFt ZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+ IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNf cmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3Bl cnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxl c19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9CisoMiByb3dzKQorCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CistLSBXZSBzaG91bGQgc2VlIHRoZSBzYW1lIENP TlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBwYXJ0aXRpb24KK1NFTEVD VCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIwMjInOjpyZWdjbGFzczo6 b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBj b25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1v dW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBz YWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNh bGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8 IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK1NF TEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFz czo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNf YW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkg KHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lk KSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisK K1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJP TSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdj bGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2Fs ZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBL RVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3Mp CisKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZp b2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVj ayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEn KTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xh dGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgxLCAwLCAwMy0xMS0yMDIyKS4KKy0t IEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25f aWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAy Mi0wMy0xMScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19t YXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9z YWxlc3BlcnNvbl9pZF9ma2V5IgorREVUQUlMOiAgS2V5IChzYWxlc3BlcnNvbl9pZCk9KC0x KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAic2FsZXNwZW9wbGUiLgorLS0gb2sKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAzLTExJyk7CitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENB U0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRh YmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlHTiBLRVkgcmVmZXJlbmNlIGZyb20gYW5v dGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzIChz YWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSk7CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElU SU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICAnUG9pcm90JyksCisgICgxMCwg J01heScpLAorICAoMTksICdJdmFub3YnKSwKKyAgKDIwLCAnU21pcm5vZmYnKSwKKyAgKDMw LCAnRm9yZCcpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTCisgICgxLCAgMTAwLCAnMjAy Mi0wMy0wMScpLAorICAoMSwgIDExMCwgJzIwMjItMDMtMDInKSwKKyAgKDEwLCAxNTAsICcy MDIyLTAzLTAxJyksCisgICgxMCwgOTAsICAnMjAyMi0wMy0wMycpLAorICAoMTksIDIwMCwg JzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1MCwgICcyMDIyLTAzLTEyJyksCisgICgyMCwgMTcw LCAnMjAyMi0wMy0wMicpLAorICAoMzAsIDMwLCAgJzIwMjItMDMtMDQnKTsKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUx MF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAg ICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAg ICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFS VElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwK KyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRP ICg0MCkpOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBzYWxlc3Blb3BsZTEwXzIwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgorKDIgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc3Blb3BsZTIwXzMwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz cGVvcGxlMzBfNDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAzMCB8IEZv cmQKKygxIHJvdykKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJz YWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJz b25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjIt MDMtMDQnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2Zr ZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lkKT0oNDApIGlzIG5vdCBwcmVzZW50 IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFM VUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURF OworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0 IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04g T0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMg KDEsICAnUG9pcm90Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNl cnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFT ICRCT0RZJAorQkVHSU4KKwlSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rp b24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dI RU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworQ1JFQVRF IFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisg ICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFU RU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo J3NhbGVzcGVvcGxlJyk7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNl cnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQor ICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9y b3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUg aGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVF UyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDog YWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0 cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFG VEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUg KHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMTksICdJdmFu b3YnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0g SU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc3Bl b3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAg UEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzAp IFRPICg0MCkpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0 ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2Zm Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElO U0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxl c3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwg PSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNF OiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4g PSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF8yMDsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUyMF8zMDsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKygxIHJvdykKKworU0VMRUNU ICogRlJPTSBzYWxlc3Blb3BsZTMwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgMzAgfCBGb3JkCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FT Q0FERTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQor LS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYg c3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2Yg bmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBB UyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUxXzIgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eSBjb2x1 bW46CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5UIE5P VCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgRk9SIFZBTFVFUyBG Uk9NICgyKSBUTyAoNSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25f bmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7CitTRUxFQ1QgYXR0bmFtZSwg YXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRu dW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBTcGxpdCBwYXJ0aXRpb24g aGFzIGlkZW50aXR5IGNvbHVtbjoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBB UlRJVElPTiBzYWxlc3Blb3BsZTJfNSBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUy XzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNwZW9w bGUzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04gc2FsZXNw ZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSkpOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsK K1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxXzI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz cGVvcGxlMl8zOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBJdmFu b3YKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTNfNDsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwgTWF5CisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGU0XzU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgNCB8IEZvcmQKKygxIHJvdykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBh dHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0 cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsK KyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVy c29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAg ICAgICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRn ZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVs aWQgPSAnc2FsZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsK KyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVy c29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAg ICAgICB8IAorKDIgcm93cykKKworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBpZGVudGl0eS1j b2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNw ZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFt ZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBh ICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIg cm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNw ZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFt ZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBh ICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIg cm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNw ZW9wbGU0XzUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFt ZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBh ICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIg cm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6 IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25f aWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVz cGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBuZXcgcGFy dGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMKKyAgKCdkdW1teSB2YWx1ZSAx JywgMTksIDEwMCwgbm93KCksICdJdmFub3YnKSwKKyAgKCdkdW1teSB2YWx1ZSAyJywgMjAs IDEwMSwgbm93KCksICdTbWlybm9mZicpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80 MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBD T0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQz OworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgz MCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBz YWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUy MF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVz cGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CitzZWxlY3QgKiBm cm9tIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBf MjA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgorICAg ICAgICAgICAgIDEwIHwgTWF5CisoMiByb3dzKQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVv cGxlMjBfMzA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAyMCB8IFNtaXJu b2ZmCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUzMF80MDsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDMwIHwgRm9yZAorKDEgcm93KQorCitEUk9Q IFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgc3ViLXBh cnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQg SU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJ T04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19k YXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAn MjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyks CisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0y OCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwg J1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAz NzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAg fCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAg ICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNt aXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgor ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAy LTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8g ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAg ICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAy MgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAg ICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworQUxURVIgVEFC TEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy Ml8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIw JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNUICogRlJPTSBzYWxl c19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkg ICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAg NTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8 ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29u ICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2 YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1 LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAg ICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xMF8yMDsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJf MjBfMzA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxIHJvdykKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0K Ky0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5n CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIw KSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBC WSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVy ZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1Zs YWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vh c3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAi c2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgn TGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vh c3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdI ZWxzaW5raScpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAi c2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFy dGl0aW9uICJzYWxlc19ub3JkIgorTElORSAzOiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0 aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFs IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2Jykp OworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdp dGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorTElORSAyOiAgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBO VUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVF UyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUg TlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5F IDI6IC4uLnNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcsIE5VTEwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24g InNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0 aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxo aScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBh cnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNw bGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNh dXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKK0VSUk9SOiAgbmV3IHBh cnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFs cmVhZHkgZXhpc3RzCitMSU5FIDU6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFV TFQpOworICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0Owor LS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9u aW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdo aWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90 IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91 bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19z dGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3Nsbycp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAn QmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVM TCk7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwg YnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElU IFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9S IFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxh ZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25z IGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCistLSBF UlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3Bs aXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCBOVUxMKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBo YXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKKy0tIEVSUk9SICBE RUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0 IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dl c3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxV RVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQp OworRVJST1I6ICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitMSU5FIDY6ICAg IFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAg ICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFy dGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91 bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19z dGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBP TiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJ TkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0 cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1 cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRp dm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9u YW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAg KCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisg ICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAor ICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwK KyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0Jyks CisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycp LAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEn KSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2 JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0w OScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMt MTEnKSwKKyAgKCdIYWxkZXInLCAgICdIZWxzaW5raScsICAgICAgICA4MDAsICcyMDIyLTAz LTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0w My0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjIt MDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIy LTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAy Mi0wMy0wNScpOworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2JykpOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0OworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgICAgfCAgICAgICAg IDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAg IHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgICAgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAg IHwgQmVybGluICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAg ICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAg IDIwMDAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgICAg IHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAg ICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAg IDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAg IHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisgICAgICAg ICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsgICAgICAgfCAgICAgICAg ICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAg IHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAg ICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgICAgfCAgICAgICAg ICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgICAg IHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisoMTQgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc193ZXN0OworIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgICAgIHwgTmV3IFlvcmsgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAg ICAgIHwgTWFkcmlkICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAg ICAgICAgMTQgfCBQbGF0byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgfCAgICAgICAgICA5 NTAgfCAwMy0wNS0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Vhc3Q7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICB8ICAgICAg ICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAg ICAgfCBWbGFkaXZvc3RvayB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUt MjAyMgorICAgICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IE9zbG8gICAgICAg ICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICAgICA5IHwgTWF5 ICAgICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEt MjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8IEhlbHNpbmtpICAg ICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAyMgorKDQgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19jZW50cmFsOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwg V2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAg IDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgfCAgICAgICAgIDEwMDAgfCAw My0wMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAgICAgMTMgfCBH YW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0y MDIyCisoNCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMg YWZ0ZXIgc3BsaXR0aW5nIHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsK K1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJh bCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAg ICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAy MgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwg ICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwg MDMtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VU IGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0g VGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9u cyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2Yg cGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwK KyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp LAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOwor U0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3 NyB8IDAxLTA5LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIy XzFkZWNhZGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTA5LTIwMjIKKyAgICAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0wNy0yMDIyCiso MiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2FwcjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgor ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBT bWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDggcm93cykK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBz cGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBi ZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBT UExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXkn LCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAg JzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp LAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0Rl ZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1 MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAg NTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRl Y2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUICog RlJPTSBzYWxlc19qYW4yMDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5 LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTA5LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBv aXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0wNy0yMDIyCisoMiByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAg MTc1IHwgMDMtMDgtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAg ICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIK KygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAg ICA1MTAgfCAwNS0wNC0yMDIyCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAg IHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAg ICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDggcm93cykKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBw YXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNw YWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAg IDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAg ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAx ODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwg ICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8 IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgIDE0IHwgU21p dGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAx LTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy MjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAg ICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxl ciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAg MTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAg ICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVHJ5 IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVyIHRhYmxlLgorLS0KK0NSRUFURSBUQUJM RSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVCAodCk7CitDUkVBVEUgVEFC TEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZBTFVFUyBJTiAoJ0EnKTsKK0NSRUFURSBU QUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKKy0tIEVS Uk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAi dDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCisgICAoUEFS VElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisgICAgUEFSVElU SU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworRVJST1I6ICByZWxh dGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0RST1Ag VEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRp b24gb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGku aW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVM VCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9p ZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQor IHRwXzBfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpIHwgdAorKDEgcm93KQorCitB TFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9O IHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gUGFydGl0aW9ucyBzaG91bGQg YmUgdGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lz dGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5o ZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0g J3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpIHwgdAorIHRwXzFfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwg dAorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRp b25zIGluaGVyaXQgcGFyZW50J3MgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50 IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkK KyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7 CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8K KyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQ QVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1NFTEVDVCB0 YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1l IElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOwor IHRhYmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8xICAgIHwg cmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJv d3MpCisKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBn X2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8y JykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIg QlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgIGlu ZGV4bmFtZSAgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCB0X3BrZXkgICAgICB8IHJlZ3Jl c3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCB0cF8wXzFfcGtleSB8IHJlZ3Jlc3NfdGJsc3Bh Y2UKKyB0cF8xXzIgICAgfCB0cF8xXzJfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJv d3MpCisKK0RST1AgVEFCTEUgdDsKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRz IHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBh cnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFu ZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBV U0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQ TElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdf Y2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJ TiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xh c3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CisgcmVsbmFtZSB8ICAgICAgICBhbW5hbWUgICAg ICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFy dGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8wXzEgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0 cF8xXzIgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUg dDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKy0tIFRlc3Qg cGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0 YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxp dC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRF IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQ TElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMikpOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMikpOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMgorUkVTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RST1AgVEFCTEUgdDsK K1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitE Uk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworLS0gU3BsaXQgcGFydGl0aW9uIG9mIGEgdGVt cG9yYXJ5IHRhYmxlIHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRpb25zIGFmdGVyCistLSBzcGxp dCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcGFydGl0aW9uIGJlaW5nIHNwbGl0CitDUkVB VEUgVEVNUCBUQUJMRSB0IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFU RSBURU1QIFRBQkxFIHRwXzAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wIElOVE8KKyAgKFBB UlRJVElPTiB0cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9O IHRwXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworLS0g Q2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVB VEUgVEFCTEUgdF9iaWdpbnQgKAorICBiIGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysx MCksCisgIGogaW50IERFRkFVTFQgMTAxLAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChiKzEwKSBTVE9SRUQKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFC TEUgdF9iaWdpbnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0t IFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQr IHRfYmlnaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9u ZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnQiCisgQ29sdW1uIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVs dCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxh aW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYikKK1Bh cnRpdGlvbnM6IHRfYmlnaW50X2RlZmF1bHQgREVGQVVMVAorCitcZCsgdF9iaWdpbnRfZGVm YXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRp dGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRfZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAg ICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgREVGQVVMVAorTm8g cGFydGl0aW9uIGNvbnN0cmFpbnQKKworQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFS VElUSU9OIHRfYmlnaW50X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAx XzEwIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2lu dF9kZWZhdWx0IERFRkFVTFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRl ciBTUExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50 X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxs YWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdl IHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAg fCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBr ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3 YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor UGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxUCitQYXJ0aXRpb24gY29uc3RyYWludDog KE5PVCAoKGIgSVMgTk9UIE5VTEwpIEFORCAoKGIgPj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8 ICcxMCc6OmJpZ2ludCkpKSkKKworXGQrIHRfYmlnaW50XzAxXzEwCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEu dF9iaWdpbnRfMDFfMTAiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2Ug fCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8 IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsg ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdh eXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQ YXJ0aXRpb24gb2Y6IHRfYmlnaW50IEZPUiBWQUxVRVMgRlJPTSAoJzAnKSBUTyAoJzEwJykK K1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGIgSVMgTk9UIE5VTEwpIEFORCAoYiA+PSAnMCc6 OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50KSkKKworRFJPUCBUQUJMRSB0X2JpZ2lu dDsKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRB QkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJM RSB0cF8wXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgyKTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6Citc ZHQgdHBfMF8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVz CisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAg ICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9u X3NwbGl0X3NjaGVtYSB8IHRwXzBfMiB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2UKKygxIHJvdykKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBf MF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK Ky0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgor XGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxl cworICAgICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAg ICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgfCB0cF8wXzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlCisoMSByb3cpCisKK1xkdCB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5h bWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUg fCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorKDEgcm93KQorCitEUk9QIFRBQkxF IHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CistLSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBz aG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlv bgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEp LCAoMTYpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpIFJF VFVSTlMgaW50ZWdlciBBUyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd5b3UgYXJlIHJ1 bm5pbmcgbWUgYXMgJScsIENVUlJFTlRfVVNFUjsKKyAgUkVUVVJOICQxOworRU5ECiskJCBM QU5HVUFHRSBQTFBHU1FMIElNTVVUQUJMRTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsKK05P VElDRTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZQorTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CistLSBPd25lciBz aG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwXzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8x NSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIw IEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworTk9USUNFOiAgeW91IGFyZSBydW5u aW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3Ug YXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK0RST1Ag VEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpOworUkVWT0tFIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl OworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NS RUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVT IDIsIFJFTUFJTkRFUiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0 aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9E VUxVUyA0LCBSRU1BSU5ERVIgMCksCisgICBQQVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBX SVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAyKSk7CitFUlJPUjogIHBhcnRpdGlvbiBvZiBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdAorLS0gRVJST1I6ICBsaXN0 IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBBUlRJVElPTiB0 cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDApKTsKK0VSUk9S OiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28g aXRlbXMKK0RST1AgVEFCTEUgdDsKKy0tIEFkZGl0aW9uYWwgdGVzdHMgZm9yIGVycm9yIG1l c3NhZ2VzCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwg c2FsZXNwZXJzb25fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNf ZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKy0tIEVSUk9SOiAg dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwg dG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf YXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv bgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworUkVTRVQgc2VhcmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNjQ2NGEyMzhhYy4uYTk4YWVmN2Nh MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMsNyArMTIzLDcg QEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFu Z2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRz IHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGlu CiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9tZXJnZSBw YXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5k ZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhw bGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0OiBw YXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlv bl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVn YXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9p emUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24g Y3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0 IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFmN2I1OTJiYTAK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3Bs aXQuc3FsCkBAIC0wLDAgKzEsMTEwNiBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0g VGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFu ZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworQ1JFQVRF IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRp dGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25h bWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9h cHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisK Ky0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgaW52YWxpZCBi b3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0w MScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmll ZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3Vs ZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIG5h bWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCistLSAoV2UgY2Fu IGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlv biwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUp CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCist LSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFy X2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxl c19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOwor CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIg Y29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBUZXN0 cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUgZXhlY3V0 ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug REVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0tIEVSUk9SOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNo IHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJs aWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitT UExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisKKy0tCistLSBB ZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisg ICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcy MDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwK KyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcp LAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0 Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUICogRlJP TSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAq IEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJz OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBBZGQgc3Bs aXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIFNwbGl0 IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFy dGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3Nj aGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5z YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJP TSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNU ICogRlJPTSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyOworU0VMRUNU ICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3QgZm9yOgor LS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1 bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVh ciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBW QVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6 dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAn KSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAg c2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50 JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxV RVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUp OworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAy MSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIz JywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5h Z2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgn TWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAor ICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0 ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNf amFuX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCitBTFRFUiBUQUJM RSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEp IFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKKworSU5TRVJUIElOVE8g c2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwg c2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdN YW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOwor U0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4y MDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcjsKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9l cyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0RST1Ag VEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgREVGQVVM VCBwYXJ0aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBpbmRl eCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19y YW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwK KyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp LAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUg dGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u X3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIFVzZSBp bmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBP TjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19m ZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9OOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNUICogRlJP TSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2No ZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7 CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290 aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIg QlkgaW5kZXhuYW1lOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0t CistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24g KGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2Rl YzIwMjIgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91 cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19k ZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIw MjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERF RkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAy MiAodXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMg cGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAy MDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChp bnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRp dGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjAp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIw MSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChleGFj dGx5IHRoZSBzYW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlv dXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBE RUZBVUxUKTsKKworLS0gRVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3Vs ZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkg VE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKKworLS0g bm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2Rl YzIwMjIgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIy MDEyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZB VUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxl c19ub2Vycm9yIGFyZSBlcXVhbCB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVz X2RlYzIwMjIgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Rl YzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgy MDIxMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBE RUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNw bGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBv biBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVS RU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLAorc2FsZXNfYW1vdW50IElOVCBD SEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFp bnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGNvbm5hbWU7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0g V2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwg Y29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdz YWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKK1NFTEVD VCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6 b2lkIE9SREVSIEJZIGNvbm5hbWU7OworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQg PSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisK Ky0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xh dGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsK Ky0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJz b25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAn MjAyMi0wMy0xMScpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MSwgMTAsICcyMDIyLTAzLTExJyk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FE RTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNw bGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5n IEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVy c29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVS RU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2 YW5vdicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAsICdGb3JkJyk7CisKK0lOU0VS VCBJTlRPIHNhbGVzIFZBTFVFUworICAoMSwgIDEwMCwgJzIwMjItMDMtMDEnKSwKKyAgKDEs ICAxMTAsICcyMDIyLTAzLTAyJyksCisgICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpLAorICAo MTAsIDkwLCAgJzIwMjItMDMtMDMnKSwKKyAgKDE5LCAyMDAsICcyMDIyLTAzLTA0JyksCisg ICgyMCwgNTAsICAnMjAyMi0wMy0xMicpLAorICAoMjAsIDE3MCwgJzIwMjItMDMtMDInKSwK KyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9w bGUwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAo MjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEw OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzIwOworU0VMRUNUICogRlJPTSBzYWxl c3Blb3BsZTIwXzMwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTMwXzQwOworCistLSBF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJU IElOVE8gc2FsZXMgVkFMVUVTICg0MCwgNTAsICAnMjAyMi0wMy0wNCcpOworLS0gb2sKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKworRFJP UCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURF OworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxl IHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJz b25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElP TiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMg dHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5P VElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9 ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJO IE5VTEw7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2Fm dGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9O IHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9D RURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCitDUkVB VEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBB RlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAg IEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9w bGUnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1l bnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworLS0g MSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZTEwXzQwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElU SU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAg IFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMw KSBUTyAoNDApKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBz dGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJu b2ZmJyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJ TlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworU0VMRUNUICog RlJPTSBzYWxlc3Blb3BsZTAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzIw OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTIwXzMwOworU0VMRUNUICogRlJPTSBzYWxl c3Blb3BsZTMwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CitEUk9Q IEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVzdDog c3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFy dGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRp dGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElU WSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo Mik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNvbHVtbjoKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQgTk9UIE5VTEws IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNwZW9w bGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVTIEZST00gKDIp IFRPICg1KTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUp IFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOworCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQg RlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2Fs ZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKy0tIFNwbGl0 IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4g MCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGF0dG51bTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9O IHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfMyBGT1Ig VkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTNfNCBG T1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTRf NSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdNYXknKSwgKCdGb3JkJyk7CisKK1NF TEVDVCAqIEZST00gc2FsZXNwZW9wbGUxXzI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxl Ml8zOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTNfNDsKK1NFTEVDVCAqIEZST00gc2Fs ZXNwZW9wbGU0XzU7CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJh dGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0g J3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1Qg YXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBpZGVu dGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0 ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAn c2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRl IFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRp dHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFO RCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkg YXR0bnVtOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVy c29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBu ZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1bW15 IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZhbHVl IDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9Q IENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElP TiBzYWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAs ICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBT UExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElU SU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAg IFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0 MCkpOworCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7CitzZWxlY3QgKiBmcm9t IHNhbGVzcGVvcGxlMTBfMjA7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMjBfMzA7Citz ZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMzBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9w bGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2Fs ZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp OworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHgg T04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92Jywg ICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAg KDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAor ICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRv JywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAn MjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7 CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fw cjIwMjI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2Fwcl9hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0x MCcpIFRPICgnMjAyMi0wNC0yMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMjBf MzAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsK KworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMl8xMF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8y MF8zMDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEJZIExJU1QgcGFy dGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBM SVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNw ZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNf c3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERB VEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3Ns bycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdE ZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgbmV3 IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5v dCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193 ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhp JywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2Vu dHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0 aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFs IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2Jykp OworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZl IE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFM VUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdL eWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5v dCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2 ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp LAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5v dCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05l dyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQp OworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiB0d28gc3BlY2lm aWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0 aW9ucyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFz LgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxp dCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNw ZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNf c3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERB VEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVs c2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdE ZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CisKKy0tIEVSUk9SOiAgbmV3 IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9u IGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFS VElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2 YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAn RGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZP UiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworCistLSBFUlJPUiAg REVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193 ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhp JywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFM VUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxU 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 TU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworCitEUk9QIFRBQkxFIHQ7CisKKworLS0gQWRk aXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzAp LCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wNS0wMScpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBh cnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCisKK1JFU0VUIHNlYXJjaF9wYXRoOworCistLQorRFJPUCBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAyMDM4NjAzYzA4 Li41NmFjNDQ3Mjg4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjgyNyw2 ICsyODI3LDcgQEAgU3BlY2lhbEpvaW5JbmZvCiBTcGluRGVsYXlTdGF0dXMKIFNwbGl0SW50 ZXJ2YWwKIFNwbGl0TFIKK1NwbGl0UGFydGl0aW9uQ29udGV4dAogU3BsaXRQYWdlTGF5b3V0 CiBTcGxpdFBvaW50CiBTcGxpdFRleHRPdXRwdXREYXRhCi0tIAoyLjQwLjEud2luZG93cy4x Cgo= --------------RnP9P61yxRX2bFOuVDWtLN8L--