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 1s9lOW-004zIQ-HX for pgsql-hackers@arkaria.postgresql.org; Wed, 22 May 2024 12:48:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1s9lOW-00Gpbf-Bb for pgsql-hackers@arkaria.postgresql.org; Wed, 22 May 2024 12:48:36 +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 1s9lOV-00GpbX-C2 for pgsql-hackers@lists.postgresql.org; Wed, 22 May 2024 12:48:36 +0000 Received: from mail-mw2nam04olkn2040.outbound.protection.outlook.com ([40.92.46.40] helo=NAM04-MW2-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s9lOP-000CcY-7K for pgsql-hackers@postgresql.org; Wed, 22 May 2024 12:48:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZmZbj7Oq2nKwMyMbBOisNabhfEHlJFwbnx8BQ1mJ+zkKXRSvzf9yYk5W0xS0DRe5G9iMGkZdRIrJce3JoaFYlDiafkU5glty9UnV+P0LyNnmt/BIR+fmZHXw/e0/08c/ChPrBIBk0y4G//mpZX2mCYhsVIKaHQfRAUeYA/Ryvi3IYuFNX5xUchd08x8z4zh0TIHJR5jDOjKMx4rRZjZnuXFj6efbXGPS3qfbtwp1JuNAWPxmNy2M0wHsbKAjOF61VjWIASgXzzXCPyhqtQuBKaNyxjASwM3sL68pbdkIe4tK6tm1Puf+LzsYR3AU6dNMye+ewSGqgxWfql8wQog92w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Xubc2mZxEeKWUXbSD7skS7wX53tPYdJdklLhmcZT0Fw=; b=Id4cODTSWTD+GlzV+IUsl3f0zuPb5VWblca/Zxin35dm+o36+TllLH9rhLBMrQyNWdnOvSS7rYkUYth0ZWhNej/rI+IDQAzBI26CwGtFzaIgezL1v41RK0Et2Ith+htyMS/p4tk0rnpPiEmgEj9ucMK8fBuRwTnSYL94FOWAlAM3Zi9E32yUiJfKcldl124MEEKudTxK7URML95MQU7YqLe3vcx/2GmW/MSDCMX7Om+TLOyFWJhknVb4DGX069+lctp9f13uR60xeg2Ilv5SqtQbG1uA29/kQq9uViaAQWhgQTafYHURaaqPBN+47Zrlcp/U2+n1UgqZ6kzVzcCl9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xubc2mZxEeKWUXbSD7skS7wX53tPYdJdklLhmcZT0Fw=; b=rXN4wKFc53IdXMxGef0JbtuZn6vn3d8BIYzPxw/3AVCqpEAvtkJGYjaV48QCRx9zUsOswyvIoTFfzwHoU2fSnWDcTTnLrQ7XsiD/4qUXVAZygDq8uUS4Z+u/2H4fUwVMDK9gYQo7CYl1NkksB9IxXZj74hnB8w8ExCQNlN/bEgMP5t4ScO6VtoKnSjBtAbkOM7dBmW8s4agZfl+Z81FxWzrDHP64r0Jnw23Dr1Oy0zvNnefwtOIuyrLgkZ2deWX6G3BCdBwPH4PuhBZyqq4EySSpJfoP0k7KbiObYo1btrwq+py1JC1wrIu4XzlZfK9giOGBKMmgVuBDYhobP8hHgw== Received: from PH7P220MB1533.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:315::8) by LV8P220MB1356.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.36; Wed, 22 May 2024 12:48:24 +0000 Received: from PH7P220MB1533.NAMP220.PROD.OUTLOOK.COM ([fe80::e410:a56a:2599:1bcf]) by PH7P220MB1533.NAMP220.PROD.OUTLOOK.COM ([fe80::e410:a56a:2599:1bcf%4]) with mapi id 15.20.7587.035; Wed, 22 May 2024 12:48:24 +0000 From: Wang Yao To: PostgreSQL Hackers CC: "interma@outlook.com" Subject: An implementation of multi-key sort Thread-Topic: An implementation of multi-key sort Thread-Index: AQHarEVLhoCeLG8Vs0Wga/h8fLJtTw== Date: Wed, 22 May 2024 12:48:23 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [yXgcmugv1CpEqwhRRf/DmKK7msuLtPZTlt2rLUFe5mRSEmbx81hlPrTI+s+1UBmE] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7P220MB1533:EE_|LV8P220MB1356:EE_ x-ms-office365-filtering-correlation-id: 8634d1b6-9b53-4c08-f0fc-08dc7a5d77cc x-microsoft-antispam: BCL:0;ARA:14566002|6092099003|461199019|1602099003|102099023|3412199016|440099019; x-microsoft-antispam-message-info: +i4JF4/SKjt+H3duDUwB9x9gnsv6V8F1nwfyoxYIrTQ9sYi8YtsQPTaxSoMNDte5Jen65vY2Wy3euRCqfUik6onGIGwFOBEPxlsmPpxqzyBavlL+X4SBHHYvZSBFZM82SbFAEqmzw4m3N4M/WLu1JuthKAYcQzdNHC9ExJb2qeMR0UYjTy7dTzS6PSQS81i93StOowTSs4rO19R0SNHAJstxffHMZRb9zr0eEUZpOFKoMIopQIoASdfYFarQehtYNNqA+wcFILuYeUvi7FHcbIOwZZbVOxGVtqGcX5nbtksjtruQtL9mwBJZmFIUVw3jAvLVsOWqYZZ6Q6y9S69/emss4s+xPWCk9W3Px426Lw1IIr3ZEKOxQkQ6nGP7tNZQoGu0r4wziVAB/Y/8XjLtnMy82tJ758/3tARxznu/cHoIYtrc4wJ7ACRdQ7PWzZvv1DoIt8eQZRnwoqZTUtNwC2gZotWmVBRKrU7deP9FLv+NakXzuwPxZihOgGz6UlANdmlbqTtt6qXEvw6P343CadoaLxvTJcM0+txubv8DYn4f2bgVLeCt2Ig6mh5QA4t2z2nxzq5fqAPz1UXrBeHjZ8ppmlOfjs3ni1iyQzZQ9MUl3AY5PhuQimpAP+W8rHkPiuB+n95P8y2BHpZ+c0ZqfUuNOylj5wn1TwPpgnmJJuI2KGFuvc9x7b/NIBkyyOd7 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?p+SQCgBlTMbpG43RbPHFC8bcsN0EzRZ7HOHU4XKCiasBW4YCnHzgtwqsYw?= =?iso-8859-1?Q?4sAOaUaA4VQbX3kj2vkTuzIGjYiIFxkyQfP9e8QerclTnSzgLtAxNOAuM+?= =?iso-8859-1?Q?tbwauSGKJvuVbcksSiXl5Zn48R2fPWzSHdvmqoedGbY92Xy6SXM/TDmf9b?= =?iso-8859-1?Q?Lzq7q73GBOj5FLDUkOjcFLeBCjaVs+PGroux+Z5CLf3+uKPKyFTF44TIUS?= =?iso-8859-1?Q?GLpICXcbTxnGVLhmJYSfTgXcljlZmobsqu4XjD85lS1Epbdo4SlFgzIUhJ?= =?iso-8859-1?Q?mLs09L/7ugZMz3loD6iy7y1K4gXfXF/H0hQaPQtZ2yHBpeep07gNVhKg2H?= =?iso-8859-1?Q?lEVO+6Y0sQAqAc4Kr0CCIKBuQCG9klPNkmQo/T3JLkDO0QQe7ebmPYYxJV?= =?iso-8859-1?Q?DjB1xGcQndATR8iimzEWYD/I6CuWg8r4GcrzW6BVowy5qEZf2uw2dpjssU?= =?iso-8859-1?Q?1xz9ZCT2C1LWoU1uLFnGOrLUjsOJStrjJW5LlzzBxYwzq5QRxvH/BbTEr0?= =?iso-8859-1?Q?4VIbo4A+HmxVkobgtxyL9DOnPmvosRfopFoaXKYEZC6tfiq6YKe6j6CRyW?= =?iso-8859-1?Q?WTNPU6jhwl3zOjBQ0DovZ3zxu8kjkvd9M9yvfVqPdtAlUJGSRT1KB7DMRM?= =?iso-8859-1?Q?sdodmlHq4GzX4ZpdpewX+JZy6HNgGV4iebbVY6cfAHJB96Yaq44Y1+Kf4C?= =?iso-8859-1?Q?J4tfZ9FGtO3xjSia6IHU7PIUzk2fjbSsWaiDT0Hg4/rTgL4bTq8sQVY8Ea?= =?iso-8859-1?Q?+7Mab3ETYBe+mgnA4YU4kb6h/pcad9RuATnNEvAg5bZIkUYQlw6L3b5Wcz?= =?iso-8859-1?Q?KFY363omAFqdD60Rgw51hVI8WSD0ZF45SUi69Dwrr/c4DP+XfslJDxGpYC?= =?iso-8859-1?Q?pPs3iWqtbIHJMCT4aDVXb1h63R3erKnCkQV6RvFsh0AXbXDRhyeCymKa4s?= =?iso-8859-1?Q?0avUmRnM/kHpbma5D2okJmTck9g8fkbGiKCH/+jXxBG+xNWTL+zUKRPqfw?= =?iso-8859-1?Q?BdolTS4zJgzYT59NhZmwvbtQvjCswJsVbBwrmjtelem+fpg3fafnmRs9W1?= =?iso-8859-1?Q?xdAxLk0biZ3FDzjqDkHsjHIeKF3iF5mSjzU+FISzPVL2fkGpgoTj6lZl0q?= =?iso-8859-1?Q?5aDhWN1FoC/U4eYoGaycS9joVOvLk/XrvTY4XAh0Tsnr4BXUGn46UDcuDo?= =?iso-8859-1?Q?wYBXSLe4QIycC/U2yNhiIKsBvLiWa/PA6Bg+OpukdUeS9OqwGDwQ3KTOFj?= =?iso-8859-1?Q?E2Ztf0+ukPEgewA7mOhnJvlakuk8B35F023dr23MF2fmfOn94yHI4TQmhl?= =?iso-8859-1?Q?p/1knlPPV9YL1b1gxIoiHErcxtB00+CTrLngKMSxVK0k0Zo=3D?= Content-Type: multipart/mixed; boundary="_002_PH7P220MB1533DA211DF219996760CBB7D9EB2PH7P220MB1533NAMP_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7P220MB1533.NAMP220.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 8634d1b6-9b53-4c08-f0fc-08dc7a5d77cc X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2024 12:48:23.9964 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8P220MB1356 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_PH7P220MB1533DA211DF219996760CBB7D9EB2PH7P220MB1533NAMP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi hackers,=0A= =0A= I'd submit an implementation of multi-key sort for review. Please see the= =0A= code as attachment. Thanks for your reponse in advance.=0A= =0A= =0A= Overview=0A= --------=0A= =0A= MKsort (multi-key sort) is an alternative of standard qsort algorithm,=0A= which has better performance for particular sort scenarios, i.e. the data= =0A= set has multiple keys to be sorted.=0A= =0A= The implementation is based on the paper:=0A= Jon L. Bentley and Robert Sedgewick, "Fast Algorithms for Sorting and=0A= Searching Strings", Jan 1997 [1]=0A= =0A= MKsort is applied only for tuple sort by the patch. Theoretically it can=0A= be applied for general-purpose sort scenario when there are multiple sort= =0A= keys available, but it is relatively difficult in practice because kind of= =0A= unique interface is needed to manipulate the keys. So I limit the usage of= =0A= mksort to sort SortTuple.=0A= =0A= Comparing to classic quick sort, it can get significant performance=0A= improvement once multiple keys are available. A rough test shows it got=0A= ~129% improvement than qsort for ORDER BY on 6 keys, and ~52% for CREATE=0A= INDEX on the same data set. (See more details in section "Performance=0A= Test")=0A= =0A= Author: Yao Wang =0A= Co-author: Hongxu Ma =0A= =0A= Scope=0A= -----=0A= =0A= The interface of mksort is pretty simple: in tuplesort_sort_memtuples(),=0A= mksort_tuple() is invoked instead of qsort_tuple() if mksort is applicable.= =0A= The major logic in mksort_tuple() is to apply mksort algorithm on=0A= SortTuple, and kind of callback mechanism is used to handle=0A= sort-variant-specific issue, e.g. comparing different datums, like=0A= qsort_tuple() does. It also handles the complexity of "abbreviated keys".= =0A= =0A= A small difference from classic mksort algorithm is: for IndexTuple, when= =0A= all the columns are equal, an additional comparing based on ItemPointer=0A= is performed to determine the order. It is to make the result consistent=0A= to existing qsort.=0A= =0A= I did consider about implementing mksort by the approach of kind of=0A= template mechanism like qsort (see sort_template.h), but it seems=0A= unnecessary because all concrete tuple types need to be handled are=0A= derived from SortTuple. Use callback to isolate type specific features=0A= is good enough.=0A= =0A= Note that not all tuple types are supported by mksort. Please see the=0A= comments inside tuplesort_sort_memtuples().=0A= =0A= Test Cases=0A= ----------=0A= =0A= The changes of test cases include:=0A= =0A= * Generally, mksort should generate result exactly same to qsort. However= =0A= some test cases don't. The reason is that SQL doesn't specify order on=0A= all possible columns, e.g. "select c1, c2 from t1 order by c1" will=0A= generate different results between mksort/qsort when c1 values are equal,= =0A= and the solution is to order c2 as well ("select c1, c2 from t1 order by=0A= c1, c2"). (e.g. geometry)=0A= * Some cases need to be updated to display the new sort method "multi-key= =0A= sort" in explain result. (e.g. incremental_sort)=0A= * regress/tuplesort was updated with new cases to cover some scenarios of= =0A= mksort.=0A= =0A= Performance Test=0A= ----------------=0A= =0A= The script I used to configure the build:=0A= =0A= CFLAGS=3D"-O3 -fargument-noalias-global -fno-omit-frame-pointer -g"=0A= ./configure --prefix=3D$PGHOME --with-pgport=3D5432 --with-perl --with-open= ssl=0A= --with-python --with-pam --with-blocksize=3D16 --with-wal-blocksize=3D16=0A= --with-perl --enable-tap-tests --with-gssapi --with-ldap=0A= =0A= I used the script for a rough test for ORDER BY:=0A= =0A= \timing on=0A= create table t1 (c1 int, c2 int, c3 int, c4 int, c5 int, c6 varchar(100));= =0A= insert into t1 values (generate_series(1,499999), 0, 0, 0, 0, =0A= 'aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb');=0A= update t1 set c2 =3D c1 % 100, c3 =3D c1 % 50, c4 =3D c1 % 10, c5 =3D c1 % = 3;=0A= update t1 set c6 =3D 'aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbb= b'=0A= || (c1 % 5)::text;=0A= =0A= -- Use a large work mem to ensure the entire sort happens in memory=0A= set work_mem=3D'1GB';=0A= =0A= -- switch between qsort/mksort=0A= set enable_mk_sort=3Doff;=0A= =0A= explain analyze select c1 from t1 order by c6, c5, c4, c3, c2, c1;=0A= =0A= Results:=0A= =0A= mksort:=0A= 1341.283 ms (00:01.341)=0A= 1379.098 ms (00:01.379)=0A= 1369.868 ms (00:01.370)=0A= =0A= qsort:=0A= 3137.277 ms (00:03.137)=0A= 3147.771 ms (00:03.148)=0A= 3131.887 ms (00:03.132)=0A= =0A= The perf improvement is ~129%.=0A= =0A= Another perf test for CREATE INDEX:=0A= =0A= create index idx_t1_mk on t3 (c6, c5, c4, c3, c2, c1);=0A= =0A= Results:=0A= =0A= mksort:=0A= 1147.207 ms (00:01.147)=0A= 1200.501 ms (00:01.201)=0A= 1235.657 ms (00:01.236)=0A= =0A= Qsort:=0A= 1852.957 ms (00:01.853)=0A= 1824.209 ms (00:01.824)=0A= 1808.781 ms (00:01.809)=0A= =0A= The perf improvement is ~52%.=0A= =0A= Another test is to use one of queries of TPC-H:=0A= =0A= set work_mem=3D'1GB';=0A= =0A= -- query rewritten from TPCH-Q1, and there are 6001215 rows in lineitem=0A= explain analyze select=0A= =A0l_returnflag,l_linestatus,l_quantity,l_shipmode=0A= from=0A= =A0lineitem=0A= where=0A= =A0l_shipdate <=3D date'1998-12-01' - interval '65 days'=0A= order by=0A= =A0l_returnflag,l_linestatus,l_quantity,l_shipmode;=0A= =0A= Result:=0A= =0A= Qsort:=0A= 14582.626 ms=0A= 14524.188 ms=0A= 14524.111 ms=0A= =0A= mksort:=0A= 11390.891 ms=0A= 11647.065 ms=0A= 11546.791 ms=0A= =0A= The perf improvement is ~25.8%.=0A= =0A= [1] https://www.cs.tufts.edu/~nr/cs257/archive/bob-sedgewick/fast-strings.p= df=0A= [2] https://www.tpc.org/tpch/=0A= =0A= =0A= Thanks,=0A= =0A= Yao Wang= --_002_PH7P220MB1533DA211DF219996760CBB7D9EB2PH7P220MB1533NAMP_ Content-Type: application/octet-stream; name="0001-Implement-multi-key-sort.patch" Content-Description: 0001-Implement-multi-key-sort.patch Content-Disposition: attachment; filename="0001-Implement-multi-key-sort.patch"; size=76930; creation-date="Wed, 22 May 2024 12:43:33 GMT"; modification-date="Wed, 22 May 2024 12:43:42 GMT" Content-Transfer-Encoding: base64 RnJvbSAxZDU4M2RlYzU0ZWNkNDc5MTJhNWQ2ODAzOGJjOWEwN2MyMzM5YzQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZYW8gV2FuZyA8eWFvd2FuZ21Ab3V0bG9vay5jb20+CkRhdGU6 IFR1ZSwgNyBNYXkgMjAyNCAwODoxMToxMyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxlbWVu dCBtdWx0aS1rZXkgc29ydAoKTUtzb3J0IChtdWx0aS1rZXkgc29ydCkgaXMgYW4gYWx0ZXJuYXRp dmUgb2Ygc3RhbmRhcmQgcXNvcnQgYWxnb3JpdGhtLAp3aGljaCBoYXMgYmV0dGVyIHBlcmZvcm1h bmNlIGZvciBwYXJ0aWN1bGFyIHNvcnQgc2NlbmFyaW9zLCBpLmUuIHRoZSBkYXRhCnNldCBoYXMg bXVsdGlwbGUga2V5cyB0byBiZSBzb3J0ZWQuIENvbXBhcmluZyB0byBjbGFzc2ljIHF1aWNrIHNv cnQsIGl0CmNhbiBnZXQgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb25jZSBt dWx0aXBsZSBrZXlzIGFyZQphdmFpbGFibGUuCgpBdXRob3I6IFlhbyBXYW5nIDx5YW93YW5nbUBv dXRsb29rLmNvbT4KQ28tYXV0aG9yOiBIb25neHUgTWEgPGludGVybWFAb3V0bG9vay5jb20+Ci0t LQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDExICsK IHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvbWtzb3J0X3R1cGxlLmMgICAgICAgICB8IDM1OCArKysr KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYyAgICAgICAg ICAgIHwgIDQ0ICsrCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMg ICAgfCAzMDAgKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2MuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCAgICAg ICAgICAgICAgICAgfCAgMzQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VvbWV0cnku b3V0ICAgICAgICB8ICAgNCArLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvaW5jcmVtZW50YWxfc29y dC5vdXQgICAgIHwgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R1cGxlc29ydC5v dXQgICAgICAgfCAzNzUgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3dpbmRvdy5vdXQgICAgICAgICAgfCAgNTggKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9n ZW9tZXRyeS5zcWwgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3R1 cGxlc29ydC5zcWwgICAgICAgICAgICB8ICA1OSArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dp bmRvdy5zcWwgICAgICAgICAgICAgICB8ICAyMiArLQogMTMgZmlsZXMgY2hhbmdlZCwgMTIxNSBp bnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFj a2VuZC91dGlscy9zb3J0L21rc29ydF90dXBsZS5jCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYwppbmRleCAzZmQwYjE0ZGQ4Li5iOGZlNDQ3ZDY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYwpAQCAtMTAzLDYgKzEwMyw3IEBAIGV4dGVybiBjaGFyICpkZWZhdWx0X3RhYmxl c3BhY2U7CiBleHRlcm4gY2hhciAqdGVtcF90YWJsZXNwYWNlczsKIGV4dGVybiBib29sIGlnbm9y ZV9jaGVja3N1bV9mYWlsdXJlOwogZXh0ZXJuIGJvb2wgaWdub3JlX2ludmFsaWRfcGFnZXM7Citl eHRlcm4gYm9vbCBlbmFibGVfbWtfc29ydDsKIAogI2lmZGVmIFRSQUNFX1NZTkNTQ0FOCiBleHRl cm4gYm9vbCB0cmFjZV9zeW5jc2NhbjsKQEAgLTgzOSw2ICs4NDAsMTYgQEAgc3RydWN0IGNvbmZp Z19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVM TAogCX0sCisJeworCQl7ImVuYWJsZV9ta19zb3J0IiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklO R19NRVRIT0QsCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgbXVsdGkta2V5IiksCisJCQlOVUxM LAorCQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJmVuYWJsZV9ta19zb3J0LAorCQl0cnVlLAorCQlO VUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCXsiZW5hYmxlX2hhc2hhZ2ciLCBQR0NfVVNFUlNF VCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxlcyB0aGUgcGxh bm5lcidzIHVzZSBvZiBoYXNoZWQgYWdncmVnYXRpb24gcGxhbnMuIiksCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9zb3J0L21rc29ydF90dXBsZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv c29ydC9ta3NvcnRfdHVwbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li45NDllOWJiZjhkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9t a3NvcnRfdHVwbGUuYwpAQCAtMCwwICsxLDM1OCBAQAorLyoKKyAqIE1Lc29ydCAobXVsdGlwbGUt a2V5IHNvcnQpIGlzIGFuIGFsdGVybmF0aXZlIG9mIHN0YW5kYXJkIHFzb3J0IGFsZ29yaXRobSwK KyAqIHdoaWNoIGhhcyBiZXR0ZXIgcGVyZm9ybWFuY2UgZm9yIHBhcnRpY3VsYXIgc29ydCBzY2Vu YXJpb3MsIGkuZS4gdGhlCisgKiBkYXRhIHNldCBoYXMgbXVsdGlwbGUga2V5cyB0byBiZSBzb3J0 ZWQuCisgKgorICogVGhlIHNvcnRpbmcgYWxnb3JpdGhtIGJsZW5kcyBRdWlja3NvcnQgYW5kIHJh ZGl4IHNvcnQ7IExpa2UgcmVndWxhcgorICogUXVpY2tzb3J0LCBpdCBwYXJ0aXRpb25zIGl0cyBp bnB1dCBpbnRvIHNldHMgbGVzcyB0aGFuIGFuZCBncmVhdGVyIHRoYW4gYQorICogZ2l2ZW4gdmFs dWU7IGxpa2UgcmFkaXggc29ydCwgaXQgbW92ZXMgb24gdG8gdGhlIG5leHQgZmllbGQgb25jZSB0 aGUgY3VycmVudAorICogaW5wdXQgaXMga25vd24gdG8gYmUgZXF1YWwgaW4gdGhlIGdpdmVuIGZp ZWxkLgorICoKKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgcGFwZXI6Cisg KiAgIEpvbiBMLiBCZW50bGV5IGFuZCBSb2JlcnQgU2VkZ2V3aWNrLCAiRmFzdCBBbGdvcml0aG1z IGZvciBTb3J0aW5nIGFuZAorICogICBTZWFyY2hpbmcgU3RyaW5ncyIsIEphbiAxOTk3CisgKgor ICogU29tZSBpbXByb3ZlbWVudHMgd2hpY2ggaXMgcmVsYXRlZCB0byBhZGRpdGlvbmFsIGhhbmRs aW5nIGZvciBlcXVhbCB0dXBsZXMKKyAqIGhhdmUgYmVlbiBhZGFwdGVkIHRvIGtlZXAgY29uc2lz dGVuY3kgd2l0aCB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHBvc3RncmVzCisgKiBxc29ydC4KKyAq CisgKiBGb3Igbm93LCBta3NvcnRfdHVwbGUoKSBpcyBjYWxsZWQgaW4gdHVwbGVzb3J0X3NvcnRf bWVtdHVwbGVzKCkgYXMgYQorICogcmVwbGFjZW1lbnQgb2YgcXNvcnRfdHVwbGUoKSB3aGVuIHNw ZWNpZmljIGNvbmRpdGlvbnMgYXJlIHNhdGlzZmllZC4KKyAqLworCisvKiBTd2FwIHR3byB0dXBs ZXMgaW4gc29ydCB0dXBsZSBhcnJheSAqLworc3RhdGljIGlubGluZSB2b2lkCitta3NvcnRfc3dh cChpbnQgICAgICAgIGEsCisJCQlpbnQgICAgICAgIGIsCisJCQlTb3J0VHVwbGUgKngpCit7CisJ U29ydFR1cGxlIHQ7CisKKwlpZiAoYSA9PSBiKQorCQlyZXR1cm47CisJdCA9IHhbYV07CisJeFth XSA9IHhbYl07CisJeFtiXSA9IHQ7Cit9CisKKy8qIFN3YXAgdHVwbGVzIGJ5IGJhdGNoIGluIHNv cnQgdHVwbGUgYXJyYXkgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorbWtzb3J0X3ZlY19zd2FwKGlu dCAgICAgICAgYSwKKwkJCQlpbnQgICAgICAgIGIsCisJCQkJaW50ICAgICAgICBzaXplLAorCQkJ CVNvcnRUdXBsZSAqeCkKK3sKKwl3aGlsZSAoc2l6ZS0tID4gMCkKKwl7CisJCW1rc29ydF9zd2Fw KGEsIGIsIHgpOworCQlhKys7CisJCWIrKzsKKwl9Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVy IGN1cnJlbnQgZGF0dW0gKGF0IHNwZWNpZmllZCB0dXBsZSBhbmQgZGVwdGgpIGlzIG51bGwKKyAq IE5vdGUgdGhhdCB0aGUgaW5wdXQgeCBtZWFucyBhIHNwZWNpZmllZCB0dXBsZSBwcm92aWRlZCBi eSBjYWxsZXIgYnV0IG5vdAorICogYSB0dXBsZSBhcnJheSwgc28gdHVwbGVJbmRleCBpcyB1bm5l Y2Vzc2FyeQorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK2NoZWNrX2RhdHVtX251bGwoU29ydFR1 cGxlICAgICAgKngsCisJCQkJIGludCAgICAgICAgICAgICBkZXB0aCwKKwkJCQkgVHVwbGVzb3J0 c3RhdGUgKnN0YXRlKQoreworCURhdHVtIGRhdHVtOworCWJvb2wgaXNOdWxsOworCisJLyogU2lu Y2Ugd2UgaGF2ZSBhIHNwZWNpZmllZCB0dXBsZSwgdGhlIHR1cGxlSW5kZXggaXMgYWx3YXlzIDAg Ki8KKwlzdGF0ZS0+YmFzZS5ta3NvcnRHZXREYXR1bUZ1bmMoeCwgMCwgZGVwdGgsIHN0YXRlLCAm ZGF0dW0sICZpc051bGwsIGZhbHNlKTsKKworCS8qCisJICogTm90ZTogZm9yICJhYmJyZXZpYXRl ZCBrZXkiLCB3ZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBtb3JlIGhlcmUgYmVjYXVzZQorCSAqIGlm ICJhYmJyZXZpYXRlZCBrZXkiIG9mIGEgZGF0dW0gaXMgbnVsbCwgdGhlICJmdWxsIiBkYXR1bSBt dXN0IGJlIG51bGwuCisJICovCisKKwlyZXR1cm4gaXNOdWxsOworfQorCisvKgorICogQ29tcGFy ZSB0d28gdHVwbGVzIGF0IHNwZWNpZmllZCBkZXB0aAorICoKKyAqIElmICJhYmJyZXZpYXRlZCBr ZXkiIGlzIGRpc2FibGVkOgorICogICBnZXQgc3BlY2lmaWVkIGRhdHVtcyBhbmQgY29tcGFyZSB0 aGVtIGJ5IEFwcGx5U29ydENvbXBhcmF0b3IoKS4KKyAqIElmICJhYmJyZXZpYXRlZCBrZXkiIGlz IGVuYWJsZWQ6CisgKiAgIE9ubHkgZmlyc3QgZGF0dW0gbWF5IGJlIGFiYnIga2V5IGFjY29yZGlu ZyB0byB0aGUgZGVzaWduIChzZWUgdGhlIGNvbW1lbnRzCisgKiAgIG9mIHN0cnVjdCBTb3J0VHVw bGUpLCBzbyBkaWZmZXJlbnQgb3BlcmF0aW9ucyBhcmUgbmVlZGVkIGZvciBkaWZmZXJlbnQKKyAq ICAgZGF0dW0uCisgKiAgIEZvciBmaXJzdCBkYXR1bSAoZGVwdGggPT0gMCk6IGdldCBmaXJzdCBk YXR1bXMgKCJhYmJyIGtleSIgdmVyc2lvbikgYW5kCisgKiAgIGNvbXBhcmUgdGhlbSBieSBBcHBs eVNvcnRDb21wYXJhdG9yKCkuIElmIHRoZXkgYXJlIGVxdWFsLCBnZXQgImZ1bGwiCisgKiAgIHZl cnNpb24gYW5kIGNvbXBhcmUgYWdhaW4gYnkgQXBwbHlTb3J0QWJicmV2RnVsbENvbXBhcmF0b3Io KS4KKyAqICAgRm9yIG90aGVyIGRhdHVtczogZ2V0IHNwZWNpZmllZCBkYXR1bXMgYW5kIGNvbXBh cmUgdGhlbSBieQorICogICBBcHBseVNvcnRDb21wYXJhdG9yKCkgYXMgcmVndWxhciByb3V0aW5l IGRvZXMuCisgKgorICogU2VlIGNvbXBhcmV0dXBfaGVhcCgpIGZvciBkZXRhaWxzLgorICovCitz dGF0aWMgaW5saW5lIGludAorbWtzb3J0X2NvbXBhcmVfZGF0dW0oU29ydFR1cGxlICAgICAgKnR1 cGxlMSwKKwkJCQkJIFNvcnRUdXBsZSAgICAgICp0dXBsZTIsCisJCQkJCSBpbnQJCQkgZGVwdGgs CisJCQkJCSBUdXBsZXNvcnRzdGF0ZSAqc3RhdGUpCit7CisJRGF0dW0gZGF0dW0xLCBkYXR1bTI7 CisJYm9vbCBpc051bGwxLCBpc051bGwyOworCVNvcnRTdXBwb3J0IHNvcnRLZXk7CisJaW50IHJl dCA9IDA7CisKKwlBc3NlcnQoc3RhdGUtPm1rc29ydEdldERhdHVtRnVuYyk7CisKKwlzb3J0S2V5 ID0gc3RhdGUtPmJhc2Uuc29ydEtleXMgKyBkZXB0aDsKKwlzdGF0ZS0+YmFzZS5ta3NvcnRHZXRE YXR1bUZ1bmModHVwbGUxLCAwLCBkZXB0aCwgc3RhdGUsCisJCQkJCQkJICAmZGF0dW0xLCAmaXNO dWxsMSwgZmFsc2UpOworCXN0YXRlLT5iYXNlLm1rc29ydEdldERhdHVtRnVuYyh0dXBsZTIsIDAs IGRlcHRoLCBzdGF0ZSwKKwkJCQkJCQkgICZkYXR1bTIsICZpc051bGwyLCBmYWxzZSk7CisKKwly ZXQgPSBBcHBseVNvcnRDb21wYXJhdG9yKGRhdHVtMSwKKwkJCQkJCQkgIGlzTnVsbDEsCisJCQkJ CQkJICBkYXR1bTIsCisJCQkJCQkJICBpc051bGwyLAorCQkJCQkJCSAgc29ydEtleSk7CisKKwkv KgorCSAqIElmICJhYmJyZXZpYXRlZCBrZXkiIGlzIGVuYWJsZWQsIGFuZCB3ZSBhcmUgaW4gdGhl IGZpcnN0IGRlcHRoLCBpdCBtZWFucworCSAqIG9ubHkgImFiYnJldmlhdGVkIGtleXMiIGFyZSBj b21wYXJlZC4gSWYgdGhlIHR3byBkYXR1bXMgYXJlIGRldGVybWluZWQgdG8KKwkgKiBiZSBlcXVh bCBieSBBcHBseVNvcnRDb21wYXJhdG9yKCksIHdlIG5lZWQgdG8gcGVyZm9ybSBhbiBleHRyYSAi ZnVsbCIKKwkgKiBjb21wYXJpbmcgYnkgQXBwbHlTb3J0QWJicmV2RnVsbENvbXBhcmF0b3IoKS4K KwkgKi8KKwlpZiAoc29ydEtleS0+YWJicmV2X2NvbnZlcnRlciAmJgorCQlkZXB0aCA9PSAwICYm CisJCXJldCA9PSAwKQorCXsKKwkJLyogRmV0Y2ggImZ1bGwiIGRhdHVtIGJ5IHNldHRpbmcgdXNl RnVsbEtleSA9IHRydWUgKi8KKwkJc3RhdGUtPmJhc2UubWtzb3J0R2V0RGF0dW1GdW5jKHR1cGxl MSwgMCwgZGVwdGgsIHN0YXRlLAorCQkJCQkJCQkgICZkYXR1bTEsICZpc051bGwxLCB0cnVlKTsK KwkJc3RhdGUtPmJhc2UubWtzb3J0R2V0RGF0dW1GdW5jKHR1cGxlMiwgMCwgZGVwdGgsIHN0YXRl LAorCQkJCQkJCQkgICZkYXR1bTIsICZpc051bGwyLCB0cnVlKTsKKworCQlyZXQgPSBBcHBseVNv cnRBYmJyZXZGdWxsQ29tcGFyYXRvcihkYXR1bTEsCisJCQkJCQkJCQkJCWlzTnVsbDEsCisJCQkJ CQkJCQkJCWRhdHVtMiwKKwkJCQkJCQkJCQkJaXNOdWxsMiwKKwkJCQkJCQkJCQkJc29ydEtleSk7 CisJfQorCisJcmV0dXJuIHJldDsKK30KKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKy8q CisgKiBWZXJpZnkgd2hldGhlciB0aGUgU29ydFR1cGxlIGxpc3QgaXMgb3JkZXJlZCBvciBub3Qg YXQgc3BlY2lmaWVkIGRlcHRoCisgKi8KK3N0YXRpYyB2b2lkCitta3NvcnRfdmVyaWZ5KFNvcnRU dXBsZQkJICAqeCwKKwkJCSAgaW50CQkJICAgbiwKKwkJCSAgaW50CQkJICAgZGVwdGgsCisJCQkg IFR1cGxlc29ydHN0YXRlICAqc3RhdGUpCit7CisJaW50IHJldDsKKworCWZvciAoaW50IGkgPSAw O2kgPCBuIC0gMTtpKyspCisJeworCQlyZXQgPSBta3NvcnRfY29tcGFyZV9kYXR1bSh4ICsgaSwK KwkJCQkJCQkJICAgeCArIGkgKyAxLAorCQkJCQkJCQkgICBkZXB0aCwKKwkJCQkJCQkJICAgc3Rh dGUpOworCQlBc3NlcnQocmV0IDw9IDApOworCX0KK30KKyNlbmRpZgorCisvKgorICogTWFqb3Ig b2YgbXVsdGkta2V5IHNvcnQKKyAqCisgKiBzZWVuTnVsbCBpbmRpY2F0ZXMgd2hldGhlciB3ZSBo YXZlIHNlZW4gTlVMTCBpbiBhbnkgZGF0dW0gd2UgY2hlY2tlZAorICovCitzdGF0aWMgdm9pZAor bWtzb3J0X3R1cGxlKFNvcnRUdXBsZSAgICAgICAgICAgKngsCisJCQkgc2l6ZV90ICAgICAgICAg ICAgICAgbiwKKwkJCSBpbnQgICAgICAgICAgICAgICAgICBkZXB0aCwKKwkJCSBUdXBsZXNvcnRz dGF0ZSAgICAgICpzdGF0ZSwKKwkJCSBib29sCQkJCSAgc2Vlbk51bGwpCit7CisJLyoKKwkgKiBJ biB0aGUgcHJvY2VzcywgdGhlIHR1cGxlIGFycmF5IGNvbnNpc3RzIG9mIGZpdmUgcGFydHM6CisJ ICogbGVmdCBlcXVhbCwgbGVzcywgbm90LXByb2Nlc3NlZCwgZ3JlYXRlciwgcmlnaHQgZXF1YWwK KwkgKgorCSAqIGxlc3NTdGFydCBpbmRpY2F0ZXMgdGhlIGZpcnN0IHBvc2l0aW9uIG9mIGxlc3Mg cGFydAorCSAqIGxlc3NFbmQgaW5kaWNhdGVzIHRoZSBuZXh0IHBvc2l0aW9uIGFmdGVyIGxlc3Mg cGFydAorCSAqIGdyZWF0ZXJTdGFydCBpbmRpY2F0ZXMgdGhlIHByaW9yIHBvc2l0aW9uIGJlZm9y ZSBncmVhdGVyIHBhcnQKKwkgKiBncmVhdGVyRW5kIGluZGljYXRlcyB0aGUgbGF0ZXN0IHBvc2l0 aW9uIG9mIGdyZWF0ZXIgcGFydAorCSAqIHRoZSByYW5nZSBiZXR3ZWVuIGxlc3NFbmQgYW5kIGdy ZWF0ZXJTdGFydCAoaW5jbHVzaXZlKSBpcyBub3QtcHJvY2Vzc2VkCisJICovCisJaW50IGxlc3NT dGFydCwgbGVzc0VuZCwgZ3JlYXRlclN0YXJ0LCBncmVhdGVyRW5kLCB0dXBDb3VudDsKKwlpbnQz MiBkaXN0OworCVNvcnRUdXBsZSAqcGl2b3Q7CisJYm9vbCBpc0RhdHVtTnVsbDsKKworCUFzc2Vy dChkZXB0aCA8PSBzdGF0ZS0+YmFzZS5uS2V5cyk7CisJQXNzZXJ0KHN0YXRlLT5iYXNlLnNvcnRL ZXlzKTsKKwlBc3NlcnQoc3RhdGUtPmJhc2UubWtzb3J0R2V0RGF0dW1GdW5jKTsKKworCWlmIChu IDw9IDEpCisJCXJldHVybjsKKworCS8qIElmIHdlIGhhdmUgZXhjZWVkZWQgdGhlIG1heCBkZXB0 aCwgcmV0dXJuIGltbWVkaWF0ZWx5ICovCisJaWYgKGRlcHRoID09IHN0YXRlLT5iYXNlLm5LZXlz KQorCQlyZXR1cm47CisKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJLyogU2VsZWN0IHBp dm90IGJ5IHJhbmRvbSBhbmQgbW92ZSBpdCB0byB0aGUgZmlyc3QgcG9zaXRpb24gKi8KKwlsZXNz U3RhcnQgPSBwZ19wcm5nX2ludDY0cCgmcGdfZ2xvYmFsX3Bybmdfc3RhdGUpICUgbjsKKwlta3Nv cnRfc3dhcCgwLCBsZXNzU3RhcnQsIHgpOworCXBpdm90ID0geDsKKworCWxlc3NTdGFydCA9IDE7 CisJbGVzc0VuZCA9IDE7CisJZ3JlYXRlclN0YXJ0ID0gbiAtIDE7CisJZ3JlYXRlckVuZCA9IG4g LSAxOworCisJLyogU29ydCB0aGUgYXJyYXkgdG8gdGhyZWUgcGFydHM6IGxlc3NlciwgZXF1YWws IGdyZWF0ZXIgKi8KKwl3aGlsZSAodHJ1ZSkKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwkJLyogQ29tcGFyZSB0aGUgbGVmdCBlbmQgb2YgdGhlIGFycmF5ICovCisJCXdoaWxlIChs ZXNzRW5kIDw9IGdyZWF0ZXJTdGFydCkKKwkJeworCQkJLyogQ29tcGFyZSBsZXNzRW5kIGFuZCBw aXZvdCBhdCBjdXJyZW50IGRlcHRoICovCisJCQlkaXN0ID0gbWtzb3J0X2NvbXBhcmVfZGF0dW0o eCArIGxlc3NFbmQsCisJCQkJCQkJCQkJcGl2b3QsCisJCQkJCQkJCQkJZGVwdGgsCisJCQkJCQkJ CQkJc3RhdGUpOworCisJCQlpZiAoZGlzdCA+IDApCisJCQkJYnJlYWs7CisKKwkJCS8qIElmIGxl c3NFbmQgaXMgZXF1YWwgdG8gcGl2b3QsIG1vdmUgaXQgdG8gbGVzc1N0YXJ0ICovCisJCQlpZiAo ZGlzdCA9PSAwKQorCQkJeworCQkJCW1rc29ydF9zd2FwKGxlc3NFbmQsIGxlc3NTdGFydCwgeCk7 CisJCQkJbGVzc1N0YXJ0Kys7CisJCQl9CisJCQlsZXNzRW5kKys7CisJCX0KKworCQkvKiBDb21w YXJlIHRoZSByaWdodCBlbmQgb2YgdGhlIGFycmF5ICovCisJCXdoaWxlIChsZXNzRW5kIDw9IGdy ZWF0ZXJTdGFydCkKKwkJeworCQkJLyogQ29tcGFyZSBncmVhdGVyU3RhcnQgYW5kIHBpdm90IGF0 IGN1cnJlbnQgZGVwdGggKi8KKwkJCWRpc3QgPSBta3NvcnRfY29tcGFyZV9kYXR1bSh4ICsgZ3Jl YXRlclN0YXJ0LAorCQkJCQkJCQkJCXBpdm90LAorCQkJCQkJCQkJCWRlcHRoLAorCQkJCQkJCQkJ CXN0YXRlKTsKKworCQkJaWYgKGRpc3QgPCAwKQorCQkJCWJyZWFrOworCisJCQkvKiBJZiBncmVh dGVyU3RhcnQgaXMgZXF1YWwgdG8gcGl2b3QsIG1vdmUgaXQgdG8gZ3JlYXRlckVuZCAqLworCQkJ aWYgKGRpc3QgPT0gMCkKKwkJCXsKKwkJCQlta3NvcnRfc3dhcChncmVhdGVyU3RhcnQsIGdyZWF0 ZXJFbmQsIHgpOworCQkJCWdyZWF0ZXJFbmQtLTsKKwkJCX0KKwkJCWdyZWF0ZXJTdGFydC0tOwor CQl9CisKKwkJaWYgKGxlc3NFbmQgPiBncmVhdGVyU3RhcnQpCisJCQlicmVhazsKKwkJbWtzb3J0 X3N3YXAobGVzc0VuZCwgZ3JlYXRlclN0YXJ0LCB4KTsKKwkJbGVzc0VuZCsrOworCQlncmVhdGVy U3RhcnQtLTsKKwl9CisKKwkvKgorCSAqIE5vdyB0aGUgYXJyYXkgaGFzIGZvdXIgcGFydHM6CisJ ICogICBsZWZ0IGVxdWFsLCBsZXNzZXIsIGdyZWF0ZXIsIHJpZ2h0IGVxdWFsCisJICogTm90ZSBn cmVhdGVyU3RhcnQgaXMgbGVzcyB0aGFuIGxlc3NFbmQgbm93CisJICovCisKKwkvKiBNb3ZlIHRo ZSBsZWZ0IGVxdWFsIHBhcnQgdG8gbWlkZGxlICovCisJZGlzdCA9IE1pbihsZXNzU3RhcnQsIGxl c3NFbmQgLSBsZXNzU3RhcnQpOworCW1rc29ydF92ZWNfc3dhcCgwLCBsZXNzRW5kIC0gZGlzdCwg ZGlzdCwgeCk7CisKKwkvKiBNb3ZlIHRoZSByaWdodCBlcXVhbCBwYXJ0IHRvIG1pZGRsZSAqLwor CWRpc3QgPSBNaW4oZ3JlYXRlckVuZCAtIGdyZWF0ZXJTdGFydCwgbiAtIGdyZWF0ZXJFbmQgLSAx KTsKKwlta3NvcnRfdmVjX3N3YXAobGVzc0VuZCwgbiAtIGRpc3QsIGRpc3QsIHgpOworCisJLyoK KwkgKiBOb3cgdGhlIGFycmF5IGhhcyB0aHJlZSBwYXJ0czoKKwkgKiAgIGxlc3NlciwgZXF1YWws IGdyZWF0ZXIKKwkgKiBOb3RlIHRoYXQgb25lIG9yIHR3byBwYXJ0cyBtYXkgaGF2ZSBubyBlbGVt ZW50IGF0IGFsbC4KKwkgKi8KKworCS8qIFJlY3Vyc2l2ZWx5IHNvcnQgdGhlIGxlc3NlciBwYXJ0 ICovCisKKwkvKiBkaXN0IG1lYW5zIHRoZSBzaXplIG9mIGxlc3MgcGFydCAqLworCWRpc3QgPSBs ZXNzRW5kIC0gbGVzc1N0YXJ0OworCW1rc29ydF90dXBsZSh4LAorCQkJCSBkaXN0LAorCQkJCSBk ZXB0aCwKKwkJCQkgc3RhdGUsCisJCQkJIHNlZW5OdWxsKTsKKworCS8qIFJlY3Vyc2l2ZWx5IHNv cnQgdGhlIGVxdWFsIHBhcnQgKi8KKworCS8qCisJICogKHggKyBkaXN0KSBtZWFucyB0aGUgZmly c3QgdHVwbGUgaW4gdGhlIGVxdWFsIHBhcnQKKwkgKiBTaW5jZSBhbGwgdHVwbGVzIGhhdmUgZXF1 YWwgZGF0dW1zIGF0IGN1cnJlbnQgZGVwdGgsIHdlIGp1c3QgY2hlY2sgYW55IG9uZQorCSAqIG9m IHRoZW0gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgaGF2ZSBzZWVuIG51bGwgZGF0dW0uCisJICov CisJaXNEYXR1bU51bGwgPSBjaGVja19kYXR1bV9udWxsKHggKyBkaXN0LCBkZXB0aCwgc3RhdGUp OworCisJLyogKGxlc3NTdGFydCArIG4gLSBncmVhdGVyRW5kIC0gMSkgbWVhbnMgdGhlIHNpemUg b2YgZXF1YWwgcGFydCAqLworCXR1cENvdW50ID0gbGVzc1N0YXJ0ICsgbiAtIGdyZWF0ZXJFbmQg LSAxOworCisJaWYgKGRlcHRoIDwgc3RhdGUtPmJhc2UubktleXMgLSAxKQorCXsKKwkJbWtzb3J0 X3R1cGxlKHggKyBkaXN0LAorCQkJCQkgdHVwQ291bnQsCisJCQkJCSBkZXB0aCArIDEsCisJCQkJ CSBzdGF0ZSwKKwkJCQkJIHNlZW5OdWxsIHx8IGlzRGF0dW1OdWxsKTsKKwl9IGVsc2UgeworCQkv KgorCQkgKiBXZSBoYXZlIHJlYWNoIHRoZSBtYXggZGVwdGg6IENhbGwgbWtzb3J0SGFuZGxlRHVw RnVuYyB0byBoYW5kbGUgZHVwbGljYXRlZAorCQkgKiB0dXBsZXMgaWYgbmVjZXNzYXJ5LCBlLmcu IGNoZWNraW5nIHVuaXF1ZW5lc3Mgb3IgZXh0cmEgY29tcGFyaW5nCisJCSAqLworCisJCS8qCisJ CSAqIENhbGwgbWtzb3J0SGFuZGxlRHVwRnVuYyBpZjoKKwkJICogICAxLiBta3NvcnRIYW5kbGVE dXBGdW5jIGlzIGZpbGxlZAorCQkgKiAgIDIuIHRoZSBzaXplIG9mIGVxdWFsIHBhcnQgPiAxCisJ CSAqLworCQlpZiAoc3RhdGUtPmJhc2UubWtzb3J0SGFuZGxlRHVwRnVuYyAmJgorCQkJKHR1cENv dW50ID4gMSkpCisJCXsKKwkJCXN0YXRlLT5iYXNlLm1rc29ydEhhbmRsZUR1cEZ1bmMoeCArIGRp c3QsCisJCQkJCQkJCQkgICB0dXBDb3VudCwKKwkJCQkJCQkJCSAgIHNlZW5OdWxsIHx8IGlzRGF0 dW1OdWxsLAorCQkJCQkJCQkJICAgc3RhdGUpOworCQl9CisJfQorCisJLyogUmVjdXJzaXZlbHkg c29ydCB0aGUgZ3JlYXRlciBwYXJ0ICovCisKKwkvKiBkaXN0IG1lYW5zIHRoZSBzaXplIG9mIGdy ZWF0ZXIgcGFydCAqLworCWRpc3QgPSBncmVhdGVyRW5kIC0gZ3JlYXRlclN0YXJ0OworCW1rc29y dF90dXBsZSh4ICsgbiAtIGRpc3QsCisJCQkJIGRpc3QsCisJCQkJIGRlcHRoLAorCQkJCSBzdGF0 ZSwKKwkJCQkgc2Vlbk51bGwpOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCW1rc29y dF92ZXJpZnkoeCwKKwkJCQkgIG4sCisJCQkJICBkZXB0aCwKKwkJCQkgIHN0YXRlKTsKKyNlbmRp ZgorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMKaW5kZXggN2M0ZDZkYzEwNi4uYzg2NTc3 MmE3YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jCkBAIC0xMDgsNiArMTA4LDcgQEAK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX3J1c2FnZS5o IgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5n LmgiCiAKIC8qCiAgKiBJbml0aWFsIHNpemUgb2YgbWVtdHVwbGVzIGFycmF5LiAgV2UncmUgdHJ5 aW5nIHRvIHNlbGVjdCB0aGlzIHNpemUgc28gdGhhdApAQCAtMTI4LDYgKzEyOSw3IEBAIGJvb2wJ CXRyYWNlX3NvcnQgPSBmYWxzZTsKIGJvb2wJCW9wdGltaXplX2JvdW5kZWRfc29ydCA9IHRydWU7 CiAjZW5kaWYKIAorYm9vbAkJZW5hYmxlX21rX3NvcnQgPSB0cnVlOwogCiAvKgogICogRHVyaW5n IG1lcmdlLCB3ZSB1c2UgYSBwcmUtYWxsb2NhdGVkIHNldCBvZiBmaXhlZC1zaXplIHNsb3RzIHRv IGhvbGQKQEAgLTMzNyw2ICszMzksOSBAQCBzdHJ1Y3QgVHVwbGVzb3J0c3RhdGUKICNpZmRlZiBU UkFDRV9TT1JUCiAJUEdSVXNhZ2UJcnVfc3RhcnQ7CiAjZW5kaWYKKworCS8qIFdoZXRoZXIgbXVs dGkta2V5IHNvcnQgaXMgdXNlZCAqLworCWJvb2wgbWtzb3J0VXNlZDsKIH07CiAKIC8qCkBAIC02 MjIsNiArNjI3LDggQEAgcXNvcnRfdHVwbGVfaW50MzJfY29tcGFyZShTb3J0VHVwbGUgKmEsIFNv cnRUdXBsZSAqYiwgVHVwbGVzb3J0c3RhdGUgKnN0YXRlKQogI2RlZmluZSBTVF9ERUZJTkUKICNp bmNsdWRlICJsaWIvc29ydF90ZW1wbGF0ZS5oIgogCisjaW5jbHVkZSAibWtzb3J0X3R1cGxlLmMi CisKIC8qCiAgKgkJdHVwbGVzb3J0X2JlZ2luX3h4eAogICoKQEAgLTY5MCw2ICs2OTcsNyBAQCB0 dXBsZXNvcnRfYmVnaW5fY29tbW9uKGludCB3b3JrTWVtLCBTb3J0Q29vcmRpbmF0ZSBjb29yZGlu YXRlLCBpbnQgc29ydG9wdCkKIAlzdGF0ZS0+YmFzZS5zb3J0b3B0ID0gc29ydG9wdDsKIAlzdGF0 ZS0+YmFzZS50dXBsZXMgPSB0cnVlOwogCXN0YXRlLT5hYmJyZXZOZXh0ID0gMTA7CisJc3RhdGUt Pm1rc29ydFVzZWQgPSBmYWxzZTsKIAogCS8qCiAJICogd29ya01lbSBpcyBmb3JjZWQgdG8gYmUg YXQgbGVhc3QgNjRLQiwgdGhlIGN1cnJlbnQgbWluaW11bSB2YWxpZCB2YWx1ZQpAQCAtMjU1OSw2 ICsyNTY3LDggQEAgdHVwbGVzb3J0X2dldF9zdGF0cyhUdXBsZXNvcnRzdGF0ZSAqc3RhdGUsCiAJ CWNhc2UgVFNTX1NPUlRFRElOTUVNOgogCQkJaWYgKHN0YXRlLT5ib3VuZFVzZWQpCiAJCQkJc3Rh dHMtPnNvcnRNZXRob2QgPSBTT1JUX1RZUEVfVE9QX05fSEVBUFNPUlQ7CisJCQllbHNlIGlmIChz dGF0ZS0+bWtzb3J0VXNlZCkKKwkJCQlzdGF0cy0+c29ydE1ldGhvZCA9IFNPUlRfVFlQRV9NS1NP UlQ7CiAJCQllbHNlCiAJCQkJc3RhdHMtPnNvcnRNZXRob2QgPSBTT1JUX1RZUEVfUVVJQ0tTT1JU OwogCQkJYnJlYWs7CkBAIC0yNTkyLDYgKzI2MDIsOCBAQCB0dXBsZXNvcnRfbWV0aG9kX25hbWUo VHVwbGVzb3J0TWV0aG9kIG0pCiAJCQlyZXR1cm4gImV4dGVybmFsIHNvcnQiOwogCQljYXNlIFNP UlRfVFlQRV9FWFRFUk5BTF9NRVJHRToKIAkJCXJldHVybiAiZXh0ZXJuYWwgbWVyZ2UiOworCQlj YXNlIFNPUlRfVFlQRV9NS1NPUlQ6CisJCQlyZXR1cm4gIm11bHRpLWtleSBzb3J0IjsKIAl9CiAK IAlyZXR1cm4gInVua25vd24iOwpAQCAtMjcxNyw2ICsyNzI5LDM4IEBAIHR1cGxlc29ydF9zb3J0 X21lbXR1cGxlcyhUdXBsZXNvcnRzdGF0ZSAqc3RhdGUpCiAKIAlpZiAoc3RhdGUtPm1lbXR1cGNv dW50ID4gMSkKIAl7CisJCS8qCisJCSAqIEFwcGx5IG11bHRpLWtleSBzb3J0IHdoZW46CisJCSAq ICAgMS4gZW5hYmxlX21rX3NvcnQgaXMgc2V0CisJCSAqICAgMi4gVGhlcmUgYXJlIG11bHRpcGxl IGtleXMgYXZhaWxhYmxlCisJCSAqICAgMy4gbWtzb3J0R2V0RGF0dW1GdW5jIGlzIGZpbGxlZCwg d2hpY2ggaW1wbGllcyB0aGF0IGN1cnJlbnQgdHVwbGUKKwkJICogICAgICB0eXBlIGlzIHN1cHBv cnRlZCBieSBta3NvcnQuIChCeSBub3cgb25seSBIZWFwIHR1cGxlIGFuZCBCdHJlZQorCQkgKiAg ICAgIEluZGV4IHR1cGxlIGFyZSBzdXBwb3J0ZWQsIGFuZCBtb3JlIHR5cGVzIG1heSBiZSBzdXBw b3J0ZWQgaW4KKwkJICogICAgICBmdXR1cmUuKQorCQkgKgorCQkgKiBBIHN1bW1hcnkgb2YgdHVw bGUgdHlwZXMgc3VwcG9ydGVkIGJ5IG1rc29ydDoKKwkJICoKKwkJICogICBIZWFwVHVwbGU6IHN1 cHBvcnRlZAorCQkgKiAgIEluZGV4VHVwbGUoYnRyZWUpOiBzdXBwb3J0ZWQKKwkJICogICBJbmRl eFR1cGxlKGhhc2gpOiBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUga2V5 CisJCSAqICAgRGF0dW1UdXBsZTogbm90IHN1cHBvcnRlZCBiZWNhdXNlIHRoZXJlIGlzIG9ubHkg b25lIGtleQorCQkgKiAgIEhlYXBUdXBsZShmb3IgY2x1c3Rlcik6IG5vdCBzdXBwb3J0ZWQgeWV0 CisJCSAqICAgSW5kZXhUdXBsZShnaXN0KTogbm90IHN1cHBvcnRlZCB5ZXQKKwkJICogICBJbmRl eFR1cGxlKGJyaW4pOiBub3Qgc3VwcG9ydGVkIHlldAorCQkgKi8KKwkJaWYgKGVuYWJsZV9ta19z b3J0ICYmCisJCQlzdGF0ZS0+YmFzZS5uS2V5cyA+IDEgJiYKKwkJCXN0YXRlLT5iYXNlLm1rc29y dEdldERhdHVtRnVuYyAhPSBOVUxMKQorCQl7CisJCQlzdGF0ZS0+bWtzb3J0VXNlZCA9IHRydWU7 CisJCQlta3NvcnRfdHVwbGUoc3RhdGUtPm1lbXR1cGxlcywKKwkJCQkJCSBzdGF0ZS0+bWVtdHVw Y291bnQsCisJCQkJCQkgMCwKKwkJCQkJCSBzdGF0ZSwKKwkJCQkJCSBmYWxzZSk7CisJCQlyZXR1 cm47CisJCX0KKwogCQkvKgogCQkgKiBEbyB3ZSBoYXZlIHRoZSBsZWFkaW5nIGNvbHVtbidzIHZh bHVlIG9yIGFiYnJldmlhdGlvbiBpbiBkYXR1bTEsCiAJCSAqIGFuZCBpcyB0aGVyZSBhIHNwZWNp YWxpemF0aW9uIGZvciBpdHMgY29tcGFyYXRvcj8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0dmFyaWFudHMuYwppbmRleCAwNWE4NTNjYWEzLi4xYWU3OTQ3Y2M1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCkBAIC0zMCw2ICszMCw3IEBACiAj aW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAKIAogLyog c29ydC10eXBlIGNvZGVzIGZvciBzb3J0X19zdGFydCBwcm9iZXMgKi8KQEAgLTkyLDYgKzkzLDQx IEBAIHN0YXRpYyB2b2lkIHJlYWR0dXBfZGF0dW0oVHVwbGVzb3J0c3RhdGUgKnN0YXRlLCBTb3J0 VHVwbGUgKnN0dXAsCiAJCQkJCQkgIExvZ2ljYWxUYXBlICp0YXBlLCB1bnNpZ25lZCBpbnQgbGVu KTsKIHN0YXRpYyB2b2lkIGZyZWVzdGF0ZV9jbHVzdGVyKFR1cGxlc29ydHN0YXRlICpzdGF0ZSk7 CiAKK3N0YXRpYyBEYXR1bSBta3NvcnRfZ2V0X2RhdHVtX2hlYXAoU29ydFR1cGxlICAgICAgKngs CisJCQkJCQkJCSAgIGNvbnN0IGludCAgICAgICB0dXBsZUluZGV4LAorCQkJCQkJCQkgICBjb25z dCBpbnQgICAgICAgZGVwdGgsCisJCQkJCQkJCSAgIFR1cGxlc29ydHN0YXRlICpzdGF0ZSwKKwkJ CQkJCQkJICAgRGF0dW0gICAgICAgICAgKmRhdHVtLAorCQkJCQkJCQkgICBib29sICAgICAgICAg ICAqaXNOdWxsLAorCQkJCQkJCQkgICBib29sICAgICAgICAgICAgdXNlRnVsbEtleSk7CisKK3N0 YXRpYyBEYXR1bSBta3NvcnRfZ2V0X2RhdHVtX2luZGV4X2J0cmVlKFNvcnRUdXBsZSAgICAgICp4 LAorCQkJCQkJCQkJCSAgY29uc3QgaW50ICAgICAgIHR1cGxlSW5kZXgsCisJCQkJCQkJCQkJICBj b25zdCBpbnQgICAgICAgZGVwdGgsCisJCQkJCQkJCQkJICBUdXBsZXNvcnRzdGF0ZSAqc3RhdGUs CisJCQkJCQkJCQkJICBEYXR1bSAgICAgICAgICAqZGF0dW0sCisJCQkJCQkJCQkJICBib29sICAg ICAgICAgICAqaXNOdWxsLAorCQkJCQkJCQkJCSAgYm9vbCAgICAgICAgICAgIHVzZUZ1bGxLZXkp OworCitzdGF0aWMgdm9pZAorbWtzb3J0X2hhbmRsZV9kdXBfaW5kZXhfYnRyZWUoU29ydFR1cGxl ICAgICAgKngsCisJCQkJCQkJICBjb25zdCBpbnQgICAgICAgdHVwbGVDb3VudCwKKwkJCQkJCQkg IGNvbnN0IGJvb2wgICAgICBzZWVuTnVsbCwKKwkJCQkJCQkgIFR1cGxlc29ydHN0YXRlICpzdGF0 ZSk7CisKK3N0YXRpYyBpbnQKK21rc29ydF9jb21wYXJlX2VxdWFsX2luZGV4X2J0cmVlKGNvbnN0 IFNvcnRUdXBsZSAqYSwKKwkJCQkJCQkJIGNvbnN0IFNvcnRUdXBsZSAqYiwKKwkJCQkJCQkJIFR1 cGxlc29ydHN0YXRlICAqc3RhdGUpOworCitzdGF0aWMgaW5saW5lIGludAordHVwbGVzb3J0X2Nv bXBhcmVfYnlfaXRlbV9wb2ludGVyKGNvbnN0IEluZGV4VHVwbGUgdHVwbGUxLAorCQkJCQkJCQkg IGNvbnN0IEluZGV4VHVwbGUgdHVwbGUyKTsKKworc3RhdGljIHZvaWQKK3JhaXNlX2Vycm9yX29m X2R1cF9pbmRleChJbmRleFR1cGxlICAgICB4LAorCQkJCQkJIFR1cGxlc29ydHN0YXRlICpzdGF0 ZSk7CisKIC8qCiAgKiBEYXRhIHN0cnVjdHVyZSBwb2ludGVkIGJ5ICJUdXBsZXNvcnRQdWJsaWMu YXJnIiBmb3IgdGhlIENMVVNURVIgY2FzZS4gIFNldCBieQogICogdGhlIHR1cGxlc29ydF9iZWdp bl9jbHVzdGVyLgpAQCAtMTYzLDYgKzE5OSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBCcmluU29ydFR1 cGxlCiAvKiBTaXplIG9mIHRoZSBCcmluU29ydFR1cGxlLCBnaXZlbiBsZW5ndGggb2YgdGhlIEJy aW5UdXBsZS4gKi8KICNkZWZpbmUgQlJJTlNPUlRUVVBMRV9TSVpFKGxlbikJCShvZmZzZXRvZihC cmluU29ydFR1cGxlLCB0dXBsZSkgKyAobGVuKSkKIAorI2RlZmluZSBTVF9TT1JUIHFzb3J0X3R1 cGxlX2J5X2l0ZW1wb2ludGVyCisjZGVmaW5lIFNUX0VMRU1FTlRfVFlQRSBTb3J0VHVwbGUKKyNk ZWZpbmUgU1RfQ09NUEFSRShhLCBiLCBzdGF0ZSkgbWtzb3J0X2NvbXBhcmVfZXF1YWxfaW5kZXhf YnRyZWUoYSwgYiwgc3RhdGUpCisjZGVmaW5lIFNUX0NPTVBBUkVfQVJHX1RZUEUgVHVwbGVzb3J0 c3RhdGUKKyNkZWZpbmUgU1RfQ0hFQ0tfRk9SX0lOVEVSUlVQVFMKKyNkZWZpbmUgU1RfU0NPUEUg c3RhdGljCisjZGVmaW5lIFNUX0RFRklORQorI2luY2x1ZGUgImxpYi9zb3J0X3RlbXBsYXRlLmgi CiAKIFR1cGxlc29ydHN0YXRlICoKIHR1cGxlc29ydF9iZWdpbl9oZWFwKFR1cGxlRGVzYyB0dXBE ZXNjLApAQCAtMjAwLDYgKzI0NCw3IEBAIHR1cGxlc29ydF9iZWdpbl9oZWFwKFR1cGxlRGVzYyB0 dXBEZXNjLAogCWJhc2UtPnJlbW92ZWFiYnJldiA9IHJlbW92ZWFiYnJldl9oZWFwOwogCWJhc2Ut PmNvbXBhcmV0dXAgPSBjb21wYXJldHVwX2hlYXA7CiAJYmFzZS0+Y29tcGFyZXR1cF90aWVicmVh ayA9IGNvbXBhcmV0dXBfaGVhcF90aWVicmVhazsKKwliYXNlLT5ta3NvcnRHZXREYXR1bUZ1bmMg PSBta3NvcnRfZ2V0X2RhdHVtX2hlYXA7CiAJYmFzZS0+d3JpdGV0dXAgPSB3cml0ZXR1cF9oZWFw OwogCWJhc2UtPnJlYWR0dXAgPSByZWFkdHVwX2hlYXA7CiAJYmFzZS0+aGF2ZURhdHVtMSA9IHRy dWU7CkBAIC0zODgsNiArNDMzLDggQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0 aW9uIGhlYXBSZWwsCiAJYmFzZS0+cmVtb3ZlYWJicmV2ID0gcmVtb3ZlYWJicmV2X2luZGV4Owog CWJhc2UtPmNvbXBhcmV0dXAgPSBjb21wYXJldHVwX2luZGV4X2J0cmVlOwogCWJhc2UtPmNvbXBh cmV0dXBfdGllYnJlYWsgPSBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrOworCWJhc2Ut Pm1rc29ydEdldERhdHVtRnVuYyA9IG1rc29ydF9nZXRfZGF0dW1faW5kZXhfYnRyZWU7CisJYmFz ZS0+bWtzb3J0SGFuZGxlRHVwRnVuYyA9IG1rc29ydF9oYW5kbGVfZHVwX2luZGV4X2J0cmVlOwog CWJhc2UtPndyaXRldHVwID0gd3JpdGV0dXBfaW5kZXg7CiAJYmFzZS0+cmVhZHR1cCA9IHJlYWR0 dXBfaW5kZXg7CiAJYmFzZS0+aGF2ZURhdHVtMSA9IHRydWU7CkBAIC0xNTYzLDI1ICsxNjEwLDcg QEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEsIGNv bnN0IFNvcnRUdXBsZSAqYiwKIAkgKiBhdHRyaWJ1dGUgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQg YWxsIGtleXMgaW4gdGhlIGluZGV4IGFyZSBwaHlzaWNhbGx5CiAJICogdW5pcXVlLgogCSAqLwot CXsKLQkJQmxvY2tOdW1iZXIgYmxrMSA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1cGxl MS0+dF90aWQpOwotCQlCbG9ja051bWJlciBibGsyID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJl cigmdHVwbGUyLT50X3RpZCk7Ci0KLQkJaWYgKGJsazEgIT0gYmxrMikKLQkJCXJldHVybiAoYmxr MSA8IGJsazIpID8gLTEgOiAxOwotCX0KLQl7Ci0JCU9mZnNldE51bWJlciBwb3MxID0gSXRlbVBv aW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMS0+dF90aWQpOwotCQlPZmZzZXROdW1iZXIgcG9z MiA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBsZTItPnRfdGlkKTsKLQotCQlpZiAo cG9zMSAhPSBwb3MyKQotCQkJcmV0dXJuIChwb3MxIDwgcG9zMikgPyAtMSA6IDE7Ci0JfQotCi0J LyogSXRlbVBvaW50ZXIgdmFsdWVzIHNob3VsZCBuZXZlciBiZSBlcXVhbCAqLwotCUFzc2VydChm YWxzZSk7Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gdHVwbGVzb3J0X2NvbXBhcmVfYnlfaXRlbV9w b2ludGVyKHR1cGxlMSwgdHVwbGUyKTsKIH0KIAogc3RhdGljIGludApAQCAtMTg4OCwzICsxOTE3 LDIzNiBAQCByZWFkdHVwX2RhdHVtKFR1cGxlc29ydHN0YXRlICpzdGF0ZSwgU29ydFR1cGxlICpz dHVwLAogCWlmIChiYXNlLT5zb3J0b3B0ICYgVFVQTEVTT1JUX1JBTkRPTUFDQ0VTUykgLyogbmVl ZCB0cmFpbGluZyBsZW5ndGggd29yZD8gKi8KIAkJTG9naWNhbFRhcGVSZWFkRXhhY3QodGFwZSwg JnR1cGxlbiwgc2l6ZW9mKHR1cGxlbikpOwogfQorCisvKgorICogR2V0IHNwZWNpZmllZCBkYXR1 bSBmcm9tIFNvcnRUdXBsZSAoSGVhcFR1cGxlKSBsaXN0CisgKgorICogSWYgdGhlIGZpcnN0IGRh dHVtIGlzIHJlcXVlc3RlZCAoZGVwdGggPT0gMCksIHNvcnRUdXBsZS0+ZGF0dW0xL2lzbnVsbDEK KyAqIHdpbGwgYmUgcmV0dXJuZWQuIEZvciBvdGhlciBkYXR1bXMsIHJlbGV2YW50IGRhdHVtIHdp bGwgYmUgZXh0cmFjdGVkIGZyb20KKyAqIHNvcnRUdXBsZS0+dHVwbGUuCisgKgorICogVGhlIHBh cmFtZXRlciAidXNlRnVsbEtleSIgaXMgdXNlZCBmb3Igc2NlbmFyaW8gb2YgImFiYnJldmlhdGVk IGtleSI6CisgKiAgIGZhbHNlIC0gZ2V0IHNvcnRUdXBsZS0+ZGF0dW0xL2lzbnVsbDEgKGFiYnJl dmlhdGVkIGtleSkKKyAqICAgdHJ1ZSAtIGdldCB0aGUgImZ1bGwiIGRhdHVtCisgKiBJZiAiYWJi cmV2aWF0ZWQga2V5IiBpcyBkaXNhYmxlZCwgdXNlRnVsbEtleSB3aWxsIGJlIGlnbm9yZWQuCisg KgorICogU2VlIGNvbXBhcmV0dXBfaGVhcCgpIGZvciBkZXRhaWxzLgorICovCitzdGF0aWMgRGF0 dW0KK21rc29ydF9nZXRfZGF0dW1faGVhcChTb3J0VHVwbGUJCSAqeCwKKwkJCQkJICBpbnQJCQkg IHR1cGxlSW5kZXgsCisJCQkJCSAgaW50CQkJICBkZXB0aCwKKwkJCQkJICBUdXBsZXNvcnRzdGF0 ZSAqc3RhdGUsCisJCQkJCSAgRGF0dW0JCQkgKmRhdHVtLAorCQkJCQkgIGJvb2wJCQkgKmlzTnVs bCwKKwkJCQkJICBib29sCQkJICB1c2VGdWxsS2V5KQoreworCVR1cGxlRGVzYyAgIHR1cERlc2Mg PSBOVUxMOworCUhlYXBUdXBsZURhdGEgaGVhcFR1cGxlOworCUF0dHJOdW1iZXIgIGF0dG5vOwor CVNvcnRUdXBsZSAqc29ydFR1cGxlID0geCArIHR1cGxlSW5kZXg7CisJVHVwbGVzb3J0UHVibGlj ICpiYXNlID0gVHVwbGVzb3J0c3RhdGVHZXRQdWJsaWMoc3RhdGUpOworCVNvcnRTdXBwb3J0IHNv cnRLZXkgPSBiYXNlLT5zb3J0S2V5cyArIGRlcHRoOzsKKworCUFzc2VydChzdGF0ZSk7CisJQXNz ZXJ0KGRlcHRoIDwgc3RhdGUtPm5LZXlzKTsKKworCS8qCisJICogdXNlRnVsbEtleSBpcyB2YWxp ZCBvbmx5IHdoZW4gZGVwdGggPT0gMCwgYmVjYXVzZSBvbmx5IHRoZSBmaXJzdCBkYXR1bQorCSAq IG1heSBiZSBpbnZvbHZlZCB0byAiYWJicmV2aWF0ZWQga2V5Iiwgc28gb25seSB0aGUgZmlyc3Qg ZGF0dW0gbmVlZCB0bworCSAqIGJlIGNoZWNrZWQgd2l0aCAiZnVsbCIgdmVyc2lvbi4KKwkgKi8K KwlBc3NlcnRJbXBseSh1c2VGdWxsS2V5LCBkZXB0aCA9PSAwKTsKKworCXR1cERlc2MgPSAoVHVw bGVEZXNjKWJhc2UtPmFyZzsKKworCS8qCisJICogV2hlbiB1c2VGdWxsS2V5IGlzIGZhbHNlLCBh bmQgdGhlIGZpcnN0IGRhdHVtIGlzIHJlcXVlc3RlZCwgcmV0dXJuIHRoZQorCSAqIGxlYWRpbmcg ZGF0dW0KKwkgKi8KKwlpZiAoZGVwdGggPT0gMCAmJiAhdXNlRnVsbEtleSkKKwl7CisJCSpkYXR1 bSA9IHNvcnRUdXBsZS0+ZGF0dW0xOworCQkqaXNOdWxsID0gc29ydFR1cGxlLT5pc251bGwxOwor CQlyZXR1cm4gKmRhdHVtOworCX0KKworCS8qIEZvciBhbnkgZGF0dW1zIHdoaWNoIGRlcHRoID4g MCwgZXh0cmFjdCBpdCBmcm9tIHNvcnRUdXBsZS0+dHVwbGUgKi8KKwloZWFwVHVwbGUudF9sZW4g PSAoKE1pbmltYWxUdXBsZSkgc29ydFR1cGxlLT50dXBsZSktPnRfbGVuICsgTUlOSU1BTF9UVVBM RV9PRkZTRVQ7CisJaGVhcFR1cGxlLnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpICgoY2hhciAq KSBzb3J0VHVwbGUtPnR1cGxlIC0gTUlOSU1BTF9UVVBMRV9PRkZTRVQpOworCWF0dG5vID0gc29y dEtleS0+c3N1cF9hdHRubzsKKwkqZGF0dW0gPSBoZWFwX2dldGF0dHIoJmhlYXBUdXBsZSwgYXR0 bm8sIHR1cERlc2MsIGlzTnVsbCk7CisKKwlyZXR1cm4gKmRhdHVtOworfQorCisvKgorICogR2V0 IHNwZWNpZmllZCBkYXR1bSBmcm9tIFNvcnRUdXBsZSAoSW5kZXhUdXBsZSBmb3IgYnRyZWUgaW5k ZXgpIGxpc3QKKyAqCisgKiBJZiB0aGUgZmlyc3QgZGF0dW0gaXMgcmVxdWVzdGVkIChkZXB0aCA9 PSAwKSwgc29ydFR1cGxlLT5kYXR1bTEvaXNudWxsMQorICogd2lsbCBiZSByZXR1cm5lZC4gRm9y IG90aGVyIGRhdHVtcywgcmVsZXZhbnQgZGF0dW0gd2lsbCBiZSBleHRyYWN0ZWQgZnJvbQorICog c29ydFR1cGxlLT50dXBsZS4KKyAqCisgKiBUaGUgcGFyYW1ldGVyICJ1c2VGdWxsS2V5IiBpcyB1 c2VkIGZvciBzY2VuYXJpbyBvZiAiYWJicmV2aWF0ZWQga2V5IjoKKyAqICAgZmFsc2UgLSBnZXQg c29ydFR1cGxlLT5kYXR1bTEvaXNudWxsMSAoYWJicmV2aWF0ZWQga2V5KQorICogICB0cnVlIC0g Z2V0IHRoZSAiZnVsbCIgZGF0dW0KKyAqIElmICJhYmJyZXZpYXRlZCBrZXkiIGlzIGRpc2FibGVk LCB1c2VGdWxsS2V5IHdpbGwgYmUgaWdub3JlZC4KKyAqCisgKiBTZWUgY29tcGFyZXR1cF9pbmRl eF9idHJlZSgpIGZvciBkZXRhaWxzLgorICovCitzdGF0aWMgRGF0dW0KK21rc29ydF9nZXRfZGF0 dW1faW5kZXhfYnRyZWUoU29ydFR1cGxlICAgICAgKngsCisJCQkJCQkJIGNvbnN0IGludCAgICAg ICB0dXBsZUluZGV4LAorCQkJCQkJCSBjb25zdCBpbnQgICAgICAgZGVwdGgsCisJCQkJCQkJIFR1 cGxlc29ydHN0YXRlICpzdGF0ZSwKKwkJCQkJCQkgRGF0dW0gICAgICAgICAgKmRhdHVtLAorCQkJ CQkJCSBib29sICAgICAgICAgICAqaXNOdWxsLAorCQkJCQkJCSBib29sCQkJIHVzZUZ1bGxLZXkp Cit7CisJVHVwbGVEZXNjICAgdHVwRGVzYzsKKwlJbmRleFR1cGxlICBpbmRleFR1cGxlOworCVNv cnRUdXBsZSAgKnNvcnRUdXBsZSA9IHggKyB0dXBsZUluZGV4OworCVR1cGxlc29ydFB1YmxpYyAq YmFzZSA9IFR1cGxlc29ydHN0YXRlR2V0UHVibGljKHN0YXRlKTsKKwlUdXBsZXNvcnRJbmRleEJU cmVlQXJnICphcmcgPSAoVHVwbGVzb3J0SW5kZXhCVHJlZUFyZyAqKSBiYXNlLT5hcmc7CisKKwlB c3NlcnQoc3RhdGUpOworCUFzc2VydChkZXB0aCA8IHN0YXRlLT5uS2V5cyk7CisKKwkvKgorCSAq IHVzZUZ1bGxLZXkgaXMgdmFsaWQgb25seSB3aGVuIGRlcHRoID09IDAsIGJlY2F1c2Ugb25seSB0 aGUgZmlyc3QgZGF0dW0KKwkgKiBtYXkgYmUgaW52b2x2ZWQgdG8gImFiYnJldmlhdGVkIGtleSIs IHNvIG9ubHkgdGhlIGZpcnN0IGRhdHVtIG5lZWQgdG8KKwkgKiBiZSBjaGVja2VkIHdpdGggImZ1 bGwiIHZlcnNpb24uCisJICovCisJQXNzZXJ0SW1wbHkodXNlRnVsbEtleSwgZGVwdGggPT0gMCk7 CisKKwkvKgorCSAqIFdoZW4gdXNlRnVsbEtleSBpcyBmYWxzZSwgYW5kIHRoZSBmaXJzdCBkYXR1 bSBpcyByZXF1ZXN0ZWQsIHJldHVybiB0aGUKKwkgKiBsZWFkaW5nIGRhdHVtCisJICovCisJaWYg KGRlcHRoID09IDAgJiYgIXVzZUZ1bGxLZXkpCisJeworCQkqaXNOdWxsID0gc29ydFR1cGxlLT5p c251bGwxOworCQkqZGF0dW0gPSBzb3J0VHVwbGUtPmRhdHVtMTsKKwkJcmV0dXJuICpkYXR1bTsK Kwl9CisKKwlpbmRleFR1cGxlID0gKEluZGV4VHVwbGUpIHNvcnRUdXBsZS0+dHVwbGU7CisJdHVw RGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoYXJnLT5pbmRleC5pbmRleFJlbCk7CisKKwkvKgorCSAq IFNldCBwYXJhbWV0ZXIgYXR0bnVtID0gZGVwdGggKyAxIGJlY2F1c2UgYXR0bnVtIHN0YXJ0cyBm cm9tIDEgYnV0IGRlcHRoCisJICogc3RhcnRzIGZyb20gMAorCSAqLworCSpkYXR1bSA9IGluZGV4 X2dldGF0dHIoaW5kZXhUdXBsZSwgZGVwdGggKyAxLCB0dXBEZXNjLCBpc051bGwpOworCisJcmV0 dXJuICpkYXR1bTsKK30KKworLyoKKyAqIEhhbmRsZSBkdXBsaWNhdGVkIFNvcnRUdXBsZXMgKElu ZGV4VHVwbGUgZm9yIGJ0cmVlIGluZGV4IGR1cmluZyBta3NvcnQpCisgKiAgeDogdGhlIGR1cGxp Y2F0ZWQgdHVwbGUgbGlzdAorICogIHR1cGxlQ291bnQ6IGNvdW50IG9mIHRoZSB0dXBsZXMKKyAq Lworc3RhdGljIHZvaWQKK21rc29ydF9oYW5kbGVfZHVwX2luZGV4X2J0cmVlKFNvcnRUdXBsZSAg ICAgICp4LAorCQkJCQkJCSAgY29uc3QgaW50ICAgICAgIHR1cGxlQ291bnQsCisJCQkJCQkJICBj b25zdCBib29sICAgICAgc2Vlbk51bGwsCisJCQkJCQkJICBUdXBsZXNvcnRzdGF0ZSAqc3RhdGUp Cit7CisJVHVwbGVzb3J0UHVibGljICpiYXNlID0gVHVwbGVzb3J0c3RhdGVHZXRQdWJsaWMoc3Rh dGUpOworCVR1cGxlc29ydEluZGV4QlRyZWVBcmcgKmFyZyA9IChUdXBsZXNvcnRJbmRleEJUcmVl QXJnICopIGJhc2UtPmFyZzsKKworCS8qIElmIGVuZm9yY2VVbmlxdWUgaXMgZW5hYmxlZCBhbmQg d2UgbmV2ZXIgc2F3IE5VTEwsIHJhaXNlIGVycm9yICovCisJaWYgKGFyZy0+ZW5mb3JjZVVuaXF1 ZSAmJiAhKCFhcmctPnVuaXF1ZU51bGxzTm90RGlzdGluY3QgJiYgc2Vlbk51bGwpKQorCXsKKwkJ QXNzZXJ0KHN0YXRlLT5jb21wYXJldHVwID09IGNvbXBhcmV0dXBfaW5kZXhfYnRyZWUpOworCisJ CS8qCisJCSAqIHggbWVhbnMgdGhlIGZpcnN0IHR1cGxlIG9mIGR1cGxpY2F0ZWQgdHVwbGUgbGlz dAorCQkgKiBTaW5jZSB0aGV5IGFyZSBkdXBsaWNhdGVkLCBzaW1wbHkgcGljayB1cCB0aGUgZmly c3Qgb25lCisJCSAqIHRvIHJhaXNlIGVycm9yCisJCSAqLworCQlyYWlzZV9lcnJvcl9vZl9kdXBf aW5kZXgoKEluZGV4VHVwbGUpKHgtPnR1cGxlKSwgc3RhdGUpOworCX0KKworCS8qCisJICogSWYg a2V5IHZhbHVlcyBhcmUgZXF1YWwsIHdlIHNvcnQgb24gSXRlbVBvaW50ZXIuICBUaGlzIGlzIHJl cXVpcmVkIGZvcgorCSAqIGJ0cmVlIGluZGV4ZXMsIHNpbmNlIGhlYXAgVElEIGlzIHRyZWF0ZWQg YXMgYW4gaW1wbGljaXQgbGFzdCBrZXkKKwkgKiBhdHRyaWJ1dGUgaW4gb3JkZXIgdG8gZW5zdXJl IHRoYXQgYWxsIGtleXMgaW4gdGhlIGluZGV4IGFyZSBwaHlzaWNhbGx5CisJICogdW5pcXVlLgor CSAqLworCXFzb3J0X3R1cGxlX2J5X2l0ZW1wb2ludGVyKHgsCisJCQkJCQkJICAgdHVwbGVDb3Vu dCwKKwkJCQkJCQkgICBzdGF0ZSk7Cit9CisKKy8qCisgKiBDb21wYXJlIHR3byBidHJlZSBpbmRl eCB0dXBsZXMgYnkgSXRlbVBvaW50ZXIKKyAqIEl0IGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9y IHFzb3J0X3R1cGxlKCkgY2FsbGVkIGJ5CisgKiBta3NvcnRfaGFuZGxlX2R1cF9pbmRleF9idHJl ZSgpCisgKi8KK3N0YXRpYyBpbnQKK21rc29ydF9jb21wYXJlX2VxdWFsX2luZGV4X2J0cmVlKGNv bnN0IFNvcnRUdXBsZSAqYSwKKwkJCQkJCQkJIGNvbnN0IFNvcnRUdXBsZSAqYiwKKwkJCQkJCQkJ IFR1cGxlc29ydHN0YXRlICAqc3RhdGUpCit7CisJSW5kZXhUdXBsZSAgdHVwbGUxOworCUluZGV4 VHVwbGUgIHR1cGxlMjsKKworCXR1cGxlMSA9IChJbmRleFR1cGxlKSBhLT50dXBsZTsKKwl0dXBs ZTIgPSAoSW5kZXhUdXBsZSkgYi0+dHVwbGU7CisKKwlyZXR1cm4gdHVwbGVzb3J0X2NvbXBhcmVf YnlfaXRlbV9wb2ludGVyKHR1cGxlMSwgdHVwbGUyKTsKK30KKworLyogQ29tcGFyZSB0d28gaW5k ZXggdHVwbGVzIGJ5IEl0ZW1Qb2ludGVyICovCitzdGF0aWMgaW5saW5lIGludAordHVwbGVzb3J0 X2NvbXBhcmVfYnlfaXRlbV9wb2ludGVyKGNvbnN0IEluZGV4VHVwbGUgdHVwbGUxLAorCQkJCQkJ CQkgIGNvbnN0IEluZGV4VHVwbGUgdHVwbGUyKQoreworCXsKKwkJQmxvY2tOdW1iZXIgYmxrMSA9 IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1cGxlMS0+dF90aWQpOworCQlCbG9ja051bWJl ciBibGsyID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUyLT50X3RpZCk7CisKKwkJ aWYgKGJsazEgIT0gYmxrMikKKwkJCXJldHVybiAoYmxrMSA8IGJsazIpID8gLTEgOiAxOworCX0K Kwl7CisJCU9mZnNldE51bWJlciBwb3MxID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1 cGxlMS0+dF90aWQpOworCQlPZmZzZXROdW1iZXIgcG9zMiA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKCZ0dXBsZTItPnRfdGlkKTsKKworCQlpZiAocG9zMSAhPSBwb3MyKQorCQkJcmV0dXJu IChwb3MxIDwgcG9zMikgPyAtMSA6IDE7CisJfQorCisJLyogSXRlbVBvaW50ZXIgdmFsdWVzIHNo b3VsZCBuZXZlciBiZSBlcXVhbCAqLworCUFzc2VydChmYWxzZSk7CisKKwlyZXR1cm4gMDsKK30K KworLyogUmFpc2UgZXJyb3IgZm9yIGR1cGxpY2F0ZWQgdHVwbGUgd2hlbiBjcmVhdGluZyB1bmlx dWUgaW5kZXggKi8KK3N0YXRpYyB2b2lkCityYWlzZV9lcnJvcl9vZl9kdXBfaW5kZXgoSW5kZXhU dXBsZSAgICAgIHgsCisJCQkJCQkgVHVwbGVzb3J0c3RhdGUgKnN0YXRlKQoreworCURhdHVtICAg ICAgIHZhbHVlc1tJTkRFWF9NQVhfS0VZU107CisJYm9vbCAgICAgICAgaXNudWxsW0lOREVYX01B WF9LRVlTXTsKKwlUdXBsZURlc2MgICB0dXBEZXNjOworCWNoYXIgICAgICAgKmtleV9kZXNjOwor ICAgIFR1cGxlc29ydFB1YmxpYyAqYmFzZSA9IFR1cGxlc29ydHN0YXRlR2V0UHVibGljKHN0YXRl KTsKKyAgICBUdXBsZXNvcnRJbmRleEJUcmVlQXJnICphcmcgPSAoVHVwbGVzb3J0SW5kZXhCVHJl ZUFyZyAqKSBiYXNlLT5hcmc7CisKKwl0dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihhcmctPmlu ZGV4LmluZGV4UmVsKTsKKwlpbmRleF9kZWZvcm1fdHVwbGUoKEluZGV4VHVwbGUpeCwgdHVwRGVz YywgdmFsdWVzLCBpc251bGwpOworCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRp b24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOworCisJZXJlcG9ydChFUlJP UiwKKwkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCisJCQllcnJtc2coImNv dWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJICAgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpLAorCQkJa2V5X2Rlc2MgPyBlcnJkZXRh aWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6CisJCQkJZXJyZGV0YWlsKCJE dXBsaWNhdGUga2V5cyBleGlzdC4iKSwKKwkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRl eC5oZWFwUmVsLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4 LmluZGV4UmVsKSkpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNs dWRlL2MuaAppbmRleCBkYzE4NDEzNDZjLi5mN2MzNjhjZDE2IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBAIC04NTcsMTIgKzg1NywxNCBAQCB0eXBl ZGVmIE5hbWVEYXRhICpOYW1lOwogCiAjZGVmaW5lIEFzc2VydChjb25kaXRpb24pCSgodm9pZCl0 cnVlKQogI2RlZmluZSBBc3NlcnRNYWNybyhjb25kaXRpb24pCSgodm9pZCl0cnVlKQorI2RlZmlu ZSBBc3NlcnRJbXBseShjb25kaXRpb24xLCBjb25kaXRpb24yKSAoKHZvaWQpdHJ1ZSkKIAogI2Vs aWYgZGVmaW5lZChGUk9OVEVORCkKIAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2RlZmluZSBBc3Nl cnQocCkgYXNzZXJ0KHApCiAjZGVmaW5lIEFzc2VydE1hY3JvKHApCSgodm9pZCkgYXNzZXJ0KHAp KQorI2RlZmluZSBBc3NlcnRJbXBseShjb25kMSwgY29uZDIpIEFzc2VydCghKGNvbmQxKSB8fCAo Y29uZDIpKQogCiAjZWxzZQkJCQkJCQkvKiBVU0VfQVNTRVJUX0NIRUNLSU5HICYmICFGUk9OVEVO RCAqLwogCkBAIC04ODYsNiArODg4LDggQEAgdHlwZWRlZiBOYW1lRGF0YSAqTmFtZTsKIAkoKHZv aWQpICgoY29uZGl0aW9uKSB8fCBcCiAJCQkgKEV4Y2VwdGlvbmFsQ29uZGl0aW9uKCNjb25kaXRp b24sIF9fRklMRV9fLCBfX0xJTkVfXyksIDApKSkKIAorI2RlZmluZSBBc3NlcnRJbXBseShjb25k MSwgY29uZDIpIEFzc2VydCghKGNvbmQxKSB8fCAoY29uZDIpKQorCiAjZW5kaWYJCQkJCQkJLyog VVNFX0FTU0VSVF9DSEVDS0lORyAmJiAhRlJPTlRFTkQgKi8KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0 LmgKaW5kZXggZTc5NDFhMWYwOS4uZDNmMjdiNDlkYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAg LTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0 aWxzL3NvcnRzdXBwb3J0LmgiCiAKLQogLyoKICAqIFR1cGxlc29ydHN0YXRlIGFuZCBTaGFyZWRz b3J0IGFyZSBvcGFxdWUgdHlwZXMgd2hvc2UgZGV0YWlscyBhcmUgbm90CiAgKiBrbm93biBvdXRz aWRlIHR1cGxlc29ydC5jLgpAQCAtNzksOSArNzgsMTAgQEAgdHlwZWRlZiBlbnVtCiAJU09SVF9U WVBFX1FVSUNLU09SVCA9IDEgPDwgMSwKIAlTT1JUX1RZUEVfRVhURVJOQUxfU09SVCA9IDEgPDwg MiwKIAlTT1JUX1RZUEVfRVhURVJOQUxfTUVSR0UgPSAxIDw8IDMsCisJU09SVF9UWVBFX01LU09S VCA9IDEgPDwgNCwKIH0gVHVwbGVzb3J0TWV0aG9kOwogCi0jZGVmaW5lIE5VTV9UVVBMRVNPUlRN RVRIT0RTIDQKKyNkZWZpbmUgTlVNX1RVUExFU09SVE1FVEhPRFMgNQogCiB0eXBlZGVmIGVudW0K IHsKQEAgLTE1NSw2ICsxNTUsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QKIHR5cGVkZWYgaW50ICgqU29y dFR1cGxlQ29tcGFyYXRvcikgKGNvbnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1cGxlICpi LAogCQkJCQkJCQkJVHVwbGVzb3J0c3RhdGUgKnN0YXRlKTsKIAordHlwZWRlZiBEYXR1bQorKCpN a3NvcnRHZXREYXR1bUZ1bmMpIChTb3J0VHVwbGUgICAgICAqeCwKKwkJCQkJICAgY29uc3QgaW50 ICAgICAgIHR1cGxlSW5kZXgsCisJCQkJCSAgIGNvbnN0IGludCAgICAgICBkZXB0aCwKKwkJCQkJ ICAgVHVwbGVzb3J0c3RhdGUgKnN0YXRlLAorCQkJCQkgICBEYXR1bSAgICAgICAgICAqZGF0dW0s CisJCQkJCSAgIGJvb2wgICAgICAgICAgICppc051bGwsCisJCQkJCSAgIGJvb2wgICAgICAgICAg ICB1c2VGdWxsS2V5KTsKKwordHlwZWRlZiB2b2lkCisoKk1rc29ydEhhbmRsZUR1cEZ1bmMpIChT b3J0VHVwbGUgICAgICAqeCwKKwkJCQkJCWNvbnN0IGludCAgICAgICB0dXBsZUNvdW50LAorCQkJ CQkJY29uc3QgYm9vbCAgICAgIHNlZW5OdWxsLAorCQkJCQkJVHVwbGVzb3J0c3RhdGUgKnN0YXRl KTsKKwogLyoKICAqIFRoZSBwdWJsaWMgcGFydCBvZiBhIFR1cGxlIHNvcnQgb3BlcmF0aW9uIHN0 YXRlLiAgVGhpcyBkYXRhIHN0cnVjdHVyZQogICogY29udGFpbnMgdGhlIGRlZmluaXRpb24gb2Yg c29ydC12YXJpYW50LXNwZWNpZmljIGludGVyZmFjZSBtZXRob2RzIGFuZApAQCAtMjQ5LDYgKzI2 NCwyMSBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCXR1cGxlczsJCQkvKiBDYW4gU29ydFR1cGxl LnR1cGxlIGV2ZXIgYmUgc2V0PyAqLwogCiAJdm9pZAkgICAqYXJnOwkJCS8qIFNwZWNpZmljIGlu Zm9ybWF0aW9uIGZvciB0aGUgc29ydCB2YXJpYW50ICovCisKKwkvKgorCSAqIEZ1bmN0aW9uIHBv aW50ZXIsIHJlZmVyZW5jaW5nIGEgZnVuY3Rpb24gdG8gZ2V0IHNwZWNpZmllZCBkYXR1bSBmcm9t CisJICogU29ydFR1cGxlIGxpc3Qgd2l0aCBtdWx0aS1rZXkuCisJICogVXNlZCBieSBta3NvcnRf dHVwbGUoKS4KKwkqLworCU1rc29ydEdldERhdHVtRnVuYyBta3NvcnRHZXREYXR1bUZ1bmM7CisK KwkvKgorCSAqIEZ1bmN0aW9uIHBvaW50ZXIsIHJlZmVyZW5jaW5nIGEgZnVuY3Rpb24gdG8gaGFu ZGxlIGR1cGxpY2F0ZWQgdHVwbGUKKwkgKiBmcm9tIFNvcnRUdXBsZSBsaXN0IHdpdGggbXVsdGkt a2V5LgorCSAqIFVzZWQgYnkgbWtzb3J0X3R1cGxlKCkuCisJICogRm9yIG5vdywgdGhlIGZ1bmN0 aW9uIHBvaW50ZXIgaXMgZmlsbGVkIGZvciBvbmx5IGJ0cmVlIGluZGV4IHR1cGxlLgorCSovCisJ TWtzb3J0SGFuZGxlRHVwRnVuYyBta3NvcnRIYW5kbGVEdXBGdW5jOwogfSBUdXBsZXNvcnRQdWJs aWM7CiAKIC8qIFNvcnQgcGFyYWxsZWwgY29kZSBmcm9tIHN0YXRlIGZvciBzb3J0X19zdGFydCBw cm9iZXMgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VvbWV0cnku b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW9tZXRyeS5vdXQKaW5kZXggOGJlNjk0 ZjQ2Yi4uMDk0ZDIyODYxYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9n ZW9tZXRyeS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW9tZXRyeS5vdXQK QEAgLTQyNzMsNyArNDI3Myw3IEBAIFNFTEVDVCBjaXJjbGUoZjEpCiBTRUxFQ1QgYzEuZjEgQVMg Y2lyY2xlLCBwMS5mMSBBUyBwb2ludCwgKHAxLmYxIDwtPiBjMS5mMSkgQVMgZGlzdGFuY2UKICAg IEZST00gQ0lSQ0xFX1RCTCBjMSwgUE9JTlRfVEJMIHAxCiAgICBXSEVSRSAocDEuZjEgPC0+IGMx LmYxKSA+IDAKLSAgIE9SREVSIEJZIGRpc3RhbmNlLCBhcmVhKGMxLmYxKSwgcDEuZjFbMF07Cisg ICBPUkRFUiBCWSBkaXN0YW5jZSwgYXJlYShjMS5mMSksIHAxLmYxWzBdLCBjMS5mMTo6dGV4dDsK ICAgICAgY2lyY2xlICAgICB8ICAgICAgIHBvaW50ICAgICAgIHwgICBkaXN0YW5jZSAgICAKIC0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KICA8KDEs MiksMz4gICAgICB8ICgtMyw0KSAgICAgICAgICAgIHwgICAxLjQ3MjEzNTk1NQpAQCAtNDMxMCw4 ICs0MzEwLDggQEAgU0VMRUNUIGMxLmYxIEFTIGNpcmNsZSwgcDEuZjEgQVMgcG9pbnQsIChwMS5m MSA8LT4gYzEuZjEpIEFTIGRpc3RhbmNlCiAgPCgzLDUpLDA+ICAgICAgfCAoSW5maW5pdHksMWUr MzAwKSB8ICAgICAgSW5maW5pdHkKICA8KDEsMiksMz4gICAgICB8ICgxZSszMDAsSW5maW5pdHkp IHwgICAgICBJbmZpbml0eQogIDwoNSwxKSwzPiAgICAgIHwgKDFlKzMwMCxJbmZpbml0eSkgfCAg ICAgIEluZmluaXR5Ci0gPCg1LDEpLDM+ICAgICAgfCAoSW5maW5pdHksMWUrMzAwKSB8ICAgICAg SW5maW5pdHkKICA8KDEsMiksMz4gICAgICB8IChJbmZpbml0eSwxZSszMDApIHwgICAgICBJbmZp bml0eQorIDwoNSwxKSwzPiAgICAgIHwgKEluZmluaXR5LDFlKzMwMCkgfCAgICAgIEluZmluaXR5 CiAgPCgxLDMpLDU+ICAgICAgfCAoMWUrMzAwLEluZmluaXR5KSB8ICAgICAgSW5maW5pdHkKICA8 KDEsMyksNT4gICAgICB8IChJbmZpbml0eSwxZSszMDApIHwgICAgICBJbmZpbml0eQogIDwoMTAw LDIwMCksMTA+IHwgKDFlKzMwMCxJbmZpbml0eSkgfCAgICAgIEluZmluaXR5CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luY3JlbWVudGFsX3NvcnQub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9pbmNyZW1lbnRhbF9zb3J0Lm91dAppbmRleCA1ZmQ1NGExMGIx Li5lOGRiYTgzMzg5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luY3Jl bWVudGFsX3NvcnQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5jcmVtZW50 YWxfc29ydC5vdXQKQEAgLTUyMCwxMyArNTIwLDEzIEBAIHNlbGVjdCAqIGZyb20gKHNlbGVjdCAq IGZyb20gdCBvcmRlciBieSBhKSBzIG9yZGVyIGJ5IGEsIGIgbGltaXQgNTU7CiAKIC0tIFRlc3Qg RVhQTEFJTiBBTkFMWVpFIHdpdGggb25seSBhIGZ1bGxzb3J0IGdyb3VwLgogc2VsZWN0IGV4cGxh aW5fYW5hbHl6ZV93aXRob3V0X21lbW9yeSgnc2VsZWN0ICogZnJvbSAoc2VsZWN0ICogZnJvbSB0 IG9yZGVyIGJ5IGEpIHMgb3JkZXIgYnkgYSwgYiBsaW1pdCA1NScpOwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fYW5hbHl6ZV93aXRob3V0X21lbW9yeSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX2FuYWx5emVfd2l0aG91dF9tZW1vcnkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIExpbWl0IChh Y3R1YWwgcm93cz01NSBsb29wcz0xKQogICAgLT4gIEluY3JlbWVudGFsIFNvcnQgKGFjdHVhbCBy b3dzPTU1IGxvb3BzPTEpCiAgICAgICAgICBTb3J0IEtleTogdC5hLCB0LmIKICAgICAgICAgIFBy ZXNvcnRlZCBLZXk6IHQuYQotICAgICAgICAgRnVsbC1zb3J0IEdyb3VwczogMiAgU29ydCBNZXRo b2RzOiB0b3AtTiBoZWFwc29ydCwgcXVpY2tzb3J0ICBBdmVyYWdlIE1lbW9yeTogTk5rQiAgUGVh ayBNZW1vcnk6IE5Oa0IKKyAgICAgICAgIEZ1bGwtc29ydCBHcm91cHM6IDIgIFNvcnQgTWV0aG9k czogdG9wLU4gaGVhcHNvcnQsIG11bHRpLWtleSBzb3J0ICBBdmVyYWdlIE1lbW9yeTogTk5rQiAg UGVhayBNZW1vcnk6IE5Oa0IKICAgICAgICAgIC0+ICBTb3J0IChhY3R1YWwgcm93cz0xMDEgbG9v cHM9MSkKICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0LmEKICAgICAgICAgICAgICAgIFNvcnQg TWV0aG9kOiBxdWlja3NvcnQgIE1lbW9yeTogTk5rQgpAQCAtNTU0LDcgKzU1NCw3IEBAIHNlbGVj dCBqc29uYl9wcmV0dHkoZXhwbGFpbl9hbmFseXplX2luY19zb3J0X25vZGVzX3dpdGhvdXRfbWVt b3J5KCdzZWxlY3QgKiBmcm9tCiAgICAgICAgICAgICAgIkdyb3VwIENvdW50IjogMiwgICAgICAg ICAgICAgICAgICArCiAgICAgICAgICAgICAgIlNvcnQgTWV0aG9kcyBVc2VkIjogWyAgICAgICAg ICAgICArCiAgICAgICAgICAgICAgICAgICJ0b3AtTiBoZWFwc29ydCIsICAgICAgICAgICAgICAr Ci0gICAgICAgICAgICAgICAgICJxdWlja3NvcnQiICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICJtdWx0aS1rZXkgc29ydCIgICAgICAgICAgICAgICArCiAgICAgICAgICAg ICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIlNv cnQgU3BhY2UgTWVtb3J5IjogeyAgICAgICAgICAgICArCiAgICAgICAgICAgICAgICAgICJQZWFr IFNvcnQgU3BhY2UgVXNlZCI6ICJOTiIsICArCkBAIC03MjgsNyArNzI4LDcgQEAgc2VsZWN0IGV4 cGxhaW5fYW5hbHl6ZV93aXRob3V0X21lbW9yeSgnc2VsZWN0ICogZnJvbSAoc2VsZWN0ICogZnJv bSB0IG9yZGVyIGJ5IGEKICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0IChhY3R1YWwgcm93cz03MCBs b29wcz0xKQogICAgICAgICAgU29ydCBLZXk6IHQuYSwgdC5iCiAgICAgICAgICBQcmVzb3J0ZWQg S2V5OiB0LmEKLSAgICAgICAgIEZ1bGwtc29ydCBHcm91cHM6IDEgIFNvcnQgTWV0aG9kOiBxdWlj a3NvcnQgIEF2ZXJhZ2UgTWVtb3J5OiBOTmtCICBQZWFrIE1lbW9yeTogTk5rQgorICAgICAgICAg RnVsbC1zb3J0IEdyb3VwczogMSAgU29ydCBNZXRob2Q6IG11bHRpLWtleSBzb3J0ICBBdmVyYWdl IE1lbW9yeTogTk5rQiAgUGVhayBNZW1vcnk6IE5Oa0IKICAgICAgICAgIFByZS1zb3J0ZWQgR3Jv dXBzOiA1ICBTb3J0IE1ldGhvZHM6IHRvcC1OIGhlYXBzb3J0LCBxdWlja3NvcnQgIEF2ZXJhZ2Ug TWVtb3J5OiBOTmtCICBQZWFrIE1lbW9yeTogTk5rQgogICAgICAgICAgLT4gIFNvcnQgKGFjdHVh bCByb3dzPTEwMDAgbG9vcHM9MSkKICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0LmEKQEAgLTc1 Niw3ICs3NTYsNyBAQCBzZWxlY3QganNvbmJfcHJldHR5KGV4cGxhaW5fYW5hbHl6ZV9pbmNfc29y dF9ub2Rlc193aXRob3V0X21lbW9yeSgnc2VsZWN0ICogZnJvbQogICAgICAgICAgIkZ1bGwtc29y dCBHcm91cHMiOiB7ICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAgICJHcm91cCBDb3Vu dCI6IDEsICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAgICJTb3J0IE1ldGhvZHMgVXNl ZCI6IFsgICAgICAgICAgICAgKwotICAgICAgICAgICAgICAgICAicXVpY2tzb3J0IiAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAibXVsdGkta2V5IHNvcnQiICAgICAgICAg ICAgICAgKwogICAgICAgICAgICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KwogICAgICAgICAgICAgICJTb3J0IFNwYWNlIE1lbW9yeSI6IHsgICAgICAgICAgICAgKwogICAg ICAgICAgICAgICAgICAiUGVhayBTb3J0IFNwYWNlIFVzZWQiOiAiTk4iLCAgKwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90dXBsZXNvcnQub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90dXBsZXNvcnQub3V0CmluZGV4IDZkZDk3ZTc0MjcuLmNkMDhjZThiM2Mg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHVwbGVzb3J0Lm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R1cGxlc29ydC5vdXQKQEAgLTcwMywzICs3MDMs Mzc4IEBAIEVYUExBSU4gKENPU1RTIE9GRikgOnFyeTsKICgxMCByb3dzKQogCiBDT01NSVQ7Cist LSBUZXN0IGNhc2VzIGZvciBtdWx0aS1rZXkgc29ydAorc2V0IHdvcmtfbWVtPScxMDBNQic7Cist LSB0ZXN0IHNpbXBsZSBzb3J0aW5nCitjcmVhdGUgdGFibGUgbWtzb3J0X3NpbXBsZV90YmwoYSBp bnQsIGIgaW50LCBjIHZhcmNoYXIpOworaW5zZXJ0IGludG8gbWtzb3J0X3NpbXBsZV90YmwKKyAg ICBzZWxlY3QgZyAlIDEwLCBnICUgMTUsIGxlZnQobWQ1KGc6OnRleHQpLCA0KQorICAgIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBnOworc2VsZWN0ICogZnJvbSBta3NvcnRfc2ltcGxlX3Ri bCBvcmRlciBieSBhLCBiLCBjOworIGEgfCBiICB8ICBjICAgCistLS0rLS0tLSstLS0tLS0KKyAw IHwgIDAgfCAzNDE3CisgMCB8ICA1IHwgOThmMQorIDAgfCAgNSB8IGMwYzcKKyAwIHwgMTAgfCBk M2Q5CisgMCB8IDEwIHwgZDY0NQorIDEgfCAgMSB8IGMxNmEKKyAxIHwgIDEgfCBjNGNhCisgMSB8 ICA2IHwgM2M1OQorIDEgfCAxMSB8IDM0MTYKKyAxIHwgMTEgfCA2NTEyCisgMiB8ICAyIHwgNjM2 NAorIDIgfCAgMiB8IGM4MWUKKyAyIHwgIDcgfCBiNmQ3CisgMiB8IDEyIHwgYTFkMAorIDIgfCAx MiB8IGMyMGEKKyAzIHwgIDMgfCAxODJiCisgMyB8ICAzIHwgZWNjYgorIDMgfCAgOCB8IDM3NjkK KyAzIHwgMTMgfCAxN2U2CisgMyB8IDEzIHwgYzUxYworIDQgfCAgNCB8IGE4N2YKKyA0IHwgIDQg fCBlMzY5CisgNCB8ICA5IHwgMWZmMQorIDQgfCAxNCB8IGFhYjMKKyA0IHwgMTQgfCBmNzE3Cisg NSB8ICAwIHwgNmM4MworIDUgfCAgMCB8IDliZjMKKyA1IHwgIDUgfCAxYzM4CisgNSB8ICA1IHwg ZTRkYQorIDUgfCAxMCB8IDhlMjkKKyA2IHwgIDEgfCBjNzRkCisgNiB8ICAxIHwgZDlkNAorIDYg fCAgNiB8IDE2NzkKKyA2IHwgIDYgfCAxOWNhCisgNiB8IDExIHwgNGU3MworIDcgfCAgMiB8IDY3 YzYKKyA3IHwgIDIgfCA3MGVmCisgNyB8ICA3IHwgOGYxNAorIDcgfCAgNyB8IGE1YmYKKyA3IHwg MTIgfCAwMmU3CisgOCB8ICAzIHwgNjQyZQorIDggfCAgMyB8IDZmNDkKKyA4IHwgIDggfCBhNTc3 CisgOCB8ICA4IHwgYzlmMAorIDggfCAxMyB8IDMzZTcKKyA5IHwgIDQgfCAxZjBlCisgOSB8ICA0 IHwgZjQ1NworIDkgfCAgOSB8IDQ1YzQKKyA5IHwgIDkgfCBkNjdkCisgOSB8IDE0IHwgNmVhOQor KDUwIHJvd3MpCisKK2Ryb3AgdGFibGUgbWtzb3J0X3NpbXBsZV90Ymw7CistLSB0ZXN0IHRhYmxl IHdpdGggYWJiciBrZXlzCitjcmVhdGUgdGFibGUgYWJicl90YmwgKGEgaW50LCBiIHZhcmNoYXIo MTAwKSwgYyB1dWlkKTsKKy0tIGluc2VydCBkYXRhIHdpdGggYWJiciBrZXlzICh1dWlkKQorLS0g YWJiciBrZXlzIG9mIHV1aWQgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBmaXJzdCBgc2l6ZW9mKERh dHVtKWAgYnl0ZXMgb2YgdXVpZCBkYXRhCistLShzZWUgdXVpZF9hYmJyZXZfY29udmVydCgpKSwg c28gdHdvIHV1aWRzIHdpdGggb25seSBkaWZmZXJlbnQgdGFpbGVkIHZhbHVlcyBzaG91bGQKKy0t IGhhdmUgc2FtZSBhYmJyIGtleXMgYnV0IGRpZmZlcmVudCAiZnVsbCIgZGF0dW0uCitpbnNlcnQg aW50byBhYmJyX3RibCB2YWx1ZXMgKGdlbmVyYXRlX3NlcmllcygxLDUwKSwgJ2FhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicpOwordXBkYXRlIGFi YnJfdGJsIHNldCBiID0gJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYicgfHwgKGEgJSA3KTo6dGV4dDsKK3VwZGF0ZSBhYmJyX3RibCBzZXQgYyA9 ICgnZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZicgfHwgKGEgJSA1KTo6dGV4dCk6OnV1 aWQgd2hlcmUgYSAlIDQgPSAwOwordXBkYXRlIGFiYnJfdGJsIHNldCBjID0gKCcwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwJyB8fCAoYSAlIDUpOjp0ZXh0KTo6dXVpZCB3aGVyZSBhICUg NCA9IDE7Cit1cGRhdGUgYWJicl90Ymwgc2V0IGMgPSAoJzExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTEnIHx8IChhICUgNSk6OnRleHQpOjp1dWlkIHdoZXJlIGEgJSA0ID0gMjsKK3VwZGF0 ZSBhYmJyX3RibCBzZXQgYyA9IG51bGwgd2hlcmUgYSAlIDQgPSAzOworc2VsZWN0IGMsIGIsIGEg ZnJvbSBhYmJyX3RibCBvcmRlciBieSBjLCBiLCBhOworICAgICAgICAgICAgICAgICAgYyAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBhICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIHwgYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDQ1Cisg MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIHwgYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8IDI1CisgMDAwMDAwMDAtMDAw MC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8ICA1CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAt MDAwMDAwMDAwMDAxIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiMCB8IDIxCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAx IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi MSB8ICAxCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxIHwgYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDQxCisgMDAw MDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAyIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8IDM3CisgMDAwMDAwMDAtMDAwMC0w MDAwLTAwMDAtMDAwMDAwMDAwMDAyIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDE3CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAw MDAwMDAwMDAzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiNSB8IDMzCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAzIHwg YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8 IDEzCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDA0IHwgYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8IDQ5CisgMDAwMDAw MDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDA0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8IDI5CisgMDAwMDAwMDAtMDAwMC0wMDAw LTAwMDAtMDAwMDAwMDAwMDA0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiMiB8ICA5CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTEx MTExMTEwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiMSB8IDUwCisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEwIHwgYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8IDMw CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEwIHwgYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDEwCisgMTExMTExMTEt MTExMS0xMTExLTExMTEtMTExMTExMTExMTExIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8IDQ2CisgMTExMTExMTEtMTExMS0xMTExLTEx MTEtMTExMTExMTExMTExIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiNSB8IDI2CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTEx MTExIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiNiB8ICA2CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEyIHwgYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8IDQyCisg MTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEyIHwgYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8IDIyCisgMTExMTExMTEtMTEx MS0xMTExLTExMTEtMTExMTExMTExMTEyIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8ICAyCisgMTExMTExMTEtMTExMS0xMTExLTExMTEt MTExMTExMTExMTEzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiMyB8IDM4CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEz IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi NCB8IDE4CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTE0IHwgYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8IDE0CisgMTEx MTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTE0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDM0CisgZmZmZmZmZmYtZmZmZi1m ZmZmLWZmZmYtZmZmZmZmZmZmZmYwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8IDQwCisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZm ZmZmZmZmZmYwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiNiB8IDIwCisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYxIHwg YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8 IDM2CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYxIHwgYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8IDE2CisgZmZmZmZm ZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYyIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8IDMyCisgZmZmZmZmZmYtZmZmZi1mZmZm LWZmZmYtZmZmZmZmZmZmZmYyIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiNSB8IDEyCisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZm ZmZmZmYzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiMCB8IDI4CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYzIHwgYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8ICA4 CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYzIHwgYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDQ4CisgZmZmZmZmZmYt ZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmY0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8IDQ0CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZm ZmYtZmZmZmZmZmZmZmY0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiMyB8IDI0CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZm ZmY0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiNCB8ICA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8ICA3Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8IDM1CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8IDE1CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiMSB8IDQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi MiB8IDIzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8ICAzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDMxCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8IDExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiNCB8IDM5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8 IDE5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8IDQ3CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDI3CisoNTAgcm93cykKKworc2VsZWN0 IGMsIGIsIGEgZnJvbSBhYmJyX3RibCBvcmRlciBieSBjIGRlc2MsIGIsIGE7CisgICAgICAgICAg ICAgICAgICBjICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg YiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmIwIHwgIDcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIwIHwgMzUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIxIHwgMTUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIxIHwgNDMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmIyIHwgMjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmIzIHwgIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIzIHwgMzEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI0IHwgMTEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI0IHwgMzkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmI1IHwgMTkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI1 IHwgNDcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI2IHwgMjcKKyBmZmZm ZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjQgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIyIHwgNDQKKyBmZmZmZmZmZi1mZmZmLWZm ZmYtZmZmZi1mZmZmZmZmZmZmZjQgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmIzIHwgMjQKKyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZm ZmZmZmZmZjQgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmI0IHwgIDQKKyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjMgfCBh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIwIHwg MjgKKyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjMgfCBhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIxIHwgIDgKKyBmZmZmZmZm Zi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjMgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI2IHwgNDgKKyBmZmZmZmZmZi1mZmZmLWZmZmYt ZmZmZi1mZmZmZmZmZmZmZjIgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmI0IHwgMzIKKyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZm ZmZmZjIgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmI1IHwgMTIKKyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjEgfCBhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIxIHwgMzYK KyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjEgfCBhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIyIHwgMTYKKyBmZmZmZmZmZi1m ZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI1IHwgNDAKKyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZm Zi1mZmZmZmZmZmZmZjAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmI2IHwgMjAKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTEx MTQgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmIwIHwgMTQKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTQgfCBhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI2IHwgMzQKKyAx MTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTMgfCBhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIzIHwgMzgKKyAxMTExMTExMS0xMTEx LTExMTEtMTExMS0xMTExMTExMTExMTMgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI0IHwgMTgKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0x MTExMTExMTExMTIgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmIwIHwgNDIKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTIg fCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIx IHwgMjIKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTIgfCBhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIyIHwgIDIKKyAxMTEx MTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI0IHwgNDYKKyAxMTExMTExMS0xMTExLTEx MTEtMTExMS0xMTExMTExMTExMTEgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmI1IHwgMjYKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTEx MTExMTExMTEgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmI2IHwgIDYKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTAgfCBh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIxIHwg NTAKKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTAgfCBhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIyIHwgMzAKKyAxMTExMTEx MS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIzIHwgMTAKKyAwMDAwMDAwMC0wMDAwLTAwMDAt MDAwMC0wMDAwMDAwMDAwMDQgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmIwIHwgNDkKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAw MDAwMDQgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmIxIHwgMjkKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDQgfCBhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIyIHwgIDkK KyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDMgfCBhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI1IHwgMzMKKyAwMDAwMDAwMC0w MDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDMgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI2IHwgMTMKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAw MC0wMDAwMDAwMDAwMDIgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmIyIHwgMzcKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAw MDIgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmIzIHwgMTcKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDEgfCBhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIwIHwgMjEKKyAw MDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDEgfCBhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIxIHwgIDEKKyAwMDAwMDAwMC0wMDAw LTAwMDAtMDAwMC0wMDAwMDAwMDAwMDEgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI2IHwgNDEKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0w MDAwMDAwMDAwMDAgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmIzIHwgNDUKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAg fCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI0 IHwgMjUKKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAgfCBhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmI1IHwgIDUKKyg1MCBy b3dzKQorCitzZWxlY3QgYywgYiwgYSBmcm9tIGFiYnJfdGJsIG9yZGVyIGJ5IGMsIGIgZGVzYywg YTsKKyAgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICBiICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLQorIDAwMDAwMDAwLTAwMDAtMDAw MC0wMDAwLTAwMDAwMDAwMDAwMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYjUgfCAgNQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAw MDAwMDAwMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYjQgfCAyNQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCB8IGFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCA0 NQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMSB8IGFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCA0MQorIDAwMDAwMDAw LTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEgfCAgMQorIDAwMDAwMDAwLTAwMDAtMDAwMC0w MDAwLTAwMDAwMDAwMDAwMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYjAgfCAyMQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAw MDAwMiB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYjMgfCAxNworIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMiB8IGFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAzNwor IDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMyB8IGFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCAxMworIDAwMDAwMDAwLTAw MDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCAzMworIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAw LTAwMDAwMDAwMDAwNCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYjIgfCAgOQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAw NCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YjEgfCAyOQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwNCB8IGFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjAgfCA0OQorIDEx MTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCAxMAorIDExMTExMTExLTExMTEt MTExMS0xMTExLTExMTExMTExMTExMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAzMAorIDExMTExMTExLTExMTEtMTExMS0xMTExLTEx MTExMTExMTExMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYjEgfCA1MAorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMSB8 IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYg fCAgNgorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMSB8IGFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCAyNgorIDExMTEx MTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCA0NgorIDExMTExMTExLTExMTEtMTEx MS0xMTExLTExMTExMTExMTExMiB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAgMgorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTEx MTExMTExMiB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYjEgfCAyMgorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMiB8IGFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjAgfCA0 MgorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMyB8IGFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAxOAorIDExMTExMTEx LTExMTEtMTExMS0xMTExLTExMTExMTExMTExMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCAzOAorIDExMTExMTExLTExMTEtMTExMS0x MTExLTExMTExMTExMTExNCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYjYgfCAzNAorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTEx MTExNCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYjAgfCAxNAorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMCB8IGFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCAyMAor IGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMCB8IGFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCA0MAorIGZmZmZmZmZmLWZm ZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAxNgorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZm LWZmZmZmZmZmZmZmMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYjEgfCAzNgorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZm MiB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YjUgfCAxMgorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMiB8IGFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAzMgorIGZm ZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCA0OAorIGZmZmZmZmZmLWZmZmYt ZmZmZi1mZmZmLWZmZmZmZmZmZmZmMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEgfCAgOAorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZm ZmZmZmZmZmZmMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYjAgfCAyOAorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmNCB8 IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQg fCAgNAorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmNCB8IGFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCAyNAorIGZmZmZm ZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmNCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCA0NAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYjYgfCAyNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYjUgfCAxOQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCA0 NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAxMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAzOQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYjMgfCAgMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYjMgfCAzMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAyMwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEgfCAxNQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEgfCA0MworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYjAgfCAgNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YjAgfCAzNQorKDUwIHJvd3MpCisKK3NlbGVjdCBjLCBiLCBhIGZyb20gYWJicl90Ymwgb3JkZXIg YnkgYyBudWxscyBmaXJzdCwgYiBkZXNjLCBhOworICAgICAgICAgICAgICAgICAgYyAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBhICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDI3CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8IDE5CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8IDQ3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiNCB8IDExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8 IDM5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8ICAzCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDMxCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiMiB8IDIzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiMSB8IDE1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8IDQz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8ICA3CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8IDM1CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAw MDAtMDAwMDAwMDAwMDAwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiNSB8ICA1CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAw MDAwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiNCB8IDI1CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIHwgYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDQ1Cisg MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxIHwgYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDQxCisgMDAwMDAwMDAtMDAw MC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8ICAxCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAt MDAwMDAwMDAwMDAxIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiMCB8IDIxCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAy IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi MyB8IDE3CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAyIHwgYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8IDM3CisgMDAw MDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDEzCisgMDAwMDAwMDAtMDAwMC0w MDAwLTAwMDAtMDAwMDAwMDAwMDAzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8IDMzCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAw MDAwMDAwMDA0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiMiB8ICA5CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDA0IHwg YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMSB8 IDI5CisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDA0IHwgYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8IDQ5CisgMTExMTEx MTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDEwCisgMTExMTExMTEtMTExMS0xMTEx LTExMTEtMTExMTExMTExMTEwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiMiB8IDMwCisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTEx MTExMTEwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiMSB8IDUwCisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExIHwgYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8ICA2 CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExIHwgYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8IDI2CisgMTExMTExMTEt MTExMS0xMTExLTExMTEtMTExMTExMTExMTExIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8IDQ2CisgMTExMTExMTEtMTExMS0xMTExLTEx MTEtMTExMTExMTExMTEyIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiMiB8ICAyCisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTEx MTEyIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiMSB8IDIyCisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEyIHwgYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMCB8IDQyCisg MTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTEzIHwgYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8IDE4CisgMTExMTExMTEtMTEx MS0xMTExLTExMTEtMTExMTExMTExMTEzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDM4CisgMTExMTExMTEtMTExMS0xMTExLTExMTEt MTExMTExMTExMTE0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiNiB8IDM0CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTE0 IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi MCB8IDE0CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYwIHwgYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDIwCisgZmZm ZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYwIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8IDQwCisgZmZmZmZmZmYtZmZmZi1m ZmZmLWZmZmYtZmZmZmZmZmZmZmYxIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8IDE2CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZm ZmZmZmZmZmYxIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiMSB8IDM2CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYyIHwg YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNSB8 IDEyCisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYyIHwgYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8IDMyCisgZmZmZmZm ZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmYzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNiB8IDQ4CisgZmZmZmZmZmYtZmZmZi1mZmZm LWZmZmYtZmZmZmZmZmZmZmYzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiMSB8ICA4CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZm ZmZmZmYzIHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiMCB8IDI4CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmY0IHwgYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiNCB8ICA0 CisgZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmY0IHwgYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMyB8IDI0CisgZmZmZmZmZmYt ZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmY0IHwgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiMiB8IDQ0CisoNTAgcm93cykKKworc2VsZWN0IGMs IGIsIGEgZnJvbSBhYmJyX3RibCBvcmRlciBieSBjIG51bGxzIGxhc3QsIGIgZGVzYywgYTsKKyAg ICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAw LTAwMDAwMDAwMDAwMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYjUgfCAgNQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAw MCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YjQgfCAyNQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCB8IGFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCA0NQorIDAw MDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCA0MQorIDAwMDAwMDAwLTAwMDAt MDAwMC0wMDAwLTAwMDAwMDAwMDAwMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEgfCAgMQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAw MDAwMDAwMDAwMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYjAgfCAyMQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMiB8 IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMg fCAxNworIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMiB8IGFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAzNworIDAwMDAw MDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCAxMworIDAwMDAwMDAwLTAwMDAtMDAw MC0wMDAwLTAwMDAwMDAwMDAwMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYjUgfCAzMworIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAw MDAwMDAwNCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYjIgfCAgOQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwNCB8IGFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEgfCAy OQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwNCB8IGFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjAgfCA0OQorIDExMTExMTEx LTExMTEtMTExMS0xMTExLTExMTExMTExMTExMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCAxMAorIDExMTExMTExLTExMTEtMTExMS0x MTExLTExMTExMTExMTExMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYjIgfCAzMAorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTEx MTExMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYjEgfCA1MAorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMSB8IGFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCAgNgor IDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMSB8IGFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCAyNgorIDExMTExMTExLTEx MTEtMTExMS0xMTExLTExMTExMTExMTExMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCA0NgorIDExMTExMTExLTExMTEtMTExMS0xMTEx LTExMTExMTExMTExMiB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYjIgfCAgMgorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTEx MiB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YjEgfCAyMgorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMiB8IGFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjAgfCA0MgorIDEx MTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAxOAorIDExMTExMTExLTExMTEt MTExMS0xMTExLTExMTExMTExMTExMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCAzOAorIDExMTExMTExLTExMTEtMTExMS0xMTExLTEx MTExMTExMTExNCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYjYgfCAzNAorIDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExNCB8 IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjAg fCAxNAorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMCB8IGFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCAyMAorIGZmZmZm ZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCA0MAorIGZmZmZmZmZmLWZmZmYtZmZm Zi1mZmZmLWZmZmZmZmZmZmZmMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAxNgorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZm ZmZmZmZmMSB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYjEgfCAzNgorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMiB8IGFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCAx MgorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMiB8IGFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAzMgorIGZmZmZmZmZm LWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjYgfCA0OAorIGZmZmZmZmZmLWZmZmYtZmZmZi1m ZmZmLWZmZmZmZmZmZmZmMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYjEgfCAgOAorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZm ZmZmMyB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYjAgfCAyOAorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmNCB8IGFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAgNAor IGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmNCB8IGFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMgfCAyNAorIGZmZmZmZmZmLWZm ZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmNCB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCA0NAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYjYgfCAyNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YjUgfCAxOQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjUgfCA0NworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAxMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYmJiYjQgfCAzOQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYjMgfCAgMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjMg fCAzMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjIgfCAyMworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEgfCAxNQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiYjEgfCA0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYjAgfCAgNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjAgfCAz NQorKDUwIHJvd3MpCisKKy0tIENSRUFURSBJTkRFWCB3aWxsIGNvdmVyIHRoZSBzY2VuYXJpbyBv ZiBzb3J0IEluZGV4VHVwbGUKK2Ryb3AgaW5kZXggaWYgZXhpc3RzIGlkeF9hYmJyX3RibDsKK05P VElDRTogIGluZGV4ICJpZHhfYWJicl90YmwiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZworY3Jl YXRlIGluZGV4IGlkeF9hYmJyX3RibCBvbiBhYmJyX3RibChjIGRlc2MsIGIsIGEpOworYW5hbHl6 ZSBhYmJyX3RibDsKK3NlbGVjdCBjLCBiLCBhIGZyb20gYWJicl90Ymwgd2hlcmUgYyA9ICdmZmZm ZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZjMnIGFuZCBiID0gJ2FhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEnIGFuZCBhID0gODsKKyAg ICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0KKyBmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1m ZmZmZmZmZmZmZjMgfCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiYmIxIHwgOAorKDEgcm93KQorCistLSBVbmlxdWVuZXNzIGNoZWNrIG9mIENSRUFU RSBJTkRFWAorZHJvcCBpbmRleCBpZiBleGlzdHMgaWR4X2FiYnJfdGJsOworLS0gaW5zZXJ0IGEg ZHVwbGljYXRlZCByb3cgd2l0aCBudWxsCitpbnNlcnQgaW50byBhYmJyX3RibCAoYSwgYiwgYykg dmFsdWVzICgzLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiYmJiMycsIG51bGwpOworLS0gc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB1bmlxdWVzcyBj aGVjayBpcyBub3QgYXBwbGljYWJsZSBmb3Igcm93cyB3aXRoIG51bGwKK2NyZWF0ZSB1bmlxdWUg aW5kZXggaWR4X2FiYnJfdGJsIG9uIGFiYnJfdGJsKGMgZGVzYywgYiwgYSk7Citkcm9wIGluZGV4 IGlmIGV4aXN0cyBpZHhfYWJicl90Ymw7CistLSBpbnNlcnQgYSBkdXBsaWNhdGVkIHJvdyB3aXRo b3V0IG51bGwKK2luc2VydCBpbnRvIGFiYnJfdGJsIChhLCBiLCBjKSB2YWx1ZXMgKDEsICdhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIxJywgJzAw MDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMScpOworLS0gc2hvdWxkIGZhaWwgYmVj YXVzZSBvZiBkdXBsaWNhdGVkIHJvd3MKK2NyZWF0ZSB1bmlxdWUgaW5kZXggaWR4X2FiYnJfdGJs IG9uIGFiYnJfdGJsKGMgZGVzYywgYiwgYSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5p cXVlIGluZGV4ICJpZHhfYWJicl90YmwiCitERVRBSUw6ICBLZXkgKGMsIGIsIGEpPSgwMDAwMDAw MC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDEsIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYjEsIDEpIGlzIGR1cGxpY2F0ZWQuCitkcm9wIHRh YmxlIGFiYnJfdGJsOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aW5k b3cub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aW5kb3cub3V0CmluZGV4IGFlNGU4 ODUxZjguLjJkZTIwY2ExZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv d2luZG93Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQKQEAg LTE4LDEzICsxOCwxMyBAQCBJTlNFUlQgSU5UTyBlbXBzYWxhcnkgVkFMVUVTCiAoJ3NhbGVzJywg MywgNDgwMCwgJzIwMDctMDgtMDEnKSwKICgnZGV2ZWxvcCcsIDgsIDYwMDAsICcyMDA2LTEwLTAx JyksCiAoJ2RldmVsb3AnLCAxMSwgNTIwMCwgJzIwMDctMDgtMTUnKTsKLVNFTEVDVCBkZXBuYW1l LCBlbXBubywgc2FsYXJ5LCBzdW0oc2FsYXJ5KSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSkg RlJPTSBlbXBzYWxhcnkgT1JERVIgQlkgZGVwbmFtZSwgc2FsYXJ5OworU0VMRUNUIGRlcG5hbWUs IGVtcG5vLCBzYWxhcnksIHN1bShzYWxhcnkpIE9WRVIgKFBBUlRJVElPTiBCWSBkZXBuYW1lKSBG Uk9NIGVtcHNhbGFyeSBPUkRFUiBCWSBkZXBuYW1lLCBzYWxhcnksIGVtcG5vOwogICBkZXBuYW1l ICB8IGVtcG5vIHwgc2FsYXJ5IHwgIHN1bSAgCiAtLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0KICBkZXZlbG9wICAgfCAgICAgNyB8ICAgNDIwMCB8IDI1MTAwCiAgZGV2ZWxvcCAg IHwgICAgIDkgfCAgIDQ1MDAgfCAyNTEwMAotIGRldmVsb3AgICB8ICAgIDExIHwgICA1MjAwIHwg MjUxMDAKICBkZXZlbG9wICAgfCAgICAxMCB8ICAgNTIwMCB8IDI1MTAwCisgZGV2ZWxvcCAgIHwg ICAgMTEgfCAgIDUyMDAgfCAyNTEwMAogIGRldmVsb3AgICB8ICAgICA4IHwgICA2MDAwIHwgMjUx MDAKICBwZXJzb25uZWwgfCAgICAgNSB8ICAgMzUwMCB8ICA3NDAwCiAgcGVyc29ubmVsIHwgICAg IDIgfCAgIDM5MDAgfCAgNzQwMApAQCAtMzMsMTMgKzMzLDEzIEBAIFNFTEVDVCBkZXBuYW1lLCBl bXBubywgc2FsYXJ5LCBzdW0oc2FsYXJ5KSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSkgRlJP TSBlbXBzCiAgc2FsZXMgICAgIHwgICAgIDEgfCAgIDUwMDAgfCAxNDYwMAogKDEwIHJvd3MpCiAK LVNFTEVDVCBkZXBuYW1lLCBlbXBubywgc2FsYXJ5LCByYW5rKCkgT1ZFUiAoUEFSVElUSU9OIEJZ IGRlcG5hbWUgT1JERVIgQlkgc2FsYXJ5KSBGUk9NIGVtcHNhbGFyeTsKK1NFTEVDVCBkZXBuYW1l LCBlbXBubywgc2FsYXJ5LCByYW5rKCkgT1ZFUiAoUEFSVElUSU9OIEJZIGRlcG5hbWUgT1JERVIg Qlkgc2FsYXJ5KSBGUk9NIGVtcHNhbGFyeSBPUkRFUiBCWSBkZXBuYW1lLCBzYWxhcnksIGVtcG5v OwogICBkZXBuYW1lICB8IGVtcG5vIHwgc2FsYXJ5IHwgcmFuayAKIC0tLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tCiAgZGV2ZWxvcCAgIHwgICAgIDcgfCAgIDQyMDAgfCAgICAxCiAg ZGV2ZWxvcCAgIHwgICAgIDkgfCAgIDQ1MDAgfCAgICAyCi0gZGV2ZWxvcCAgIHwgICAgMTEgfCAg IDUyMDAgfCAgICAzCiAgZGV2ZWxvcCAgIHwgICAgMTAgfCAgIDUyMDAgfCAgICAzCisgZGV2ZWxv cCAgIHwgICAgMTEgfCAgIDUyMDAgfCAgICAzCiAgZGV2ZWxvcCAgIHwgICAgIDggfCAgIDYwMDAg fCAgICA1CiAgcGVyc29ubmVsIHwgICAgIDUgfCAgIDM1MDAgfCAgICAxCiAgcGVyc29ubmVsIHwg ICAgIDIgfCAgIDM5MDAgfCAgICAyCkBAIC05MCwxOCArOTAsMTggQEAgU0VMRUNUIGRlcG5hbWUs IGVtcG5vLCBzYWxhcnksIHN1bShzYWxhcnkpIE9WRVIgdyBGUk9NIGVtcHNhbGFyeSBXSU5ET1cg dyBBUyAoUEEKICBzYWxlcyAgICAgfCAgICAgNCB8ICAgNDgwMCB8IDE0NjAwCiAoMTAgcm93cykK IAotU0VMRUNUIGRlcG5hbWUsIGVtcG5vLCBzYWxhcnksIHJhbmsoKSBPVkVSIHcgRlJPTSBlbXBz YWxhcnkgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBkZXBuYW1lIE9SREVSIEJZIHNhbGFyeSkg T1JERVIgQlkgcmFuaygpIE9WRVIgdzsKK1NFTEVDVCBkZXBuYW1lLCBlbXBubywgc2FsYXJ5LCBy YW5rKCkgT1ZFUiB3IEZST00gZW1wc2FsYXJ5IFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZGVw bmFtZSBPUkRFUiBCWSBzYWxhcnkpIE9SREVSIEJZIHJhbmsoKSBPVkVSIHcsIGVtcG5vOwogICBk ZXBuYW1lICB8IGVtcG5vIHwgc2FsYXJ5IHwgcmFuayAKIC0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tCi0gZGV2ZWxvcCAgIHwgICAgIDcgfCAgIDQyMDAgfCAgICAxCi0gcGVyc29u bmVsIHwgICAgIDUgfCAgIDM1MDAgfCAgICAxCiAgc2FsZXMgICAgIHwgICAgIDMgfCAgIDQ4MDAg fCAgICAxCiAgc2FsZXMgICAgIHwgICAgIDQgfCAgIDQ4MDAgfCAgICAxCisgcGVyc29ubmVsIHwg ICAgIDUgfCAgIDM1MDAgfCAgICAxCisgZGV2ZWxvcCAgIHwgICAgIDcgfCAgIDQyMDAgfCAgICAx CiAgcGVyc29ubmVsIHwgICAgIDIgfCAgIDM5MDAgfCAgICAyCiAgZGV2ZWxvcCAgIHwgICAgIDkg fCAgIDQ1MDAgfCAgICAyCiAgc2FsZXMgICAgIHwgICAgIDEgfCAgIDUwMDAgfCAgICAzCi0gZGV2 ZWxvcCAgIHwgICAgMTEgfCAgIDUyMDAgfCAgICAzCiAgZGV2ZWxvcCAgIHwgICAgMTAgfCAgIDUy MDAgfCAgICAzCisgZGV2ZWxvcCAgIHwgICAgMTEgfCAgIDUyMDAgfCAgICAzCiAgZGV2ZWxvcCAg IHwgICAgIDggfCAgIDYwMDAgfCAgICA1CiAoMTAgcm93cykKIApAQCAtMzc0OSwyMyArMzc0OSwy NCBAQCBTRUxFQ1QKICAgICBlbXBubywKICAgICBkZXBuYW1lLAogICAgIHJvd19udW1iZXIoKSBP VkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJvbGxfZGF0ZSkgcm4sCi0gICAg cmFuaygpIE9WRVIgKFBBUlRJVElPTiBCWSBkZXBuYW1lIE9SREVSIEJZIGVucm9sbF9kYXRlIFJP V1MgQkVUV0VFTgorICAgIHJhbmsoKSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBC WSBlbnJvbGxfZGF0ZSwgZW1wbm8gUk9XUyBCRVRXRUVOCiAgICAgICAgICAgICAgICAgIFVOQk9V TkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpIHJuaywKLSAgICBjb3VudCgq KSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJvbGxfZGF0ZSBSQU5HRSBC RVRXRUVOCisgICAgY291bnQoKikgT1ZFUiAoUEFSVElUSU9OIEJZIGRlcG5hbWUgT1JERVIgQlkg ZW5yb2xsX2RhdGUsIGVtcG5vIFJBTkdFIEJFVFdFRU4KICAgICAgICAgICAgICAgICAgICBDVVJS RU5UIFJPVyBBTkQgQ1VSUkVOVCBST1cpIGNudAotRlJPTSBlbXBzYWxhcnk7CitGUk9NIGVtcHNh bGFyeQorT1JERVIgQlkgZW1wbm8sIGRlcG5hbWUsIHJuOwogIGVtcG5vIHwgIGRlcG5hbWUgIHwg cm4gfCBybmsgfCBjbnQgCiAtLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0rLS0tLS0rLS0tLS0KLSAg ICAgOCB8IGRldmVsb3AgICB8ICAxIHwgICAxIHwgICAxCi0gICAgMTAgfCBkZXZlbG9wICAgfCAg MiB8ICAgMiB8ICAgMQotICAgIDExIHwgZGV2ZWxvcCAgIHwgIDMgfCAgIDMgfCAgIDEKLSAgICAg OSB8IGRldmVsb3AgICB8ICA0IHwgICA0IHwgICAyCi0gICAgIDcgfCBkZXZlbG9wICAgfCAgNSB8 ICAgNCB8ICAgMgotICAgICAyIHwgcGVyc29ubmVsIHwgIDEgfCAgIDEgfCAgIDEKLSAgICAgNSB8 IHBlcnNvbm5lbCB8ICAyIHwgICAyIHwgICAxCiAgICAgIDEgfCBzYWxlcyAgICAgfCAgMSB8ICAg MSB8ICAgMQorICAgICAyIHwgcGVyc29ubmVsIHwgIDEgfCAgIDEgfCAgIDEKICAgICAgMyB8IHNh bGVzICAgICB8ICAyIHwgICAyIHwgICAxCiAgICAgIDQgfCBzYWxlcyAgICAgfCAgMyB8ICAgMyB8 ICAgMQorICAgICA1IHwgcGVyc29ubmVsIHwgIDIgfCAgIDIgfCAgIDEKKyAgICAgNyB8IGRldmVs b3AgICB8ICA0IHwgICA0IHwgICAxCisgICAgIDggfCBkZXZlbG9wICAgfCAgMSB8ICAgMSB8ICAg MQorICAgICA5IHwgZGV2ZWxvcCAgIHwgIDUgfCAgIDUgfCAgIDEKKyAgICAxMCB8IGRldmVsb3Ag ICB8ICAyIHwgICAyIHwgICAxCisgICAgMTEgfCBkZXZlbG9wICAgfCAgMyB8ICAgMyB8ICAgMQog KDEwIHJvd3MpCiAKIC0tIFRlc3QgcHVzaGRvd24gb2YgcXVhbHMgaW50byBhIHN1YnF1ZXJ5IGNv bnRhaW5pbmcgd2luZG93IGZ1bmN0aW9ucwpAQCAtNDEwNiwxNyArNDEwNywxNyBAQCBTRUxFQ1Qg KiBGUk9NCiAgICAgICAgICAgc2FsYXJ5LAogICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChQ QVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBzYWxhcnkgREVTQykgYwogICAgRlJPTSBlbXBz YWxhcnkpIGVtcAotV0hFUkUgYyA8PSAzOworV0hFUkUgYyA8PSAzIE9SREVSIEJZIGVtcG5vLCBk ZXBuYW1lLCBzYWxhcnksIGM7CiAgZW1wbm8gfCAgZGVwbmFtZSAgfCBzYWxhcnkgfCBjIAogLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLSstLS0KKyAgICAgMSB8IHNhbGVzICAgICB8ICAgNTAw MCB8IDEKKyAgICAgMiB8IHBlcnNvbm5lbCB8ICAgMzkwMCB8IDEKKyAgICAgMyB8IHNhbGVzICAg ICB8ICAgNDgwMCB8IDMKKyAgICAgNCB8IHNhbGVzICAgICB8ICAgNDgwMCB8IDMKKyAgICAgNSB8 IHBlcnNvbm5lbCB8ICAgMzUwMCB8IDIKICAgICAgOCB8IGRldmVsb3AgICB8ICAgNjAwMCB8IDEK ICAgICAxMCB8IGRldmVsb3AgICB8ICAgNTIwMCB8IDMKICAgICAxMSB8IGRldmVsb3AgICB8ICAg NTIwMCB8IDMKLSAgICAgMiB8IHBlcnNvbm5lbCB8ICAgMzkwMCB8IDEKLSAgICAgNSB8IHBlcnNv bm5lbCB8ICAgMzUwMCB8IDIKLSAgICAgMSB8IHNhbGVzICAgICB8ICAgNTAwMCB8IDEKLSAgICAg NCB8IHNhbGVzICAgICB8ICAgNDgwMCB8IDMKLSAgICAgMyB8IHNhbGVzICAgICB8ICAgNDgwMCB8 IDMKICg4IHJvd3MpCiAKIC0tIEVuc3VyZSB3ZSBnZXQgdGhlIGNvcnJlY3QgcnVuIGNvbmRpdGlv biB3aGVuIHRoZSB3aW5kb3cgZnVuY3Rpb24gaXMgYm90aApAQCAtNDQ2OCwxNCArNDQ2OSwxNSBA QCBTRUxFQ1QgKiBGUk9NCiAgICAgICAgICAgZW1wbm8sCiAgICAgICAgICAgc2FsYXJ5LAogICAg ICAgICAgIGVucm9sbF9kYXRlLAotICAgICAgICAgIHJvd19udW1iZXIoKSBPVkVSIChQQVJUSVRJ T04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJvbGxfZGF0ZSkgQVMgZmlyc3RfZW1wLAotICAgICAg ICAgIHJvd19udW1iZXIoKSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJv bGxfZGF0ZSBERVNDKSBBUyBsYXN0X2VtcAorICAgICAgICAgIHJvd19udW1iZXIoKSBPVkVSIChQ QVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJvbGxfZGF0ZSwgZW1wbm8pIEFTIGZpcnN0 X2VtcCwKKyAgICAgICAgICByb3dfbnVtYmVyKCkgT1ZFUiAoUEFSVElUSU9OIEJZIGRlcG5hbWUg T1JERVIgQlkgZW5yb2xsX2RhdGUgREVTQywgZW1wbm8pIEFTIGxhc3RfZW1wCiAgICBGUk9NIGVt cHNhbGFyeSkgZW1wCi1XSEVSRSBmaXJzdF9lbXAgPSAxIE9SIGxhc3RfZW1wID0gMTsKK1dIRVJF IGZpcnN0X2VtcCA9IDEgT1IgbGFzdF9lbXAgPSAxCitPUkRFUiBCWSBkZXBuYW1lLCBlbXBubywg c2FsYXJ5LCBlbnJvbGxfZGF0ZSwgZmlyc3RfZW1wLCBsYXN0X2VtcDsKICAgZGVwbmFtZSAgfCBl bXBubyB8IHNhbGFyeSB8IGVucm9sbF9kYXRlIHwgZmlyc3RfZW1wIHwgbGFzdF9lbXAgCiAtLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIGRldmVsb3AgICB8ICAgICA3IHwgICA0MjAwIHwgMDEtMDEtMjAwOCAgfCAgICAgICAg IDQgfCAgICAgICAgMQogIGRldmVsb3AgICB8ICAgICA4IHwgICA2MDAwIHwgMTAtMDEtMjAwNiAg fCAgICAgICAgIDEgfCAgICAgICAgNQotIGRldmVsb3AgICB8ICAgICA3IHwgICA0MjAwIHwgMDEt MDEtMjAwOCAgfCAgICAgICAgIDUgfCAgICAgICAgMQogIHBlcnNvbm5lbCB8ICAgICAyIHwgICAz OTAwIHwgMTItMjMtMjAwNiAgfCAgICAgICAgIDEgfCAgICAgICAgMgogIHBlcnNvbm5lbCB8ICAg ICA1IHwgICAzNTAwIHwgMTItMTAtMjAwNyAgfCAgICAgICAgIDIgfCAgICAgICAgMQogIHNhbGVz ICAgICB8ICAgICAxIHwgICA1MDAwIHwgMTAtMDEtMjAwNiAgfCAgICAgICAgIDEgfCAgICAgICAg MwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VvbWV0cnkuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZ2VvbWV0cnkuc3FsCmluZGV4IGMzZWEzNjhkYTUuLjFmNDdmMDdmMzEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlb21ldHJ5LnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9nZW9tZXRyeS5zcWwKQEAgLTQwMyw3ICs0MDMsNyBAQCBTRUxFQ1Qg Y2lyY2xlKGYxKQogU0VMRUNUIGMxLmYxIEFTIGNpcmNsZSwgcDEuZjEgQVMgcG9pbnQsIChwMS5m MSA8LT4gYzEuZjEpIEFTIGRpc3RhbmNlCiAgICBGUk9NIENJUkNMRV9UQkwgYzEsIFBPSU5UX1RC TCBwMQogICAgV0hFUkUgKHAxLmYxIDwtPiBjMS5mMSkgPiAwCi0gICBPUkRFUiBCWSBkaXN0YW5j ZSwgYXJlYShjMS5mMSksIHAxLmYxWzBdOworICAgT1JERVIgQlkgZGlzdGFuY2UsIGFyZWEoYzEu ZjEpLCBwMS5mMVswXSwgYzEuZjE6OnRleHQ7CiAKIC0tIFRvIHBvbHlnb24KIFNFTEVDVCBmMSwg ZjE6OnBvbHlnb24gRlJPTSBDSVJDTEVfVEJMIFdIRVJFIGYxID49ICc8KDAsMCksMT4nOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHVwbGVzb3J0LnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3R1cGxlc29ydC5zcWwKaW5kZXggODQ3NmU1OTRlNi4uNjVlY2JiZDVjOSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHVwbGVzb3J0LnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC90dXBsZXNvcnQuc3FsCkBAIC0zMDUsMyArMzA1LDYyIEBAIEVYUExBSU4g KENPU1RTIE9GRikgOnFyeTsKIDpxcnk7CiAKIENPTU1JVDsKKworLS0gVGVzdCBjYXNlcyBmb3Ig bXVsdGkta2V5IHNvcnQKKworc2V0IHdvcmtfbWVtPScxMDBNQic7CisKKy0tIHRlc3Qgc2ltcGxl IHNvcnRpbmcKK2NyZWF0ZSB0YWJsZSBta3NvcnRfc2ltcGxlX3RibChhIGludCwgYiBpbnQsIGMg dmFyY2hhcik7CisKK2luc2VydCBpbnRvIG1rc29ydF9zaW1wbGVfdGJsCisgICAgc2VsZWN0IGcg JSAxMCwgZyAlIDE1LCBsZWZ0KG1kNShnOjp0ZXh0KSwgNCkKKyAgICBmcm9tIGdlbmVyYXRlX3Nl cmllcygxLCA1MCkgZzsKK3NlbGVjdCAqIGZyb20gbWtzb3J0X3NpbXBsZV90Ymwgb3JkZXIgYnkg YSwgYiwgYzsKKworZHJvcCB0YWJsZSBta3NvcnRfc2ltcGxlX3RibDsKKworLS0gdGVzdCB0YWJs ZSB3aXRoIGFiYnIga2V5cworCitjcmVhdGUgdGFibGUgYWJicl90YmwgKGEgaW50LCBiIHZhcmNo YXIoMTAwKSwgYyB1dWlkKTsKKworLS0gaW5zZXJ0IGRhdGEgd2l0aCBhYmJyIGtleXMgKHV1aWQp CistLSBhYmJyIGtleXMgb2YgdXVpZCBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIGZpcnN0IGBzaXpl b2YoRGF0dW0pYCBieXRlcyBvZiB1dWlkIGRhdGEKKy0tKHNlZSB1dWlkX2FiYnJldl9jb252ZXJ0 KCkpLCBzbyB0d28gdXVpZHMgd2l0aCBvbmx5IGRpZmZlcmVudCB0YWlsZWQgdmFsdWVzIHNob3Vs ZAorLS0gaGF2ZSBzYW1lIGFiYnIga2V5cyBidXQgZGlmZmVyZW50ICJmdWxsIiBkYXR1bS4KK2lu c2VydCBpbnRvIGFiYnJfdGJsIHZhbHVlcyAoZ2VuZXJhdGVfc2VyaWVzKDEsNTApLCAnYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyk7Cit1cGRh dGUgYWJicl90Ymwgc2V0IGIgPSAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiJyB8fCAoYSAlIDcpOjp0ZXh0OwordXBkYXRlIGFiYnJfdGJsIHNl dCBjID0gKCdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmJyB8fCAoYSAlIDUpOjp0ZXh0 KTo6dXVpZCB3aGVyZSBhICUgNCA9IDA7Cit1cGRhdGUgYWJicl90Ymwgc2V0IGMgPSAoJzAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnIHx8IChhICUgNSk6OnRleHQpOjp1dWlkIHdoZXJl IGEgJSA0ID0gMTsKK3VwZGF0ZSBhYmJyX3RibCBzZXQgYyA9ICgnMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMScgfHwgKGEgJSA1KTo6dGV4dCk6OnV1aWQgd2hlcmUgYSAlIDQgPSAyOwor dXBkYXRlIGFiYnJfdGJsIHNldCBjID0gbnVsbCB3aGVyZSBhICUgNCA9IDM7CisKK3NlbGVjdCBj LCBiLCBhIGZyb20gYWJicl90Ymwgb3JkZXIgYnkgYywgYiwgYTsKK3NlbGVjdCBjLCBiLCBhIGZy b20gYWJicl90Ymwgb3JkZXIgYnkgYyBkZXNjLCBiLCBhOworc2VsZWN0IGMsIGIsIGEgZnJvbSBh YmJyX3RibCBvcmRlciBieSBjLCBiIGRlc2MsIGE7CitzZWxlY3QgYywgYiwgYSBmcm9tIGFiYnJf dGJsIG9yZGVyIGJ5IGMgbnVsbHMgZmlyc3QsIGIgZGVzYywgYTsKK3NlbGVjdCBjLCBiLCBhIGZy b20gYWJicl90Ymwgb3JkZXIgYnkgYyBudWxscyBsYXN0LCBiIGRlc2MsIGE7CisKKy0tIENSRUFU RSBJTkRFWCB3aWxsIGNvdmVyIHRoZSBzY2VuYXJpbyBvZiBzb3J0IEluZGV4VHVwbGUKK2Ryb3Ag aW5kZXggaWYgZXhpc3RzIGlkeF9hYmJyX3RibDsKK2NyZWF0ZSBpbmRleCBpZHhfYWJicl90Ymwg b24gYWJicl90YmwoYyBkZXNjLCBiLCBhKTsKK2FuYWx5emUgYWJicl90Ymw7CitzZWxlY3QgYywg YiwgYSBmcm9tIGFiYnJfdGJsIHdoZXJlIGMgPSAnZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZm ZmZmZmZmZmYzJyBhbmQgYiA9ICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmIxJyBhbmQgYSA9IDg7CisKKy0tIFVuaXF1ZW5lc3MgY2hlY2sgb2Yg Q1JFQVRFIElOREVYCisKK2Ryb3AgaW5kZXggaWYgZXhpc3RzIGlkeF9hYmJyX3RibDsKKworLS0g aW5zZXJ0IGEgZHVwbGljYXRlZCByb3cgd2l0aCBudWxsCitpbnNlcnQgaW50byBhYmJyX3RibCAo YSwgYiwgYykgdmFsdWVzICgzLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJi YmJiYmJiYmJiYmJiYmJiYmJiMycsIG51bGwpOworLS0gc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB1 bmlxdWVzcyBjaGVjayBpcyBub3QgYXBwbGljYWJsZSBmb3Igcm93cyB3aXRoIG51bGwKK2NyZWF0 ZSB1bmlxdWUgaW5kZXggaWR4X2FiYnJfdGJsIG9uIGFiYnJfdGJsKGMgZGVzYywgYiwgYSk7CisK K2Ryb3AgaW5kZXggaWYgZXhpc3RzIGlkeF9hYmJyX3RibDsKKworLS0gaW5zZXJ0IGEgZHVwbGlj YXRlZCByb3cgd2l0aG91dCBudWxsCitpbnNlcnQgaW50byBhYmJyX3RibCAoYSwgYiwgYykgdmFs dWVzICgxLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmJiMScsICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDEnKTsKKy0tIHNo b3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlZCByb3dzCitjcmVhdGUgdW5pcXVlIGluZGV4 IGlkeF9hYmJyX3RibCBvbiBhYmJyX3RibChjIGRlc2MsIGIsIGEpOworCitkcm9wIHRhYmxlIGFi YnJfdGJsOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3dpbmRvdy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3Fs CmluZGV4IDZkZTU0OTNiMDUuLjQ2MzU5Y2I3OTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpbmRvdy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2luZG93LnNxbApA QCAtMjEsOSArMjEsOSBAQCBJTlNFUlQgSU5UTyBlbXBzYWxhcnkgVkFMVUVTCiAoJ2RldmVsb3An LCA4LCA2MDAwLCAnMjAwNi0xMC0wMScpLAogKCdkZXZlbG9wJywgMTEsIDUyMDAsICcyMDA3LTA4 LTE1Jyk7CiAKLVNFTEVDVCBkZXBuYW1lLCBlbXBubywgc2FsYXJ5LCBzdW0oc2FsYXJ5KSBPVkVS IChQQVJUSVRJT04gQlkgZGVwbmFtZSkgRlJPTSBlbXBzYWxhcnkgT1JERVIgQlkgZGVwbmFtZSwg c2FsYXJ5OworU0VMRUNUIGRlcG5hbWUsIGVtcG5vLCBzYWxhcnksIHN1bShzYWxhcnkpIE9WRVIg KFBBUlRJVElPTiBCWSBkZXBuYW1lKSBGUk9NIGVtcHNhbGFyeSBPUkRFUiBCWSBkZXBuYW1lLCBz YWxhcnksIGVtcG5vOwogCi1TRUxFQ1QgZGVwbmFtZSwgZW1wbm8sIHNhbGFyeSwgcmFuaygpIE9W RVIgKFBBUlRJVElPTiBCWSBkZXBuYW1lIE9SREVSIEJZIHNhbGFyeSkgRlJPTSBlbXBzYWxhcnk7 CitTRUxFQ1QgZGVwbmFtZSwgZW1wbm8sIHNhbGFyeSwgcmFuaygpIE9WRVIgKFBBUlRJVElPTiBC WSBkZXBuYW1lIE9SREVSIEJZIHNhbGFyeSkgRlJPTSBlbXBzYWxhcnkgT1JERVIgQlkgZGVwbmFt ZSwgc2FsYXJ5LCBlbXBubzsKIAogLS0gd2l0aCBHUk9VUCBCWQogU0VMRUNUIGZvdXIsIHRlbiwg U1VNKFNVTShmb3VyKSkgT1ZFUiAoUEFSVElUSU9OIEJZIGZvdXIpLCBBVkcodGVuKSBGUk9NIHRl bmsxCkBAIC0zMSw3ICszMSw3IEBAIEdST1VQIEJZIGZvdXIsIHRlbiBPUkRFUiBCWSBmb3VyLCB0 ZW47CiAKIFNFTEVDVCBkZXBuYW1lLCBlbXBubywgc2FsYXJ5LCBzdW0oc2FsYXJ5KSBPVkVSIHcg RlJPTSBlbXBzYWxhcnkgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBkZXBuYW1lKTsKIAotU0VM RUNUIGRlcG5hbWUsIGVtcG5vLCBzYWxhcnksIHJhbmsoKSBPVkVSIHcgRlJPTSBlbXBzYWxhcnkg V0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBkZXBuYW1lIE9SREVSIEJZIHNhbGFyeSkgT1JERVIg QlkgcmFuaygpIE9WRVIgdzsKK1NFTEVDVCBkZXBuYW1lLCBlbXBubywgc2FsYXJ5LCByYW5rKCkg T1ZFUiB3IEZST00gZW1wc2FsYXJ5IFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZGVwbmFtZSBP UkRFUiBCWSBzYWxhcnkpIE9SREVSIEJZIHJhbmsoKSBPVkVSIHcsIGVtcG5vOwogCiAtLSBlbXB0 eSB3aW5kb3cgc3BlY2lmaWNhdGlvbgogU0VMRUNUIENPVU5UKCopIE9WRVIgKCkgRlJPTSB0ZW5r MSBXSEVSRSB1bmlxdWUyIDwgMTA7CkBAIC0xMTQ2LDExICsxMTQ2LDEyIEBAIFNFTEVDVAogICAg IGVtcG5vLAogICAgIGRlcG5hbWUsCiAgICAgcm93X251bWJlcigpIE9WRVIgKFBBUlRJVElPTiBC WSBkZXBuYW1lIE9SREVSIEJZIGVucm9sbF9kYXRlKSBybiwKLSAgICByYW5rKCkgT1ZFUiAoUEFS VElUSU9OIEJZIGRlcG5hbWUgT1JERVIgQlkgZW5yb2xsX2RhdGUgUk9XUyBCRVRXRUVOCisgICAg cmFuaygpIE9WRVIgKFBBUlRJVElPTiBCWSBkZXBuYW1lIE9SREVSIEJZIGVucm9sbF9kYXRlLCBl bXBubyBST1dTIEJFVFdFRU4KICAgICAgICAgICAgICAgICAgVU5CT1VOREVEIFBSRUNFRElORyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykgcm5rLAotICAgIGNvdW50KCopIE9WRVIgKFBBUlRJVElP TiBCWSBkZXBuYW1lIE9SREVSIEJZIGVucm9sbF9kYXRlIFJBTkdFIEJFVFdFRU4KKyAgICBjb3Vu dCgqKSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJvbGxfZGF0ZSwgZW1w bm8gUkFOR0UgQkVUV0VFTgogICAgICAgICAgICAgICAgICAgIENVUlJFTlQgUk9XIEFORCBDVVJS RU5UIFJPVykgY250Ci1GUk9NIGVtcHNhbGFyeTsKK0ZST00gZW1wc2FsYXJ5CitPUkRFUiBCWSBl bXBubywgZGVwbmFtZSwgcm47CiAKIC0tIFRlc3QgcHVzaGRvd24gb2YgcXVhbHMgaW50byBhIHN1 YnF1ZXJ5IGNvbnRhaW5pbmcgd2luZG93IGZ1bmN0aW9ucwogCkBAIC0xMzMyLDcgKzEzMzMsNyBA QCBTRUxFQ1QgKiBGUk9NCiAgICAgICAgICAgc2FsYXJ5LAogICAgICAgICAgIGNvdW50KGVtcG5v KSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBzYWxhcnkgREVTQykgYwogICAg RlJPTSBlbXBzYWxhcnkpIGVtcAotV0hFUkUgYyA8PSAzOworV0hFUkUgYyA8PSAzIE9SREVSIEJZ IGVtcG5vLCBkZXBuYW1lLCBzYWxhcnksIGM7CiAKIC0tIEVuc3VyZSB3ZSBnZXQgdGhlIGNvcnJl Y3QgcnVuIGNvbmRpdGlvbiB3aGVuIHRoZSB3aW5kb3cgZnVuY3Rpb24gaXMgYm90aAogLS0gbW9u b3RvbmljYWxseSBpbmNyZWFzaW5nIGFuZCBkZWNyZWFzaW5nLgpAQCAtMTUxMCwxMCArMTUxMSwx MSBAQCBTRUxFQ1QgKiBGUk9NCiAgICAgICAgICAgZW1wbm8sCiAgICAgICAgICAgc2FsYXJ5LAog ICAgICAgICAgIGVucm9sbF9kYXRlLAotICAgICAgICAgIHJvd19udW1iZXIoKSBPVkVSIChQQVJU SVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJvbGxfZGF0ZSkgQVMgZmlyc3RfZW1wLAotICAg ICAgICAgIHJvd19udW1iZXIoKSBPVkVSIChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBl bnJvbGxfZGF0ZSBERVNDKSBBUyBsYXN0X2VtcAorICAgICAgICAgIHJvd19udW1iZXIoKSBPVkVS IChQQVJUSVRJT04gQlkgZGVwbmFtZSBPUkRFUiBCWSBlbnJvbGxfZGF0ZSwgZW1wbm8pIEFTIGZp cnN0X2VtcCwKKyAgICAgICAgICByb3dfbnVtYmVyKCkgT1ZFUiAoUEFSVElUSU9OIEJZIGRlcG5h bWUgT1JERVIgQlkgZW5yb2xsX2RhdGUgREVTQywgZW1wbm8pIEFTIGxhc3RfZW1wCiAgICBGUk9N IGVtcHNhbGFyeSkgZW1wCi1XSEVSRSBmaXJzdF9lbXAgPSAxIE9SIGxhc3RfZW1wID0gMTsKK1dI RVJFIGZpcnN0X2VtcCA9IDEgT1IgbGFzdF9lbXAgPSAxCitPUkRFUiBCWSBkZXBuYW1lLCBlbXBu bywgc2FsYXJ5LCBlbnJvbGxfZGF0ZSwgZmlyc3RfZW1wLCBsYXN0X2VtcDsKIAogLS0gY2xlYW51 cAogRFJPUCBUQUJMRSBlbXBzYWxhcnk7Ci0tIAoyLjI1LjEKCg== --_002_PH7P220MB1533DA211DF219996760CBB7D9EB2PH7P220MB1533NAMP_--