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.96) (envelope-from ) id 1vxH1r-006CDc-1d for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 04:06:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxH1p-004OX2-3B for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 04:06:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxH1o-004OWt-37 for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 04:06:38 +0000 Received: from mail-westcentralusazolkn19013073.outbound.protection.outlook.com ([52.103.7.73] helo=CY3PR05CU001.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vxH1m-000000007P5-38vV for pgsql-hackers@postgresql.org; Tue, 03 Mar 2026 04:06:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rOJ7QuFoidtR57z/Khhfiwsq2dvJ4Y3v4dde6tczRk9vgtGvx4jwLQGQQCwrDznU3M7oEgMm6VHelleqqKo9G1NkiumDt41zYSYfKJXpzkTsJehaqvMfdCugS2kYqAiw/9cRDM7G9nVUZr/tIC5bAAU0svkOnOsGUKOhtFRJgCv6L+ttF9eiJ0fTCxvUYbcYo2vEI5WdjBwUPjUuAC6AZIHErLOCKNdSaaOPg019iId1l+cS0vpgByVEcdvwhUmY3y8B5O2KCGmTjt2KO60Yen7Vl0Oz8GnRozYxTrpy2CdsMSzFp9V8vGA1iwv594ilI9u5UR1rC97kFLRg8wYOtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=+ApoaBSvAeu0+RvuBGFmduFFflXgARBBpg4kBGOooos=; b=ZiGWzvWt6tMALMjjLj440ezZSycnWPheQyrIOLxq6l/iEcnxV8n5F/G3Q9kFr6coD4icd2fYoH1aGEMHq9lpKrkFdOIp1taHC11SgRkhw87uhWgk5A3AjRWIr1fiFmpnyiZmK42FvSdoiYsVJR5mfUzuRd3J9wCbgx3l/HxKcWKfieAWVYArVT4EwamvIBOA3+iFI5+0ssEWu2RRn023JkKRmgVELxu7s996/pFiLn5vNI73/BLdIfR9zSeg3C5ToSTmO5TwnvHLXiBOP4w2pVr+EBWNn95sHUY823km8AcN1VZ1IXsVo6Yyye7GmG7GoanGx8uUc50ecsiFTr7bpQ== 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=+ApoaBSvAeu0+RvuBGFmduFFflXgARBBpg4kBGOooos=; b=dVYsCUfJymJkN6zmNFSIY6nxsGsxztFSSZradKIJg2sXI4Qw09iPA8KVzv8FcpOyStyFFo3IeSO4gav0sVxn8IJ1saxa9hfOM48TAahBMjKiO2UkMX8vUjFptAfSHtEv+mD2sc6aSIr8QRBhDVj+yqKrQ4MczDiPU3htRNeBhvPIN9Aols40cbNf4mBI0dPkyjJbZmqMVOCreh+XHZIu7exlDexKx2WjXwMNbBTHPvthfbdBtq77wLNOVNd331xm9XpKUgX1Y/gYrog/h2nscibYJqob9AXAtI05BvmZqiT3Z41hQuTnNce0p+kqIa0+NZY0FeFHxWPlR6njbpnAGA== Received: from PH0PR08MB7020.namprd08.prod.outlook.com (2603:10b6:510:74::15) by PH0PR08MB8446.namprd08.prod.outlook.com (2603:10b6:510:29c::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.18; Tue, 3 Mar 2026 04:06:30 +0000 Received: from PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::129a:a42a:445c:3273]) by PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::129a:a42a:445c:3273%4]) with mapi id 15.20.9654.020; Tue, 3 Mar 2026 04:06:30 +0000 From: Boris Mironov To: Madyshev Egor , "pgsql-hackers@postgresql.org" Subject: Re: Idea to enhance pgbench by more modes to generate data (multi-TXNs, UNNEST, COPY BINARY) Thread-Topic: Idea to enhance pgbench by more modes to generate data (multi-TXNs, UNNEST, COPY BINARY) Thread-Index: AQHcUwuRPlzLCtdZw06GAdoL15fmHbTwZ0aAgAGpzjGAACRkgIAAEcrGgAQQLgCAAG6d+YAGXmPMgAFzjL6AAV1tS4BpseD8gAEgG5GAAGN+EIAAFWg0gArDj2mAAAeBfoAE2r6AgBXReIKACYuvB4ABsvMggADncVY= Date: Tue, 3 Mar 2026 04:06:30 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-CA, en-US Content-Language: en-CA X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR08MB7020:EE_|PH0PR08MB8446:EE_ x-ms-office365-filtering-correlation-id: a4af91be-eb96-425c-d69c-08de78da3ff7 x-ms-exchange-slblob-mailprops: WaIXnCbdHrPy8Gg0T1tV+ubdyTLMpos/itAn4zXDuNPo8OdknGsnelKZewecpiihSP0lOx0YBrrZZTny+rCsOLFsQCeCPIQJbJV8Ym92MRqsZhryFTRxAwIDGysYAFVzxoWBuHeaMrPeqlNPFnJPOiLDS93D0zfDqYA1ae6Aa0aeQnSSvfmFfLzpq8iNUbq8Z7jGVRBku1kUvv9sZiRasQOhRd145SD36Qn62vZtUQEK+EouelkOT+lcreZzEVLvbFPfH5ISWOiTyEYMOvUAF++yrvomRwlzKywzfLKjExG33pln9Y3VXH+SbDJPXGgnWUmXprc8Hy+FeUbKH12RE3ZbkMZY+ZoN65XvIlE3MDAKflr02gRoi/HSM3wYXFGZ/9wH7B9A71FdHh8cEuVplyiIvIgxzfid4icX7W/omCZE/JakpywyLqcsFAGI/+o0YHdfYjeOmcTXV/31kEKUlEc0vNxqBkuUaqHgG0IgptuYfrNHi1o4tllPSbO8oCEKsQicAgAtU85OE+HPw6UZqhfYwJ3eGsG6ejCfVV5WKrup4h9AAGqVdG2kx41dcKc0KSKOpIJke6O99pnsJH3/rsZgh/K0QUEvheQwykHzJE5qzrtYzahb3focOeCkkYKuVWnHx+AE2udxa7XPyYKdzqszhDNm4DjvR8K+DqeorAAMZaggx8StBF9Bh+7q9wIn+HoWSxS9CFZZSu91GkvwM5MoUgwBw9SLjlSflBN1CLxkrnQuIkhysGul1bP8oC4QgyQrff9JIoY= x-microsoft-antispam: BCL:0;ARA:14566002|31061999003|6092099016|19110799012|8062599012|8060799015|15030799006|15080799012|461199028|51005399006|3412199025|440099028|102099032|40105399003; x-microsoft-antispam-message-info: =?iso-8859-1?Q?g7EcSePRBXXTheetzxcXKfKnMPh0lum4Xg7JwfixIJQ9pjskNgEU8i8SXJ?= =?iso-8859-1?Q?+dRqAEUFPGr7NdgSIxpJeT8z8PhCAs3+4Qs/W3FNkKFg/nTwPywIzVk45t?= =?iso-8859-1?Q?tfF/42bKeUo6ZJSSd3VpPorKFyO+IiJj8QdTjL8VjwPWFu0jnEuA691HCZ?= =?iso-8859-1?Q?0LVqlGgDMPmZ4U1SIA85A15cZBRTJB6XRgDOswRNfbV/czrvInkjgSsSaH?= =?iso-8859-1?Q?4Vkrvh/px3lfpewBlCUI7zuvl+k+7rTT5rob8B0iMLkEipBPO97g9JCRp7?= =?iso-8859-1?Q?Vm99kzFLzGK/5i3gm/qWaY9+EESDYiDqCf9S1nBKST4PHN7znpInnO+z0q?= =?iso-8859-1?Q?lsvn0Jfg+Xb4jtWBIPgvDeWrRipFz+wz97TdjMPrvvBzIeMwE+K7Ji9Mx2?= =?iso-8859-1?Q?hadY5nRMuJsl5cLfmhty3vgHH4wKi0A+4MEADvxEDn1burIC0ugvZ7vHeZ?= =?iso-8859-1?Q?obWa4bbbMPaieBW0CUT1Jbk65c+eKNvvkm9APE01/AzQ1q9w2fMUqeZfOL?= =?iso-8859-1?Q?DTJxbFPxY2D6D6dYRnWQNWvjwsYA6A0DN23Hh9qgWjTsY+26NBPYpjllgj?= =?iso-8859-1?Q?08Pf+smZLpUVubVojoRmoweHF2A0cZ4KouMbn0/+aLZNvL1vgsoSkHLfr8?= =?iso-8859-1?Q?UAZGFEO4BfjQKySJfYHtmJHVZBSR9Q95X8wGiOO/V8JoGRYqc6aDexvMud?= =?iso-8859-1?Q?N0oD8A+yq861QiakO1IHghFcogpVTQQbktC785mfL+AkFQT5gpmHEMzxsX?= =?iso-8859-1?Q?jtO0Y5uamLpqHrIndjF8BVIBjMnu1eWyfTRvuAeIbftw6rLDMdrNqFgkjX?= =?iso-8859-1?Q?qvYd77PAPHcwbWp4GwmqUuEh9eZ3TqSSaJ9566pulBgpETvnYtC3w/oyHW?= =?iso-8859-1?Q?VYb9ptTya4twweQhcWqxbQl1msPrEIveZmzjplPPGz9WEFxmZjGu6sknXw?= =?iso-8859-1?Q?D0ScyolzASOF2d2FwpP2hMnWa5vIrl7hcYujmNh0H87Wkx7ehP2iPmgBUQ?= =?iso-8859-1?Q?caxFajyTZhSEZbI1A=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Ecd4LOmFc8+gGI8e5HhgUWZZ77o/Htk2faMph/M25cKQ4ya/M9AzhH3AMR?= =?iso-8859-1?Q?4sOw8p1pV72KhIxtarAYRgr7/PPbmeK7zQadTnZV2a3Q6TLvs1IGthVb/y?= =?iso-8859-1?Q?rvNtHRa7oLpc/dY6t7MfsDU5CT/oXcYviMc+jQEDRqO7GEzA6slrFFo5ji?= =?iso-8859-1?Q?gl+iLUOP9qTE60Bxj48R7BKKeKFWUdo9wkg+1MiWgS8AQwNCB59H93dKog?= =?iso-8859-1?Q?TuFFmCX30ONabAQwIM77utzf6gFS+wuO3MZEshVgCBz4wpwk1YB7XwHswx?= =?iso-8859-1?Q?kcWweYC7HVHM2OOByEqJBxrK1Kjpe8/Du7BrosZyl0qbNSyA3eDUTNTBmY?= =?iso-8859-1?Q?BOHOALMX4q3aZwM/iZrM2Lsc7FsXcJD/5okPxRen3ZAFJIhQvF8R+rHziK?= =?iso-8859-1?Q?013JfuSPLdwf7C3JS8P+EuKIHjJyVlCPb19+HVfIfvEArD7EnF2aQxERnA?= =?iso-8859-1?Q?jSHXtUxmFVWTqe0tF/Hd/mNNJcm8vbk8Guvo+DI8WmmlZ0qiCRCOjgHcZw?= =?iso-8859-1?Q?a9nJukjBXoWaoOLg+NljGX4Y9xHDWKWQaus3uZGUai8FHRcUOLtIRcShNt?= =?iso-8859-1?Q?RizIMkkKE4onePIEnXq6HnvtAs/xoSTGFA3CyS0FUvCx7EZf3u21AbZlJ7?= =?iso-8859-1?Q?KQNZSuEYqRWypmR/6OYxAVSP/2HpVy0ZuJQzFkMN89RJl5LBok6bilfqt7?= =?iso-8859-1?Q?xcWa6a+7IwrmjlUNTAhsysFgtAHk8pPiPU2OCuE2GoPX56msFEh0h3EcA5?= =?iso-8859-1?Q?SIeSEscPOax3ZtOvKUBFOwUIKREpFbjWTOHxkbkIl452c9fONADqRHqmZI?= =?iso-8859-1?Q?YZyLc3kAayS7WNPicSFlaRB9BKuV5XtOL65/4jVfLRcxkZg2xCnIINkdq6?= =?iso-8859-1?Q?uZelQVhipGt+ru4JbuoEIrSPyH1Y8rw7pL9GQvTHCBLjuP/w8Ig1Lz/An2?= =?iso-8859-1?Q?oyWMOVmmcTYsnnaWhbCYnWuw1AtM/n0MgyhRWW8a+p+qD5Tw8aNmkn83y7?= =?iso-8859-1?Q?O2PRdRcpNi2YBxoxTDhQFKQp2ihjSKAr4f/+g1/2Wm84QVT5on1Lmdqlpt?= =?iso-8859-1?Q?6HDYL86Fhz73zzHxzfewTRsuD+3Xu33dDYa3j0T7AABYRQkym+xO058rzS?= =?iso-8859-1?Q?nX+gYxbn3DxDRdyUeg88yP4zjks/kKg2YlzwyWEFgS75h9VIZ0gAdLQyGI?= =?iso-8859-1?Q?amg72yeCxuVRVMxEllDXLNLXqe/4g0qDOBHGyPsPzUGYFukmIEMxXHtMZJ?= =?iso-8859-1?Q?0GF0RyAqFAx5YJfmEidGRRhEwVa0UC7PKOzIhAQNnoaqJAL1UAZip6QUrP?= =?iso-8859-1?Q?GKOSL/ySexunXIW5bkUypPj0OdPf9ktOOoT0oGwzUrF+lrok2CsTcEIMmt?= =?iso-8859-1?Q?Y4KWSylfWg3Qesh8QgAg1d26GHlsEfAawNRjf0PipuIMw4O3k1RBYB89r3?= =?iso-8859-1?Q?83Hq/2+m8VAcG9PVH89VAWv/E+fgKYsDT5SdRSRdAeeXztsKNrJAV6vfM6?= =?iso-8859-1?Q?Q=3D?= Content-Type: multipart/mixed; boundary="_004_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR08MB7020.namprd08.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: a4af91be-eb96-425c-d69c-08de78da3ff7 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Mar 2026 04:06:30.4527 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB8446 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_ Content-Type: multipart/alternative; boundary="_000_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_" --_000_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Egor, Thank you for your time reviewing this patch and all of its versions! > 1. What do you think about moving characters in 'detail: Allowed step > characters are: "dtgMScGUvpf"' so that generation modes and > transactions count modes are not mixed? For example "dtMSgcGUvpf". Done > 2. In the initCreateTables function, default values are set as empty > strings '' in the pgbench_history and pgbench_accounts tables. Was > this done intentionally, and if so, what is the reason? In the > pgbench_tellers and pgbench_branches tables, the implicit default > would be NULL - why was this logic changed? I personally would set default filler for every table since "TPC-B-like" means that filler is not used as expected by actual requirement of TPC-B for row length. There are 2 specific tests for not-NULL values in those 2 tables that do not have "default values". I would prefer to use similar approach everywhere and bring on requirement of TPC-B for row length. Since TPC-B is kind of archaic now this isn't best tactic to fight another battle against "well established test set". > 3. In showPopulateTableCopyProgress, I think it would be better to > calculate elapsed_sec and remaining_sec inside the condition blocks, > as is done in the original code. I believe original code with complete copy of both variables initialization twice in the same proc doesn't bring any benefits. Hence shortened it. > 4. Do the changes and bug fixes in the patch affect performance? Are > the existing performance measurements still valid? We didn't significantly alter logic since last benchmark. I'll try to find = some time to rerun all tests again and publish updated results. Best regards, Egor --_000_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi Egor,

Thank you for your time reviewing this patch and all of its versions!

> 1. What do you think about moving characters in 'detail: Allowed step<= br> > characters are: "dtgMScGUvpf"' so that generation modes and<= br> > transactions count modes are not mixed? For example "dtMSgcGUvpf&= quot;.

Done

> 2. In the initCreateTables function, default values are set as empty > strings '' in the pgbench_history and pgbench_accounts tables. Was
> this done intentionally, and if so, what is the reason? In the
> pgbench_tellers and pgbench_branches tables, the implicit default
> would be NULL - why was this logic changed?

I personally would set default filler for every table since "TPC-B-lik= e"
means that filler is not used as expected by actual requirement of
TPC-B for row length. There are 2 specific tests for not-NULL values
in those 2 tables that do not have "default values". I would pref= er
to use similar approach everywhere and bring on requirement of TPC-B
for row length. Since TPC-B is kind of archaic now this isn't best
tactic to fight another battle against "well established test set"= ;.

> 3. In showPopulateTableCopyProgress, I think it would be better to
> calculate elapsed_sec and remaining_sec inside the condition blocks, > as is done in the original code.

I believe original code with complete copy of both variables initialization=
twice in the same proc doesn't bring any benefits. Hence shortened it.

> 4. Do the changes and bug fixes in the patch affect performance? Are > the existing performance measurements still valid?

We didn't significantly alter logic since last benchmark. I'll try to find = some
time to rerun all tests again and publish updated results.

Best regards,
Egor
--_000_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_-- --_004_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_ Content-Type: application/octet-stream; name="v10-pgbench-faster-modes.patch" Content-Description: v10-pgbench-faster-modes.patch Content-Disposition: attachment; filename="v10-pgbench-faster-modes.patch"; size=128241; creation-date="Tue, 03 Mar 2026 04:05:18 GMT"; modification-date="Tue, 03 Mar 2026 04:05:37 GMT" Content-Transfer-Encoding: base64 RnJvbSBjNzY4ZjM5OWM1NTYyOTVkZTdkNTM4OTU0MTBlNjg2ZDg2YjRiOTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDE5OjM0OjU4ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2 MTAgMDEvMjddIENvbnZlcnRpbmcgb25lIGh1Z2UgdHJhbnNhY3Rpb24gaW50byBzZXJpZXMgb2Yg b25lCiBwZXIgJ3NjYWxlJwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNjEgKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDEg aW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2Jl bmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggZDg3NjRiYTZm ZTAuLjI4NGE3Yzg2MGYxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisr KyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTE4MSw2ICsxODEsMTIgQEAgc3RhdGlj IGludDY0IGVuZF90aW1lID0gMDsJCS8qIHdoZW4gdG8gc3RvcCBpbiBtaWNybyBzZWNvbmRzLCB1 bmRlciAtVCAqLwogICovCiBzdGF0aWMgaW50CXNjYWxlID0gMTsKIAorLyoKKyAqIHNjYWxpbmcg ZmFjdG9yIGFmdGVyIHdoaWNoIHdlIHN3aXRjaCB0byBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgZHVy aW5nCisgKiBkYXRhIHBvcHVsYXRpb24gcGhhc2Ugb24gc2VydmVyIHNpZGUKKyAqLworc3RhdGlj IGludDY0CXNpbmdsZV90eG5fc2NhbGVfbGltaXQgPSAxOworCiAvKgogICogZmlsbGZhY3Rvci4g Zm9yIGV4YW1wbGUsIGZpbGxmYWN0b3IgPSA5MCB3aWxsIHVzZSBvbmx5IDkwIHBlcmNlbnQKICAq IHNwYWNlIGR1cmluZyBpbnNlcnRzIGFuZCBsZWF2ZSAxMCBwZXJjZW50IGZyZWUuCkBAIC01MjEz LDYgKzUyMTksNyBAQCBzdGF0aWMgdm9pZAogaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdj b25uICpjb24pCiB7CiAJUFFFeHBCdWZmZXJEYXRhIHNxbDsKKwlpbnQJCQkJY2h1bmsgPSAoc2Nh bGUgPj0gc2luZ2xlX3R4bl9zY2FsZV9saW1pdCkgPyAxIDogc2NhbGU7CiAKIAlmcHJpbnRmKHN0 ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoc2VydmVyLXNpZGUpLi4uXG4iKTsKIApAQCAtNTIyNSwz MCArNTIzMiw0NCBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nvbm4gKmNvbikKIAkv KiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVuY2F0ZVRhYmxlcyhjb24p OwogCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwogCWluaXRQUUV4cEJ1ZmZl cigmc3FsKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRv IHBnYmVuY2hfYnJhbmNoZXMoYmlkLGJiYWxhbmNlKSAiCi0JCQkJCSAgInNlbGVjdCBiaWQsIDAg IgotCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgYmlkIiwgbmJyYW5jaGVz ICogc2NhbGUpOwotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7Ci0KLQlwcmludGZQ UUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlk LGJpZCx0YmFsYW5jZSkgIgotCQkJCQkgICJzZWxlY3QgdGlkLCAodGlkIC0gMSkgLyAlZCArIDEs IDAgIgotCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgdGlkIiwgbnRlbGxl cnMsIG50ZWxsZXJzICogc2NhbGUpOwotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7 Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNo X2FjY291bnRzKGFpZCxiaWQsYWJhbGFuY2UsZmlsbGVyKSAiCi0JCQkJCSAgInNlbGVjdCBhaWQs IChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycgIgotCQkJCQkgICJmcm9tIGdlbmVyYXRlX3Nlcmll cygxLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkgIG5hY2NvdW50cywgKGludDY0 KSBuYWNjb3VudHMgKiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK Kwlmb3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpICs9IGNodW5rKSB7CisJCWV4ZWN1dGVTdGF0 ZW1lbnQoY29uLCAiYmVnaW4iKTsKKworCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJ ICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKKwkJCQkJCSAg InNlbGVjdCBiaWQgKyAxLCAwICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAl ZCkgYXMgYmlkIiwgaSwgaSArIGNodW5rKTsKKwkJCQkJCSAgLy8ic2VsZWN0IGJpZCwgMCAiCisJ CQkJCQkgIC8vImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLCBuYnJhbmNoZXMg KiBzY2FsZSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJpbnRm UFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0 aWQsYmlkLHRiYWxhbmNlKSAiCisJCQkJCQkgICJzZWxlY3QgdGlkICsgMSwgdGlkIC8gJWQgKyAx LCAwICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgdGlkIiwKKwkJ CQkJCSAgbnRlbGxlcnMsIGkgKiBudGVsbGVycywgKGkgKyBjaHVuaykgKiBudGVsbGVycyAtIDEp OworCQkJCQkJICAvLyJzZWxlY3QgdGlkLCAodGlkIC0gMSkgLyAlZCArIDEsIDAgIgorCQkJCQkJ ICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgdGlkIiwgbnRlbGxlcnMsIG50ZWxs ZXJzICogc2NhbGUpOworCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCXBy aW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2FjY291 bnRzKGFpZCxiaWQsYWJhbGFuY2UsZmlsbGVyKSAiCisJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwg YWlkIC8gJWQgKyAxLCAwLCAnJyAiCisJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElO VDY0X0ZPUk1BVCAiLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAorCQkJCQkJICBuYWNjb3Vu dHMsIChpbnQ2NCkgaSAqIG5hY2NvdW50cywgKGludDY0KSAoaSArIGNodW5rKSAqIG5hY2NvdW50 cyAtIDEpOworCQkJCQkJICAvLyJzZWxlY3QgYWlkLCAoYWlkIC0gMSkgLyAlZCArIDEsIDAsICcn ICIKKwkJCQkJCSAgLy8iZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgIiBJTlQ2NF9GT1JNQVQgIikg YXMgYWlkIiwKKwkJCQkJCSAgLy9uYWNjb3VudHMsIChpbnQ2NCkgbmFjY291bnRzICogc2NhbGUp OworCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCAiY29tbWl0Iik7CisJfQogCiAJdGVybVBRRXhwQnVmZmVyKCZzcWwpOwotCi0JZXhl Y3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIH0KIAogLyoKLS0gCjIuNDMuMAoKRnJvbSAw ZWRkYjE1NmMxODdkODI5YzQzODFiYzkyOGM1MzE0NzA1OTI4ODUyIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0 ZTogU3VuLCA5IE5vdiAyMDI1IDIwOjEzOjIzICswNzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMDIv MjddIEdldHRpbmcgcmlkIG9mZiBsaW1pdCBmb3Igc2luZ2xlIHRyYW5zYWN0aW9uIHNpemUKIGR1 cmluZyBkYXRhIGdlbmVyYXRpb24KCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDE1 ICsrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMjg0YTdjODYwZjEuLjI4YjcyZTRjZjFmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMKQEAgLTE4MSwxMiArMTgxLDYgQEAgc3RhdGljIGludDY0IGVuZF90aW1lID0gMDsJ CS8qIHdoZW4gdG8gc3RvcCBpbiBtaWNybyBzZWNvbmRzLCB1bmRlciAtVCAqLwogICovCiBzdGF0 aWMgaW50CXNjYWxlID0gMTsKIAotLyoKLSAqIHNjYWxpbmcgZmFjdG9yIGFmdGVyIHdoaWNoIHdl IHN3aXRjaCB0byBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgZHVyaW5nCi0gKiBkYXRhIHBvcHVsYXRp b24gcGhhc2Ugb24gc2VydmVyIHNpZGUKLSAqLwotc3RhdGljIGludDY0CXNpbmdsZV90eG5fc2Nh bGVfbGltaXQgPSAxOwotCiAvKgogICogZmlsbGZhY3Rvci4gZm9yIGV4YW1wbGUsIGZpbGxmYWN0 b3IgPSA5MCB3aWxsIHVzZSBvbmx5IDkwIHBlcmNlbnQKICAqIHNwYWNlIGR1cmluZyBpbnNlcnRz IGFuZCBsZWF2ZSAxMCBwZXJjZW50IGZyZWUuCkBAIC01MjE5LDcgKzUyMTMsNiBAQCBzdGF0aWMg dm9pZAogaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiB7CiAJUFFFeHBC dWZmZXJEYXRhIHNxbDsKLQlpbnQJCQkJY2h1bmsgPSAoc2NhbGUgPj0gc2luZ2xlX3R4bl9zY2Fs ZV9saW1pdCkgPyAxIDogc2NhbGU7CiAKIAlmcHJpbnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0 YSAoc2VydmVyLXNpZGUpLi4uXG4iKTsKIApAQCAtNTIzNiwxMyArNTIyOSwxMyBAQCBpbml0R2Vu ZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nvbm4gKmNvbikKIAogCWluaXRQUUV4cEJ1ZmZlcigmc3Fs KTsKIAotCWZvciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkgKz0gY2h1bmspIHsKKwlmb3IgKGlu dCBpID0gMDsgaSA8IHNjYWxlOyBpKyspIHsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdp biIpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCiAJCQkJCQkgICJpbnNlcnQgaW50byBw Z2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgogCQkJCQkJICAic2VsZWN0IGJpZCArIDEs IDAgIgotCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQiLCBpLCBp ICsgY2h1bmspOworCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQi LCBpLCBpICsgMSk7CiAJCQkJCQkgIC8vInNlbGVjdCBiaWQsIDAgIgogCQkJCQkJICAvLyJmcm9t IGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgYmlkIiwgbmJyYW5jaGVzICogc2NhbGUpOwogCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwpAQCAtNTI1MSw3ICs1MjQ0LDcgQEAgaW5p dEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNlcnQgaW50 byBwZ2JlbmNoX3RlbGxlcnModGlkLGJpZCx0YmFsYW5jZSkgIgogCQkJCQkJICAic2VsZWN0IHRp ZCArIDEsIHRpZCAvICVkICsgMSwgMCAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3Nlcmllcygl ZCwgJWQpIGFzIHRpZCIsCi0JCQkJCQkgIG50ZWxsZXJzLCBpICogbnRlbGxlcnMsIChpICsgY2h1 bmspICogbnRlbGxlcnMgLSAxKTsKKwkJCQkJCSAgbnRlbGxlcnMsIGkgKiBudGVsbGVycywgKGkg KyAxKSAqIG50ZWxsZXJzIC0gMSk7CiAJCQkJCQkgIC8vInNlbGVjdCB0aWQsICh0aWQgLSAxKSAv ICVkICsgMSwgMCAiCiAJCQkJCQkgIC8vImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0 aWQiLCBudGVsbGVycywgbnRlbGxlcnMgKiBzY2FsZSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29u LCBzcWwuZGF0YSk7CkBAIC01MjYwLDcgKzUyNTMsNyBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVy U2lkZShQR2Nvbm4gKmNvbikKIAkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMo YWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKIAkJCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBhaWQg LyAlZCArIDEsIDAsICcnICIKIAkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCIgSU5UNjRf Rk9STUFUICIsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCi0JCQkJCQkgIG5hY2NvdW50cywg KGludDY0KSBpICogbmFjY291bnRzLCAoaW50NjQpIChpICsgY2h1bmspICogbmFjY291bnRzIC0g MSk7CisJCQkJCQkgIG5hY2NvdW50cywgKGludDY0KSBpICogbmFjY291bnRzLCAoaW50NjQpIChp ICsgMSkgKiBuYWNjb3VudHMgLSAxKTsKIAkJCQkJCSAgLy8ic2VsZWN0IGFpZCwgKGFpZCAtIDEp IC8gJWQgKyAxLCAwLCAnJyAiCiAJCQkJCQkgIC8vImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICIg SU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCiAJCQkJCQkgIC8vbmFjY291bnRzLCAoaW50NjQpIG5h Y2NvdW50cyAqIHNjYWxlKTsKLS0gCjIuNDMuMAoKRnJvbSBjNTY1OWNmNDc0ZWMyNzNjMDU3NjY4 ZjMwYTRmNDM1ZmQwMmYyZGE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBN aXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDIw OjM4OjM2ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMDMvMjddIE5vIG5lZWQgdG8ga2VlcCBv bGQgY29kZSBpbiBjb21tZW50cwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNyAt LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCAy OGI3MmU0Y2YxZi4uOTc4OTVhYTllZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTIzNiw4ICs1MjM2LDYg QEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNl cnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgogCQkJCQkJICAic2VsZWN0 IGJpZCArIDEsIDAgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBi aWQiLCBpLCBpICsgMSk7Ci0JCQkJCQkgIC8vInNlbGVjdCBiaWQsIDAgIgotCQkJCQkJICAvLyJm cm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgYmlkIiwgbmJyYW5jaGVzICogc2NhbGUpOwog CQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVy KCZzcWwsCkBAIC01MjQ1LDggKzUyNDMsNiBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQ R2Nvbm4gKmNvbikKIAkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEsIDAgIgog CQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAogCQkJCQkJICBu dGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIDEpICogbnRlbGxlcnMgLSAxKTsKLQkJCQkJCSAg Ly8ic2VsZWN0IHRpZCwgKHRpZCAtIDEpIC8gJWQgKyAxLCAwICIKLQkJCQkJCSAgLy8iZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIHRpZCIsIG50ZWxsZXJzLCBudGVsbGVycyAqIHNjYWxl KTsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKIAogCQlwcmludGZQUUV4cEJ1 ZmZlcigmc3FsLApAQCAtNTI1NCw5ICs1MjUwLDYgQEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNp ZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAw LCAnJyAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAi IElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAq IG5hY2NvdW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7Ci0JCQkJCQkgIC8v InNlbGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycgIgotCQkJCQkJICAvLyJmcm9t IGdlbmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICAv L25hY2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7CiAJCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7CiAKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsK LS0gCjIuNDMuMAoKRnJvbSBlNDdiNTJkZGYyMzU5M2RhZDkzNzVlZjUzNTZmZDQxZDA2MjFlZGUz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJv bm92QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAyNSAxOTowNjo0OCArMDcwMApTdWJq ZWN0OiBbUEFUQ0ggdjEwIDA0LzI3XSBBZGRpbmcgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9u IHZpYSB1bm5lc3QKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDE5OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4MiBpbnNl cnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA5Nzg5NWFhOWVkZi4u NjVkNzdjZGVmZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTYxLDcgKzE2MSw3IEBAIHR5cGVkZWYgc3Ry dWN0IHNvY2tldF9zZXQKICAqIHNvbWUgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMgKi8KIAogI2Rl ZmluZSBERUZBVUxUX0lOSVRfU1RFUFMgImR0Z3ZwIgkvKiBkZWZhdWx0IC1JIHNldHRpbmcgKi8K LSNkZWZpbmUgQUxMX0lOSVRfU1RFUFMgImR0Z0d2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAq LworI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnR2lJdnBmIgkvKiBhbGwgcG9zc2libGUgc3Rl cHMgKi8KIAogI2RlZmluZSBMT0dfU1RFUF9TRUNPTkRTCTUJLyogc2Vjb25kcyBiZXR3ZWVuIGxv ZyBtZXNzYWdlcyAqLwogI2RlZmluZSBERUZBVUxUX05YQUNUUwkxMAkJLyogZGVmYXVsdCBueGFj dHMgKi8KQEAgLTE3MSw2ICsxNzEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogI2Rl ZmluZSBNSU5fWklQRklBTl9QQVJBTQkJMS4wMDEJLyogbWluaW11bSBwYXJhbWV0ZXIgZm9yIHpp cGZpYW4gKi8KICNkZWZpbmUgTUFYX1pJUEZJQU5fUEFSQU0JCTEwMDAuMAkvKiBtYXhpbXVtIHBh cmFtZXRlciBmb3IgemlwZmlhbiAqLwogCisvKiBvcmlnaW5hbCBzaW5nbGUgdHJhbnNhY3Rpb24g c2VydmVyLXNpZGUgbWV0aG9kICovCisjZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9PUklHSU5BTAkn RycJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzIHRvIGdlbmVyYXRlIGRh dGEgKi8KKy8qICdvbmUgdHJhbnNhY3Rpb24gcGVyIHNjYWxlJyBzZXJ2ZXItc2lkZSBtZXRob2Rz ICovCisjZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9TRVJJRVMJCSdpJwkvKiB1c2UgSU5TRVJUIC4u IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAqLworI2RlZmluZSBHRU5f VFlQRV9JTlNFUlRfVU5ORVNUICAJJ0knCS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdCB0 byBnZW5lcmF0ZSBkYXRhICovCisKIHN0YXRpYyBpbnQJbnhhY3RzID0gMDsJCQkvKiBudW1iZXIg b2YgdHJhbnNhY3Rpb25zIHBlciBjbGllbnQgKi8KIHN0YXRpYyBpbnQJZHVyYXRpb24gPSAwOwkJ LyogZHVyYXRpb24gaW4gc2Vjb25kcyAqLwogc3RhdGljIGludDY0IGVuZF90aW1lID0gMDsJCS8q IHdoZW4gdG8gc3RvcCBpbiBtaWNybyBzZWNvbmRzLCB1bmRlciAtVCAqLwpAQCAtMTgxLDYgKzE4 NywxMSBAQCBzdGF0aWMgaW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hlbiB0byBzdG9wIGluIG1p Y3JvIHNlY29uZHMsIHVuZGVyIC1UICovCiAgKi8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCisv KgorICoKKyAqLworc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSAnPyc7CisKIC8q CiAgKiBmaWxsZmFjdG9yLiBmb3IgZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkwIHdpbGwgdXNlIG9u bHkgOTAgcGVyY2VudAogICogc3BhY2UgZHVyaW5nIGluc2VydHMgYW5kIGxlYXZlIDEwIHBlcmNl bnQgZnJlZS4KQEAgLTkxNCw3ICs5MjUsOSBAQCB1c2FnZSh2b2lkKQogCQkgICAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgZDogZHJvcCBhbnkgZXhpc3RpbmcgcGdiZW5jaCB0YWJsZXNcbiIK IAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IGNyZWF0ZSB0aGUgdGFibGVzIHVz ZWQgYnkgdGhlIHN0YW5kYXJkIHBnYmVuY2ggc2NlbmFyaW9cbiIKIAkJICAgIiAgICAgICAgICAg ICAgICAgICAgICAgICAgIGc6IGdlbmVyYXRlIGRhdGEsIGNsaWVudC1zaWRlXG4iCi0JCSAgICIg ICAgICAgICAgICAgICAgICAgICAgICAgICBHOiBnZW5lcmF0ZSBkYXRhLCBzZXJ2ZXItc2lkZVxu IgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgRzogZ2VuZXJhdGUgZGF0YSwgc2Vy dmVyLXNpZGUgaW4gc2luZ2xlIHRyYW5zYWN0aW9uXG4iCisJCSAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICBpOiAgIHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VM RUNUIGdlbmVyYXRlX3Nlcmllc1xuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg STogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3Rc biIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIHY6IGludm9rZSBWQUNVVU0gb24g dGhlIHN0YW5kYXJkIHRhYmxlc1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg cDogY3JlYXRlIHByaW1hcnkga2V5IGluZGV4ZXMgb24gdGhlIHN0YW5kYXJkIHRhYmxlc1xuIgog CQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogY3JlYXRlIGZvcmVpZ24ga2V5cyBi ZXR3ZWVuIHRoZSBzdGFuZGFyZCB0YWJsZXNcbiIKQEAgLTUyMDMsMTggKzUyMTYsMTYgQEAgaW5p dEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiB9CiAKIC8qCi0gKiBGaWxsIHRo ZSBzdGFuZGFyZCB0YWJsZXMgd2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIK LSAqCi0gKiBBcyBhbHJlYWR5IHRoZSBjYXNlIHdpdGggdGhlIGNsaWVudC1zaWRlIGRhdGEgZ2Vu ZXJhdGlvbiwgdGhlIGZpbGxlcgotICogY29sdW1uIGRlZmF1bHRzIHRvIE5VTEwgaW4gcGdiZW5j aF9icmFuY2hlcyBhbmQgcGdiZW5jaF90ZWxsZXJzLAotICogYW5kIGlzIGEgYmxhbmstcGFkZGVk IHN0cmluZyBpbiBwZ2JlbmNoX2FjY291bnRzLgorICogR2VuZXJhdGluZyBkYXRhIHZpYSBJTlNF UlQgLi4gU0VMRUNUIC4uIEZST00gZ2VuZXJhdGVfc2VyaWVzCisgKiB3aG9sZSBkYXRhc2V0IGlu IHNpbmdsZSB0cmFuc2FjdGlvbgogICovCiBzdGF0aWMgdm9pZAotaW5pdEdlbmVyYXRlRGF0YVNl cnZlclNpZGUoUEdjb25uICpjb24pCitnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oUEdjb25u ICpjb24pCiB7CiAJUFFFeHBCdWZmZXJEYXRhIHNxbDsKIAotCWZwcmludGYoc3RkZXJyLCAiZ2Vu ZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkuLi5cbiIpOworCWZwcmludGYoc3RkZXJyLCAidmlh IElOU0VSVCAuLiBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzLi4uIGluIHNpbmdsZSBUWE5cbiIpOwor CiAKIAkvKgogCSAqIHdlIGRvIGFsbCBvZiB0aGlzIGluIG9uZSB0cmFuc2FjdGlvbiB0byBlbmFi bGUgdGhlIGJhY2tlbmQncwpAQCAtNTIyNSwzMSArNTIzNiwxMzYgQEAgaW5pdEdlbmVyYXRlRGF0 YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xkIGRhdGEg Ki8KIAlpbml0VHJ1bmNhdGVUYWJsZXMoY29uKTsKIAorCWluaXRQUUV4cEJ1ZmZlcigmc3FsKTsK KworCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hf YnJhbmNoZXMoYmlkLCBiYmFsYW5jZSkgIgorCQkJCQkgICJzZWxlY3QgYmlkLCAwICIKKwkJCQkJ ICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIiwgc2NhbGUgKiBuYnJhbmNoZXMpOworCWV4 ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwlwcmludGZQUUV4cEJ1ZmZlcigmc3Fs LAorCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlkLCBiaWQsIHRiYWxhbmNl KSAiCisJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEsIDAgIgorCQkJCQkgICJm cm9tIGdlbmVyYXRlX3NlcmllcygwLCAlZCkgYXMgdGlkIiwKKwkJCQkJICBudGVsbGVycywgKHNj YWxlICogbnRlbGxlcnMpIC0gMSk7CisJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK KworCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hf YWNjb3VudHMoYWlkLCBiaWQsIGFiYWxhbmNlLCAiCisJCQkJCQkJCSAgICJmaWxsZXIpICIKKwkJ CQkJICAic2VsZWN0IGFpZCArIDEsIGFpZCAvICVkICsgMSwgMCwgJycgIgorCQkJCQkgICJmcm9t IGdlbmVyYXRlX3NlcmllcygwLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAorCQkJCQkgIG5h Y2NvdW50cywgKGludDY0KSAoc2NhbGUgKiBuYWNjb3VudHMpIC0gMSk7CisJZXhlY3V0ZVN0YXRl bWVudChjb24sIHNxbC5kYXRhKTsKKwogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7 CiAKKwl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisKKworLyoKKyAqIEdlbmVyYXRpbmcgZGF0 YSB2aWEgSU5TRVJUIC4uIFNFTEVDVCAuLiBGUk9NIGdlbmVyYXRlX3NlcmllcworICogT25lIHRy YW5zYWN0aW9uIHBlciAnc2NhbGUnCisgKi8KK3N0YXRpYyB2b2lkCitnZW5lcmF0ZURhdGFJbnNl cnRTZXJpZXMoUEdjb25uICpjb24pCit7CisJUFFFeHBCdWZmZXJEYXRhIHNxbDsKKworCWZwcmlu dGYoc3RkZXJyLCAidmlhIElOU0VSVCAuLiBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzLi4uIGluIG11 bHRpcGxlIFRYTihzKVxuIik7CisKIAlpbml0UFFFeHBCdWZmZXIoJnNxbCk7CiAKLQlmb3IgKGlu dCBpID0gMDsgaSA8IHNjYWxlOyBpKyspIHsKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2lu Iik7CisKKwkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLworCWluaXRUcnVuY2F0ZVRh Ymxlcyhjb24pOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCWZvciAo aW50IGkgPSAwOyBpIDwgc2NhbGU7IGkrKykKKwl7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAi YmVnaW4iKTsKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkJICAiaW5zZXJ0IGlu dG8gcGdiZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKLQkJCQkJCSAgInNlbGVjdCBiaWQg KyAxLCAwICIKLQkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgYmlkIiwg aSwgaSArIDEpOworCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFuY2hlcyhiaWQsIGJi YWxhbmNlKSAiCisJCQkJCQkgICJ2YWx1ZXMoJWQsIDApIiwgaSArIDEpOwogCQlleGVjdXRlU3Rh dGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJ CQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlkLGJpZCx0YmFsYW5jZSkgIgorCQkJ CQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJzKHRpZCwgYmlkLCB0YmFsYW5jZSkgIgog CQkJCQkJICAic2VsZWN0IHRpZCArIDEsIHRpZCAvICVkICsgMSwgMCAiCiAJCQkJCQkgICJmcm9t IGdlbmVyYXRlX3NlcmllcyglZCwgJWQpIGFzIHRpZCIsCiAJCQkJCQkgIG50ZWxsZXJzLCBpICog bnRlbGxlcnMsIChpICsgMSkgKiBudGVsbGVycyAtIDEpOwogCQlleGVjdXRlU3RhdGVtZW50KGNv biwgc3FsLmRhdGEpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNl cnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFpZCxiaWQsYWJhbGFuY2UsZmlsbGVyKSAiCisJCQkJ CQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFpZCwgYmlkLCBhYmFsYW5jZSwgIgor CQkJCQkJCQkJICAgImZpbGxlcikgIgogCQkJCQkJICAic2VsZWN0IGFpZCArIDEsIGFpZCAvICVk ICsgMSwgMCwgJycgIgotCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoIiBJTlQ2NF9GT1JN QVQgIiwgIiBJTlQ2NF9GT1JNQVQgIikgYXMgYWlkIiwKLQkJCQkJCSAgbmFjY291bnRzLCAoaW50 NjQpIGkgKiBuYWNjb3VudHMsIChpbnQ2NCkgKGkgKyAxKSAqIG5hY2NvdW50cyAtIDEpOworCQkJ CQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoIiBJTlQ2NF9GT1JNQVQgIiwgIgorCQkJCQkJCQlJ TlQ2NF9GT1JNQVQgIikgYXMgYWlkIiwKKwkJCQkJCSAgbmFjY291bnRzLCAoaW50NjQpIGkgKiBu YWNjb3VudHMsCisJCQkJCQkgIChpbnQ2NCkgKGkgKyAxKSAqIG5hY2NvdW50cyAtIDEpOworCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29u LCAiY29tbWl0Iik7CisJfQorCisJdGVybVBRRXhwQnVmZmVyKCZzcWwpOworfQorCisvKgorICog R2VuZXJhdGluZyBkYXRhIHZpYSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00gdW5uZXN0CisgKiBP bmUgdHJhbnNhY3Rpb24gcGVyICdzY2FsZScKKyAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRlRGF0 YUluc2VydFVubmVzdChQR2Nvbm4gKmNvbikKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCisJ ZnByaW50ZihzdGRlcnIsICJ2aWEgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3QuLi5cbiIpOworCisJ aW5pdFBRRXhwQnVmZmVyKCZzcWwpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIp OworCisJLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xkIGRhdGEgKi8KKwlpbml0VHJ1bmNhdGVUYWJs ZXMoY29uKTsKKworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisKKwlmb3IgKGlu dCBzID0gMDsgcyA8IHNjYWxlOyBzKyspCisJeworCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJl Z2luIik7CisKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRv IHBnYmVuY2hfYnJhbmNoZXMoYmlkLGJiYWxhbmNlKSAiCisJCQkJCQkgICJ2YWx1ZXMoJWQsIDAp IiwgcyArIDEpOworCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCXByaW50 ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnMo dGlkLCBiaWQsIHRiYWxhbmNlKSAiCisJCQkJCQkgICJzZWxlY3QgdW5uZXN0KGFycmF5X2FnZyhz Lmkgb3JkZXIgYnkgcy5pKSkgYXMgdGlkLCAiCisJCQkJCQkJCSAgIiVkIGFzIGJpZCwgMCBhcyB0 YmFsYW5jZSAiCisJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcyglZCwgJWQpIGFzIHMoaSki LAorCQkJCQkJICBzICsgMSwgcyAqIG50ZWxsZXJzICsgMSwgKHMgKyAxKSAqIG50ZWxsZXJzKTsK KwkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCQlwcmludGZQUUV4cEJ1ZmZl cigmc3FsLAorCQkJCQkJICAid2l0aCBkYXRhIGFzICgiCisJCQkJCQkgICIgICBzZWxlY3QgZ2Vu ZXJhdGVfc2VyaWVzKCIgSU5UNjRfRk9STUFUICIsICIKKwkJCQkJCQkgIElOVDY0X0ZPUk1BVCAi KSBhcyBpKSAiCisJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFpZCwgYmlk LCAiCisJCQkJCQkJCQkgICJhYmFsYW5jZSwgZmlsbGVyKSAiCisJCQkJCQkgICJzZWxlY3QgdW5u ZXN0KGFpZCksIHVubmVzdChiaWQpLCAwIGFzIGFiYWxhbmNlLCAiCisJCQkJCQkJCSAgIicnIGFz IGZpbGxlciAiCisJCQkJCQkgICJmcm9tIChzZWxlY3QgYXJyYXlfYWdnKGkrMSkgYWlkLCAiCisJ CQkJCQkJCQkgICAiYXJyYXlfYWdnKGkvJWQgKyAxKSBiaWQgZnJvbSBkYXRhKSIsCisJCQkJCQkg IChpbnQ2NCkgcyAqIG5hY2NvdW50cyArIDEsCisJCQkJCQkgIChpbnQ2NCkgKHMgKyAxKSAqIG5h Y2NvdW50cywgbmFjY291bnRzKTsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK IAogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwpAQCAtNTI1OCw2ICs1Mzc0LDMy IEBAIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCXRlcm1QUUV4cEJ1 ZmZlcigmc3FsKTsKIH0KIAorLyoKKyAqIEZpbGwgdGhlIHN0YW5kYXJkIHRhYmxlcyB3aXRoIHNv bWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlcgorICoKKyAqIEFzIGFscmVhZHkgdGhlIGNh c2Ugd2l0aCB0aGUgY2xpZW50LXNpZGUgZGF0YSBnZW5lcmF0aW9uLCB0aGUgZmlsbGVyCisgKiBj b2x1bW4gZGVmYXVsdHMgdG8gTlVMTCBpbiBwZ2JlbmNoX2JyYW5jaGVzIGFuZCBwZ2JlbmNoX3Rl bGxlcnMsCisgKiBhbmQgaXMgYSBibGFuay1wYWRkZWQgc3RyaW5nIGluIHBnYmVuY2hfYWNjb3Vu dHMuCisgKi8KK3N0YXRpYyB2b2lkCitpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nvbm4g KmNvbikKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoc2VydmVyLXNpZGUp ICIpOworCisJc3dpdGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKKwl7CisJCWNhc2UgR0VOX1RZ UEVfSU5TRVJUX09SSUdJTkFMOgorCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0U2luZ2xlVFhOKGNvbik7 CisJCQlicmVhazsKKwkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfU0VSSUVTOgorCQkJZ2VuZXJhdGVE YXRhSW5zZXJ0U2VyaWVzKGNvbik7CisJCQlicmVhazsKKwkJY2FzZSBHRU5fVFlQRV9JTlNFUlRf VU5ORVNUOgorCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0KGNvbik7CisJCQlicmVhazsKKwl9 Cit9CisKIC8qCiAgKiBJbnZva2UgdmFjdXVtIG9uIHRoZSBzdGFuZGFyZCB0YWJsZXMKICAqLwpA QCAtNTM0MSw2ICs1NDgzLDggQEAgaW5pdENyZWF0ZUZLZXlzKFBHY29ubiAqY29uKQogc3RhdGlj IHZvaWQKIGNoZWNrSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiB7CisJ Y2hhcglkYXRhX2luaXRfdHlwZSA9IDA7CisKIAlpZiAoaW5pdGlhbGl6ZV9zdGVwc1swXSA9PSAn XDAnKQogCQlwZ19mYXRhbCgibm8gaW5pdGlhbGl6YXRpb24gc3RlcHMgc3BlY2lmaWVkIik7CiAK QEAgLTUzNTIsNyArNTQ5NiwyNiBAQCBjaGVja0luaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFs aXplX3N0ZXBzKQogCQkJcGdfbG9nX2Vycm9yX2RldGFpbCgiQWxsb3dlZCBzdGVwIGNoYXJhY3Rl cnMgYXJlOiBcIiIgQUxMX0lOSVRfU1RFUFMgIlwiLiIpOwogCQkJZXhpdCgxKTsKIAkJfQorCisJ CXN3aXRjaCAoKnN0ZXApCisJCXsKKwkJCWNhc2UgJ0cnOgorCQkJCWRhdGFfaW5pdF90eXBlKys7 CisJCQkJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSAqc3RlcDsKKwkJCQlicmVhazsKKwkJCWNhc2Ug J2knOgorCQkJCWRhdGFfaW5pdF90eXBlKys7CisJCQkJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSAq c3RlcDsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ0knOgorCQkJCWRhdGFfaW5pdF90eXBlKys7CisJ CQkJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSAqc3RlcDsKKwkJCQlicmVhazsKKwkJfQogCX0KKwor CWlmIChkYXRhX2luaXRfdHlwZSA+IDEpCisJCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTW9yZSB0 aGFuIG9uZSB0eXBlIG9mIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbiBpcyByZXF1ZXN0ZWQi KTsKIH0KIAogLyoKQEAgLTUzOTUsNiArNTU1OCw4IEBAIHJ1bkluaXRTdGVwcyhjb25zdCBjaGFy ICppbml0aWFsaXplX3N0ZXBzKQogCQkJCWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKGNvbik7 CiAJCQkJYnJlYWs7CiAJCQljYXNlICdHJzoKKwkJCWNhc2UgJ2knOgorCQkJY2FzZSAnSSc6CiAJ CQkJb3AgPSAic2VydmVyLXNpZGUgZ2VuZXJhdGUiOwogCQkJCWluaXRHZW5lcmF0ZURhdGFTZXJ2 ZXJTaWRlKGNvbik7CiAJCQkJYnJlYWs7Ci0tIAoyLjQzLjAKCkZyb20gNWUxODI3Yjg4OWIyODNm NTAyOTljZTZhYjFhNzNmOWY1NWE0YTg0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Qm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTAgTm92 IDIwMjUgMjA6MDA6NTYgKzA3MDAKU3ViamVjdDogW1BBVENIIHYxMCAwNS8yN10gRml4aW5nIHR5 cG8gaW4gcXVlcnkKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDMgKystCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5k ZXggNjVkNzdjZGVmZWEuLjAzZTM3ZGY0NDM0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUyNDEsNyArNTI0 MSw4IEBAIGdlbmVyYXRlRGF0YUluc2VydFNpbmdsZVRYTihQR2Nvbm4gKmNvbikKIAlwcmludGZQ UUV4cEJ1ZmZlcigmc3FsLAogCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJp ZCwgYmJhbGFuY2UpICIKIAkJCQkJICAic2VsZWN0IGJpZCwgMCAiCi0JCQkJCSAgImZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsICVkKSIsIHNjYWxlICogbmJyYW5jaGVzKTsKKwkJCQkJICAiZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsCisJCQkJCSAgc2NhbGUgKiBuYnJhbmNoZXMp OwogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CiAKIAlwcmludGZQUUV4cEJ1ZmZl cigmc3FsLAotLSAKMi40My4wCgpGcm9tIDdjYTg2NTIxZmRhNjkyOWI4ZTBkZTNmYzc3ZGNiYjg5 ODQwMDljODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJv cmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBUdWUsIDExIE5vdiAyMDI1IDE5OjM5OjQ1ICsw NzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMDYvMjddIEFkZGluZyBzdXBwb3J0IGZvciBDT1BZIEJJ TkFSWSBtb2RlCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAzOTMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzODEgaW5zZXJ0 aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMDNlMzdkZjQ0MzQuLjcx YWExZDk0NzlmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3Ny Yy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTE2MSw3ICsxNjEsNyBAQCB0eXBlZGVmIHN0cnVj dCBzb2NrZXRfc2V0CiAgKiBzb21lIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzICovCiAKICNkZWZp bmUgREVGQVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyogZGVmYXVsdCAtSSBzZXR0aW5nICovCi0j ZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAq LworI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0 ZXBzICovCiAKICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNlY29uZHMgYmV0d2VlbiBs b2cgbWVzc2FnZXMgKi8KICNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJCS8qIGRlZmF1bHQgbnhh Y3RzICovCkBAIC0xNzYsNiArMTc2LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogLyog J29uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8KICNkZWZp bmUgR0VOX1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIGdl bmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCiAjZGVmaW5lIEdFTl9UWVBFX0lOU0VS VF9VTk5FU1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdlbmVyYXRl IGRhdGEgKi8KKyNkZWZpbmUgR0VOX1RZUEVfQ09QWV9PUklHSU5BTAkJJ2cnIC8qIHVzZSBDT1BZ IC4uIEZST00gU1RESU4gLi4gVEVYVCB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9U WVBFX0NPUFlfQklOQVJZCQknQycgLyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5BUlkg dG8gZ2VuZXJhdGUgZGF0YSAqLwogCiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVy IG9mIHRyYW5zYWN0aW9ucyBwZXIgY2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJ CS8qIGR1cmF0aW9uIGluIHNlY29uZHMgKi8KQEAgLTE4OCwxMCArMTkwLDE3IEBAIHN0YXRpYyBp bnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywgdW5k ZXIgLVQgKi8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCiAvKgotICoKKyAqIG1vZGUgb2YgZGF0 YSBnZW5lcmF0aW9uIHRvIHVzZQogICovCiBzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlw ZSA9ICc/JzsKIAorLyoKKyAqIENPUFkgRlJPTSBCSU5BUlkgZXhlY3V0aW9uIGJ1ZmZlcgorICov CisjZGVmaW5lIEJJTl9DT1BZX0JVRl9TSVpFCTEwMjQwMAkJCQkvKiBtYXhpbXVtIGJ1ZmZlciBz aXplIGZvciBDT1BZIEZST00gQklOQVJZICovCitzdGF0aWMgY2hhcgkJKmJpbl9jb3B5X2J1ZmZl ciA9IE5VTEw7CQkvKiBidWZmZXIgZm9yIENPUFkgRlJPTSBCSU5BUlkgKi8KK3N0YXRpYyBpbnQz Ml90CSBiaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsJLyogY3VycmVudCBidWZmZXIgc2l6ZSAq LworCiAvKgogICogZmlsbGZhY3Rvci4gZm9yIGV4YW1wbGUsIGZpbGxmYWN0b3IgPSA5MCB3aWxs IHVzZSBvbmx5IDkwIHBlcmNlbnQKICAqIHNwYWNlIGR1cmluZyBpbnNlcnRzIGFuZCBsZWF2ZSAx MCBwZXJjZW50IGZyZWUuCkBAIC04NjEsNyArODcwLDggQEAgc3RhdGljIGludAl3YWl0X29uX3Nv Y2tldF9zZXQoc29ja2V0X3NldCAqc2EsIGludDY0IHVzZWNzKTsKIHN0YXRpYyBib29sIHNvY2tl dF9oYXNfaW5wdXQoc29ja2V0X3NldCAqc2EsIGludCBmZCwgaW50IGlkeCk7CiAKIC8qIGNhbGxi YWNrIHVzZWQgdG8gYnVpbGQgcm93cyBmb3IgQ09QWSBkdXJpbmcgZGF0YSBsb2FkaW5nICovCi10 eXBlZGVmIHZvaWQgKCppbml0Um93TWV0aG9kKSAoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0 IGN1cnIpOwordHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZCkJCShQUUV4cEJ1ZmZlckRhdGEg KnNxbCwgaW50NjQgY3Vycik7Cit0eXBlZGVmIHZvaWQgKCppbml0Um93TWV0aG9kQmluKQkoUEdj b25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpOwog CiAvKiBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBzdGF0aWMgY29u c3QgUHNxbFNjYW5DYWxsYmFja3MgcGdiZW5jaF9jYWxsYmFja3MgPSB7CkBAIC05MjUsNiArOTM1 LDcgQEAgdXNhZ2Uodm9pZCkKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IGRy b3AgYW55IGV4aXN0aW5nIHBnYmVuY2ggdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICB0OiBjcmVhdGUgdGhlIHRhYmxlcyB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBwZ2Jl bmNoIHNjZW5hcmlvXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiBnZW5l cmF0ZSBkYXRhLCBjbGllbnQtc2lkZVxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAg ICAgQzogICBjbGllbnQtc2lkZSAoc2luZ2xlIFROWCkgQ09QWSAuLiBGUk9NIFNURElOIC4uIEJJ TkFSWVxuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgRzogZ2VuZXJhdGUgZGF0 YSwgc2VydmVyLXNpZGUgaW4gc2luZ2xlIHRyYW5zYWN0aW9uXG4iCiAJCSAgICIgICAgICAgICAg ICAgICAgICAgICAgICAgICBpOiAgIHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQg Li4gU0VMRUNUIGdlbmVyYXRlX3Nlcmllc1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAg ICAgICAgSTogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJUIC4uIFNFTEVDVCB1 bm5lc3RcbiIKQEAgLTUxOTEsOSArNTIwMiw5IEBAIGluaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAq Y29uLCBjb25zdCBjaGFyICp0YWJsZSwgaW50NjQgYmFzZSwKICAqIGEgYmxhbmstcGFkZGVkIHN0 cmluZyBpbiBwZ2JlbmNoX2FjY291bnRzLgogICovCiBzdGF0aWMgdm9pZAotaW5pdEdlbmVyYXRl RGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCitpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRl eHQoUEdjb25uICpjb24pCiB7Ci0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNs aWVudC1zaWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJURVhUIG1vZGUuLi5cbiIpOwog CiAJLyoKIAkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxl IHRoZSBiYWNrZW5kJ3MKQEAgLTUyMDksMTIgKzUyMjAsMzczIEBAIGluaXRHZW5lcmF0ZURhdGFD bGllbnRTaWRlKFBHY29ubiAqY29uKQogCSAqIGFscmVhZHkgZXhpc3QKIAkgKi8KIAlpbml0UG9w dWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNo KTsKLQlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBudGVsbGVycywg aW5pdFRlbGxlcik7CisJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwg IG50ZWxsZXJzLCAgaW5pdFRlbGxlcik7CiAJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5j aF9hY2NvdW50cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKIH0KIAorCisvKgorICogRHVtcHMgYmluYXJ5IGJ1ZmZlciB0byBm aWxlIChwdXJlbHkgZm9yIGRlYnVnZ2luZykKKyAqLworc3RhdGljIHZvaWQKK2R1bXBCdWZmZXJU b0ZpbGUoY2hhciAqZmlsZW5hbWUpCit7CisJRklMRSAqZmlsZV9wdHI7CisJc2l6ZV90IGJ5dGVz X3dyaXR0ZW47CisKKwlmaWxlX3B0ciA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKKwlpZiAoZmls ZV9wdHIgPT0gTlVMTCkKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBmaWxl ICVzXG4iLCBmaWxlbmFtZSk7CisJCXJldHVybjsgLy8gRVhJVF9GQUlMVVJFOworCX0KKworCWJ5 dGVzX3dyaXR0ZW4gPSBmd3JpdGUoYmluX2NvcHlfYnVmZmVyLCAxLCBiaW5fY29weV9idWZmZXJf bGVuZ3RoLCBmaWxlX3B0cik7CisKKwlpZiAoYnl0ZXNfd3JpdHRlbiAhPSBiaW5fY29weV9idWZm ZXJfbGVuZ3RoKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciB3cml0aW5nIHRvIGZpbGUg b3IgaW5jb21wbGV0ZSB3cml0ZVxuIik7CisJCWZjbG9zZShmaWxlX3B0cik7CisJCXJldHVybjsg Ly8gRVhJVF9GQUlMVVJFOworCX0KKworCWZjbG9zZShmaWxlX3B0cik7Cit9CisKKy8qCisgKiBT YXZlIGNoYXIgZGF0YSB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckNoYXJEYXRh KGNoYXIgKnNyYywgaW50MzJfdCBsZW4pCit7CisJbWVtY3B5KChjaGFyICopIGJpbl9jb3B5X2J1 ZmZlciArIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgsIChjaGFyICopIHNyYywgbGVuKTsKKwliaW5f Y29weV9idWZmZXJfbGVuZ3RoICs9IGxlbjsKK30KKworLyoKKyAqIENvbnZlcnRzIHBsYXRmb3Jt IGJ5dGUgb3JkZXIgaW50byBuZXR3b3JrIGJ5dGUgb3JkZXIKKyAqIFNQQVJDIGRvZXNuJ3QgcmVx aXJlIHRoYXQKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckRhdGEodm9pZCAqc3JjLCBpbnQzMl90 IGxlbikKK3sKKyNpZmRlZiBfX3NwYXJjX18KKwlidWZmZXJDaGFyRGF0YShzcmMsIGxlbik7Cisj ZWxzZQorCWlmIChsZW4gPT0gMSkKKwkJYnVmZmVyQ2hhckRhdGEoc3JjLCBsZW4pOworCWVsc2UK KwkJZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisJCXsKKwkJCSgoY2hhciAqKSBi aW5fY29weV9idWZmZXIgKyBiaW5fY29weV9idWZmZXJfbGVuZ3RoKVtpXSA9CisJCQkJKChjaGFy ICopIHNyYylbbGVuIC0gaSAtIDFdOworCQl9CisKKwliaW5fY29weV9idWZmZXJfbGVuZ3RoICs9 IGxlbjsKKyNlbmRpZgorfQorCisvKgorICogYWRkcyBjb2x1bW4gY291bnRlcgorICovCitzdGF0 aWMgdm9pZAorYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCit7CisJYnVmZmVyRGF0YSgodm9p ZCAqKSAmbiwgc2l6ZW9mKG4pKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggTlVMTCB2 YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRkTnVsbENvbHVtbigpCit7CisJaW50MzJfdCBudWxs ID0gLTE7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKK30KKwor LyoKKyAqIGFkZHMgY29sdW1uIHdpdGggaW50OCB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRk SW50OENvbHVtbihpbnQ4X3QgdmFsdWUpCit7CisJaW50OF90CWRhdGEgPSB2YWx1ZTsKKwlpbnQz Ml90CXNpemUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6 ZW9mKHNpemUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkpOwor fQorCisvKgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnQxNiB2YWx1ZQorICovCitzdGF0aWMgdm9p ZAorYWRkSW50MTZDb2x1bW4oaW50MTZfdCB2YWx1ZSkKK3sKKwlpbnQxNl90CWRhdGEgPSB2YWx1 ZTsKKwlpbnQzMl90CXNpemUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAm c2l6ZSwgc2l6ZW9mKHNpemUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2Yo ZGF0YSkpOworfQorCisvKgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnRpMzIgdmFsdWUKKyAqLwor c3RhdGljIHZvaWQKK2FkZEludDMyQ29sdW1uKGludDMyX3QgdmFsdWUpCit7CisJaW50MzJfdAlk YXRhID0gdmFsdWU7CisJaW50MzJfdAlzaXplID0gc2l6ZW9mKGRhdGEpOworCWJ1ZmZlckRhdGEo KHZvaWQgKikgJnNpemUsIHNpemVvZihzaXplKSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0 YSwgc2l6ZW9mKGRhdGEpKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggaW50aTY0IHZh bHVlCisgKi8KK3N0YXRpYyB2b2lkCithZGRJbnQ2NENvbHVtbihpbnQ2NF90IHZhbHVlKQorewor CWludDY0X3QJZGF0YSA9IHZhbHVlOworCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKKwli dWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckRhdGEoKHZv aWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Cit9CisKKy8qCisgKiBhZGRzIGNvbHVtbiB3aXRo IGNoYXIgdmFsdWUKKyAqLworc3RhdGljIHZvaWQKK2FkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUp Cit7CisJaW50MzJfdAlzaXplID0gc3RybGVuKHZhbHVlKTsKKwlidWZmZXJEYXRhKCh2b2lkICop ICZzaXplLCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckNoYXJEYXRhKHZhbHVlLCBzaXplKTsKK30K KworLyoKKyAqIFN0YXJ0cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZST00g QklOQVJZIHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJpbmFyeUNvcHlIZWFkZXIo UEdjb25uICpjb24pCit7CisJY2hhciBoZWFkZXJbXSA9IHsnUCcsJ0cnLCdDJywnTycsJ1AnLCdZ JywnXG4nLCdcMzc3JywnXHInLCdcbicsJ1wwJywKKwkJCQkJICdcMCcsJ1wwJywnXDAnLCdcMCcs CisJCQkJCSAnXDAnLCdcMCcsJ1wwJywnXDAnIH07CisKKwlQUXB1dENvcHlEYXRhKGNvbiwgaGVh ZGVyLCAxOSk7Cit9CisKKy8qCisgKiBGaW5pc2hlcyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVy IGZvciBDT1BZIEZST00gQklOQVJZIHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJp bmFyeUNvcHlUcmFpbGVyKFBHY29ubiAqY29uKQoreworCXN0YXRpYyBjaGFyIHRyYWlsZXJbXSA9 IHsgMHhGRiwgMHhGRiB9OworCisJUFFwdXRDb3B5RGF0YShjb24sIHRyYWlsZXIsIDIpOworfQor CisvKgorICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZlciBvdmVyIG5ldHdvcmsgaWYgbmVlZGVkCisg Ki8KK3N0YXRpYyB2b2lkCitmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywg aW50MTZfdCByb3dfbGVuKQoreworCWlmIChiaW5fY29weV9idWZmZXJfbGVuZ3RoICsgcm93X2xl biA+IEJJTl9DT1BZX0JVRl9TSVpFKQorCXsKKwkJLyogZmx1c2ggY3VycmVudCBidWZmZXIgKi8K KwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikKKwkJCVBRcHV0Q29w eURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5n dGgpOworCQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKKwl9Cit9CisKKy8qCisgKiBTZW5k cyBjdXJyZW50IGJyYW5jaCByb3cgdG8gYnVmZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QnJh bmNoQmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMy X3QgcGFyZW50KQoreworCS8qCisJICogRWFjaCByb3cgaGFzIGZvbGxvd2luZyBleHRyYSBieXRl czoKKwkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5zCisJICogLSA0IGJ5dGVzIGFz IGxlbmd0aCBmb3IgZWFjaCBjb2x1bW4KKwkgKi8KKwlpbnQxNl90CW1heF9yb3dfbGVuID0gIDM1 ICsgMiArIDQqMzsgLyogbWF4IHJvdyBzaXplIGlzIDMyICovCisKKwlmbHVzaEJ1ZmZlcihjb24s IHJlcywgbWF4X3Jvd19sZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigyKTsKKworCWFkZEludDMy Q29sdW1uKGN1cnIgKyAxKTsKKwlhZGRJbnQzMkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRz IGN1cnJlbnQgdGVsbGVyIHJvdyB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2luaXRUZWxs ZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJf dCBwYXJlbnQpCit7CisJLyoKKwkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVz OgorCSAqIC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKKwkgKiAtIDQgYnl0ZXMgYXMg bGVuZ3RoIGZvciBlYWNoIGNvbHVtbgorCSAqLworCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgNDAg KyAyICsgNCo0OyAvKiBtYXggcm93IHNpemUgaXMgNDAgKi8KKworCWZsdXNoQnVmZmVyKGNvbiwg cmVzLCBtYXhfcm93X2xlbik7CisKKwlhZGRDb2x1bW5Db3VudGVyKDMpOworCisJYWRkSW50MzJD b2x1bW4oY3VyciArIDEpOworCWFkZEludDMyQ29sdW1uKGN1cnIgLyBwYXJlbnQgKyAxKTsKKwlh ZGRJbnQzMkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRzIGN1cnJlbnQgYWNjb3VudCByb3cg dG8gYnVmZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNv biwgUEdyZXN1bHQgKnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK3sKKwkvKgor CSAqIEVhY2ggcm93IGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CisJICogLSAyIGJ5dGVzIGZv ciBudW1iZXIgb2YgY29sdW1ucworCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVhY2ggY29s dW1uCisJICovCisJaW50MTZfdAltYXhfcm93X2xlbiA9IDI1MCArIDIgKyA0KjQ7IC8qIG1heCBy b3cgc2l6ZSBpcyAyNTAgZm9yIGludDY0ICovCisKKwlmbHVzaEJ1ZmZlcihjb24sIHJlcywgbWF4 X3Jvd19sZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigzKTsKKworCWlmIChzY2FsZSA8PSBTQ0FM RV8zMkJJVF9USFJFU0hPTEQpCisJCWFkZEludDMyQ29sdW1uKGN1cnIgKyAxKTsKKwllbHNlCisJ CWFkZEludDY0Q29sdW1uKGN1cnIpOworCisJYWRkSW50MzJDb2x1bW4oY3VyciAvIHBhcmVudCAr IDEpOworCWFkZEludDMyQ29sdW1uKDApOworfQorCisvKgorICogVW5pdmVyc2FsIHdyYXBwZXIg Zm9yIHNlbmRpbmcgZGF0YSBpbiBiaW5hcnkgZm9ybWF0CisgKi8KK3N0YXRpYyB2b2lkCitpbml0 UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVt bnMsCisJCQkJCQlpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW4gaW5pdF9yb3cpCit7CisJ aW50CQkJIG47CisJUEdyZXN1bHQJKnJlczsKKwljaGFyCQkgY29weV9zdGF0ZW1lbnRbMjU2XTsK Kwljb25zdCBjaGFyCSpjb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3Rk aW4gKGZvcm1hdCBiaW5hcnkpIjsKKwlpbnQ2NF90CQkgdG90YWwgPSBiYXNlICogc2NhbGU7CisK KwliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKKworCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpF IG9uIHYxNCBhbmQgbGF0ZXIgZm9yIGFsbCBvcmRpbmFyeSB0YWJsZXMgKi8KKwlpZiAoKFBRc2Vy dmVyVmVyc2lvbihjb24pID49IDE0MDAwMCkgJiYKKwkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0 YWJsZSkgPT0gUkVMS0lORF9SRUxBVElPTikKKwkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkg JXMgKCVzKSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZyZWV6ZSBvbikiOworCisJ biA9IHBnX3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9zdGF0ZW1lbnQpLCBj b3B5X3N0YXRlbWVudF9mbXQsIHRhYmxlLCBjb2x1bW5zKTsKKwlpZiAobiA+PSBzaXplb2YoY29w eV9zdGF0ZW1lbnQpKQorCQlwZ19mYXRhbCgiaW52YWxpZCBidWZmZXIgc2l6ZTogbXVzdCBiZSBh dCBsZWFzdCAlZCBjaGFyYWN0ZXJzIGxvbmciLCBuKTsKKwllbHNlIGlmIChuID09IC0xKQorCQlw Z19mYXRhbCgiaW52YWxpZCBmb3JtYXQgc3RyaW5nIik7CisKKwlyZXMgPSBQUWV4ZWMoY29uLCBj b3B5X3N0YXRlbWVudCk7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZ X0lOKQorCQlwZ19mYXRhbCgidW5leHBlY3RlZCBjb3B5IGluIHJlc3VsdDogJXMiLCBQUWVycm9y TWVzc2FnZShjb24pKTsKKwlQUWNsZWFyKHJlcyk7CisKKworCXNlbmRCaW5hcnlDb3B5SGVhZGVy KGNvbik7CisKKwlmb3IgKGludDY0X3QgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKQorCXsKKwkJaW5p dF9yb3coY29uLCByZXMsIGksIGJhc2UpOworCX0KKworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ID09IFBHUkVTX0NPUFlfSU4pCisJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29w eV9idWZmZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOworCWVsc2UKKwkJZnByaW50ZihzdGRl cnIsICJVbmV4cGVjdGVkIG1vZGUgJWQgaW5zdGVhZCBvZiAlZFxuIiwgUFFyZXN1bHRTdGF0dXMo cmVzKSwgUEdSRVNfQ09QWV9JTik7CisKKwlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKKwor CWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCisJeworCQlpZiAoUFFw dXRDb3B5RW5kKGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLworCQl7CisJCQlyZXMgPSBQ UWdldFJlc3VsdChjb24pOworCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09N TUFORF9PSykKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFlcnJvck1lc3Nh Z2UoY29uKSk7CisJCQlQUWNsZWFyKHJlcyk7CisJCX0KKwkJZWxzZQorCQkJZnByaW50ZihzdGRl cnIsICJFcnJvcjogJXNcbiIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOworCX0KK30KKworLyoKKyAq IFdyYXBwZXIgZm9yIGJpbmFyeSBkYXRhIGxvYWQKKyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5l cmF0ZURhdGFDbGllbnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQoreworCisJZnByaW50ZihzdGRl cnIsICJCSU5BUlkgbW9kZS4uLlxuIik7CisKKwliaW5fY29weV9idWZmZXIgPSBwZ19tYWxsb2Mo QklOX0NPUFlfQlVGX1NJWkUpOworCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOworCisJLyoK KwkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBi YWNrZW5kJ3MKKwkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucworCSAqLworCWV4ZWN1dGVT dGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKworCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRh ICovCisJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7CisKKwlpbml0UG9wdWxhdGVUYWJsZUJpbmFy eShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCW5icmFu Y2hlcywgaW5pdEJyYW5jaEJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAi cGdiZW5jaF90ZWxsZXJzIiwgICJ0aWQsIGJpZCwgdGJhbGFuY2UiLAorCQkJCQkJCW50ZWxsZXJz LCAgaW5pdFRlbGxlckJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdi ZW5jaF9hY2NvdW50cyIsICJhaWQsIGJpZCwgYWJhbGFuY2UiLAorCQkJCQkJCW5hY2NvdW50cywg aW5pdEFjY291bnRCaW5hcnkpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsK KworCXBnX2ZyZWUoYmluX2NvcHlfYnVmZmVyKTsKK30KKworLyoKKyAqIEZpbGwgdGhlIHN0YW5k YXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUgY2xp ZW50LgorICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25u ICpjb24pCit7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1zaWRl KSBpbiAiKTsKKworCXN3aXRjaCAoZGF0YV9nZW5lcmF0aW9uX3R5cGUpCisJeworCQljYXNlIEdF Tl9UWVBFX0NPUFlfT1JJR0lOQUw6CisJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQo Y29uKTsKKwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0NPUFlfQklOQVJZOgorCQkJaW5pdEdl bmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnkoY29uKTsKKwkJCWJyZWFrOworCX0KK30KKwogLyoK ICAqIEdlbmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVDVCAuLiBGUk9NIGdlbmVyYXRl X3NlcmllcwogICogd2hvbGUgZGF0YXNldCBpbiBzaW5nbGUgdHJhbnNhY3Rpb24KQEAgLTU1MDAs MTQgKzU4NzIsMTAgQEAgY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVw cykKIAogCQlzd2l0Y2ggKCpzdGVwKQogCQl7CisJCQljYXNlICdnJzoKKwkJCWNhc2UgJ0MnOgog CQkJY2FzZSAnRyc6Ci0JCQkJZGF0YV9pbml0X3R5cGUrKzsKLQkJCQlkYXRhX2dlbmVyYXRpb25f dHlwZSA9ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJY2FzZSAnaSc6Ci0JCQkJZGF0YV9pbml0X3R5 cGUrKzsKLQkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJ Y2FzZSAnSSc6CiAJCQkJZGF0YV9pbml0X3R5cGUrKzsKIAkJCQlkYXRhX2dlbmVyYXRpb25fdHlw ZSA9ICpzdGVwOwpAQCAtNTU1NSw2ICs1OTIzLDcgQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIg KmluaXRpYWxpemVfc3RlcHMpCiAJCQkJaW5pdENyZWF0ZVRhYmxlcyhjb24pOwogCQkJCWJyZWFr OwogCQkJY2FzZSAnZyc6CisJCQljYXNlICdDJzoKIAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5l cmF0ZSI7CiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsK LS0gCjIuNDMuMAoKRnJvbSA0YWEwYWMwNTc2NWVkZjZiNWYwYzEzZTE4YWM2NzcyODdjZTc4MjA2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdy ZXNxbC5vcmc+CkRhdGU6IEZyaSwgMTQgTm92IDIwMjUgMjI6NDA6MzkgKzA5MDAKU3ViamVjdDog W1BBVENIIHYxMCAwNy8yN10gcGdiZW5jaDogRml4IGFzc2VydGlvbiBmYWlsdXJlIHdpdGggbXVs dGlwbGUKIFxzeW5jcGlwZWxpbmUgaW4gcGlwZWxpbmUgbW9kZS4KClByZXZpb3VzbHksIHdoZW4g cGdiZW5jaCByYW4gYSBjdXN0b20gc2NyaXB0IHRoYXQgdHJpZ2dlcmVkIHJldHJpYWJsZSBlcnJv cnMKKGUuZy4sIGRlYWRsb2NrcykgZm9sbG93ZWQgYnkgbXVsdGlwbGUgXHN5bmNwaXBlbGluZSBj b21tYW5kcyBpbiBwaXBlbGluZSBtb2RlLAp0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlsdXJl IGNvdWxkIG9jY3VyOgoKICAgIEFzc2VydGlvbiBmYWlsZWQ6IChyZXMgPT0gKCh2b2lkKikwKSks IGZ1bmN0aW9uIGRpc2NhcmRVbnRpbFN5bmMsIGZpbGUgcGdiZW5jaC5jLCBsaW5lIDM1OTQuCgpU aGUgaXNzdWUgd2FzIHRoYXQgZGlzY2FyZFVudGlsU3luYygpIGFzc3VtZWQgYSBwaXBlbGluZSBz eW5jIHJlc3VsdAooUEdSRVNfUElQRUxJTkVfU1lOQykgd291bGQgYWx3YXlzIGJlIGZvbGxvd2Vk IGJ5IGVpdGhlciBhbm90aGVyIHN5bmMgcmVzdWx0Cm9yIE5VTEwuIFRoaXMgYXNzdW1wdGlvbiB3 YXMgaW5jb3JyZWN0OiB3aGVuIG11bHRpcGxlIHN5bmMgcmVxdWVzdHMgd2VyZSBzZW50LAphIHN5 bmMgcmVzdWx0IGNvdWxkIGluc3RlYWQgYmUgZm9sbG93ZWQgYnkgYW5vdGhlciByZXN1bHQgdHlw ZS4gSW4gc3VjaCBjYXNlcywKZGlzY2FyZFVudGlsU3luYygpIG1pc2hhbmRsZWQgdGhlIHJlc3Vs dHMsIGxlYWRpbmcgdG8gdGhlIGFzc2VydGlvbiBmYWlsdXJlLgoKVGhpcyBjb21taXQgZml4ZXMg dGhlIGlzc3VlIGJ5IG1ha2luZyBkaXNjYXJkVW50aWxTeW5jKCkgY29ycmVjdGx5IGhhbmRsZSBj YXNlcwp3aGVyZSBhIHBpcGVsaW5lIHN5bmMgcmVzdWx0IGlzIGZvbGxvd2VkIGJ5IG90aGVyIHJl c3VsdCB0eXBlcy4gSXQgbm93IGNvbnRpbnVlcwpkaXNjYXJkaW5nIHJlc3VsdHMgdW50aWwgYW5v dGhlciBwaXBlbGluZSBzeW5jIGZvbGxvd2VkIGJ5IE5VTEwgaXMgcmVhY2hlZC4KCkJhY2twYXRj aGVkIHRvIHYxNywgd2hlcmUgc3VwcG9ydCBmb3IgXHN5bmNwaXBlbGluZSBjb21tYW5kIGluIHBn YmVuY2ggd2FzCmludHJvZHVjZWQuCgpBdXRob3I6IFl1Z28gTmFnYXRhIDxuYWdhdGFAc3Jhb3Nz LmNvLmpwPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGljQGhpZ2hnby5jb20+ClJldmlld2VkLWJ5 OiBGdWppaSBNYXNhbyA8bWFzYW8uZnVqaWlAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tLzIwMjUxMTExMTA1MDM3LmYzZmM1NTQ2MTZiYzE5ODkxZjkyNmM1YkBzcmFv c3MuY28uanAKQmFja3BhdGNoLXRocm91Z2g6IDE3Ci0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYyB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmlu ZGV4IGQ4NzY0YmE2ZmUwLi5hNDI1MTc2ZWNkYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0zNTYzLDE0ICsz NTYzLDE4IEBAIGRvUmV0cnkoQ1N0YXRlICpzdCwgcGdfdGltZV91c2VjX3QgKm5vdykKIH0KIAog LyoKLSAqIFJlYWQgcmVzdWx0cyBhbmQgZGlzY2FyZCBpdCB1bnRpbCBhIHN5bmMgcG9pbnQuCisg KiBSZWFkIGFuZCBkaXNjYXJkIHJlc3VsdHMgdW50aWwgdGhlIGxhc3Qgc3luYyBwb2ludC4KICAq Lwogc3RhdGljIGludAogZGlzY2FyZFVudGlsU3luYyhDU3RhdGUgKnN0KQogewogCWJvb2wJCXJl Y2VpdmVkX3N5bmMgPSBmYWxzZTsKIAotCS8qIHNlbmQgYSBzeW5jICovCisJLyoKKwkgKiBTZW5k IGEgU3luYyBtZXNzYWdlIHRvIGVuc3VyZSBhdCBsZWFzdCBvbmUgUEdSRVNfUElQRUxJTkVfU1lO QyBpcworCSAqIHJlY2VpdmVkIGFuZCB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wLCBzaW5jZSBh bGwgZWFybGllciBvbmVzIG1heSBoYXZlCisJICogYWxyZWFkeSBiZWVuIHJlY2VpdmVkLgorCSAq LwogCWlmICghUFFwaXBlbGluZVN5bmMoc3QtPmNvbikpCiAJewogCQlwZ19sb2dfZXJyb3IoImNs aWVudCAlZCBhYm9ydGVkOiBmYWlsZWQgdG8gc2VuZCBhIHBpcGVsaW5lIHN5bmMiLApAQCAtMzU3 OCwyOSArMzU4Miw0MiBAQCBkaXNjYXJkVW50aWxTeW5jKENTdGF0ZSAqc3QpCiAJCXJldHVybiAw OwogCX0KIAotCS8qIHJlY2VpdmUgUEdSRVNfUElQRUxJTkVfU1lOQyBhbmQgbnVsbCBmb2xsb3dp bmcgaXQgKi8KKwkvKgorCSAqIENvbnRpbnVlIHJlYWRpbmcgcmVzdWx0cyB1bnRpbCB0aGUgbGFz dCBzeW5jIHBvaW50LCBpLmUuLCB1bnRpbAorCSAqIHJlYWNoaW5nIG51bGwganVzdCBhZnRlciBQ R1JFU19QSVBFTElORV9TWU5DLgorCSAqLwogCWZvciAoOzspCiAJewogCQlQR3Jlc3VsdCAgICpy ZXMgPSBQUWdldFJlc3VsdChzdC0+Y29uKTsKIAorCQlpZiAoUFFzdGF0dXMoc3QtPmNvbikgPT0g Q09OTkVDVElPTl9CQUQpCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiY2xpZW50ICVkIGFib3J0ZWQg d2hpbGUgcm9sbGluZyBiYWNrIHRoZSB0cmFuc2FjdGlvbiBhZnRlciBhbiBlcnJvcjsgcGVyaGFw cyB0aGUgYmFja2VuZCBkaWVkIHdoaWxlIHByb2Nlc3NpbmciLAorCQkJCQkJIHN0LT5pZCk7CisJ CQlQUWNsZWFyKHJlcyk7CisJCQlyZXR1cm4gMDsKKwkJfQorCiAJCWlmIChQUXJlc3VsdFN0YXR1 cyhyZXMpID09IFBHUkVTX1BJUEVMSU5FX1NZTkMpCiAJCQlyZWNlaXZlZF9zeW5jID0gdHJ1ZTsK LQkJZWxzZSBpZiAocmVjZWl2ZWRfc3luYykKKwkJZWxzZSBpZiAocmVjZWl2ZWRfc3luYyAmJiBy ZXMgPT0gTlVMTCkKIAkJewotCQkJLyoKLQkJCSAqIFBHUkVTX1BJUEVMSU5FX1NZTkMgbXVzdCBi ZSBmb2xsb3dlZCBieSBhbm90aGVyCi0JCQkgKiBQR1JFU19QSVBFTElORV9TWU5DIG9yIE5VTEw7 IG90aGVyd2lzZSwgYXNzZXJ0IGZhaWx1cmUuCi0JCQkgKi8KLQkJCUFzc2VydChyZXMgPT0gTlVM TCk7Ci0KIAkJCS8qCiAJCQkgKiBSZXNldCBvbmdvaW5nIHN5bmMgY291bnQgdG8gMCBzaW5jZSBh bGwgUEdSRVNfUElQRUxJTkVfU1lOQwogCQkJICogcmVzdWx0cyBoYXZlIGJlZW4gZGlzY2FyZGVk LgogCQkJICovCiAJCQlzdC0+bnVtX3N5bmNzID0gMDsKLQkJCVBRY2xlYXIocmVzKTsKIAkJCWJy ZWFrOwogCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIElmIGEgUEdSRVNfUElQRUxJTkVf U1lOQyBpcyBmb2xsb3dlZCBieSBzb21ldGhpbmcgb3RoZXIgdGhhbgorCQkJICogUEdSRVNfUElQ RUxJTkVfU1lOQyBvciBOVUxMLCBhbm90aGVyIFBHUkVTX1BJUEVMSU5FX1NZTkMgd2lsbAorCQkJ ICogYXBwZWFyIGxhdGVyLiBSZXNldCByZWNlaXZlZF9zeW5jIHRvIGZhbHNlIHRvIHdhaXQgZm9y IGl0LgorCQkJICovCisJCQlyZWNlaXZlZF9zeW5jID0gZmFsc2U7CisJCX0KIAkJUFFjbGVhcihy ZXMpOwogCX0KIAotLSAKMi40My4wCgpGcm9tIDljNGYxOTA1NTU5N2U5YWRiMjVlNjVjMmFhOGJl ZGYyMGEwOWUxM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3Yg PGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDE5OjA1OjU4 ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMDgvMjddIFNldHRpbmcgZW1wdHkgc3RyaW5nIGFz IGRlZmF1bHQgdmFsdWUgaW4gZmlsbGVyCiBjb2x1bW4KCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYyB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggOTY3ZjZjZTY5ODQuLjAzYjVl NWMyOGYwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTQ5ODUsMjYgKzQ5ODUsMjYgQEAgaW5pdENyZWF0ZVRh YmxlcyhQR2Nvbm4gKmNvbikKIAlzdGF0aWMgY29uc3Qgc3RydWN0IGRkbGluZm8gRERMc1tdID0g ewogCQl7CiAJCQkicGdiZW5jaF9oaXN0b3J5IiwKLQkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkICAg IGludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIyKSIsCi0JCQkidGlk IGludCxiaWQgaW50LGFpZCBiaWdpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIg Y2hhcigyMikiLAorCQkJInRpZCBpbnQsYmlkIGludCxhaWQgICAgaW50LGRlbHRhIGludCxtdGlt ZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJyciLAorCQkJInRpZCBpbnQsYmlk IGludCxhaWQgYmlnaW50LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIp IGRlZmF1bHQgJyciLAogCQkJMAogCQl9LAogCQl7CiAJCQkicGdiZW5jaF90ZWxsZXJzIiwKLQkJ CSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSIs Ci0JCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4 NCkiLAorCQkJInRpZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNo YXIoODQpIGRlZmF1bHQgJyciLAorCQkJInRpZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5j ZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAogCQkJMQogCQl9LAogCQl7CiAJCQki cGdiZW5jaF9hY2NvdW50cyIsCi0JCQkiYWlkICAgIGludCBub3QgbnVsbCxiaWQgaW50LGFiYWxh bmNlIGludCxmaWxsZXIgY2hhcig4NCkiLAotCQkJImFpZCBiaWdpbnQgbm90IG51bGwsYmlkIGlu dCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwKKwkJCSJhaWQgICAgaW50IG5vdCBudWxs LGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZhdWx0ICcnIiwKKwkJCSJh aWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBk ZWZhdWx0ICcnIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfYnJhbmNoZXMiLAotCQkJ ImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSIsCi0JCQkiYmlk IGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIiwKKwkJCSJiaWQgaW50 IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkgZGVmYXVsdCAnJyIsCisJCQki YmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRlZmF1bHQgJyci LAogCQkJMQogCQl9CiAJfTsKLS0gCjIuNDMuMAoKRnJvbSAyYWFiYWE1MmRmZmRiNzhmYmVmYWVm OTUxNjM4ODFjMTVlMThlZjI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kg TGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMjEgTm92 IDIwMjUgMTU6MDM6MTEgKzAyMDAKU3ViamVjdDogW1BBVENIIHYxMCAwOS8yN10gVXNlIHN0cnRv aTY0KCkgaW4gcGdiZW5jaCwgcmVwbGFjaW5nIGl0cyBvcGVuLWNvZGVkCiBpbXBsZW1lbnRhdGlv bgoKTWFrZXMgdGhlIGNvZGUgYSBsaXR0bGUgc2ltcGxlci4KClRoZSBvbGQgaW1wbGVtZW50YXRp b24gYWNjZXB0ZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYnV0IHRoYXQgd2FzCnVubmVjZXNzYXJ5 LiBGaXJzdGx5LCBpdHMgc2libGluZyBmdW5jdGlvbiBmb3IgcGFyc2luZyBkZWNpbWFscywKc3Ry dG9kb3VibGUoKSwgZG9lcyBub3QgYWNjZXB0IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFNlY29uZGx5 LCBub25lIG9mCnRoZSBjYWxsZXJzIGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggdHJhaWxpbmcgd2hp dGVzcGFjZSB0byBpdC4KCkluIHRoZSBwYXNzaW5nLCBjaGVjayBzcGVjaWZpY2FsbHkgZm9yIEVS QU5HRSBiZWZvcmUgcHJpbnRpbmcgdGhlICJvdXQKb2YgcmFuZ2UiIGVycm9yLiBPbiBzb21lIHN5 c3RlbXMsIHN0cnRvdWwoKSBhbmQgc3RydG9kKCkgcmV0dXJuIEVJTlZBTApvbiBhbiBlbXB0eSBv ciBhbGwtc3BhY2VzIHN0cmluZywgYW5kICJpbnZhbGlkIGlucHV0IHN5bnRheCIgaXMgbW9yZQph cHByb3ByaWF0ZSBmb3IgdGhhdCB0aGFuICJvdXQgb2YgcmFuZ2UiLiBGb3IgdGhlIGV4aXN0aW5n CnN0cnRvZG91YmxlKCkgZnVuY3Rpb24gdGhpcyBpcyBwdXJlbHkgYWNhZGVtaWNhbCBiZWNhdXNl IGl0J3MgbmV2ZXIKY2FsbGVkIHdpdGggZXJyb3JPSz09ZmFsc2UsIGJ1dCBsZXQncyBiZSB0aWR5 LiAoUGVyaGFwcyB3ZSBzaG91bGQKcmVtb3ZlIHRoZSBkZWFkIGNvZGVwYXRocyBhbHRvZ2V0aGVy LCBidXQgSSdsbCBsZWF2ZSB0aGF0IGZvciBhbm90aGVyCmRheS4pCgpSZXZpZXdlZC1ieTogQ2hh byBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFl1ZWZlaSBTaGkgPHNo aXl1ZWZlaTEwMDRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTmVpbCBDaGVuIDxjYXJwZW50ZXIu bmFpbC5jekBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3Jn L21lc3NhZ2UtaWQvODYxZGQ1YmQtZjJjOS00ZmY1LThhYTAtZjgyYmRiNzVlYzFmQGlraS5maQot LS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA4MyArKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA2NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3Jj L2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBhNDI1MTc2ZWNkYy4uNjg3NzRhNTllZmQgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYwpAQCAtOTgyLDEzICs5ODIsMTcgQEAgdXNhZ2Uodm9pZCkKIAkJICAgcHJvZ25h bWUsIHByb2duYW1lLCBQQUNLQUdFX0JVR1JFUE9SVCwgUEFDS0FHRV9OQU1FLCBQQUNLQUdFX1VS TCk7CiB9CiAKLS8qIHJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSsk IiAqLworLyoKKyAqIFJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSsk IgorICoKKyAqIFRoaXMgc2hvdWxkIGFncmVlIHdpdGggc3RydG9pbnQ2NCgpIG9uIHdoYXQncyBh Y2NlcHRlZCwgaWdub3Jpbmcgb3ZlcmZsb3dzLgorICovCiBzdGF0aWMgYm9vbAogaXNfYW5faW50 KGNvbnN0IGNoYXIgKnN0cikKIHsKIAljb25zdCBjaGFyICpwdHIgPSBzdHI7CiAKLQkvKiBza2lw IGxlYWRpbmcgc3BhY2VzOyBjYXN0IGlzIGNvbnNpc3RlbnQgd2l0aCBzdHJ0b2ludDY0ICovCisJ Lyogc2tpcCBsZWFkaW5nIHNwYWNlcyAqLwogCXdoaWxlICgqcHRyICYmIGlzc3BhY2UoKHVuc2ln bmVkIGNoYXIpICpwdHIpKQogCQlwdHIrKzsKIApAQCAtMTAxMiw5ICsxMDE2LDYgQEAgaXNfYW5f aW50KGNvbnN0IGNoYXIgKnN0cikKIC8qCiAgKiBzdHJ0b2ludDY0IC0tIGNvbnZlcnQgYSBzdHJp bmcgdG8gNjQtYml0IGludGVnZXIKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2xpZ2h0bHkg bW9kaWZpZWQgdmVyc2lvbiBvZiBwZ19zdHJ0b2ludDY0KCkgZnJvbQotICogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L251bXV0aWxzLmMuCi0gKgogICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hldGhl ciB0aGUgY29udmVyc2lvbiB3b3JrZWQsIGFuZCBpZiBzbwogICogIipyZXN1bHQiIGlzIHNldCB0 byB0aGUgcmVzdWx0LgogICoKQEAgLTEwMjMsNzEgKzEwMjQsMjUgQEAgaXNfYW5faW50KGNvbnN0 IGNoYXIgKnN0cikKIGJvb2wKIHN0cnRvaW50NjQoY29uc3QgY2hhciAqc3RyLCBib29sIGVycm9y T0ssIGludDY0ICpyZXN1bHQpCiB7Ci0JY29uc3QgY2hhciAqcHRyID0gc3RyOwotCWludDY0CQl0 bXAgPSAwOwotCWJvb2wJCW5lZyA9IGZhbHNlOwotCi0JLyoKLQkgKiBEbyBvdXIgb3duIHNjYW4s IHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc3NjYW5mIHdoaWNoIG1pZ2h0IGJlIGJyb2tlbgotCSAq IGZvciBsb25nIGxvbmcuCi0JICoKLQkgKiBBcyBJTlQ2NF9NSU4gY2FuJ3QgYmUgc3RvcmVkIGFz IGEgcG9zaXRpdmUgNjQgYml0IGludGVnZXIsIGFjY3VtdWxhdGUKLQkgKiB2YWx1ZSBhcyBhIG5l Z2F0aXZlIG51bWJlci4KLQkgKi8KLQotCS8qIHNraXAgbGVhZGluZyBzcGFjZXMgKi8KLQl3aGls ZSAoKnB0ciAmJiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKLQkJcHRyKys7Ci0KLQkv KiBoYW5kbGUgc2lnbiAqLwotCWlmICgqcHRyID09ICctJykKLQl7Ci0JCXB0cisrOwotCQluZWcg PSB0cnVlOwotCX0KLQllbHNlIGlmICgqcHRyID09ICcrJykKLQkJcHRyKys7CisJY2hhcgkgICAq ZW5kOwogCi0JLyogcmVxdWlyZSBhdCBsZWFzdCBvbmUgZGlnaXQgKi8KLQlpZiAodW5saWtlbHko IWlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIpKSkKLQkJZ290byBpbnZhbGlkX3N5bnRheDsK KwllcnJubyA9IDA7CisJKnJlc3VsdCA9IHN0cnRvaTY0KHN0ciwgJmVuZCwgMTApOwogCi0JLyog cHJvY2VzcyBkaWdpdHMgKi8KLQl3aGlsZSAoKnB0ciAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFy KSAqcHRyKSkKKwlpZiAodW5saWtlbHkoZXJybm8gPT0gRVJBTkdFKSkKIAl7Ci0JCWludDgJCWRp Z2l0ID0gKCpwdHIrKyAtICcwJyk7Ci0KLQkJaWYgKHVubGlrZWx5KHBnX211bF9zNjRfb3ZlcmZs b3codG1wLCAxMCwgJnRtcCkpIHx8Ci0JCQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRt cCwgZGlnaXQsICZ0bXApKSkKLQkJCWdvdG8gb3V0X29mX3JhbmdlOworCQlpZiAoIWVycm9yT0sp CisJCQlwZ19sb2dfZXJyb3IoInZhbHVlIFwiJXNcIiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHR5cGUg YmlnaW50Iiwgc3RyKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIGFsbG93IHRyYWlsaW5n IHdoaXRlc3BhY2UsIGJ1dCBub3Qgb3RoZXIgdHJhaWxpbmcgY2hhcnMgKi8KLQl3aGlsZSAoKnB0 ciAhPSAnXDAnICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQotCQlwdHIrKzsKLQot CWlmICh1bmxpa2VseSgqcHRyICE9ICdcMCcpKQotCQlnb3RvIGludmFsaWRfc3ludGF4OwotCi0J aWYgKCFuZWcpCisJaWYgKHVubGlrZWx5KGVycm5vICE9IDAgfHwgZW5kID09IHN0ciB8fCAqZW5k ICE9ICdcMCcpKQogCXsKLQkJaWYgKHVubGlrZWx5KHRtcCA9PSBQR19JTlQ2NF9NSU4pKQotCQkJ Z290byBvdXRfb2ZfcmFuZ2U7Ci0JCXRtcCA9IC10bXA7CisJCWlmICghZXJyb3JPSykKKwkJCXBn X2xvZ19lcnJvcigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIi LCBzdHIpOworCQlyZXR1cm4gZmFsc2U7CiAJfQotCi0JKnJlc3VsdCA9IHRtcDsKIAlyZXR1cm4g dHJ1ZTsKLQotb3V0X29mX3JhbmdlOgotCWlmICghZXJyb3JPSykKLQkJcGdfbG9nX2Vycm9yKCJ2 YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGJpZ2ludCIsIHN0cik7Ci0JcmV0 dXJuIGZhbHNlOwotCi1pbnZhbGlkX3N5bnRheDoKLQlpZiAoIWVycm9yT0spCi0JCXBnX2xvZ19l cnJvcigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIiLCBzdHIp OwotCXJldHVybiBmYWxzZTsKIH0KIAogLyogY29udmVydCBzdHJpbmcgdG8gZG91YmxlLCBkZXRl Y3Rpbmcgb3ZlcmZsb3dzL3VuZGVyZmxvd3MgKi8KQEAgLTEwOTksMTQgKzEwNTQsMTQgQEAgc3Ry dG9kb3VibGUoY29uc3QgY2hhciAqc3RyLCBib29sIGVycm9yT0ssIGRvdWJsZSAqZHYpCiAJZXJy bm8gPSAwOwogCSpkdiA9IHN0cnRvZChzdHIsICZlbmQpOwogCi0JaWYgKHVubGlrZWx5KGVycm5v ICE9IDApKQorCWlmICh1bmxpa2VseShlcnJubyA9PSBFUkFOR0UpKQogCXsKIAkJaWYgKCFlcnJv ck9LKQogCQkJcGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0 eXBlIGRvdWJsZSIsIHN0cik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAodW5saWtlbHko ZW5kID09IHN0ciB8fCAqZW5kICE9ICdcMCcpKQorCWlmICh1bmxpa2VseShlcnJubyAhPSAwIHx8 IGVuZCA9PSBzdHIgfHwgKmVuZCAhPSAnXDAnKSkKIAl7CiAJCWlmICghZXJyb3JPSykKIAkJCXBn X2xvZ19lcnJvcigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgZG91YmxlOiBcIiVzXCIi LCBzdHIpOwotLSAKMi40My4wCgpGcm9tIGRjYjg1ZDI2ZjgxMzJlYWFmOWQwOTZlODE0YjliZGE0 OWRiN2Q0NzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJv cmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDIwOjA2OjI0ICsw NzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMTAvMjddIFN3aXRjaGluZyBDT1BZIEZST00gQklOQVJZ IHRpIHJ1biBpbiBtdWx0aXBsZQogdHJhbnNhY3Rpb25zCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMgfCAyNyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxNiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCAwM2I1 ZTVjMjhmMC4uNmI4OTAwN2E2M2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTQ5NiwyMCArNTQ5NiwyMCBA QCBpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50NjRfdCBj dXJyLCBpbnQzMl90IHBhcmVudCkKICAqLwogc3RhdGljIHZvaWQKIGluaXRQb3B1bGF0ZVRhYmxl QmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKLQkJCQkJCWlu dDY0X3QgYmFzZSwgaW5pdFJvd01ldGhvZEJpbiBpbml0X3JvdykKKwkJCQkJCWludCBjb3VudGVy LCBpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW4gaW5pdF9yb3cpCiB7CiAJaW50CQkJIG47 CiAJUEdyZXN1bHQJKnJlczsKIAljaGFyCQkgY29weV9zdGF0ZW1lbnRbMjU2XTsKIAljb25zdCBj aGFyCSpjb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gKGZvcm1h dCBiaW5hcnkpIjsKLQlpbnQ2NF90CQkgdG90YWwgPSBiYXNlICogc2NhbGU7CisJaW50NjRfdAkJ IHN0YXJ0ID0gYmFzZSAqIGNvdW50ZXI7CiAKIAliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsK IAogCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0ZXIgZm9yIGFsbCBvcmRp bmFyeSB0YWJsZXMgKi8KIAlpZiAoKFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAwMCkgJiYK IAkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkgPT0gUkVMS0lORF9SRUxBVElPTikKLQkJ Y29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGggKGZvcm1h dCBiaW5hcnksIGZyZWV6ZSBvbikiOworCQljb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAo JXMpIGZyb20gc3RkaW4gd2l0aCAoZm9ybWF0IGJpbmFyeSkiOwogCiAJbiA9IHBnX3NucHJpbnRm KGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9zdGF0ZW1lbnQpLCBjb3B5X3N0YXRlbWVudF9m bXQsIHRhYmxlLCBjb2x1bW5zKTsKIAlpZiAobiA+PSBzaXplb2YoY29weV9zdGF0ZW1lbnQpKQpA QCAtNTUyNiw3ICs1NTI2LDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24s IGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCiAJc2VuZEJpbmFyeUNvcHlIZWFkZXIoY29u KTsKIAotCWZvciAoaW50NjRfdCBpID0gMDsgaSA8IHRvdGFsOyBpKyspCisJZm9yIChpbnQ2NF90 IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgYmFzZTsgaSsrKQogCXsKIAkJaW5pdF9yb3coY29uLCBy ZXMsIGksIGJhc2UpOwogCX0KQEAgLTU1NzMsMTUgKzU1NzMsMjAgQEAgaW5pdEdlbmVyYXRlRGF0 YUNsaWVudFNpZGVCaW5hcnkoUEdjb25uICpjb24pCiAJLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xk IGRhdGEgKi8KIAlpbml0VHJ1bmNhdGVUYWJsZXMoY29uKTsKIAotCWluaXRQb3B1bGF0ZVRhYmxl QmluYXJ5KGNvbiwgInBnYmVuY2hfYnJhbmNoZXMiLCAiYmlkLCBiYmFsYW5jZSIsCi0JCQkJCQkJ bmJyYW5jaGVzLCBpbml0QnJhbmNoQmluYXJ5KTsKLQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShj b24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0YmFsYW5jZSIsCi0JCQkJCQkJbnRl bGxlcnMsICBpbml0VGVsbGVyQmluYXJ5KTsKLQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24s ICJwZ2JlbmNoX2FjY291bnRzIiwgImFpZCwgYmlkLCBhYmFsYW5jZSIsCi0JCQkJCQkJbmFjY291 bnRzLCBpbml0QWNjb3VudEJpbmFyeSk7Ci0KIAlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1p dCIpOwogCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzY2FsZTsgaSsrKQorCXsKKwkJaW5pdFBvcHVs YXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwK KwkJCQkJCQkJaSwgbmJyYW5jaGVzLCBpbml0QnJhbmNoQmluYXJ5KTsKKwkJaW5pdFBvcHVsYXRl VGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgICJ0aWQsIGJpZCwgdGJhbGFuY2Ui LAorCQkJCQkJCQlpLCBudGVsbGVycywgIGluaXRUZWxsZXJCaW5hcnkpOworCQlpbml0UG9wdWxh dGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgImFpZCwgYmlkLCBhYmFsYW5j ZSIsCisJCQkJCQkJCWksIG5hY2NvdW50cywgaW5pdEFjY291bnRCaW5hcnkpOworCisJCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisJfQorCiAJcGdfZnJlZShiaW5fY29weV9idWZm ZXIpOwogfQogCi0tIAoyLjQzLjAKCkZyb20gYjhlMjg4ODEyMjUyMzRmZDAwYjU1MjM1YmM2MGZh ZDJkYzYwYjU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8 Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMTc6MDY6MDAg KzA3MDAKU3ViamVjdDogW1BBVENIIHYxMCAxMS8yN10gQWRkaW5nIHRlc3RzIGZvciBuZXcgbW9k ZXMgb2YgZGF0YSBnZW5lcmF0aW9uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgICAg ICAgICAgICAgICAgICAgIHwgMjEgKysrKy0tLS0KIHNyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2Jl bmNoX3dpdGhfc2VydmVyLnBsIHwgNTIgKysrKysrKysrKysrKysrKystLS0KIDIgZmlsZXMgY2hh bmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXgg NmI4OTAwN2E2M2IuLmRkNGU1ZDVlMDU2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTE2NCw3ICsxNjQsNyBA QCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAjZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdD R2lJdnBmIgkvKiBhbGwgcG9zc2libGUgc3RlcHMgKi8KIAogI2RlZmluZSBMT0dfU1RFUF9TRUNP TkRTCTUJLyogc2Vjb25kcyBiZXR3ZWVuIGxvZyBtZXNzYWdlcyAqLwotI2RlZmluZSBERUZBVUxU X05YQUNUUwkxMAkJLyogZGVmYXVsdCBueGFjdHMgKi8KKyNkZWZpbmUgREVGQVVMVF9OWEFDVFMJ CTEwCS8qIGRlZmF1bHQgbnhhY3RzICovCiAKICNkZWZpbmUgTUlOX0dBVVNTSUFOX1BBUkFNCQky LjAgLyogbWluaW11bSBwYXJhbWV0ZXIgZm9yIGdhdXNzICovCiAKQEAgLTE5Miw3ICsxOTIsNyBA QCBzdGF0aWMgaW50CXNjYWxlID0gMTsKIC8qCiAgKiBtb2RlIG9mIGRhdGEgZ2VuZXJhdGlvbiB0 byB1c2UKICAqLwotc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSAnPyc7CitzdGF0 aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9IEdFTl9UWVBFX0NPUFlfT1JJR0lOQUw7CiAK IC8qCiAgKiBDT1BZIEZST00gQklOQVJZIGV4ZWN1dGlvbiBidWZmZXIKQEAgLTQ5ODUsMjYgKzQ5 ODUsMjYgQEAgaW5pdENyZWF0ZVRhYmxlcyhQR2Nvbm4gKmNvbikKIAlzdGF0aWMgY29uc3Qgc3Ry dWN0IGRkbGluZm8gRERMc1tdID0gewogCQl7CiAJCQkicGdiZW5jaF9oaXN0b3J5IiwKLQkJCSJ0 aWQgaW50LGJpZCBpbnQsYWlkICAgIGludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxl ciBjaGFyKDIyKSBkZWZhdWx0ICcnIiwKLQkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkIGJpZ2ludCxk ZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0ICcnIiwKKwkJ CSJ0aWQgaW50LGJpZCBpbnQsYWlkICAgIGludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZp bGxlciBjaGFyKDIyKSBkZWZhdWx0ICc/JyIsCisJCQkidGlkIGludCxiaWQgaW50LGFpZCBiaWdp bnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnPyci LAogCQkJMAogCQl9LAogCQl7CiAJCQkicGdiZW5jaF90ZWxsZXJzIiwKLQkJCSJ0aWQgaW50IG5v dCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZhdWx0ICcnIiwK LQkJCSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0 KSBkZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50 LGZpbGxlciBjaGFyKDg0KSIsCisJCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNl IGludCxmaWxsZXIgY2hhcig4NCkiLAogCQkJMQogCQl9LAogCQl7CiAJCQkicGdiZW5jaF9hY2Nv dW50cyIsCi0JCQkiYWlkICAgIGludCBub3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxs ZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCi0JCQkiYWlkIGJpZ2ludCBub3QgbnVsbCxiaWQgaW50 LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCisJCQkiYWlkICAgIGlu dCBub3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn PyciLAorCQkJImFpZCBiaWdpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVy IGNoYXIoODQpIGRlZmF1bHQgJz8nIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfYnJh bmNoZXMiLAotCQkJImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4 KSBkZWZhdWx0ICcnIiwKLQkJCSJiaWQgaW50IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIg Y2hhcig4OCkgZGVmYXVsdCAnJyIsCisJCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQs ZmlsbGVyIGNoYXIoODgpIiwKKwkJCSJiaWQgaW50IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxs ZXIgY2hhcig4OCkiLAogCQkJMQogCQl9CiAJfTsKQEAgLTc4MzcsNiArNzgzNyw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJfQogCQl9CiAKKwkJY2hlY2tJbml0U3RlcHMoaW5p dGlhbGl6ZV9zdGVwcyk7CiAJCXJ1bkluaXRTdGVwcyhpbml0aWFsaXplX3N0ZXBzKTsKIAkJZXhp dCgwKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRo X3NlcnZlci5wbCBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBs CmluZGV4IDU4MWU5YWY3OTA3Li5hMzc3MDQ4ZWFkMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2Jl bmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3Qv MDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKQEAgLTE2LDI1ICsxNiwzMCBAQCBzdWIgY2hlY2tf ZGF0YV9zdGF0ZQogCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWlsZGVy OjpMZXZlbCArIDE7CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlteSAkdHlwZSA9IHNoaWZ0OworCW15 ICRzcWxfcmVzdWx0OwogCi0JbXkgJHNxbF9yZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JCSdTRUxFQ1QgY291bnQoKikgQVMgbnVsbF9jb3VudCBGUk9NIHBnYmVuY2hfYWNj b3VudHMgV0hFUkUgZmlsbGVyIElTIE5VTEwgTElNSVQgMTA7JwotCSk7Ci0JaXMoJHNxbF9yZXN1 bHQsICcwJywKLQkJIiR0eXBlOiBmaWxsZXIgY29sdW1uIG9mIHBnYmVuY2hfYWNjb3VudHMgaGFz IG5vIE5VTEwgZGF0YSIpOwogCSRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCQknU0VMRUNUIGNvdW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX2JyYW5j aGVzIFdIRVJFIGZpbGxlciBJUyBOVUxMOycKIAkpOwogCWlzKCRzcWxfcmVzdWx0LCAnMScsCiAJ CSIkdHlwZTogZmlsbGVyIGNvbHVtbiBvZiBwZ2JlbmNoX2JyYW5jaGVzIGhhcyBvbmx5IE5VTEwg ZGF0YSIpOworCiAJJHNxbF9yZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ CSdTRUxFQ1QgY291bnQoKikgQVMgbnVsbF9jb3VudCBGUk9NIHBnYmVuY2hfdGVsbGVycyBXSEVS RSBmaWxsZXIgSVMgTlVMTDsnCiAJKTsKIAlpcygkc3FsX3Jlc3VsdCwgJzEwJywKIAkJIiR0eXBl OiBmaWxsZXIgY29sdW1uIG9mIHBnYmVuY2hfdGVsbGVycyBoYXMgb25seSBOVUxMIGRhdGEiKTsK KworCSRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQknU0VMRUNU IGNvdW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJFIGZpbGxl ciBJUyBOVUxMIExJTUlUIDEwOycKKwkpOworCWlzKCRzcWxfcmVzdWx0LCAnMCcsCisJCSIkdHlw ZTogZmlsbGVyIGNvbHVtbiBvZiBwZ2JlbmNoX2FjY291bnRzIGhhcyBubyBOVUxMIGRhdGEiKTsK KwogCSRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQknU0VMRUNU IGNvdW50KCopIEFTIGRhdGFfY291bnQgRlJPTSBwZ2JlbmNoX2hpc3Rvcnk7Jyk7Ci0JaXMoJHNx bF9yZXN1bHQsICcwJywgIiR0eXBlOiBwZ2JlbmNoX2hpc3RvcnkgaGFzIG5vIGRhdGEiKTsKKwlp cygkc3FsX3Jlc3VsdCwgJzAnLAorCQkiJHR5cGU6IHBnYmVuY2hfaGlzdG9yeSBoYXMgbm8gZGF0 YSIpOwogfQogCiAjIHN0YXJ0IGEgcGdiZW5jaCBzcGVjaWZpYyBzZXJ2ZXIKQEAgLTEyNSw3ICsx MzAsNyBAQCAkbm9kZS0+cGdiZW5jaCgKIAkncGdiZW5jaCBzY2FsZSAxIGluaXRpYWxpemF0aW9u JywpOwogCiAjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIGNsaWVudC1zaWRlIGRhdGEgZ2VuZXJh dGlvbi4KLWNoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZScpOworY2hlY2tfZGF0 YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlIChkZWZhdWx0IG9wdGlvbnMpJyk7CiAKICMgQWdh aW4sIHdpdGggYWxsIHBvc3NpYmxlIG9wdGlvbnMKICRub2RlLT5wZ2JlbmNoKApAQCAtMTQzLDYg KzE0OCw3IEBAICRub2RlLT5wZ2JlbmNoKAogCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KIAld LAogCSdwZ2JlbmNoIHNjYWxlIDEgaW5pdGlhbGl6YXRpb24nKTsKK2NoZWNrX2RhdGFfc3RhdGUo JG5vZGUsICdjbGllbnQtc2lkZSAoYWxsIG9wdGlvbnMpJyk7CiAKICMgVGVzdCBpbnRlcmFjdGlv biBvZiAtLWluaXQtc3RlcHMgd2l0aCBsZWdhY3kgc3RlcC1zZWxlY3Rpb24gb3B0aW9ucwogJG5v ZGUtPnBnYmVuY2goCkBAIC0xNjQsNiArMTcwLDM4IEBAICRub2RlLT5wZ2JlbmNoKAogIyBDaGVj ayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19k YXRhX3N0YXRlKCRub2RlLCAnc2VydmVyLXNpZGUnKTsKIAorIyBUZXN0IHNlcnZlci1zaWRlIGdl bmVyYXRpb24gd2l0aCBVTk5FU1QKKyRub2RlLT5wZ2JlbmNoKAorCSctLWluaXRpYWxpemUgLS1p bml0LXN0ZXBzPWR0SScsCisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0 YWJsZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChz ZXJ2ZXItc2lkZVwpfSwKKwkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5j aCAtLWluaXQtc3RlcHMgc2VydmVyLXNpZGUgVU5ORVNUJyk7CisKKyMgQ2hlY2sgZGF0YSBzdGF0 ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorY2hlY2tfZGF0YV9zdGF0ZSgk bm9kZSwgJ3NlcnZlci1zaWRlICh1bm5lc3QpJyk7CisKKyMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5l cmF0aW9uIHdpdGggVU5ORVNUCiskbm9kZS0+cGdiZW5jaCgKKwknLS1pbml0aWFsaXplIC0taW5p dC1zdGVwcz1kdEMnLAorCTAsCisJW3Fye14kfV0sCisJWworCQlxcntkcm9wcGluZyBvbGQgdGFi bGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoY2xp ZW50LXNpZGVcKX0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQorCV0sCisJJ3BnYmVuY2gg LS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIEJJTkFSWScpOworCisjIENoZWNrIGRhdGEgc3RhdGUs IGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5v ZGUsICdjbGllbnQtc2lkZSAoYmluYXJ5KScpOworCiAjIFJ1biBhbGwgYnVpbHRpbiBzY3JpcHRz LCBmb3IgYSBmZXcgdHJhbnNhY3Rpb25zIGVhY2gKICRub2RlLT5wZ2JlbmNoKAogCSctLXRyYW5z YWN0aW9ucz01IC1EZm9vPWJsYSAtLWNsaWVudD0yIC0tcHJvdG9jb2w9c2ltcGxlIC0tYnVpbHRp bj10JwotLSAKMi40My4wCgpGcm9tIGIzZjJiY2UzNDIzMmQyOTlhYmM3NjQ0YTg1NzlmMGNlNDlj OGM5ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlz Lm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDE0OjA1OjU5ICswNzAw ClN1YmplY3Q6IFtQQVRDSCB2MTAgMTIvMjddIEZpeGluZyBjb21waWxlciB3YXJuaW5ncyBhYm91 dCB1bnVzZWQgcHJvY2VkdXJlcyBieQogcmVtb3Zpbmcgb3IgY29tbWVudGluZyB0aGVtIG91dCBh cyB0aGV5IG1pZ2h0IGJlIG5lZWRlZCBhIGJpdCBsYXRlcgoKLS0tCiBzcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIHwgMzEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXgg MGEzYmEyMWRjYzkuLjY4MmRiNjFmZjYxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUyMDEsNyArNTIwMSw3 IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAogLyoKICAq IER1bXBzIGJpbmFyeSBidWZmZXIgdG8gZmlsZSAocHVyZWx5IGZvciBkZWJ1Z2dpbmcpCi0gKi8K KyAqCiBzdGF0aWMgdm9pZAogZHVtcEJ1ZmZlclRvRmlsZShjaGFyICpmaWxlbmFtZSkKIHsKQEAg LTUyMjYsNiArNTIyNiw3IEBAIGR1bXBCdWZmZXJUb0ZpbGUoY2hhciAqZmlsZW5hbWUpCiAKIAlm Y2xvc2UoZmlsZV9wdHIpOwogfQorICovCiAKIC8qCiAgKiBTYXZlIGNoYXIgZGF0YSB0byBidWZm ZXIKQEAgLTUyNzEsMzcgKzUyNzIsMTQgQEAgYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCiAK IC8qCiAgKiBhZGRzIGNvbHVtbiB3aXRoIE5VTEwgdmFsdWUKLSAqLworICoKIHN0YXRpYyB2b2lk CiBhZGROdWxsQ29sdW1uKCkKIHsKIAlpbnQzMl90IG51bGwgPSAtMTsKIAlidWZmZXJEYXRhKCh2 b2lkICopICZudWxsLCBzaXplb2YobnVsbCkpOwogfQotCi0vKgotICogYWRkcyBjb2x1bW4gd2l0 aCBpbnQ4IHZhbHVlCiAgKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQ4Q29sdW1uKGludDhfdCB2YWx1 ZSkKLXsKLQlpbnQ4X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRh KTsKLQlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwotCWJ1ZmZlckRh dGEoKHZvaWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Ci19Ci0KLS8qCi0gKiBhZGRzIGNvbHVt biB3aXRoIGludDE2IHZhbHVlCi0gKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQxNkNvbHVtbihpbnQx Nl90IHZhbHVlKQotewotCWludDE2X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNp emVvZihkYXRhKTsKLQlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwot CWJ1ZmZlckRhdGEoKHZvaWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Ci19CiAKIC8qCiAgKiBh ZGRzIGNvbHVtbiB3aXRoIGludGkzMiB2YWx1ZQpAQCAtNTMyOSw3ICs1MzA3LDcgQEAgYWRkSW50 NjRDb2x1bW4oaW50NjRfdCB2YWx1ZSkKIAogLyoKICAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2 YWx1ZQotICovCisgKgogc3RhdGljIHZvaWQKIGFkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUpCiB7 CkBAIC01MzM3LDYgKzUzMTUsNyBAQCBhZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQogCWJ1ZmZl ckRhdGEoKHZvaWQgKikgJnNpemUsIHNpemVvZihzaXplKSk7CiAJYnVmZmVyQ2hhckRhdGEodmFs dWUsIHNpemUpOwogfQorICovCiAKIC8qCiAgKiBTdGFydHMgY29tbXVuaWNhdGlvbiB3aXRoIHNl cnZlciBmb3IgQ09QWSBGUk9NIEJJTkFSWSBzdGF0ZW1lbnQKLS0gCjIuNDMuMAoKRnJvbSA5YWI3 ZmUzMDJiYTdkZTQwNTkzZTdjYmE4ZWExY2EzYjg3NmMxZWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTog VGh1LCAyOSBKYW4gMjAyNiAxOToyMjoxNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDEzLzI3 XSBNb3ZpbmcgUFFjbGVhciBjYWxsIHRvIHRoZSBlbmQgb2YgcHJvY2VkdXJlIHRvCiBhdm9pZCBh Y2Nlc3MgdG8gcHJldmlvdXNseSByZWxlYXNlZCBtZW1vcnkKCi0tLQogc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYyB8IDI3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDE3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDY4 MmRiNjFmZjYxLi4zNjg3YjY1ODcxZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MzYzLDExICs1MzYzLDEx IEBAIHN0YXRpYyB2b2lkCiBpbml0QnJhbmNoQmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAq cmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQogewogCS8qCi0JICogRWFjaCByb3cg aGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKKwkgKiBFYWNoIHJvdyBvZiBicmFuY2ggdGFibGUg aGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKIAkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBj b2x1bW5zCi0JICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBjb2x1bW4KKwkgKiAtIDQg Ynl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIG9mIHRhYmxlJ3MgMyBjb2x1bW5zCiAJICovCi0JaW50 MTZfdAltYXhfcm93X2xlbiA9ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzMiAq LworCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgMzUgKyAyICsgNCozOyAvKiBtYXggcm93IHNpemUg aXMgMzUgKi8KIAogCWZsdXNoQnVmZmVyKGNvbiwgcmVzLCBtYXhfcm93X2xlbik7CiAKQEAgLTUz ODQsOSArNTM4NCw5IEBAIHN0YXRpYyB2b2lkCiBpbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29u LCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQogewogCS8qCi0J ICogRWFjaCByb3cgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKKwkgKiBFYWNoIHJvdyBvZiB0 ZWxsZXJzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CiAJICogLSAyIGJ5dGVzIGZv ciBudW1iZXIgb2YgY29sdW1ucwotCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVhY2ggY29s dW1uCisJICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBvZiB0YWJsZSdzIDQgY29sdW1u cwogCSAqLwogCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgNDAgKyAyICsgNCo0OyAvKiBtYXggcm93 IHNpemUgaXMgNDAgKi8KIApAQCAtNTQwNiw5ICs1NDA2LDkgQEAgc3RhdGljIHZvaWQKIGluaXRB Y2NvdW50QmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGlu dDMyX3QgcGFyZW50KQogewogCS8qCi0JICogRWFjaCByb3cgaGFzIGZvbGxvd2luZyBleHRyYSBi eXRlczoKKwkgKiBFYWNoIHJvdyBvZiBhY2NvdW50cyB0YWJsZSBoYXMgZm9sbG93aW5nIGV4dHJh IGJ5dGVzOgogCSAqIC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKLQkgKiAtIDQgYnl0 ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIGNvbHVtbgorCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9y IGVhY2ggb2YgdGFibGUncyA0IGNvbHVtbnMKIAkgKi8KIAlpbnQxNl90CW1heF9yb3dfbGVuID0g MjUwICsgMiArIDQqNDsgLyogbWF4IHJvdyBzaXplIGlzIDI1MCBmb3IgaW50NjQgKi8KIApAQCAt NTQ1NSwxMSArNTQ1NSwxMSBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwg Y2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19DT1BZX0lOKQogCQlwZ19mYXRhbCgidW5leHBlY3RlZCBjb3B5IGluIHJlc3VsdDog JXMiLCBQUWVycm9yTWVzc2FnZShjb24pKTsKLQlQUWNsZWFyKHJlcyk7CiAKIAogCXNlbmRCaW5h cnlDb3B5SGVhZGVyKGNvbik7CiAKKwogCWZvciAoaW50NjRfdCBpID0gc3RhcnQ7IGkgPCBzdGFy dCArIGJhc2U7IGkrKykKIAl7CiAJCWluaXRfcm93KGNvbiwgcmVzLCBpLCBiYXNlKTsKQEAgLTU0 NzAsOCArNTQ3MCwxMCBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hh ciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJZWxzZQogCQlmcHJpbnRmKHN0ZGVyciwgIlVuZXhw ZWN0ZWQgbW9kZSAlZCBpbnN0ZWFkIG9mICVkXG4iLCBQUXJlc3VsdFN0YXR1cyhyZXMpLCBQR1JF U19DT1BZX0lOKTsKIAorCiAJc2VuZEJpbmFyeUNvcHlUcmFpbGVyKGNvbik7CiAKKwogCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCiAJewogCQlpZiAoUFFwdXRDb3B5 RW5kKGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLwpAQCAtNTQ4NCw2ICs1NDg2LDggQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCQllbHNlCiAJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFlcnJv ck1lc3NhZ2UoY29uKSk7CiAJfQorCisJUFFjbGVhcihyZXMpOwogfQogCiAvKgpAQCAtNTQ5OSw4 ICs1NTAzLDkgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnkoUEdjb25uICpjb24p CiAJYmluX2NvcHlfYnVmZmVyX2xlbmd0aCA9IDA7CiAKIAkvKgotCSAqIHdlIGRvIGFsbCBvZiB0 aGlzIGluIG9uZSB0cmFuc2FjdGlvbiB0byBlbmFibGUgdGhlIGJhY2tlbmQncwotCSAqIGRhdGEt bG9hZGluZyBvcHRpbWl6YXRpb25zCisJICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gbXVsdGlwbGUg dHJhbnNhY3Rpb25zCisJICogdG8gbWluaW1pemUgbG9hZCBvbiBEQiBzZXJ2ZXIgYW5kIHBlcmhh cHMKKwkgKiBpbiBmdXR1cmUgYWxsb3cgbG9hZCBpbiBwYXJhbGxlbCBzZXNzaW9ucwogCSAqLwog CWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKIApAQCAtNTUxMSw2ICs1NTE2LDggQEAg aW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnkoUEdjb25uICpjb24pCiAKIAlmb3IgKGlu dCBpID0gMDsgaSA8IHNjYWxlOyBpKyspCiAJeworCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJl Z2luIik7CisKIAkJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9icmFuY2hl cyIsICJiaWQsIGJiYWxhbmNlIiwKIAkJCQkJCQkJaSwgbmJyYW5jaGVzLCBpbml0QnJhbmNoQmlu YXJ5KTsKIAkJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwg ICJ0aWQsIGJpZCwgdGJhbGFuY2UiLAotLSAKMi40My4wCgpGcm9tIDNkN2IyYzUzYjNmYTQ1Yjg4 NDgzNjliZmJjNDlhMGM3ZTU4NTQzMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJv cmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBUaHUsIDI5IEphbiAy MDI2IDE5OjQ3OjI2ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMTQvMjddIEZpeGluZyBlcnJv ciBhYm91dCBmcmVlaW5nIG1lbW9yeSB0d2ljZQoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jCmluZGV4IDM2ODdiNjU4NzFlLi42ZjQyNDM4ZDk3MCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCkBAIC01NDYyLDYgKzU0NjIsNyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4g KmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAKIAlmb3IgKGludDY0X3QgaSA9IHN0 YXJ0OyBpIDwgc3RhcnQgKyBiYXNlOyBpKyspCiAJeworCQlyZXMgPSBQUWdldFJlc3VsdChjb24p OwogCQlpbml0X3Jvdyhjb24sIHJlcywgaSwgYmFzZSk7CiAJfQogCkBAIC01NDczLDcgKzU0NzQs NyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNo YXIgKmNvbHVtbnMsCiAKIAlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKIAotCisJcmVzID0g UFFnZXRSZXN1bHQoY29uKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSA9PSBQR1JFU19DT1BZ X0lOKQogCXsKIAkJaWYgKFBRcHV0Q29weUVuZChjb24sIE5VTEwpID09IDEpIC8qIHN1Y2Nlc3Mg Ki8KQEAgLTU0ODEsNyArNTQ4Miw2IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAq Y29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAkJCXJlcyA9IFBRZ2V0UmVzdWx0KGNv bik7CiAJCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQkJ CWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24pKTsKLQkJ CVBRY2xlYXIocmVzKTsKIAkJfQogCQllbHNlCiAJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAl c1xuIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7Ci0tIAoyLjQzLjAKCkZyb20gYTcxYzkwZjU1NmJh MTQzMzM1ZDk2MzFlYmJkZjk2YjcxMjBjNmQxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkg SmFuIDIwMjYgMjA6MjQ6NTQgKzA3MDAKU3ViamVjdDogW1BBVENIIHYxMCAxNS8yN10gRml4aW5n IG1lbW9yeSBsZWFrIGR1cmluZyBkYXRhIGZsdXNoIGluIENPUFkgQklOQVJZCiB0ZXN0CgotLS0K IHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAyNiArKysrKysrKysrKysrKysrLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCmluZGV4IDZmNDI0MzhkOTcwLi44ZWNhNTM3YjcxOCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC04 NzEsNyArODcxLDcgQEAgc3RhdGljIGJvb2wgc29ja2V0X2hhc19pbnB1dChzb2NrZXRfc2V0ICpz YSwgaW50IGZkLCBpbnQgaWR4KTsKIAogLyogY2FsbGJhY2sgdXNlZCB0byBidWlsZCByb3dzIGZv ciBDT1BZIGR1cmluZyBkYXRhIGxvYWRpbmcgKi8KIHR5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRo b2QpCQkoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIpOwotdHlwZWRlZiB2b2lkICgq aW5pdFJvd01ldGhvZEJpbikJKFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1 cnIsIGludDMyX3QgcGFyZW50KTsKK3R5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2RCaW4pCShQ R2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCk7CiAKIC8qIGNhbGxiYWNr IGZ1bmN0aW9ucyBmb3Igb3VyIGZsZXggbGV4ZXIgKi8KIHN0YXRpYyBjb25zdCBQc3FsU2NhbkNh bGxiYWNrcyBwZ2JlbmNoX2NhbGxiYWNrcyA9IHsKQEAgLTUzNDUsMTMgKzUzNDUsMTggQEAgc2Vu ZEJpbmFyeUNvcHlUcmFpbGVyKFBHY29ubiAqY29uKQogICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZl ciBvdmVyIG5ldHdvcmsgaWYgbmVlZGVkCiAgKi8KIHN0YXRpYyB2b2lkCi1mbHVzaEJ1ZmZlcihQ R2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50MTZfdCByb3dfbGVuKQorZmx1c2hCdWZmZXIo UEdjb25uICpjb24sIGludDE2X3Qgcm93X2xlbikKIHsKKwlQR3Jlc3VsdCAqcmVzOworCiAJaWYg KGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggKyByb3dfbGVuID4gQklOX0NPUFlfQlVGX1NJWkUpCiAJ eworCQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCQkvKiBmbHVzaCBjdXJyZW50IGJ1ZmZlciAq LwogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSA9PSBQR1JFU19DT1BZX0lOKQogCQkJUFFwdXRD b3B5RGF0YShjb24sIChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xl bmd0aCk7CisJCWVsc2UKKwkJCXBnX2ZhdGFsKCJJdCBpcyBOT1QgYSBDT1BZIGNvbW1hbmQgdGhh dCBpcyBjdXJyZW50bHkgcnVubmluZyIpOwogCQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsK IAl9CiB9CkBAIC01MzYwLDcgKzUzNjUsNyBAQCBmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50MTZfdCByb3dfbGVuKQogICogU2VuZHMgY3VycmVudCBicmFuY2ggcm93 IHRvIGJ1ZmZlcgogICovCiBzdGF0aWMgdm9pZAotaW5pdEJyYW5jaEJpbmFyeShQR2Nvbm4gKmNv biwgUEdyZXN1bHQgKnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK2luaXRCcmFu Y2hCaW5hcnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJ LyoKIAkgKiBFYWNoIHJvdyBvZiBicmFuY2ggdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRl czoKQEAgLTUzNjksNyArNTM3NCw3IEBAIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBH cmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZf dAltYXhfcm93X2xlbiA9ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLwog Ci0JZmx1c2hCdWZmZXIoY29uLCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24s IG1heF9yb3dfbGVuKTsKIAogCWFkZENvbHVtbkNvdW50ZXIoMik7CiAKQEAgLTUzODEsNyArNTM4 Niw3IEBAIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0 X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IHRlbGxlciByb3cgdG8g YnVmZmVyCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBQ R3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQoraW5pdFRlbGxlckJp bmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgog CSAqIEVhY2ggcm93IG9mIHRlbGxlcnMgdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoK QEAgLTUzOTAsNyArNTM5NSw3IEBAIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVz dWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZfdAlt YXhfcm93X2xlbiA9ICA0MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBpcyA0MCAqLwogCi0J Zmx1c2hCdWZmZXIoY29uLCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24sIG1h eF9yb3dfbGVuKTsKIAogCWFkZENvbHVtbkNvdW50ZXIoMyk7CiAKQEAgLTU0MDMsNyArNTQwOCw3 IEBAIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3Qg Y3VyciwgaW50MzJfdCBwYXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IGFjY291bnQgcm93IHRvIGJ1 ZmZlcgogICovCiBzdGF0aWMgdm9pZAotaW5pdEFjY291bnRCaW5hcnkoUEdjb25uICpjb24sIFBH cmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCitpbml0QWNjb3VudEJp bmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgog CSAqIEVhY2ggcm93IG9mIGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6 CkBAIC01NDEyLDcgKzU0MTcsNyBAQCBpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIAkgKi8KIAlpbnQxNl90 CW1heF9yb3dfbGVuID0gMjUwICsgMiArIDQqNDsgLyogbWF4IHJvdyBzaXplIGlzIDI1MCBmb3Ig aW50NjQgKi8KIAotCWZsdXNoQnVmZmVyKGNvbiwgcmVzLCBtYXhfcm93X2xlbik7CisJZmx1c2hC dWZmZXIoY29uLCBtYXhfcm93X2xlbik7CiAKIAlhZGRDb2x1bW5Db3VudGVyKDMpOwogCkBAIC01 NDYyLDEwICs1NDY3LDEwIEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBj aGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAogCWZvciAoaW50NjRfdCBpID0gc3RhcnQ7IGkg PCBzdGFydCArIGJhc2U7IGkrKykKIAl7Ci0JCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7Ci0JCWlu aXRfcm93KGNvbiwgcmVzLCBpLCBiYXNlKTsKKwkJaW5pdF9yb3coY29uLCBpLCBiYXNlKTsKIAl9 CiAKKwlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09 IFBHUkVTX0NPUFlfSU4pCiAJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9i dWZmZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOwogCWVsc2UKQEAgLTU0NzQsNiArNTQ3OSw3 IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hh ciAqY29sdW1ucywKIAogCXNlbmRCaW5hcnlDb3B5VHJhaWxlcihjb24pOwogCisKIAlyZXMgPSBQ UWdldFJlc3VsdChjb24pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlf SU4pCiAJewotLSAKMi40My4wCgpGcm9tIGE1OTMzZjQwYmUwZjNkNDA4YmI5MjBmMjk2ZmI1MTE5 YzNlYzI4ZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJv cmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDMwIEphbiAyMDI2IDEzOjU5OjM2ICsw NzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMTYvMjddIEZpeGluZyBtZW1vcnkgbGVhayBzaG93biBi eSB2YWxncmluZAoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNiArKysrKy0KIDEg ZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpp bmRleCA4ZWNhNTM3YjcxOC4uNDY2ZDkwMjNkNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTM1Nyw2ICs1 MzU3LDggQEAgZmx1c2hCdWZmZXIoUEdjb25uICpjb24sIGludDE2X3Qgcm93X2xlbikKIAkJCVBR cHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5X2J1ZmZl cl9sZW5ndGgpOwogCQllbHNlCiAJCQlwZ19mYXRhbCgiSXQgaXMgTk9UIGEgQ09QWSBjb21tYW5k IHRoYXQgaXMgY3VycmVudGx5IHJ1bm5pbmciKTsKKworCQlQUWNsZWFyKHJlcyk7CiAJCWJpbl9j b3B5X2J1ZmZlcl9sZW5ndGggPSAwOwogCX0KIH0KQEAgLTU0NjAsNiArNTQ2Miw3IEBAIGluaXRQ b3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1u cywKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlfSU4pCiAJCXBnX2Zh dGFsKCJ1bmV4cGVjdGVkIGNvcHkgaW4gcmVzdWx0OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbikp OworCVBRY2xlYXIocmVzKTsKIAogCiAJc2VuZEJpbmFyeUNvcHlIZWFkZXIoY29uKTsKQEAgLTU0 NzUsNiArNTQ3OCw3IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFy ICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAkJUFFwdXRDb3B5RGF0YShjb24sIChjaGFyICopIGJp bl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CiAJZWxzZQogCQlmcHJpbnRm KHN0ZGVyciwgIlVuZXhwZWN0ZWQgbW9kZSAlZCBpbnN0ZWFkIG9mICVkXG4iLCBQUXJlc3VsdFN0 YXR1cyhyZXMpLCBQR1JFU19DT1BZX0lOKTsKKwlQUWNsZWFyKHJlcyk7CiAKIAogCXNlbmRCaW5h cnlDb3B5VHJhaWxlcihjb24pOwpAQCAtNTQ4NSw2ICs1NDg5LDcgQEAgaW5pdFBvcHVsYXRlVGFi bGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCXsKIAkJ aWYgKFBRcHV0Q29weUVuZChjb24sIE5VTEwpID09IDEpIC8qIHN1Y2Nlc3MgKi8KIAkJeworCQkJ UFFjbGVhcihyZXMpOwogCQkJcmVzID0gUFFnZXRSZXN1bHQoY29uKTsKIAkJCWlmIChQUXJlc3Vs dFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCQkJZnByaW50ZihzdGRlcnIsICJF cnJvcjogJXNcbiIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOwpAQCAtNTQ5Miw3ICs1NDk3LDYgQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCQllbHNlCiAJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFlcnJv ck1lc3NhZ2UoY29uKSk7CiAJfQotCiAJUFFjbGVhcihyZXMpOwogfQogCi0tIAoyLjQzLjAKCkZy b20gNmEzMDM2Zjg5OGIwNTBkNWU3MWU3MGVhY2VjY2Q2MzAwM2FhNjQ0NCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNiBGZWIgMjAyNiAxMzo1MzowNyArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjEw IDE3LzI3XSBBZGRpbmcgYWJpbGl0eSB0byBzd2l0Y2ggZGF0YSBpbml0IGJldHdlZW4gc2luZ2xl CiBhbmQgbXVsdGlwbGUgdHJhbnNhY3Rpb25zCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMgICAgICAgICAgICAgICAgICAgIHwgMTkyICsrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iaW4v cGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIHwgIDkzICsrKysrKysrLQogMiBm aWxlcyBjaGFuZ2VkLCAxNzMgaW5zZXJ0aW9ucygrKSwgMTEyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCmluZGV4IDQ2NmQ5MDIzZDcyLi5hZjcxZTM1OGU3MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0xNTks OSArMTU5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAq IHNvbWUgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMgKi8KLQotI2RlZmluZSBERUZBVUxUX0lOSVRf U1RFUFMgImR0Z3ZwIgkvKiBkZWZhdWx0IC1JIHNldHRpbmcgKi8KLSNkZWZpbmUgQUxMX0lOSVRf U1RFUFMgImR0Z0NHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLworI2RlZmluZSBERUZB VUxUX0lOSVRfU1RFUFMgImR0Z3ZwIgkJLyogZGVmYXVsdCAtSSBzZXR0aW5nICovCisjZGVmaW5l IEFMTF9JTklUX1NURVBTICJkdGdNU2NHVXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCiAK ICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNlY29uZHMgYmV0d2VlbiBsb2cgbWVzc2Fn ZXMgKi8KICNkZWZpbmUgREVGQVVMVF9OWEFDVFMJCTEwCS8qIGRlZmF1bHQgbnhhY3RzICovCkBA IC0xNzEsMTQgKzE3MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAjZGVmaW5lIE1J Tl9aSVBGSUFOX1BBUkFNCQkxLjAwMQkvKiBtaW5pbXVtIHBhcmFtZXRlciBmb3IgemlwZmlhbiAq LwogI2RlZmluZSBNQVhfWklQRklBTl9QQVJBTQkJMTAwMC4wCS8qIG1heGltdW0gcGFyYW1ldGVy IGZvciB6aXBmaWFuICovCiAKLS8qIG9yaWdpbmFsIHNpbmdsZSB0cmFuc2FjdGlvbiBzZXJ2ZXIt c2lkZSBtZXRob2QgKi8KLSNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX09SSUdJTkFMCSdHJwkvKiB1 c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAqLwot LyogJ29uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8KLSNk ZWZpbmUgR0VOX1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNU IGdlbmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVmaW5lIEdFTl9UWVBFX0lO U0VSVF9VTk5FU1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdlbmVy YXRlIGRhdGEgKi8KLSNkZWZpbmUgR0VOX1RZUEVfQ09QWV9PUklHSU5BTAkJJ2cnIC8qIHVzZSBD T1BZIC4uIEZST00gU1RESU4gLi4gVEVYVCB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVmaW5lIEdF Tl9UWVBFX0NPUFlfQklOQVJZCQknQycgLyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5B UlkgdG8gZ2VuZXJhdGUgZGF0YSAqLwotCisvKiBzZXJ2ZXItc2lkZSBtZXRob2RzIHRvIGdlbmVy YXRlIGRhdGEgKi8KKyNkZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9TRVJJRVMJJ0cn CS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIGdlbmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRh ICovCisjZGVmaW5lIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUCSdVJwkvKiB1c2Ug SU5TRVJUIC4uIFNFTEVDVCB1bm5lc3QgdG8gZ2VuZXJhdGUgZGF0YSAqLworLyogY2xpZW50LXNp ZGUgbWV0aG9kcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIElOSVRfU1RFUF9HRU5fVFlQ RV9DT1BZX1RFWFQJCSdnJyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNURElOIC4uIFRFWFQgdG8gZ2Vu ZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9CSU5BUlkJCSdj JyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNURElOIC4uIEJJTkFSWSB0byBnZW5lcmF0ZSBkYXRhICov CisvKiBkYXRhIGluaXQgcHNldWRvIHN0ZXBzICovCisjZGVmaW5lIElOSVRfU1RFUF9HRU5fVFlQ RV9TSU5HTEVfWEFDVAkJJ1MnIC8qIHN3aXRjaCB0byBpbml0IGRhdGEgYXMgc2luZ2xlIHRyYW5z YWN0aW9uICovCisjZGVmaW5lIElOSVRfU1RFUF9HRU5fVFlQRV9NVUxUSV9YQUNUCQknTScgLyog c3dpdGNoIHRvIGluaXQgZGF0YSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgKi8KKworc3RhdGlj IGJvb2wgbXVsdGlfeGFjdCA9IGZhbHNlOwkvKiBpbml0IGRhdGEgdHlwZSAoYXMgc2luZ2xlIG9y IG11bHRpcGxlIHRyYW5zYWN0aW9ucykgKi8KIHN0YXRpYyBpbnQJbnhhY3RzID0gMDsJCQkvKiBu dW1iZXIgb2YgdHJhbnNhY3Rpb25zIHBlciBjbGllbnQgKi8KIHN0YXRpYyBpbnQJZHVyYXRpb24g PSAwOwkJLyogZHVyYXRpb24gaW4gc2Vjb25kcyAqLwogc3RhdGljIGludDY0IGVuZF90aW1lID0g MDsJCS8qIHdoZW4gdG8gc3RvcCBpbiBtaWNybyBzZWNvbmRzLCB1bmRlciAtVCAqLwpAQCAtMTky LDcgKzE5NCw3IEBAIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogLyoKICAqIG1vZGUgb2YgZGF0YSBn ZW5lcmF0aW9uIHRvIHVzZQogICovCi1zdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9 IEdFTl9UWVBFX0NPUFlfT1JJR0lOQUw7CitzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlw ZSA9IElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZX1RFWFQ7CiAKIC8qCiAgKiBDT1BZIEZST00gQklO QVJZIGV4ZWN1dGlvbiBidWZmZXIKQEAgLTkzNCwxMSArOTM2LDEzIEBAIHVzYWdlKHZvaWQpCiAJ CSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBydW4gc2VsZWN0ZWQgaW5pdGlhbGl6YXRp b24gc3RlcHMsIGluIHRoZSBzcGVjaWZpZWQgb3JkZXJcbiIKIAkJICAgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGQ6IGRyb3AgYW55IGV4aXN0aW5nIHBnYmVuY2ggdGFibGVzXG4iCiAJCSAg ICIgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiBjcmVhdGUgdGhlIHRhYmxlcyB1c2VkIGJ5 IHRoZSBzdGFuZGFyZCBwZ2JlbmNoIHNjZW5hcmlvXG4iCi0JCSAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICBnOiBnZW5lcmF0ZSBkYXRhLCBjbGllbnQtc2lkZVxuIgotCQkgICAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgQzogICBjbGllbnQtc2lkZSAoc2luZ2xlIFROWCkgQ09QWSAu LiBGUk9NIFNURElOIC4uIEJJTkFSWVxuIgotCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAg ICAgRzogZ2VuZXJhdGUgZGF0YSwgc2VydmVyLXNpZGUgaW4gc2luZ2xlIHRyYW5zYWN0aW9uXG4i Ci0JCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiAgIHNlcnZlci1zaWRlIChtdWx0 aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VMRUNUIGdlbmVyYXRlX3Nlcmllc1xuIgotCQkgICAiICAg ICAgICAgICAgICAgICAgICAgICAgICAgSTogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykg SU5TRVJUIC4uIFNFTEVDVCB1bm5lc3RcbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRvIGdlbmVyYXRlIGRhdGEsIGNsaWVudC1zaWRlOlxuIgorCQkgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnOiAgIENPUFkgLi4gRlJPTSBTVERJTiAuLiBURVhUXG4iCisJCSAg ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6ICAgQ09QWSAuLiBGUk9NIFNURElOIC4u IEJJTkFSWVxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUg ZGF0YSwgc2VydmVyLXNpZGU6XG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEc6ICAgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXNcbiIKKwkJICAgIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVTogICBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdFxuIgorCQkg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgTTogdXNlIG11bHRpcGxlIHRyYW5zYWN0aW9u cyB0byBpbml0aWFsaXplIGRhdGFcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAg IHY6IGludm9rZSBWQUNVVU0gb24gdGhlIHN0YW5kYXJkIHRhYmxlc1xuIgogCQkgICAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDogY3JlYXRlIHByaW1hcnkga2V5IGluZGV4ZXMgb24gdGhl IHN0YW5kYXJkIHRhYmxlc1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgZjog Y3JlYXRlIGZvcmVpZ24ga2V5cyBiZXR3ZWVuIHRoZSBzdGFuZGFyZCB0YWJsZXNcbiIKQEAgLTUw NDksOCArNTA1Myw4IEBAIGluaXRBY2NvdW50KFBRRXhwQnVmZmVyRGF0YSAqc3FsLCBpbnQ2NCBj dXJyKQogfQogCiBzdGF0aWMgdm9pZAotaW5pdFBvcHVsYXRlVGFibGUoUEdjb25uICpjb24sIGNv bnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLAotCQkJCSAgaW5pdFJvd01ldGhvZCBpbml0X3Jv dykKK2luaXRQb3B1bGF0ZVRhYmxlVGV4dChQR2Nvbm4gKmNvbiwgY29uc3QgY2hhciAqdGFibGUs IGludDY0IGJhc2UsCisJCQkJCSAgaW5pdFJvd01ldGhvZCBpbml0X3JvdykKIHsKIAlpbnQJCQlu OwogCWludDY0CQlrOwpAQCAtNTE3OCw2ICs1MTgyLDkgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVu dFNpZGVUZXh0KFBHY29ubiAqY29uKQogewogCWZwcmludGYoc3RkZXJyLCAiVEVYVCBtb2RlLi4u XG4iKTsKIAorCWlmIChtdWx0aV94YWN0KQorCQlmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkchIE11 bHRpcGxlIHRyYW5zYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIG1vZGVcbiIpOwor CiAJLyoKIAkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxl IHRoZSBiYWNrZW5kJ3MKIAkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucwpAQCAtNTE5MSw5 ICs1MTk4LDkgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0KFBHY29ubiAqY29uKQog CSAqIGZpbGwgYnJhbmNoZXMsIHRlbGxlcnMsIGFjY291bnRzIGluIHRoYXQgb3JkZXIgaW4gY2Fz ZSBmb3JlaWduIGtleXMKIAkgKiBhbHJlYWR5IGV4aXN0CiAJICovCi0JaW5pdFBvcHVsYXRlVGFi bGUoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIG5icmFuY2hlcywgaW5pdEJyYW5jaCk7Ci0JaW5p dFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgIG50ZWxsZXJzLCAgaW5pdFRl bGxlcik7Ci0JaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsIG5hY2Nv dW50cywgaW5pdEFjY291bnQpOworCWluaXRQb3B1bGF0ZVRhYmxlVGV4dChjb24sICJwZ2JlbmNo X2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKKwlpbml0UG9wdWxhdGVUYWJsZVRl eHQoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgIG50ZWxsZXJzLCAgaW5pdFRlbGxlcik7CisJaW5p dFBvcHVsYXRlVGFibGVUZXh0KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3VudHMsIGlu aXRBY2NvdW50KTsKIAogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiB9CkBAIC01 NDUwLDcgKzU0NTcsOCBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hh ciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJLyogVXNlIENPUFkgd2l0aCBGUkVFWkUgb24gdjE0 IGFuZCBsYXRlciBmb3IgYWxsIG9yZGluYXJ5IHRhYmxlcyAqLwogCWlmICgoUFFzZXJ2ZXJWZXJz aW9uKGNvbikgPj0gMTQwMDAwKSAmJgogCQlnZXRfdGFibGVfcmVsa2luZChjb24sIHRhYmxlKSA9 PSBSRUxLSU5EX1JFTEFUSU9OKQotCQljb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMp IGZyb20gc3RkaW4gd2l0aCAoZm9ybWF0IGJpbmFyeSkiOworCQlpZiAoIW11bHRpX3hhY3QpCisJ CQljb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gd2l0aCAoZm9y bWF0IGJpbmFyeSwgZnJlZXplIG9uKSI7CiAKIAluID0gcGdfc25wcmludGYoY29weV9zdGF0ZW1l bnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNvcHlfc3RhdGVtZW50X2ZtdCwgdGFibGUsIGNv bHVtbnMpOwogCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVudCkpCkBAIC01NTIyLDExICs1 NTMwLDEzIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQog CS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNv bik7CiAKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCWlmIChtdWx0aV94YWN0 KQorCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogCiAJZm9yIChpbnQgaSA9IDA7 IGkgPCBzY2FsZTsgaSsrKQogCXsKLQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIpOwor CQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKIAog CQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwg YmJhbGFuY2UiLAogCQkJCQkJCQlpLCBuYnJhbmNoZXMsIGluaXRCcmFuY2hCaW5hcnkpOwpAQCAt NTUzNSw5ICs1NTQ1LDEzIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlQmluYXJ5KFBHY29u biAqY29uKQogCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2FjY291bnRz IiwgImFpZCwgYmlkLCBhYmFsYW5jZSIsCiAJCQkJCQkJCWksIG5hY2NvdW50cywgaW5pdEFjY291 bnRCaW5hcnkpOwogCi0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisJCWlmICht dWx0aV94YWN0KQorCQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAl9CiAKKwlp ZiAoIW11bHRpX3hhY3QpCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisKIAlw Z19mcmVlKGJpbl9jb3B5X2J1ZmZlcik7CiB9CiAKQEAgLTU1NDcsMTQgKzU1NjEsMTUgQEAgaW5p dEdlbmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnkoUEdjb25uICpjb24pCiBzdGF0aWMgdm9pZAog aW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiB7Ci0JZnByaW50ZihzdGRl cnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1zaWRlKSBpbiAiKTsKKwlmcHJpbnRmKHN0ZGVy ciwgImdlbmVyYXRpbmcgZGF0YSAoY2xpZW50LXNpZGUgYXMgJXMgdHJhbnNhY3Rpb24lcykgaW4g IiwKKwkJCW11bHRpX3hhY3QgPyAibXVsdGlwbGUiIDogInNpbmdsZSIsIG11bHRpX3hhY3QgPyAi cyIgOiAiIik7CiAKIAlzd2l0Y2ggKGRhdGFfZ2VuZXJhdGlvbl90eXBlKQogCXsKLQkJY2FzZSBH RU5fVFlQRV9DT1BZX09SSUdJTkFMOgorCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZX1RF WFQ6CiAJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoY29uKTsKIAkJCWJyZWFrOwot CQljYXNlIEdFTl9UWVBFX0NPUFlfQklOQVJZOgorCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9D T1BZX0JJTkFSWToKIAkJCWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlQmluYXJ5KGNvbik7CiAJ CQlicmVhazsKIAl9CkBAIC01NTYyLDU4ICs1NTc3LDcgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVu dFNpZGUoUEdjb25uICpjb24pCiAKIC8qCiAgKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAu LiBTRUxFQ1QgLi4gRlJPTSBnZW5lcmF0ZV9zZXJpZXMKLSAqIHdob2xlIGRhdGFzZXQgaW4gc2lu Z2xlIHRyYW5zYWN0aW9uCi0gKi8KLXN0YXRpYyB2b2lkCi1nZW5lcmF0ZURhdGFJbnNlcnRTaW5n bGVUWE4oUEdjb25uICpjb24pCi17Ci0JUFFFeHBCdWZmZXJEYXRhIHNxbDsKLQotCWZwcmludGYo c3RkZXJyLCAidmlhIElOU0VSVCAuLiBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzLi4uIGluIHNpbmds ZSBUWE5cbiIpOwotCi0KLQkvKgotCSAqIHdlIGRvIGFsbCBvZiB0aGlzIGluIG9uZSB0cmFuc2Fj dGlvbiB0byBlbmFibGUgdGhlIGJhY2tlbmQncwotCSAqIGRhdGEtbG9hZGluZyBvcHRpbWl6YXRp b25zCi0JICovCi0JZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIpOwotCi0JLyogdHJ1bmNh dGUgYXdheSBhbnkgb2xkIGRhdGEgKi8KLQlpbml0VHJ1bmNhdGVUYWJsZXMoY29uKTsKLQotCWlu aXRQUUV4cEJ1ZmZlcigmc3FsKTsKLQotCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAg Imluc2VydCBpbnRvIHBnYmVuY2hfYnJhbmNoZXMoYmlkLCBiYmFsYW5jZSkgIgotCQkJCQkgICJz ZWxlY3QgYmlkLCAwICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJp ZCIsCi0JCQkJCSAgc2NhbGUgKiBuYnJhbmNoZXMpOwotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBz cWwuZGF0YSk7Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJpbnNlcnQgaW50 byBwZ2JlbmNoX3RlbGxlcnModGlkLCBiaWQsIHRiYWxhbmNlKSAiCi0JCQkJCSAgInNlbGVjdCB0 aWQgKyAxLCB0aWQgLyAlZCArIDEsIDAgIgotCQkJCQkgICJmcm9tIGdlbmVyYXRlX3Nlcmllcygw LCAlZCkgYXMgdGlkIiwKLQkJCQkJICBudGVsbGVycywgKHNjYWxlICogbnRlbGxlcnMpIC0gMSk7 Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKLQotCXByaW50ZlBRRXhwQnVmZmVy KCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsIGFi YWxhbmNlLCAiCi0JCQkJCQkJCSAgICJmaWxsZXIpICIKLQkJCQkJICAic2VsZWN0IGFpZCArIDEs IGFpZCAvICVkICsgMSwgMCwgJycgIgotCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygwLCAi IElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkgIG5hY2NvdW50cywgKGludDY0KSAoc2Nh bGUgKiBuYWNjb3VudHMpIC0gMSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK LQotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7Ci0KLQl0ZXJtUFFFeHBCdWZmZXIo JnNxbCk7Ci19Ci0KLQotLyoKLSAqIEdlbmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVD VCAuLiBGUk9NIGdlbmVyYXRlX3NlcmllcwotICogT25lIHRyYW5zYWN0aW9uIHBlciAnc2NhbGUn CisgKiBQb3NzaWJseSBhcyAiT25lIHRyYW5zYWN0aW9uIHBlciBzY2FsZSIgaW4gbXVsdGktdHJh bnNhY3Rpb24gbW9kZQogICovCiBzdGF0aWMgdm9pZAogZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVz KFBHY29ubiAqY29uKQpAQCAtNTYyOSwxMSArNTU5MywxMyBAQCBnZW5lcmF0ZURhdGFJbnNlcnRT ZXJpZXMoUEdjb25uICpjb24pCiAJLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xkIGRhdGEgKi8KIAlp bml0VHJ1bmNhdGVUYWJsZXMoY29uKTsKIAotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0 Iik7CisJaWYgKG11bHRpX3hhY3QpCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7 CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpKyspCiAJewotCQlleGVjdXRlU3RhdGVt ZW50KGNvbiwgImJlZ2luIik7CisJCWlmIChtdWx0aV94YWN0KQorCQkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJiZWdpbiIpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCiAJCQkJCQkgICJp bnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFuY2UpICIKQEAgLTU2NTcsMTUg KzU2MjMsMTkgQEAgZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVzKFBHY29ubiAqY29uKQogCQkJCQkJ ICAoaW50NjQpIChpICsgMSkgKiBuYWNjb3VudHMgLSAxKTsKIAkJZXhlY3V0ZVN0YXRlbWVudChj b24sIHNxbC5kYXRhKTsKIAotCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCQlp ZiAobXVsdGlfeGFjdCkKKwkJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAJfQog CisJaWYgKCFtdWx0aV94YWN0KQorCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwor CiAJdGVybVBRRXhwQnVmZmVyKCZzcWwpOwogfQogCiAvKgogICogR2VuZXJhdGluZyBkYXRhIHZp YSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00gdW5uZXN0Ci0gKiBPbmUgdHJhbnNhY3Rpb24gcGVy ICdzY2FsZScKKyAqIFBvc3NpYmx5IGFzICJPbmUgdHJhbnNhY3Rpb24gcGVyIHNjYWxlIiBpbiBt dWx0aS10YW5zYWN0aW9uIG1vZGUKICAqLwogc3RhdGljIHZvaWQKIGdlbmVyYXRlRGF0YUluc2Vy dFVubmVzdChQR2Nvbm4gKmNvbikKQEAgLTU2ODEsMTEgKzU2NTEsMTMgQEAgZ2VuZXJhdGVEYXRh SW5zZXJ0VW5uZXN0KFBHY29ubiAqY29uKQogCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRh ICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7CiAKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwg ImNvbW1pdCIpOworCWlmIChtdWx0aV94YWN0KQorCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNv bW1pdCIpOwogCiAJZm9yIChpbnQgcyA9IDA7IHMgPCBzY2FsZTsgcysrKQogCXsKLQkJZXhlY3V0 ZVN0YXRlbWVudChjb24sICJiZWdpbiIpOworCQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4ZWN1dGVT dGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAogCQkJ CQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKQEAgLTU3 MTQsMTQgKzU2ODYsMTggQEAgZ2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0KFBHY29ubiAqY29uKQog CQkJCQkJICAoaW50NjQpIChzICsgMSkgKiBuYWNjb3VudHMsIG5hY2NvdW50cyk7CiAJCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CiAKLQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJj b21taXQiKTsKKwkJaWYgKG11bHRpX3hhY3QpCisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNv bW1pdCIpOwogCX0KIAorCWlmICghbXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24s ICJjb21taXQiKTsKKwogCXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKIH0KIAogLyoKLSAqIEZpbGwg dGhlIHN0YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZl cgorICogRmlsbCB0aGUgc3RhbmRhcmQgdGFibGVzIHdpdGggc29tZSBkYXRhIGdlbmVyYXRlZCBv biB0aGUgc2VydmVyIHNpZGUKICAqCiAgKiBBcyBhbHJlYWR5IHRoZSBjYXNlIHdpdGggdGhlIGNs aWVudC1zaWRlIGRhdGEgZ2VuZXJhdGlvbiwgdGhlIGZpbGxlcgogICogY29sdW1uIGRlZmF1bHRz IHRvIE5VTEwgaW4gcGdiZW5jaF9icmFuY2hlcyBhbmQgcGdiZW5jaF90ZWxsZXJzLApAQCAtNTcz MCwxNyArNTcwNiwxNSBAQCBnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoUEdjb25uICpjb24pCiBz dGF0aWMgdm9pZAogaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiB7Ci0J ZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKHNlcnZlci1zaWRlKSAiKTsKKwlmcHJp bnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoc2VydmVyLXNpZGUgYXMgJXMgdHJhbnNhY3Rp b24lcykgIiwKKwkJCW11bHRpX3hhY3QgPyAibXVsdGlwbGUiIDogInNpbmdsZSIsIG11bHRpX3hh Y3QgPyAicyIgOiAiIik7CiAKIAlzd2l0Y2ggKGRhdGFfZ2VuZXJhdGlvbl90eXBlKQogCXsKLQkJ Y2FzZSBHRU5fVFlQRV9JTlNFUlRfT1JJR0lOQUw6Ci0JCQlnZW5lcmF0ZURhdGFJbnNlcnRTaW5n bGVUWE4oY29uKTsKLQkJCWJyZWFrOwotCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9TRVJJRVM6CisJ CWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9TRVJJRVM6CiAJCQlnZW5lcmF0ZURhdGFJ bnNlcnRTZXJpZXMoY29uKTsKIAkJCWJyZWFrOwotCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9VTk5F U1Q6CisJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9VTk5FU1Q6CiAJCQlnZW5lcmF0 ZURhdGFJbnNlcnRVbm5lc3QoY29uKTsKIAkJCWJyZWFrOwogCX0KQEAgLTU4NDUsMTkgKzU4MTks MjAgQEAgY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIAogCQlz d2l0Y2ggKCpzdGVwKQogCQl7Ci0JCQljYXNlICdnJzoKLQkJCWNhc2UgJ0MnOgotCQkJY2FzZSAn Ryc6Ci0JCQljYXNlICdpJzoKLQkJCWNhc2UgJ0knOgorCQkJY2FzZSBJTklUX1NURVBfR0VOX1RZ UEVfQ09QWV9URVhUOgorCQkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9CSU5BUlk6CisJ CQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfU0VSSUVTOgorCQkJY2FzZSBJTklUX1NU RVBfR0VOX1RZUEVfSU5TRVJUX1VOTkVTVDoKIAkJCQlkYXRhX2luaXRfdHlwZSsrOwogCQkJCWRh dGFfZ2VuZXJhdGlvbl90eXBlID0gKnN0ZXA7CiAJCQkJYnJlYWs7CiAJCX0KIAl9CiAKKwlpZiAo ZGF0YV9pbml0X3R5cGUgPT0gMCkKKwkJcGdfbG9nX2Vycm9yKCJXQVJOSU5HISBObyBkYXRhIGdl bmVyYXRpb24gdHlwZSBpcyBwcm92aWRlZCIpOwogCWlmIChkYXRhX2luaXRfdHlwZSA+IDEpCi0J CXBnX2xvZ19lcnJvcigiV0FSTklORyEgTW9yZSB0aGFuIG9uZSB0eXBlIG9mIHNlcnZlci1zaWRl IGRhdGEgZ2VuZXJhdGlvbiBpcyByZXF1ZXN0ZWQiKTsKKwkJcGdfbG9nX2Vycm9yKCJXQVJOSU5H ISBNb3JlIHRoYW4gb25lIHR5cGUgb2YgZGF0YSBpbml0aWFsaXphdGlvbiBpcyByZXF1ZXN0ZWQi KTsKIH0KIAogLyoKQEAgLTU4OTUsMTcgKzU4NzAsMjIgQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNo YXIgKmluaXRpYWxpemVfc3RlcHMpCiAJCQkJb3AgPSAiY3JlYXRlIHRhYmxlcyI7CiAJCQkJaW5p dENyZWF0ZVRhYmxlcyhjb24pOwogCQkJCWJyZWFrOwotCQkJY2FzZSAnZyc6Ci0JCQljYXNlICdD JzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVYVDoKKwkJCWNhc2UgSU5JVF9T VEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZOgogCQkJCW9wID0gImNsaWVudC1zaWRlIGdlbmVyYXRl IjsKIAkJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShjb24pOwogCQkJCWJyZWFrOwotCQkJ Y2FzZSAnRyc6Ci0JCQljYXNlICdpJzoKLQkJCWNhc2UgJ0knOgorCQkJY2FzZSBJTklUX1NURVBf R0VOX1RZUEVfSU5TRVJUX1NFUklFUzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VS VF9VTk5FU1Q6CiAJCQkJb3AgPSAic2VydmVyLXNpZGUgZ2VuZXJhdGUiOwogCQkJCWluaXRHZW5l cmF0ZURhdGFTZXJ2ZXJTaWRlKGNvbik7CiAJCQkJYnJlYWs7CisJCQljYXNlIElOSVRfU1RFUF9H RU5fVFlQRV9TSU5HTEVfWEFDVDoKKwkJCQltdWx0aV94YWN0ID0gZmFsc2U7CisJCQkJYnJlYWs7 CisJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9NVUxUSV9YQUNUOgorCQkJCW11bHRpX3hhY3Qg PSB0cnVlOworCQkJCWJyZWFrOwogCQkJY2FzZSAndic6CiAJCQkJb3AgPSAidmFjdXVtIjsKIAkJ CQlpbml0VmFjdXVtKGNvbik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdi ZW5jaF93aXRoX3NlcnZlci5wbCBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhf c2VydmVyLnBsCmluZGV4IGEzNzcwNDhlYWQxLi5hY2IxZTMxZDNlOCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKKysrIGIvc3JjL2Jpbi9w Z2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKQEAgLTExNyw2ICsxMTcsNyBAQCAk bm9kZS0+cGdiZW5jaCgKIAlbcXJ7UGVyaGFwcyB5b3UgbmVlZCB0byBkbyBpbml0aWFsaXphdGlv bn1dLAogCSdydW4gd2l0aG91dCBpbml0Jyk7CiAKKwogIyBJbml0aWFsaXplIHBnYmVuY2ggdGFi bGVzIHNjYWxlIDEKICRub2RlLT5wZ2JlbmNoKAogCSctaScsIDAsCkBAIC0xNjAsNyArMTYxLDcg QEAgJG5vZGUtPnBnYmVuY2goCiAJCXFye2NyZWF0aW5nIHRhYmxlc30sCiAJCXFye2NyZWF0aW5n IDMgcGFydGl0aW9uc30sCiAJCXFye2NyZWF0aW5nIHByaW1hcnkga2V5c30sCi0JCXFye2dlbmVy YXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlXCl9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChzZXJ2 ZXItc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb25cKX0sCiAJCXFye2NyZWF0aW5nIGZvcmVpZ24g a2V5c30sCiAJCXFyeyg/IXZhY3V1bWluZyl9LCAgICAjIG5vIHZhY3V1bQogCQlxcntkb25lIGlu IFxkK1wuXGRcZCBzIH0KQEAgLTE3MCwxNSArMTcxLDE2IEBAICRub2RlLT5wZ2JlbmNoKAogIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnc2VydmVyLXNpZGUnKTsKIAorCiAjIFRlc3Qgc2VydmVyLXNp ZGUgZ2VuZXJhdGlvbiB3aXRoIFVOTkVTVAogJG5vZGUtPnBnYmVuY2goCi0JJy0taW5pdGlhbGl6 ZSAtLWluaXQtc3RlcHM9ZHRJJywKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1kdFUnLAog CTAsCiAJW3Fye14kfV0sCiAJWwogCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKIAkJcXJ7Y3Jl YXRpbmcgdGFibGVzfSwKLQkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGVcKX0sCisJ CXFye2dlbmVyYXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlIGFzIHNpbmdsZSB0cmFuc2FjdGlvblwp fSwKIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5jaCAtLWluaXQtc3Rl cHMgc2VydmVyLXNpZGUgVU5ORVNUJyk7CkBAIC0xODYsMTUgKzE4OCw0OCBAQCAkbm9kZS0+cGdi ZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0 aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ3NlcnZlci1zaWRlICh1bm5lc3QpJyk7CiAK LSMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uIHdpdGggVU5ORVNUCisKKyMgVGVzdCBzZXJ2 ZXItc2lkZSBnZW5lcmF0aW9uIHdpdGggQ09QWSBURVhUCiskbm9kZS0+cGdiZW5jaCgKKwknLS1p bml0aWFsaXplIC0taW5pdC1zdGVwcz1kdGcnLAorCTAsCisJW3Fye14kfV0sCisJWworCQlxcntk cm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJcXJ7Z2VuZXJh dGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9ufSwKKwkJcXJ7ZG9u ZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50LXNp ZGUgVEVYVCcpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEg Z2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAodGV4dCkn KTsKKworJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRNZycs CisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntj cmVhdGluZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBt dWx0aXBsZSB0cmFuc2FjdGlvbnN9LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAor CSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBURVhUJyk7CisKKyMgQ2hlY2sgZGF0 YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorY2hlY2tfZGF0YV9z dGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlICh0ZXh0KScpOworCisKKyMgVGVzdCBzZXJ2ZXItc2lk ZSBnZW5lcmF0aW9uIHdpdGggQ09QWSBCSU5BUlkKICRub2RlLT5wZ2JlbmNoKAotCSctLWluaXRp YWxpemUgLS1pbml0LXN0ZXBzPWR0QycsCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRj JywKIAkwLAogCVtxcnteJH1dLAogCVsKIAkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCiAJCXFy e2NyZWF0aW5nIHRhYmxlc30sCi0JCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlXCl9 LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rp b259LAogCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KIAldLAogCSdwZ2JlbmNoIC0taW5pdC1z dGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsKQEAgLTIwMiw2ICsyMzcsNTIgQEAgJG5vZGUtPnBn YmVuY2goCiAjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJh dGlvbi4KIGNoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAoYmluYXJ5KScpOwog Ciskbm9kZS0+cGdiZW5jaCgKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1kdFNjJywKKwkw LAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFye2NyZWF0 aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlIGFzIHNpbmds ZSB0cmFuc2FjdGlvbn0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQorCV0sCisJJ3BnYmVu Y2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIEJJTkFSWScpOworCisjIENoZWNrIGRhdGEgc3Rh dGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUo JG5vZGUsICdjbGllbnQtc2lkZSAoYmluYXJ5KScpOworCiskbm9kZS0+cGdiZW5jaCgKKwknLS1p bml0aWFsaXplIC0taW5pdC1zdGVwcz1kdE1jJywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7 ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVy YXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlIGFzIG11bHRpcGxlIHRyYW5zYWN0aW9uc30sCisJCXFy e2RvbmUgaW4gXGQrXC5cZFxkIHMgfQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVu dC1zaWRlIEJJTkFSWScpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRl IGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAo YmluYXJ5KScpOworCiskbm9kZS0+cGdiZW5jaCgKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVw cz1kdE1jJywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30s CisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1z aWRlIGFzIG11bHRpcGxlIHRyYW5zYWN0aW9uc30sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMg fQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIEJJTkFSWScpOworCisj IENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2No ZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAoYmluYXJ5KScpOworCisKICMgUnVu IGFsbCBidWlsdGluIHNjcmlwdHMsIGZvciBhIGZldyB0cmFuc2FjdGlvbnMgZWFjaAogJG5vZGUt PnBnYmVuY2goCiAJJy0tdHJhbnNhY3Rpb25zPTUgLURmb289YmxhIC0tY2xpZW50PTIgLS1wcm90 b2NvbD1zaW1wbGUgLS1idWlsdGluPXQnCi0tIAoyLjQzLjAKCkZyb20gMjQ3MWJiNDdiZjcxNTQw MmVjZTYxYjA4NGI2OWFmZTNiYjUzNzQyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Qm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNiBGZWIg MjAyNiAxMzo1NTo0NyArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDE4LzI3XSBSZW1vdmluZyBj b21tZW50ZWQgb3V0IHByb2NlZHVyZXMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8 IDUyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IGFmNzFlMzU4ZTcxLi4zNDQ2NGI3 MDM3YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MjA2LDM1ICs1MjA2LDYgQEAgaW5pdEdlbmVyYXRlRGF0 YUNsaWVudFNpZGVUZXh0KFBHY29ubiAqY29uKQogfQogCiAKLS8qCi0gKiBEdW1wcyBiaW5hcnkg YnVmZmVyIHRvIGZpbGUgKHB1cmVseSBmb3IgZGVidWdnaW5nKQotICoKLXN0YXRpYyB2b2lkCi1k dW1wQnVmZmVyVG9GaWxlKGNoYXIgKmZpbGVuYW1lKQotewotCUZJTEUgKmZpbGVfcHRyOwotCXNp emVfdCBieXRlc193cml0dGVuOwotCi0JZmlsZV9wdHIgPSBmb3BlbihmaWxlbmFtZSwgIndiIik7 Ci0JaWYgKGZpbGVfcHRyID09IE5VTEwpCi0JewotCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9w ZW5pbmcgZmlsZSAlc1xuIiwgZmlsZW5hbWUpOwotCQlyZXR1cm47IC8vIEVYSVRfRkFJTFVSRTsK LQl9Ci0KLQlieXRlc193cml0dGVuID0gZndyaXRlKGJpbl9jb3B5X2J1ZmZlciwgMSwgYmluX2Nv cHlfYnVmZmVyX2xlbmd0aCwgZmlsZV9wdHIpOwotCi0JaWYgKGJ5dGVzX3dyaXR0ZW4gIT0gYmlu X2NvcHlfYnVmZmVyX2xlbmd0aCkKLQl7Ci0JCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igd3JpdGlu ZyB0byBmaWxlIG9yIGluY29tcGxldGUgd3JpdGVcbiIpOwotCQlmY2xvc2UoZmlsZV9wdHIpOwot CQlyZXR1cm47IC8vIEVYSVRfRkFJTFVSRTsKLQl9Ci0KLQlmY2xvc2UoZmlsZV9wdHIpOwotfQot ICovCi0KIC8qCiAgKiBTYXZlIGNoYXIgZGF0YSB0byBidWZmZXIKICAqLwpAQCAtNTI3NywxNyAr NTI0OCw2IEBAIGFkZENvbHVtbkNvdW50ZXIoaW50MTZfdCBuKQogCWJ1ZmZlckRhdGEoKHZvaWQg KikgJm4sIHNpemVvZihuKSk7CiB9CiAKLS8qCi0gKiBhZGRzIGNvbHVtbiB3aXRoIE5VTEwgdmFs dWUKLSAqCi1zdGF0aWMgdm9pZAotYWRkTnVsbENvbHVtbigpCi17Ci0JaW50MzJfdCBudWxsID0g LTE7Ci0JYnVmZmVyRGF0YSgodm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKLX0KLSAqLwot CiAvKgogICogYWRkcyBjb2x1bW4gd2l0aCBpbnRpMzIgdmFsdWUKICAqLwpAQCAtNTMxMiwxOCAr NTI3Miw2IEBAIGFkZEludDY0Q29sdW1uKGludDY0X3QgdmFsdWUpCiAJYnVmZmVyRGF0YSgodm9p ZCAqKSAmZGF0YSwgc2l6ZW9mKGRhdGEpKTsKIH0KIAotLyoKLSAqIGFkZHMgY29sdW1uIHdpdGgg Y2hhciB2YWx1ZQotICoKLXN0YXRpYyB2b2lkCi1hZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQot ewotCWludDMyX3QJc2l6ZSA9IHN0cmxlbih2YWx1ZSk7Ci0JYnVmZmVyRGF0YSgodm9pZCAqKSAm c2l6ZSwgc2l6ZW9mKHNpemUpKTsKLQlidWZmZXJDaGFyRGF0YSh2YWx1ZSwgc2l6ZSk7Ci19Ci0g Ki8KLQogLyoKICAqIFN0YXJ0cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZS T00gQklOQVJZIHN0YXRlbWVudAogICovCi0tIAoyLjQzLjAKCkZyb20gMTBkZmE2MjJiMDljNDIw ZDc5ZGE4Nzc0YzkzMjFmOTE1NDBjODYwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Qm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTYgRmVi IDIwMjYgMDk6MDg6MTcgKzA3MDAKU3ViamVjdDogW1BBVENIIHYxMCAxOS8yN10gU21hbGwgY2hh bmdlcyBkdWUgdG8gYmlnIGNvZGUgcmV2aWV3CgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMgfCA3MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRl eCAzNDQ2NGI3MDM3Yy4uOWYzZDdmOTlhMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtODczLDcgKzg3Myw3 IEBAIHN0YXRpYyBib29sIHNvY2tldF9oYXNfaW5wdXQoc29ja2V0X3NldCAqc2EsIGludCBmZCwg aW50IGlkeCk7CiAKIC8qIGNhbGxiYWNrIHVzZWQgdG8gYnVpbGQgcm93cyBmb3IgQ09QWSBkdXJp bmcgZGF0YSBsb2FkaW5nICovCiB0eXBlZGVmIHZvaWQgKCppbml0Um93TWV0aG9kKQkJKFBRRXhw QnVmZmVyRGF0YSAqc3FsLCBpbnQ2NCBjdXJyKTsKLXR5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRo b2RCaW4pCShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCk7Cit0eXBl ZGVmIHZvaWQgKCppbml0Um93TWV0aG9kQmluYXJ5KQkoUEdjb25uICpjb24sIGludDY0X3QgY3Vy ciwgaW50MzJfdCBwYXJlbnQsIGludDhfdCBjb2x1bW5Db3VudGVyKTsKIAogLyogY2FsbGJhY2sg ZnVuY3Rpb25zIGZvciBvdXIgZmxleCBsZXhlciAqLwogc3RhdGljIGNvbnN0IFBzcWxTY2FuQ2Fs bGJhY2tzIHBnYmVuY2hfY2FsbGJhY2tzID0gewpAQCAtOTQyLDcgKzk0Miw4IEBAIHVzYWdlKHZv aWQpCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBkYXRhLCBz ZXJ2ZXItc2lkZTpcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRzogICBJ TlNFUlQgLi4gU0VMRUNUIGdlbmVyYXRlX3Nlcmllc1xuIgogCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBVOiAgIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0XG4iCi0JCSAgICIgICAg ICAgICAgICAgICAgICAgICAgICAgICBNOiB1c2UgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHRvIGlu aXRpYWxpemUgZGF0YVxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgUzogZmxh ZyB0byB1c2Ugc2luZ2xlIHRyYW5zYWN0aW9uIHRvIGluaXRpYWxpemUgZGF0YVxuIgorCQkgICAi ICAgICAgICAgICAgICAgICAgICAgICAgICAgTTogZmxhZyB0byB1c2UgbXVsdGlwbGUgdHJhbnNh Y3Rpb25zIHRvIGluaXRpYWxpemUgZGF0YVxuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAg ICAgICAgdjogaW52b2tlIFZBQ1VVTSBvbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCiAJCSAgICIg ICAgICAgICAgICAgICAgICAgICAgICAgICBwOiBjcmVhdGUgcHJpbWFyeSBrZXkgaW5kZXhlcyBv biB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAg ICBmOiBjcmVhdGUgZm9yZWlnbiBrZXlzIGJldHdlZW4gdGhlIHN0YW5kYXJkIHRhYmxlc1xuIgpA QCAtNTA1Myw4ICs1MDU0LDggQEAgaW5pdEFjY291bnQoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGlu dDY0IGN1cnIpCiB9CiAKIHN0YXRpYyB2b2lkCi1pbml0UG9wdWxhdGVUYWJsZVRleHQoUEdjb25u ICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLAotCQkJCQkgIGluaXRSb3dNZXRo b2QgaW5pdF9yb3cpCitpbml0UG9wdWxhdGVUYWJsZUNvcHlUZXh0KFBHY29ubiAqY29uLCBjb25z dCBjaGFyICp0YWJsZSwgaW50NjQgYmFzZSwKKwkJCQkJCSAgaW5pdFJvd01ldGhvZCBpbml0X3Jv dykKIHsKIAlpbnQJCQluOwogCWludDY0CQlrOwpAQCAtNTE3OCw3ICs1MTc5LDcgQEAgaW5pdFBv cHVsYXRlVGFibGVUZXh0KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJsZSwgaW50NjQgYmFz ZSwKICAqIGEgYmxhbmstcGFkZGVkIHN0cmluZyBpbiBwZ2JlbmNoX2FjY291bnRzLgogICovCiBz dGF0aWMgdm9pZAotaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0KFBHY29ubiAqY29uKQor aW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0RnJtdChQR2Nvbm4gKmNvbikKIHsKIAlmcHJp bnRmKHN0ZGVyciwgIlRFWFQgbW9kZS4uLlxuIik7CiAKQEAgLTUxOTgsOSArNTE5OSw5IEBAIGlu aXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAkgKiBmaWxsIGJyYW5j aGVzLCB0ZWxsZXJzLCBhY2NvdW50cyBpbiB0aGF0IG9yZGVyIGluIGNhc2UgZm9yZWlnbiBrZXlz CiAJICogYWxyZWFkeSBleGlzdAogCSAqLwotCWluaXRQb3B1bGF0ZVRhYmxlVGV4dChjb24sICJw Z2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKLQlpbml0UG9wdWxhdGVU YWJsZVRleHQoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgIG50ZWxsZXJzLCAgaW5pdFRlbGxlcik7 Ci0JaW5pdFBvcHVsYXRlVGFibGVUZXh0KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3Vu dHMsIGluaXRBY2NvdW50KTsKKwlpbml0UG9wdWxhdGVUYWJsZUNvcHlUZXh0KGNvbiwgInBnYmVu Y2hfYnJhbmNoZXMiLCBuYnJhbmNoZXMsIGluaXRCcmFuY2gpOworCWluaXRQb3B1bGF0ZVRhYmxl Q29weVRleHQoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgIG50ZWxsZXJzLCAgaW5pdFRlbGxlcik7 CisJaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgbmFj Y291bnRzLCBpbml0QWNjb3VudCk7CiAKIAlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIp OwogfQpAQCAtNTIxMiw2ICs1MjEzLDggQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0 KFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIGJ1ZmZlckNoYXJEYXRhKGNoYXIgKnNyYywgaW50 MzJfdCBsZW4pCiB7CisJQXNzZXJ0KGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggKyBsZW4gPD0gQklO X0NPUFlfQlVGX1NJWkUpOworCiAJbWVtY3B5KChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciArIGJp bl9jb3B5X2J1ZmZlcl9sZW5ndGgsIChjaGFyICopIHNyYywgbGVuKTsKIAliaW5fY29weV9idWZm ZXJfbGVuZ3RoICs9IGxlbjsKIH0KQEAgLTUyMjcsMTMgKzUyMzAsMTYgQEAgYnVmZmVyRGF0YSh2 b2lkICpzcmMsIGludDMyX3QgbGVuKQogCWJ1ZmZlckNoYXJEYXRhKHNyYywgbGVuKTsKICNlbHNl CiAJaWYgKGxlbiA9PSAxKQorCXsKIAkJYnVmZmVyQ2hhckRhdGEoc3JjLCBsZW4pOwotCWVsc2UK LQkJZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuOyBpKyspCi0JCXsKLQkJCSgoY2hhciAqKSBi aW5fY29weV9idWZmZXIgKyBiaW5fY29weV9idWZmZXJfbGVuZ3RoKVtpXSA9Ci0JCQkJKChjaGFy ICopIHNyYylbbGVuIC0gaSAtIDFdOwotCQl9CisJCXJldHVybjsKKwl9CisKKwlmb3IgKGludDMy X3QgaSA9IDA7IGkgPCBsZW47IGkrKykKKwl7CisJCSgoY2hhciAqKSBiaW5fY29weV9idWZmZXIg KyBiaW5fY29weV9idWZmZXJfbGVuZ3RoKVtpXSA9CisJCQkoKGNoYXIgKikgc3JjKVtsZW4gLSBp IC0gMV07CisJfQogCiAJYmluX2NvcHlfYnVmZmVyX2xlbmd0aCArPSBsZW47CiAjZW5kaWYKQEAg LTUzMjIsNyArNTMyOCw3IEBAIGZsdXNoQnVmZmVyKFBHY29ubiAqY29uLCBpbnQxNl90IHJvd19s ZW4pCiAgKiBTZW5kcyBjdXJyZW50IGJyYW5jaCByb3cgdG8gYnVmZmVyCiAgKi8KIHN0YXRpYyB2 b2lkCi1pbml0QnJhbmNoQmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3Qg cGFyZW50KQoraW5pdEJyYW5jaEJpbmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQz Ml90IHBhcmVudCwgaW50OF90IGNvbHVtbkNvdW50ZXIpCiB7CiAJLyoKIAkgKiBFYWNoIHJvdyBv ZiBicmFuY2ggdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzMzMsNyArNTMz OSw3IEBAIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJf dCBwYXJlbnQpCiAKIAlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsKIAotCWFkZENvbHVt bkNvdW50ZXIoMik7CisJYWRkQ29sdW1uQ291bnRlcihjb2x1bW5Db3VudGVyKTsKIAogCWFkZElu dDMyQ29sdW1uKGN1cnIgKyAxKTsKIAlhZGRJbnQzMkNvbHVtbigwKTsKQEAgLTUzNDMsNyArNTM0 OSw3IEBAIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJf dCBwYXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IHRlbGxlciByb3cgdG8gYnVmZmVyCiAgKi8KIHN0 YXRpYyB2b2lkCi1pbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGlu dDMyX3QgcGFyZW50KQoraW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJy LCBpbnQzMl90IHBhcmVudCwgaW50OF90IGNvbHVtbkNvdW50ZXIpCiB7CiAJLyoKIAkgKiBFYWNo IHJvdyBvZiB0ZWxsZXJzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CkBAIC01MzU0 LDcgKzUzNjAsNyBAQCBpbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIs IGludDMyX3QgcGFyZW50KQogCiAJZmx1c2hCdWZmZXIoY29uLCBtYXhfcm93X2xlbik7CiAKLQlh ZGRDb2x1bW5Db3VudGVyKDMpOworCWFkZENvbHVtbkNvdW50ZXIoY29sdW1uQ291bnRlcik7CiAK IAlhZGRJbnQzMkNvbHVtbihjdXJyICsgMSk7CiAJYWRkSW50MzJDb2x1bW4oY3VyciAvIHBhcmVu dCArIDEpOwpAQCAtNTM2NSw3ICs1MzcxLDcgQEAgaW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNv biwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKICAqIFNlbmRzIGN1cnJlbnQgYWNjb3Vu dCByb3cgdG8gYnVmZmVyCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0QWNjb3VudEJpbmFyeShQR2Nv bm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK2luaXRBY2NvdW50QmluYXJ5 KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4X3QgY29sdW1u Q291bnRlcikKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9mIGFjY291bnRzIHRhYmxlIGhhcyBmb2xs b3dpbmcgZXh0cmEgYnl0ZXM6CkBAIC01Mzc2LDcgKzUzODIsNyBAQCBpbml0QWNjb3VudEJpbmFy eShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIAogCWZsdXNoQnVm ZmVyKGNvbiwgbWF4X3Jvd19sZW4pOwogCi0JYWRkQ29sdW1uQ291bnRlcigzKTsKKwlhZGRDb2x1 bW5Db3VudGVyKGNvbHVtbkNvdW50ZXIpOwogCiAJaWYgKHNjYWxlIDw9IFNDQUxFXzMyQklUX1RI UkVTSE9MRCkKIAkJYWRkSW50MzJDb2x1bW4oY3VyciArIDEpOwpAQCAtNTM5MSw4ICs1Mzk3LDkg QEAgaW5pdEFjY291bnRCaW5hcnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBw YXJlbnQpCiAgKiBVbml2ZXJzYWwgd3JhcHBlciBmb3Igc2VuZGluZyBkYXRhIGluIGJpbmFyeSBm b3JtYXQKICAqLwogc3RhdGljIHZvaWQKLWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAq Y29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKLQkJCQkJCWludCBjb3VudGVyLCBpbnQ2 NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW4gaW5pdF9yb3cpCitpbml0UG9wdWxhdGVUYWJsZUNv cHlCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAorCQkJCQkJ CWludCBjb3VudGVyLCBpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW5hcnkgaW5pdF9yb3cs CisJCQkJCQkJaW50IGNvbHVtbkNvdW50ZXIpCiB7CiAJaW50CQkJIG47CiAJUEdyZXN1bHQJKnJl czsKQEAgLTU0MjYsNyArNTQzMyw3IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAq Y29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAogCWZvciAoaW50NjRfdCBpID0gc3Rh cnQ7IGkgPCBzdGFydCArIGJhc2U7IGkrKykKIAl7Ci0JCWluaXRfcm93KGNvbiwgaSwgYmFzZSk7 CisJCWluaXRfcm93KGNvbiwgaSwgYmFzZSwgY29sdW1uQ291bnRlcik7CiAJfQogCiAJcmVzID0g UFFnZXRSZXN1bHQoY29uKTsKQEAgLTU0NjAsNyArNTQ2Nyw3IEBAIGluaXRQb3B1bGF0ZVRhYmxl QmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKICAqIFdyYXBw ZXIgZm9yIGJpbmFyeSBkYXRhIGxvYWQKICAqLwogc3RhdGljIHZvaWQKLWluaXRHZW5lcmF0ZURh dGFDbGllbnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQoraW5pdEdlbmVyYXRlRGF0YUNsaWVudFNp ZGVCaW5hcnlGcm10KFBHY29ubiAqY29uKQogewogCiAJZnByaW50ZihzdGRlcnIsICJCSU5BUlkg bW9kZS4uLlxuIik7CkBAIC01NDg2LDEyICs1NDkzLDEyIEBAIGluaXRHZW5lcmF0ZURhdGFDbGll bnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQogCQlpZiAobXVsdGlfeGFjdCkKIAkJCWV4ZWN1dGVT dGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKIAotCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24s ICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAotCQkJCQkJCQlpLCBuYnJhbmNo ZXMsIGluaXRCcmFuY2hCaW5hcnkpOwotCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJw Z2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0YmFsYW5jZSIsCi0JCQkJCQkJCWksIG50ZWxs ZXJzLCAgaW5pdFRlbGxlckJpbmFyeSk7Ci0JCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwg InBnYmVuY2hfYWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKLQkJCQkJCQkJaSwgbmFj Y291bnRzLCBpbml0QWNjb3VudEJpbmFyeSk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQ29weUJpbmFy eShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCQkJaSwg bmJyYW5jaGVzLCBpbml0QnJhbmNoQmluYXJ5LCAyKTsKKwkJaW5pdFBvcHVsYXRlVGFibGVDb3B5 QmluYXJ5KGNvbiwgInBnYmVuY2hfdGVsbGVycyIsICAidGlkLCBiaWQsIHRiYWxhbmNlIiwKKwkJ CQkJCQkJCWksIG50ZWxsZXJzLCAgaW5pdFRlbGxlckJpbmFyeSwgMyk7CisJCWluaXRQb3B1bGF0 ZVRhYmxlQ29weUJpbmFyeShjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgImFpZCwgYmlkLCBhYmFs YW5jZSIsCisJCQkJCQkJCQlpLCBuYWNjb3VudHMsIGluaXRBY2NvdW50QmluYXJ5LCAzKTsKIAog CQlpZiAobXVsdGlfeGFjdCkKIAkJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CkBA IC01NTE1LDEwICs1NTIyLDEwIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAq Y29uKQogCXN3aXRjaCAoZGF0YV9nZW5lcmF0aW9uX3R5cGUpCiAJewogCQljYXNlIElOSVRfU1RF UF9HRU5fVFlQRV9DT1BZX1RFWFQ6Ci0JCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQo Y29uKTsKKwkJCWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dEZybXQoY29uKTsKIAkJCWJy ZWFrOwogCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZX0JJTkFSWToKLQkJCWluaXRHZW5l cmF0ZURhdGFDbGllbnRTaWRlQmluYXJ5KGNvbik7CisJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50 U2lkZUJpbmFyeUZybXQoY29uKTsKIAkJCWJyZWFrOwogCX0KIH0KLS0gCjIuNDMuMAoKRnJvbSBk OTVjNTNkNDEyZmYwZTk0ZTE2MmVhZjM5OTAyMzNmYWUwMDdhZTNmIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAxNiBGZWIgMjAyNiAxMDowNzoxMyArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDIw LzI3XSBSdW5uaW5nIGluZGVudCB0byBmaXggY29kZSBmb3JtYXR0aW5nCgotLS0KIHNyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYwppbmRleCA5ZjNkN2Y5OWEyNS4uODE5OGYxZDRjOWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpA QCAtMTU5LDcgKzE1OSw3IEBAIHR5cGVkZWYgc3RydWN0IHNvY2tldF9zZXQKIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAgKiBzb21lIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzICovCi0jZGVmaW5lIERFRkFVTFRf SU5JVF9TVEVQUyAiZHRndnAiCQkvKiBkZWZhdWx0IC1JIHNldHRpbmcgKi8KKyNkZWZpbmUgREVG QVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyogZGVmYXVsdCAtSSBzZXR0aW5nICovCiAjZGVmaW5l IEFMTF9JTklUX1NURVBTICJkdGdNU2NHVXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCiAK ICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNlY29uZHMgYmV0d2VlbiBsb2cgbWVzc2Fn ZXMgKi8KQEAgLTE3MSwxNiArMTcxLDI0IEBAIHR5cGVkZWYgc3RydWN0IHNvY2tldF9zZXQKICNk ZWZpbmUgTUFYX1pJUEZJQU5fUEFSQU0JCTEwMDAuMAkvKiBtYXhpbXVtIHBhcmFtZXRlciBmb3Ig emlwZmlhbiAqLwogCiAvKiBzZXJ2ZXItc2lkZSBtZXRob2RzIHRvIGdlbmVyYXRlIGRhdGEgKi8K LSNkZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9TRVJJRVMJJ0cnCS8qIHVzZSBJTlNF UlQgLi4gU0VMRUNUIGdlbmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVmaW5l IElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUCSdVJwkvKiB1c2UgSU5TRVJUIC4uIFNF TEVDVCB1bm5lc3QgdG8gZ2VuZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZ UEVfSU5TRVJUX1NFUklFUwknRycgLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QKKwkJCQkJCQkJCQkJ CSAqIGdlbmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZQorCQkJCQkJCQkJCQkJICogZGF0YSAqLwor I2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfSU5TRVJUX1VOTkVTVAknVScgLyogdXNlIElOU0VS VCAuLiBTRUxFQ1QgdW5uZXN0CisJCQkJCQkJCQkJCQkgKiB0byBnZW5lcmF0ZSBkYXRhICovCiAv KiBjbGllbnQtc2lkZSBtZXRob2RzIHRvIGdlbmVyYXRlIGRhdGEgKi8KLSNkZWZpbmUgSU5JVF9T VEVQX0dFTl9UWVBFX0NPUFlfVEVYVAkJJ2cnIC8qIHVzZSBDT1BZIC4uIEZST00gU1RESU4gLi4g VEVYVCB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVmaW5lIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZ X0JJTkFSWQkJJ2MnIC8qIHVzZSBDT1BZIC4uIEZST00gU1RESU4gLi4gQklOQVJZIHRvIGdlbmVy YXRlIGRhdGEgKi8KKyNkZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVYVAkJJ2cnIC8q IHVzZSBDT1BZIC4uIEZST00gU1RESU4gLi4KKwkJCQkJCQkJCQkJCSAqIFRFWFQgdG8gZ2VuZXJh dGUgZGF0YSAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9CSU5BUlkJCSdjJyAv KiB1c2UgQ09QWSAuLiBGUk9NIFNURElOIC4uCisJCQkJCQkJCQkJCQkgKiBCSU5BUlkgdG8gZ2Vu ZXJhdGUgZGF0YSAqLwogLyogZGF0YSBpbml0IHBzZXVkbyBzdGVwcyAqLwotI2RlZmluZSBJTklU X1NURVBfR0VOX1RZUEVfU0lOR0xFX1hBQ1QJCSdTJyAvKiBzd2l0Y2ggdG8gaW5pdCBkYXRhIGFz IHNpbmdsZSB0cmFuc2FjdGlvbiAqLwotI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfTVVMVElf WEFDVAkJJ00nIC8qIHN3aXRjaCB0byBpbml0IGRhdGEgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25z ICovCisjZGVmaW5lIElOSVRfU1RFUF9HRU5fVFlQRV9TSU5HTEVfWEFDVAkJJ1MnIC8qIHN3aXRj aCB0byBpbml0IGRhdGEgYXMKKwkJCQkJCQkJCQkJCSAqIHNpbmdsZSB0cmFuc2FjdGlvbiAqLwor I2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfTVVMVElfWEFDVAkJJ00nIC8qIHN3aXRjaCB0byBp bml0IGRhdGEgYXMKKwkJCQkJCQkJCQkJCSAqIG11bHRpcGxlIHRyYW5zYWN0aW9ucyAqLwogCi1z dGF0aWMgYm9vbCBtdWx0aV94YWN0ID0gZmFsc2U7CS8qIGluaXQgZGF0YSB0eXBlIChhcyBzaW5n bGUgb3IgbXVsdGlwbGUgdHJhbnNhY3Rpb25zKSAqLworc3RhdGljIGJvb2wgbXVsdGlfeGFjdCA9 IGZhbHNlOyAvKiBpbml0IGRhdGEgdHlwZSAoYXMgc2luZ2xlIG9yIG11bHRpcGxlCisJCQkJCQkJ CSAqIHRyYW5zYWN0aW9ucykgKi8KIHN0YXRpYyBpbnQJbnhhY3RzID0gMDsJCQkvKiBudW1iZXIg b2YgdHJhbnNhY3Rpb25zIHBlciBjbGllbnQgKi8KIHN0YXRpYyBpbnQJZHVyYXRpb24gPSAwOwkJ LyogZHVyYXRpb24gaW4gc2Vjb25kcyAqLwogc3RhdGljIGludDY0IGVuZF90aW1lID0gMDsJCS8q IHdoZW4gdG8gc3RvcCBpbiBtaWNybyBzZWNvbmRzLCB1bmRlciAtVCAqLwpAQCAtMTk0LDE0ICsy MDIsMTUgQEAgc3RhdGljIGludAlzY2FsZSA9IDE7CiAvKgogICogbW9kZSBvZiBkYXRhIGdlbmVy YXRpb24gdG8gdXNlCiAgKi8KLXN0YXRpYyBjaGFyCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gSU5J VF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVYVDsKK3N0YXRpYyBjaGFyIGRhdGFfZ2VuZXJhdGlvbl90 eXBlID0gSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVYVDsKIAogLyoKICAqIENPUFkgRlJPTSBC SU5BUlkgZXhlY3V0aW9uIGJ1ZmZlcgogICovCi0jZGVmaW5lIEJJTl9DT1BZX0JVRl9TSVpFCTEw MjQwMAkJCQkvKiBtYXhpbXVtIGJ1ZmZlciBzaXplIGZvciBDT1BZIEZST00gQklOQVJZICovCi1z dGF0aWMgY2hhcgkJKmJpbl9jb3B5X2J1ZmZlciA9IE5VTEw7CQkvKiBidWZmZXIgZm9yIENPUFkg RlJPTSBCSU5BUlkgKi8KLXN0YXRpYyBpbnQzMl90CSBiaW5fY29weV9idWZmZXJfbGVuZ3RoID0g MDsJLyogY3VycmVudCBidWZmZXIgc2l6ZSAqLworI2RlZmluZSBCSU5fQ09QWV9CVUZfU0laRQkx MDI0MDAJLyogbWF4aW11bSBidWZmZXIgc2l6ZSBmb3IgQ09QWSBGUk9NCisJCQkJCQkJCQkgKiBC SU5BUlkgKi8KK3N0YXRpYyBjaGFyICpiaW5fY29weV9idWZmZXIgPSBOVUxMOwkvKiBidWZmZXIg Zm9yIENPUFkgRlJPTSBCSU5BUlkgKi8KK3N0YXRpYyBpbnQzMl90IGJpbl9jb3B5X2J1ZmZlcl9s ZW5ndGggPSAwOwkvKiBjdXJyZW50IGJ1ZmZlciBzaXplICovCiAKIC8qCiAgKiBmaWxsZmFjdG9y LiBmb3IgZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkwIHdpbGwgdXNlIG9ubHkgOTAgcGVyY2VudApA QCAtODcyLDggKzg4MSw4IEBAIHN0YXRpYyBpbnQJd2FpdF9vbl9zb2NrZXRfc2V0KHNvY2tldF9z ZXQgKnNhLCBpbnQ2NCB1c2Vjcyk7CiBzdGF0aWMgYm9vbCBzb2NrZXRfaGFzX2lucHV0KHNvY2tl dF9zZXQgKnNhLCBpbnQgZmQsIGludCBpZHgpOwogCiAvKiBjYWxsYmFjayB1c2VkIHRvIGJ1aWxk IHJvd3MgZm9yIENPUFkgZHVyaW5nIGRhdGEgbG9hZGluZyAqLwotdHlwZWRlZiB2b2lkICgqaW5p dFJvd01ldGhvZCkJCShQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3Vycik7Ci10eXBlZGVm IHZvaWQgKCppbml0Um93TWV0aG9kQmluYXJ5KQkoUEdjb25uICpjb24sIGludDY0X3QgY3Vyciwg aW50MzJfdCBwYXJlbnQsIGludDhfdCBjb2x1bW5Db3VudGVyKTsKK3R5cGVkZWYgdm9pZCAoKmlu aXRSb3dNZXRob2QpIChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3Vycik7Cit0eXBlZGVm IHZvaWQgKCppbml0Um93TWV0aG9kQmluYXJ5KSAoUEdjb25uICpjb24sIGludDY0X3QgY3Vyciwg aW50MzJfdCBwYXJlbnQsIGludDhfdCBjb2x1bW5Db3VudGVyKTsKIAogLyogY2FsbGJhY2sgZnVu Y3Rpb25zIGZvciBvdXIgZmxleCBsZXhlciAqLwogc3RhdGljIGNvbnN0IFBzcWxTY2FuQ2FsbGJh Y2tzIHBnYmVuY2hfY2FsbGJhY2tzID0gewpAQCAtNTIwMCw3ICs1MjA5LDcgQEAgaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGVUZXh0RnJtdChQR2Nvbm4gKmNvbikKIAkgKiBhbHJlYWR5IGV4aXN0 CiAJICovCiAJaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChjb24sICJwZ2JlbmNoX2JyYW5jaGVz IiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKLQlpbml0UG9wdWxhdGVUYWJsZUNvcHlUZXh0KGNv biwgInBnYmVuY2hfdGVsbGVycyIsICBudGVsbGVycywgIGluaXRUZWxsZXIpOworCWluaXRQb3B1 bGF0ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgbnRlbGxlcnMsIGluaXRU ZWxsZXIpOwogCWluaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF9hY2NvdW50 cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVudChjb24sICJj b21taXQiKTsKQEAgLTUyNjAsOCArNTI2OSw5IEBAIGFkZENvbHVtbkNvdW50ZXIoaW50MTZfdCBu KQogc3RhdGljIHZvaWQKIGFkZEludDMyQ29sdW1uKGludDMyX3QgdmFsdWUpCiB7Ci0JaW50MzJf dAlkYXRhID0gdmFsdWU7Ci0JaW50MzJfdAlzaXplID0gc2l6ZW9mKGRhdGEpOworCWludDMyX3QJ CWRhdGEgPSB2YWx1ZTsKKwlpbnQzMl90CQlzaXplID0gc2l6ZW9mKGRhdGEpOworCiAJYnVmZmVy RGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9mKHNpemUpKTsKIAlidWZmZXJEYXRhKCh2b2lkICop ICZkYXRhLCBzaXplb2YoZGF0YSkpOwogfQpAQCAtNTI3Miw4ICs1MjgyLDkgQEAgYWRkSW50MzJD b2x1bW4oaW50MzJfdCB2YWx1ZSkKIHN0YXRpYyB2b2lkCiBhZGRJbnQ2NENvbHVtbihpbnQ2NF90 IHZhbHVlKQogewotCWludDY0X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVv ZihkYXRhKTsKKwlpbnQ2NF90CQlkYXRhID0gdmFsdWU7CisJaW50MzJfdAkJc2l6ZSA9IHNpemVv ZihkYXRhKTsKKwogCWJ1ZmZlckRhdGEoKHZvaWQgKikgJnNpemUsIHNpemVvZihzaXplKSk7CiAJ YnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6ZW9mKGRhdGEpKTsKIH0KQEAgLTUyODQsOSAr NTI5NSw5IEBAIGFkZEludDY0Q29sdW1uKGludDY0X3QgdmFsdWUpCiBzdGF0aWMgdm9pZAogc2Vu ZEJpbmFyeUNvcHlIZWFkZXIoUEdjb25uICpjb24pCiB7Ci0JY2hhciBoZWFkZXJbXSA9IHsnUCcs J0cnLCdDJywnTycsJ1AnLCdZJywnXG4nLCdcMzc3JywnXHInLCdcbicsJ1wwJywKLQkJCQkJICdc MCcsJ1wwJywnXDAnLCdcMCcsCi0JCQkJCSAnXDAnLCdcMCcsJ1wwJywnXDAnIH07CisJY2hhcgkJ aGVhZGVyW10gPSB7J1AnLCAnRycsICdDJywgJ08nLCAnUCcsICdZJywgJ1xuJywgJ1wzNzcnLCAn XHInLCAnXG4nLCAnXDAnLAorCQknXDAnLCAnXDAnLCAnXDAnLCAnXDAnLAorCSdcMCcsICdcMCcs ICdcMCcsICdcMCd9OwogCiAJUFFwdXRDb3B5RGF0YShjb24sIGhlYWRlciwgMTkpOwogfQpAQCAt NTI5Nyw3ICs1MzA4LDcgQEAgc2VuZEJpbmFyeUNvcHlIZWFkZXIoUEdjb25uICpjb24pCiBzdGF0 aWMgdm9pZAogc2VuZEJpbmFyeUNvcHlUcmFpbGVyKFBHY29ubiAqY29uKQogewotCXN0YXRpYyBj aGFyIHRyYWlsZXJbXSA9IHsgMHhGRiwgMHhGRiB9OworCXN0YXRpYyBjaGFyIHRyYWlsZXJbXSA9 IHsweEZGLCAweEZGfTsKIAogCVBRcHV0Q29weURhdGEoY29uLCB0cmFpbGVyLCAyKTsKIH0KQEAg LTUzMDgsNyArNTMxOSw3IEBAIHNlbmRCaW5hcnlDb3B5VHJhaWxlcihQR2Nvbm4gKmNvbikKIHN0 YXRpYyB2b2lkCiBmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgaW50MTZfdCByb3dfbGVuKQogewot CVBHcmVzdWx0ICpyZXM7CisJUEdyZXN1bHQgICAqcmVzOwogCiAJaWYgKGJpbl9jb3B5X2J1ZmZl cl9sZW5ndGggKyByb3dfbGVuID4gQklOX0NPUFlfQlVGX1NJWkUpCiAJewpAQCAtNTMzMCwxMiAr NTM0MSwxMyBAQCBmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgaW50MTZfdCByb3dfbGVuKQogc3Rh dGljIHZvaWQKIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50 MzJfdCBwYXJlbnQsIGludDhfdCBjb2x1bW5Db3VudGVyKQogewotCS8qCisJLyotLS0KIAkgKiBF YWNoIHJvdyBvZiBicmFuY2ggdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKIAkgKiAt IDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5zCiAJICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBm b3IgZWFjaCBvZiB0YWJsZSdzIDMgY29sdW1ucworCSAqLS0tCiAJICovCi0JaW50MTZfdAltYXhf cm93X2xlbiA9ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLworCWludDE2 X3QJCW1heF9yb3dfbGVuID0gMzUgKyAyICsgNCAqIDM7CS8qIG1heCByb3cgc2l6ZSBpcyAzNSAq LwogCiAJZmx1c2hCdWZmZXIoY29uLCBtYXhfcm93X2xlbik7CiAKQEAgLTUzNTEsMTIgKzUzNjMs MTMgQEAgaW5pdEJyYW5jaEJpbmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90 IHBhcmVudCwgaW50OF90IGNvbHVtbkNvdW50ZXIKIHN0YXRpYyB2b2lkCiBpbml0VGVsbGVyQmlu YXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4X3QgY29s dW1uQ291bnRlcikKIHsKLQkvKgorCS8qLS0tCiAJICogRWFjaCByb3cgb2YgdGVsbGVycyB0YWJs ZSBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgogCSAqIC0gMiBieXRlcyBmb3IgbnVtYmVyIG9m IGNvbHVtbnMKIAkgKiAtIDQgYnl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIG9mIHRhYmxlJ3MgNCBj b2x1bW5zCisJICotLS0KIAkgKi8KLQlpbnQxNl90CW1heF9yb3dfbGVuID0gIDQwICsgMiArIDQq NDsgLyogbWF4IHJvdyBzaXplIGlzIDQwICovCisJaW50MTZfdAkJbWF4X3Jvd19sZW4gPSA0MCAr IDIgKyA0ICogNDsJLyogbWF4IHJvdyBzaXplIGlzIDQwICovCiAKIAlmbHVzaEJ1ZmZlcihjb24s IG1heF9yb3dfbGVuKTsKIApAQCAtNTM3MywxMiArNTM4NiwxMyBAQCBpbml0VGVsbGVyQmluYXJ5 KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4X3QgY29sdW1u Q291bnRlcgogc3RhdGljIHZvaWQKIGluaXRBY2NvdW50QmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2 NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4X3QgY29sdW1uQ291bnRlcikKIHsKLQkvKgor CS8qLS0tCiAJICogRWFjaCByb3cgb2YgYWNjb3VudHMgdGFibGUgaGFzIGZvbGxvd2luZyBleHRy YSBieXRlczoKIAkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5zCiAJICogLSA0IGJ5 dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBvZiB0YWJsZSdzIDQgY29sdW1ucwogCSAqLwotCWludDE2 X3QJbWF4X3Jvd19sZW4gPSAyNTAgKyAyICsgNCo0OyAvKiBtYXggcm93IHNpemUgaXMgMjUwIGZv ciBpbnQ2NCAqLworCWludDE2X3QJCW1heF9yb3dfbGVuID0gMjUwICsgMiArIDQgKiA0OwkvKiBt YXggcm93IHNpemUgaXMgMjUwIGZvcgorCQkJCQkJCQkJCQkJICogaW50NjQgKi8KIAogCWZsdXNo QnVmZmVyKGNvbiwgbWF4X3Jvd19sZW4pOwogCkBAIC01NDAxLDExICs1NDE1LDExIEBAIGluaXRQ b3B1bGF0ZVRhYmxlQ29weUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNv bHVtbnMsCiAJCQkJCQkJaW50IGNvdW50ZXIsIGludDY0X3QgYmFzZSwgaW5pdFJvd01ldGhvZEJp bmFyeSBpbml0X3JvdywKIAkJCQkJCQlpbnQgY29sdW1uQ291bnRlcikKIHsKLQlpbnQJCQkgbjsK LQlQR3Jlc3VsdAkqcmVzOwotCWNoYXIJCSBjb3B5X3N0YXRlbWVudFsyNTZdOwotCWNvbnN0IGNo YXIJKmNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiAoZm9ybWF0 IGJpbmFyeSkiOwotCWludDY0X3QJCSBzdGFydCA9IGJhc2UgKiBjb3VudGVyOworCWludAkJCW47 CisJUEdyZXN1bHQgICAqcmVzOworCWNoYXIJCWNvcHlfc3RhdGVtZW50WzI1Nl07CisJY29uc3Qg Y2hhciAqY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIChmb3Jt YXQgYmluYXJ5KSI7CisJaW50NjRfdAkJc3RhcnQgPSBiYXNlICogY291bnRlcjsKIAogCWJpbl9j b3B5X2J1ZmZlcl9sZW5ndGggPSAwOwogCkBAIC01NDUwLDcgKzU0NjQsNyBAQCBpbml0UG9wdWxh dGVUYWJsZUNvcHlCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5z LAogCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0g UEdSRVNfQ09QWV9JTikKIAl7Ci0JCWlmIChQUXB1dENvcHlFbmQoY29uLCBOVUxMKSA9PSAxKSAv KiBzdWNjZXNzICovCisJCWlmIChQUXB1dENvcHlFbmQoY29uLCBOVUxMKSA9PSAxKQkvKiBzdWNj ZXNzICovCiAJCXsKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7 CkBAIC01NDc2LDkgKzU0OTAsOCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeUZy bXQoUEdjb25uICpjb24pCiAJYmluX2NvcHlfYnVmZmVyX2xlbmd0aCA9IDA7CiAKIAkvKgotCSAq IHdlIGRvIGFsbCBvZiB0aGlzIGluIG11bHRpcGxlIHRyYW5zYWN0aW9ucwotCSAqIHRvIG1pbmlt aXplIGxvYWQgb24gREIgc2VydmVyIGFuZCBwZXJoYXBzCi0JICogaW4gZnV0dXJlIGFsbG93IGxv YWQgaW4gcGFyYWxsZWwgc2Vzc2lvbnMKKwkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBtdWx0aXBs ZSB0cmFuc2FjdGlvbnMgdG8gbWluaW1pemUgbG9hZCBvbiBEQgorCSAqIHNlcnZlciBhbmQgcGVy aGFwcyBpbiBmdXR1cmUgYWxsb3cgbG9hZCBpbiBwYXJhbGxlbCBzZXNzaW9ucwogCSAqLwogCWV4 ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKIApAQCAtNTQ5NSw4ICs1NTA4LDggQEAgaW5p dEdlbmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnlGcm10KFBHY29ubiAqY29uKQogCiAJCWluaXRQ b3B1bGF0ZVRhYmxlQ29weUJpbmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJh bGFuY2UiLAogCQkJCQkJCQkJaSwgbmJyYW5jaGVzLCBpbml0QnJhbmNoQmluYXJ5LCAyKTsKLQkJ aW5pdFBvcHVsYXRlVGFibGVDb3B5QmluYXJ5KGNvbiwgInBnYmVuY2hfdGVsbGVycyIsICAidGlk LCBiaWQsIHRiYWxhbmNlIiwKLQkJCQkJCQkJCWksIG50ZWxsZXJzLCAgaW5pdFRlbGxlckJpbmFy eSwgMyk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQ29weUJpbmFyeShjb24sICJwZ2JlbmNoX3RlbGxl cnMiLCAidGlkLCBiaWQsIHRiYWxhbmNlIiwKKwkJCQkJCQkJCWksIG50ZWxsZXJzLCBpbml0VGVs bGVyQmluYXJ5LCAzKTsKIAkJaW5pdFBvcHVsYXRlVGFibGVDb3B5QmluYXJ5KGNvbiwgInBnYmVu Y2hfYWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKIAkJCQkJCQkJCWksIG5hY2NvdW50 cywgaW5pdEFjY291bnRCaW5hcnksIDMpOwogCkBAIC01NTcwLDEwICs1NTgzLDEwIEBAIGdlbmVy YXRlRGF0YUluc2VydFNlcmllcyhQR2Nvbm4gKmNvbikKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigm c3FsLAogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9hY2NvdW50cyhhaWQsIGJpZCwgYWJh bGFuY2UsICIKLQkJCQkJCQkJCSAgICJmaWxsZXIpICIKKwkJCQkJCSAgImZpbGxlcikgIgogCQkJ CQkJICAic2VsZWN0IGFpZCArIDEsIGFpZCAvICVkICsgMSwgMCwgJycgIgogCQkJCQkJICAiZnJv bSBnZW5lcmF0ZV9zZXJpZXMoIiBJTlQ2NF9GT1JNQVQgIiwgIgotCQkJCQkJCQlJTlQ2NF9GT1JN QVQgIikgYXMgYWlkIiwKKwkJCQkJCSAgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCiAJCQkJCQkg IG5hY2NvdW50cywgKGludDY0KSBpICogbmFjY291bnRzLAogCQkJCQkJICAoaW50NjQpIChpICsg MSkgKiBuYWNjb3VudHMgLSAxKTsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK QEAgLTU2MjIsNyArNTYzNSw3IEBAIGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQR2Nvbm4gKmNv bikKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKIAkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVu Y2hfdGVsbGVycyh0aWQsIGJpZCwgdGJhbGFuY2UpICIKIAkJCQkJCSAgInNlbGVjdCB1bm5lc3Qo YXJyYXlfYWdnKHMuaSBvcmRlciBieSBzLmkpKSBhcyB0aWQsICIKLQkJCQkJCQkJICAiJWQgYXMg YmlkLCAwIGFzIHRiYWxhbmNlICIKKwkJCQkJCSAgIiVkIGFzIGJpZCwgMCBhcyB0YmFsYW5jZSAi CiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcyglZCwgJWQpIGFzIHMoaSkiLAogCQkJCQkJ ICBzICsgMSwgcyAqIG50ZWxsZXJzICsgMSwgKHMgKyAxKSAqIG50ZWxsZXJzKTsKIAkJZXhlY3V0 ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKQEAgLTU2MzAsMTMgKzU2NDMsMTMgQEAgZ2VuZXJh dGVEYXRhSW5zZXJ0VW5uZXN0KFBHY29ubiAqY29uKQogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3Fs LAogCQkJCQkJICAid2l0aCBkYXRhIGFzICgiCiAJCQkJCQkgICIgICBzZWxlY3QgZ2VuZXJhdGVf c2VyaWVzKCIgSU5UNjRfRk9STUFUICIsICIKLQkJCQkJCQkgIElOVDY0X0ZPUk1BVCAiKSBhcyBp KSAiCisJCQkJCQkgIElOVDY0X0ZPUk1BVCAiKSBhcyBpKSAiCiAJCQkJCQkgICJpbnNlcnQgaW50 byBwZ2JlbmNoX2FjY291bnRzKGFpZCwgYmlkLCAiCi0JCQkJCQkJCQkgICJhYmFsYW5jZSwgZmls bGVyKSAiCisJCQkJCQkgICJhYmFsYW5jZSwgZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgdW5u ZXN0KGFpZCksIHVubmVzdChiaWQpLCAwIGFzIGFiYWxhbmNlLCAiCi0JCQkJCQkJCSAgIicnIGFz IGZpbGxlciAiCisJCQkJCQkgICInJyBhcyBmaWxsZXIgIgogCQkJCQkJICAiZnJvbSAoc2VsZWN0 IGFycmF5X2FnZyhpKzEpIGFpZCwgIgotCQkJCQkJCQkJICAgImFycmF5X2FnZyhpLyVkICsgMSkg YmlkIGZyb20gZGF0YSkiLAorCQkJCQkJICAiYXJyYXlfYWdnKGkvJWQgKyAxKSBiaWQgZnJvbSBk YXRhKSIsCiAJCQkJCQkgIChpbnQ2NCkgcyAqIG5hY2NvdW50cyArIDEsCiAJCQkJCQkgIChpbnQ2 NCkgKHMgKyAxKSAqIG5hY2NvdW50cywgbmFjY291bnRzKTsKIAkJZXhlY3V0ZVN0YXRlbWVudChj b24sIHNxbC5kYXRhKTsKQEAgLTU3NTgsNyArNTc3MSw3IEBAIGluaXRDcmVhdGVGS2V5cyhQR2Nv bm4gKmNvbikKIHN0YXRpYyB2b2lkCiBjaGVja0luaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFs aXplX3N0ZXBzKQogewotCWNoYXIJZGF0YV9pbml0X3R5cGUgPSAwOworCWNoYXIJCWRhdGFfaW5p dF90eXBlID0gMDsKIAogCWlmIChpbml0aWFsaXplX3N0ZXBzWzBdID09ICdcMCcpCiAJCXBnX2Zh dGFsKCJubyBpbml0aWFsaXphdGlvbiBzdGVwcyBzcGVjaWZpZWQiKTsKLS0gCjIuNDMuMAoKRnJv bSAyNzBkMmJmMTRiNjg3M2ZmNjZmYzM3Y2EwYTVkY2NjMDU1ZGFiMWY3IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxNiBGZWIgMjAyNiAxNDo1NzoxOCArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjEw IDIxLzI3XSBSZW1vdmluZyBkZWJ1Z2dpbmcgZmlsbGVyIHZhbHVlCgotLS0KIHNyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMgfCA4ICsrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDgxOThmMWQ0YzlhLi43MTBiMmE1 YjcwZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCkBAIC00OTU0LDggKzQ5NTQsOCBAQCBpbml0Q3JlYXRlVGFibGVz KFBHY29ubiAqY29uKQogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRsaW5mbyBERExzW10gPSB7CiAJ CXsKIAkJCSJwZ2JlbmNoX2hpc3RvcnkiLAotCQkJInRpZCBpbnQsYmlkIGludCxhaWQgICAgaW50 LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJz8nIiwK LQkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkIGJpZ2ludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1w LGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0ICc/JyIsCisJCQkidGlkIGludCxiaWQgaW50LGFpZCAg ICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAn JyIsCisJCQkidGlkIGludCxiaWQgaW50LGFpZCBiaWdpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVz dGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnJyIsCiAJCQkwCiAJCX0sCiAJCXsKQEAgLTQ5 NjYsOCArNDk2Niw4IEBAIGluaXRDcmVhdGVUYWJsZXMoUEdjb25uICpjb24pCiAJCX0sCiAJCXsK IAkJCSJwZ2JlbmNoX2FjY291bnRzIiwKLQkJCSJhaWQgICAgaW50IG5vdCBudWxsLGJpZCBpbnQs YWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZhdWx0ICc/JyIsCi0JCQkiYWlkIGJpZ2lu dCBub3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn PyciLAorCQkJImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVy IGNoYXIoODQpIGRlZmF1bHQgJyciLAorCQkJImFpZCBiaWdpbnQgbm90IG51bGwsYmlkIGludCxh YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAogCQkJMQogCQl9LAogCQl7 Ci0tIAoyLjQzLjAKCkZyb20gODZhMTExYzYzZTcwMDZkNDgwMWNlN2JiNTk0YTViNzdkODdiNDJi MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWly b25vdkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjMgRmViIDIwMjYgMTY6MTU6MDYgKzA3MDAKU3Vi amVjdDogW1BBVENIIHYxMCAyMi8yN10gTW92aW5nIG91dCBsb2dpYyBzaG93aW5nIGRhdGEgbG9h ZCBwcm9ncmVzcyBpbnRvCiBvd24gcHJvY2VkdXJlCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMgfCAxNDIgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpp bmRleCA3MTBiMmE1YjcwZC4uZTNlMGUwNzM3OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNDg3LDYgKzQ4 Nyw5IEBAIHR5cGVkZWYgc3RydWN0IFN0YXRzRGF0YQogICovCiBzdGF0aWMgcGdfdGltZV91c2Vj X3QgZXBvY2hfc2hpZnQ7CiAKKy8qIHVzZWQgdG8gdHJhY2sgZWxhcHNlZCB0aW1lIGFuZCBlc3Rp bWF0ZSBvZiB0aGUgcmVtYWluaW5nIHRpbWUgb2YgZGF0YSBsb2FkICovCitzdGF0aWMgcGdfdGlt ZV91c2VjX3QgZGF0YV9sb2FkX3N0YXJ0OworCiAvKgogICogRXJyb3Igc3RhdHVzIGZvciBlcnJv cnMgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAgKi8KQEAgLTUwNjIsMjcgKzUwNjUsODIgQEAg aW5pdEFjY291bnQoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIpCiAJCQkJCSAgY3Vy ciArIDEsIGN1cnIgLyBuYWNjb3VudHMgKyAxKTsKIH0KIAorc3RhdGljIHZvaWQKK3Nob3dQb3B1 bGF0ZVRhYmxlQ29weVByb2dyZXNzKGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBjdXJyZW50LCBp bnQ2NCB0b3RhbCkKK3sKKwlzdGF0aWMgaW50CWNoYXJzID0gMDsKKwlzdGF0aWMgaW50CXByZXZf Y2hhcnMgPSAwOworCXN0YXRpYyBpbnQJbG9nX2ludGVydmFsID0gMTsKKworCS8qIFN0YXkgb24g dGhlIHNhbWUgbGluZSBpZiByZXBvcnRpbmcgdG8gYSB0ZXJtaW5hbCAqLworCWNoYXIJCWVvbCA9 IGlzYXR0eShmaWxlbm8oc3RkZXJyKSkgPyAnXHInIDogJ1xuJzsKKworCWRvdWJsZQkJZWxhcHNl ZF9zZWMgPSBQR19USU1FX0dFVF9ET1VCTEUocGdfdGltZV9ub3coKSAtIGRhdGFfbG9hZF9zdGFy dCk7CisJZG91YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3VibGUpIHRvdGFsIC0gY3VycmVudCkg KiBlbGFwc2VkX3NlYyAvIGN1cnJlbnQ7CisKKwkvKgorCSAqIElmIHdlIHdhbnQgdG8gc3RpY2sg d2l0aCB0aGUgb3JpZ2luYWwgbG9nZ2luZywgcHJpbnQgYSBtZXNzYWdlIGVhY2gKKwkgKiAxMDBr IGluc2VydGVkIHJvd3MuCisJICovCisJaWYgKCghdXNlX3F1aWV0KSAmJiAoY3VycmVudCAlIDEw MDAwMCA9PSAwKSkKKwl7CisJCWNoYXJzID0gZnByaW50ZihzdGRlcnIsIElOVDY0X0ZPUk1BVCAi IG9mICIgSU5UNjRfRk9STUFUICIgdHVwbGVzICglZCUlKSBvZiAlcyBkb25lIChlbGFwc2VkICUu MmYgcywgcmVtYWluaW5nICUuMmYgcykiLAorCQkJCQkJY3VycmVudCwgdG90YWwsCisJCQkJCQko aW50KSAoKGN1cnJlbnQgKiAxMDApIC8gdG90YWwpLAorCQkJCQkJdGFibGUsIGVsYXBzZWRfc2Vj LCByZW1haW5pbmdfc2VjKTsKKworCQkvKgorCQkgKiBJZiB0aGUgcHJldmlvdXMgcHJvZ3Jlc3Mg bWVzc2FnZSBpcyBsb25nZXIgdGhhbiB0aGUgY3VycmVudCBvbmUsCisJCSAqIGFkZCBzcGFjZXMg dG8gdGhlIGN1cnJlbnQgbGluZSB0byBmdWxseSBvdmVyd3JpdGUgYW55IHJlbWFpbmluZworCQkg KiBjaGFyYWN0ZXJzIGZyb20gdGhlIHByZXZpb3VzIG1lc3NhZ2UuCisJCSAqLworCQlpZiAocHJl dl9jaGFycyA+IGNoYXJzKQorCQkJZnByaW50ZihzdGRlcnIsICIlKmMiLCBwcmV2X2NoYXJzIC0g Y2hhcnMsICcgJyk7CisJCWZwdXRjKGVvbCwgc3RkZXJyKTsKKwkJcHJldl9jaGFycyA9IGNoYXJz OworCX0KKwkvKiBsZXQncyBub3QgY2FsbCB0aGUgdGltaW5nIGZvciBlYWNoIHJvdywgYnV0IG9u bHkgZWFjaCAxMDAgcm93cyAqLworCWVsc2UgaWYgKHVzZV9xdWlldCAmJiAoY3VycmVudCAlIDEw MCA9PSAwKSkKKwl7CisJCS8qIGhhdmUgd2UgcmVhY2hlZCB0aGUgbmV4dCBpbnRlcnZhbCAob3Ig ZW5kKT8gKi8KKwkJaWYgKChjdXJyZW50ID09IHRvdGFsKSB8fCAoZWxhcHNlZF9zZWMgPj0gbG9n X2ludGVydmFsICogTE9HX1NURVBfU0VDT05EUykpCisJCXsKKwkJCWNoYXJzID0gZnByaW50Zihz dGRlcnIsIElOVDY0X0ZPUk1BVCAiIG9mICIgSU5UNjRfRk9STUFUICIgdHVwbGVzICglZCUlKSBv ZiAlcyBkb25lIChlbGFwc2VkICUuMmYgcywgcmVtYWluaW5nICUuMmYgcykiLAorCQkJCQkJCWN1 cnJlbnQsIHRvdGFsLAorCQkJCQkJCShpbnQpICgoY3VycmVudCAqIDEwMCkgLyB0b3RhbCksCisJ CQkJCQkJdGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjKTsKKworCQkJLyoKKwkJCSAq IElmIHRoZSBwcmV2aW91cyBwcm9ncmVzcyBtZXNzYWdlIGlzIGxvbmdlciB0aGFuIHRoZSBjdXJy ZW50CisJCQkgKiBvbmUsIGFkZCBzcGFjZXMgdG8gdGhlIGN1cnJlbnQgbGluZSB0byBmdWxseSBv dmVyd3JpdGUgYW55CisJCQkgKiByZW1haW5pbmcgY2hhcmFjdGVycyBmcm9tIHRoZSBwcmV2aW91 cyBtZXNzYWdlLgorCQkJICovCisJCQlpZiAocHJldl9jaGFycyA+IGNoYXJzKQorCQkJCWZwcmlu dGYoc3RkZXJyLCAiJSpjIiwgcHJldl9jaGFycyAtIGNoYXJzLCAnICcpOworCQkJZnB1dGMoZW9s LCBzdGRlcnIpOworCQkJcHJldl9jaGFycyA9IGNoYXJzOworCisJCQkvKiBza2lwIHRvIHRoZSBu ZXh0IGludGVydmFsICovCisJCQlsb2dfaW50ZXJ2YWwgPSAoaW50KSBjZWlsKGVsYXBzZWRfc2Vj IC8gTE9HX1NURVBfU0VDT05EUyk7CisJCX0KKwl9CisKKwlpZiAoY3VycmVudCA9PSB0b3RhbCAm JiBjaGFycyAhPSAwICYmIGVvbCAhPSAnXG4nKQorCQlmcHJpbnRmKHN0ZGVyciwgIiUqY1xyIiwg Y2hhcnMsICcgJyk7CS8qIENsZWFyIHRoZSBjdXJyZW50IGxpbmUgKi8KK30KKwogc3RhdGljIHZv aWQKIGluaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnRh YmxlLCBpbnQ2NCBiYXNlLAogCQkJCQkJICBpbml0Um93TWV0aG9kIGluaXRfcm93KQogewogCWlu dAkJCW47CiAJaW50NjQJCWs7Ci0JaW50CQkJY2hhcnMgPSAwOwotCWludAkJCXByZXZfY2hhcnMg PSAwOwogCVBHcmVzdWx0ICAgKnJlczsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOwogCWNoYXIJCWNv cHlfc3RhdGVtZW50WzI1Nl07CiAJY29uc3QgY2hhciAqY29weV9zdGF0ZW1lbnRfZm10ID0gImNv cHkgJXMgZnJvbSBzdGRpbiI7CiAJaW50NjQJCXRvdGFsID0gYmFzZSAqIHNjYWxlOwogCi0JLyog dXNlZCB0byB0cmFjayBlbGFwc2VkIHRpbWUgYW5kIGVzdGltYXRlIG9mIHRoZSByZW1haW5pbmcg dGltZSAqLwotCXBnX3RpbWVfdXNlY190IHN0YXJ0OwotCWludAkJCWxvZ19pbnRlcnZhbCA9IDE7 Ci0KLQkvKiBTdGF5IG9uIHRoZSBzYW1lIGxpbmUgaWYgcmVwb3J0aW5nIHRvIGEgdGVybWluYWwg Ki8KLQljaGFyCQllb2wgPSBpc2F0dHkoZmlsZW5vKHN0ZGVycikpID8gJ1xyJyA6ICdcbic7Ci0K IAlpbml0UFFFeHBCdWZmZXIoJnNxbCk7CiAKIAkvKiBVc2UgQ09QWSB3aXRoIEZSRUVaRSBvbiB2 MTQgYW5kIGxhdGVyIGZvciBhbGwgb3JkaW5hcnkgdGFibGVzICovCkBAIC01MTAzLDEyICs1MTYx LDggQEAgaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChQR2Nvbm4gKmNvbiwgY29uc3QgY2hhciAq dGFibGUsIGludDY0IGJhc2UsCiAJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNvcHkgaW4gcmVzdWx0 OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOwogCVBRY2xlYXIocmVzKTsKIAotCXN0YXJ0ID0g cGdfdGltZV9ub3coKTsKLQogCWZvciAoayA9IDA7IGsgPCB0b3RhbDsgaysrKQogCXsKLQkJaW50 NjQJCWogPSBrICsgMTsKLQogCQlpbml0X3Jvdygmc3FsLCBrKTsKIAkJaWYgKFBRcHV0bGluZShj b24sIHNxbC5kYXRhKSkKIAkJCXBnX2ZhdGFsKCJQUXB1dGxpbmUgZmFpbGVkIik7CkBAIC01MTE2 LDYyICs1MTcwLDkgQEAgaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChQR2Nvbm4gKmNvbiwgY29u c3QgY2hhciAqdGFibGUsIGludDY0IGJhc2UsCiAJCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCQli cmVhazsKIAotCQkvKgotCQkgKiBJZiB3ZSB3YW50IHRvIHN0aWNrIHdpdGggdGhlIG9yaWdpbmFs IGxvZ2dpbmcsIHByaW50IGEgbWVzc2FnZSBlYWNoCi0JCSAqIDEwMGsgaW5zZXJ0ZWQgcm93cy4K LQkJICovCi0JCWlmICgoIXVzZV9xdWlldCkgJiYgKGogJSAxMDAwMDAgPT0gMCkpCi0JCXsKLQkJ CWRvdWJsZQkJZWxhcHNlZF9zZWMgPSBQR19USU1FX0dFVF9ET1VCTEUocGdfdGltZV9ub3coKSAt IHN0YXJ0KTsKLQkJCWRvdWJsZQkJcmVtYWluaW5nX3NlYyA9ICgoZG91YmxlKSB0b3RhbCAtIGop ICogZWxhcHNlZF9zZWMgLyBqOwotCi0JCQljaGFycyA9IGZwcmludGYoc3RkZXJyLCBJTlQ2NF9G T1JNQVQgIiBvZiAiIElOVDY0X0ZPUk1BVCAiIHR1cGxlcyAoJWQlJSkgb2YgJXMgZG9uZSAoZWxh cHNlZCAlLjJmIHMsIHJlbWFpbmluZyAlLjJmIHMpIiwKLQkJCQkJCQlqLCB0b3RhbCwKLQkJCQkJ CQkoaW50KSAoKGogKiAxMDApIC8gdG90YWwpLAotCQkJCQkJCXRhYmxlLCBlbGFwc2VkX3NlYywg cmVtYWluaW5nX3NlYyk7Ci0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgcHJldmlvdXMgcHJvZ3Jlc3Mg bWVzc2FnZSBpcyBsb25nZXIgdGhhbiB0aGUgY3VycmVudAotCQkJICogb25lLCBhZGQgc3BhY2Vz IHRvIHRoZSBjdXJyZW50IGxpbmUgdG8gZnVsbHkgb3ZlcndyaXRlIGFueQotCQkJICogcmVtYWlu aW5nIGNoYXJhY3RlcnMgZnJvbSB0aGUgcHJldmlvdXMgbWVzc2FnZS4KLQkJCSAqLwotCQkJaWYg KHByZXZfY2hhcnMgPiBjaGFycykKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiUqYyIsIHByZXZfY2hh cnMgLSBjaGFycywgJyAnKTsKLQkJCWZwdXRjKGVvbCwgc3RkZXJyKTsKLQkJCXByZXZfY2hhcnMg PSBjaGFyczsKLQkJfQotCQkvKiBsZXQncyBub3QgY2FsbCB0aGUgdGltaW5nIGZvciBlYWNoIHJv dywgYnV0IG9ubHkgZWFjaCAxMDAgcm93cyAqLwotCQllbHNlIGlmICh1c2VfcXVpZXQgJiYgKGog JSAxMDAgPT0gMCkpCi0JCXsKLQkJCWRvdWJsZQkJZWxhcHNlZF9zZWMgPSBQR19USU1FX0dFVF9E T1VCTEUocGdfdGltZV9ub3coKSAtIHN0YXJ0KTsKLQkJCWRvdWJsZQkJcmVtYWluaW5nX3NlYyA9 ICgoZG91YmxlKSB0b3RhbCAtIGopICogZWxhcHNlZF9zZWMgLyBqOwotCi0JCQkvKiBoYXZlIHdl IHJlYWNoZWQgdGhlIG5leHQgaW50ZXJ2YWwgKG9yIGVuZCk/ICovCi0JCQlpZiAoKGogPT0gdG90 YWwpIHx8IChlbGFwc2VkX3NlYyA+PSBsb2dfaW50ZXJ2YWwgKiBMT0dfU1RFUF9TRUNPTkRTKSkK LQkJCXsKLQkJCQljaGFycyA9IGZwcmludGYoc3RkZXJyLCBJTlQ2NF9GT1JNQVQgIiBvZiAiIElO VDY0X0ZPUk1BVCAiIHR1cGxlcyAoJWQlJSkgb2YgJXMgZG9uZSAoZWxhcHNlZCAlLjJmIHMsIHJl bWFpbmluZyAlLjJmIHMpIiwKLQkJCQkJCQkJaiwgdG90YWwsCi0JCQkJCQkJCShpbnQpICgoaiAq IDEwMCkgLyB0b3RhbCksCi0JCQkJCQkJCXRhYmxlLCBlbGFwc2VkX3NlYywgcmVtYWluaW5nX3Nl Yyk7Ci0KLQkJCQkvKgotCQkJCSAqIElmIHRoZSBwcmV2aW91cyBwcm9ncmVzcyBtZXNzYWdlIGlz IGxvbmdlciB0aGFuIHRoZSBjdXJyZW50Ci0JCQkJICogb25lLCBhZGQgc3BhY2VzIHRvIHRoZSBj dXJyZW50IGxpbmUgdG8gZnVsbHkgb3ZlcndyaXRlIGFueQotCQkJCSAqIHJlbWFpbmluZyBjaGFy YWN0ZXJzIGZyb20gdGhlIHByZXZpb3VzIG1lc3NhZ2UuCi0JCQkJICovCi0JCQkJaWYgKHByZXZf Y2hhcnMgPiBjaGFycykKLQkJCQkJZnByaW50ZihzdGRlcnIsICIlKmMiLCBwcmV2X2NoYXJzIC0g Y2hhcnMsICcgJyk7Ci0JCQkJZnB1dGMoZW9sLCBzdGRlcnIpOwotCQkJCXByZXZfY2hhcnMgPSBj aGFyczsKLQotCQkJCS8qIHNraXAgdG8gdGhlIG5leHQgaW50ZXJ2YWwgKi8KLQkJCQlsb2dfaW50 ZXJ2YWwgPSAoaW50KSBjZWlsKGVsYXBzZWRfc2VjIC8gTE9HX1NURVBfU0VDT05EUyk7Ci0JCQl9 Ci0JCX0KKwkJc2hvd1BvcHVsYXRlVGFibGVDb3B5UHJvZ3Jlc3ModGFibGUsIGsgKyAxLCB0b3Rh bCk7CiAJfQogCi0JaWYgKGNoYXJzICE9IDAgJiYgZW9sICE9ICdcbicpCi0JCWZwcmludGYoc3Rk ZXJyLCAiJSpjXHIiLCBjaGFycywgJyAnKTsJLyogQ2xlYXIgdGhlIGN1cnJlbnQgbGluZSAqLwog CiAJaWYgKFBRcHV0bGluZShjb24sICJcXC5cbiIpKQogCQlwZ19mYXRhbCgidmVyeSBsYXN0IFBR cHV0bGluZSBmYWlsZWQiKTsKQEAgLTU0NDgsNiArNTQ0OSwxMSBAQCBpbml0UG9wdWxhdGVUYWJs ZUNvcHlCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCWZv ciAoaW50NjRfdCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGJhc2U7IGkrKykKIAl7CiAJCWluaXRf cm93KGNvbiwgaSwgYmFzZSwgY29sdW1uQ291bnRlcik7CisKKwkJaWYgKENhbmNlbFJlcXVlc3Rl ZCkKKwkJCWJyZWFrOworCisJCXNob3dQb3B1bGF0ZVRhYmxlQ29weVByb2dyZXNzKHRhYmxlLCBp LCBiYXNlICogc2NhbGUpOwogCX0KIAogCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7CkBAIC01NTMy LDYgKzU1MzgsOCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIAlm cHJpbnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoY2xpZW50LXNpZGUgYXMgJXMgdHJhbnNh Y3Rpb24lcykgaW4gIiwKIAkJCW11bHRpX3hhY3QgPyAibXVsdGlwbGUiIDogInNpbmdsZSIsIG11 bHRpX3hhY3QgPyAicyIgOiAiIik7CiAKKwlkYXRhX2xvYWRfc3RhcnQgPSBwZ190aW1lX25vdygp OworCiAJc3dpdGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKIAl7CiAJCWNhc2UgSU5JVF9TVEVQ X0dFTl9UWVBFX0NPUFlfVEVYVDoKLS0gCjIuNDMuMAoKRnJvbSBhZmUzZjY5YjIzMTkwZjM3NWI1 N2Q1Y2YwYTNlYWUyY2Q4ZTQwY2FhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3Jp cyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAyMyBGZWIgMjAy NiAxNzowNzoxNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDIzLzI3XSBBZGRpbmcgbXVsdGkt dHJhbnNhY3Rpb24gbW9kZSB0byBjbGllbnQtc2lkZSBkYXRhCiBnZW5lcmF0aW9uCgotLS0KIHNy Yy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgICAgICAgICAgICAgICAgICAgIHwgNTIgKysrKysrKysr KysrLS0tLS0tLS0KIHNyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBs IHwgNDcgKysrKysrKysrLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMo KyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IGUzZTBlMDczNzkyLi4xYjczZGE5 MDRhZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MTMwLDIyICs1MTMwLDIyIEBAIHNob3dQb3B1bGF0ZVRh YmxlQ29weVByb2dyZXNzKGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBjdXJyZW50LCBpbnQ2NCB0 b3RhbCkKIH0KIAogc3RhdGljIHZvaWQKLWluaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoUEdjb25u ICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLAoraW5pdFBvcHVsYXRlVGFibGVD b3B5VGV4dChQR2Nvbm4gKmNvbiwgY29uc3QgY2hhciAqdGFibGUsIGludCBjb3VudGVyLCBpbnQ2 NCBiYXNlLAogCQkJCQkJICBpbml0Um93TWV0aG9kIGluaXRfcm93KQogewogCWludAkJCW47Ci0J aW50NjQJCWs7CiAJUEdyZXN1bHQgICAqcmVzOwogCVBRRXhwQnVmZmVyRGF0YSBzcWw7CiAJY2hh cgkJY29weV9zdGF0ZW1lbnRbMjU2XTsKIAljb25zdCBjaGFyICpjb3B5X3N0YXRlbWVudF9mbXQg PSAiY29weSAlcyBmcm9tIHN0ZGluIjsKLQlpbnQ2NAkJdG90YWwgPSBiYXNlICogc2NhbGU7CisJ aW50NjQJCXN0YXJ0ID0gYmFzZSAqIGNvdW50ZXI7CiAKIAlpbml0UFFFeHBCdWZmZXIoJnNxbCk7 CiAKIAkvKiBVc2UgQ09QWSB3aXRoIEZSRUVaRSBvbiB2MTQgYW5kIGxhdGVyIGZvciBhbGwgb3Jk aW5hcnkgdGFibGVzICovCiAJaWYgKChQUXNlcnZlclZlcnNpb24oY29uKSA+PSAxNDAwMDApICYm Ci0JCWdldF90YWJsZV9yZWxraW5kKGNvbiwgdGFibGUpID09IFJFTEtJTkRfUkVMQVRJT04pCisJ CWdldF90YWJsZV9yZWxraW5kKGNvbiwgdGFibGUpID09IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJ IW11bHRpX3hhY3QpCiAJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzIGZyb20gc3RkaW4g d2l0aCAoZnJlZXplIG9uKSI7CiAKIApAQCAtNTE2MSwxNiArNTE2MSwxNiBAQCBpbml0UG9wdWxh dGVUYWJsZUNvcHlUZXh0KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJsZSwgaW50NjQgYmFz ZSwKIAkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgY29weSBpbiByZXN1bHQ6ICVzIiwgUFFlcnJvck1l c3NhZ2UoY29uKSk7CiAJUFFjbGVhcihyZXMpOwogCi0JZm9yIChrID0gMDsgayA8IHRvdGFsOyBr KyspCisJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgYmFzZTsgaSsrKQogCXsK LQkJaW5pdF9yb3coJnNxbCwgayk7CisJCWluaXRfcm93KCZzcWwsIGkpOwogCQlpZiAoUFFwdXRs aW5lKGNvbiwgc3FsLmRhdGEpKQogCQkJcGdfZmF0YWwoIlBRcHV0bGluZSBmYWlsZWQiKTsKIAog CQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJYnJlYWs7CiAKLQkJc2hvd1BvcHVsYXRlVGFibGVD b3B5UHJvZ3Jlc3ModGFibGUsIGsgKyAxLCB0b3RhbCk7CisJCXNob3dQb3B1bGF0ZVRhYmxlQ29w eVByb2dyZXNzKHRhYmxlLCBpLCBiYXNlICogc2NhbGUpOwogCX0KIAogCkBAIC01MTkzLDkgKzUx OTMsNiBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHRGcm10KFBHY29ubiAqY29uKQog ewogCWZwcmludGYoc3RkZXJyLCAiVEVYVCBtb2RlLi4uXG4iKTsKIAotCWlmIChtdWx0aV94YWN0 KQotCQlmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkchIE11bHRpcGxlIHRyYW5zYWN0aW9ucyBhcmUg bm90IHN1cHBvcnRlZCBpbiB0aGlzIG1vZGVcbiIpOwotCiAJLyoKIAkgKiB3ZSBkbyBhbGwgb2Yg dGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBiYWNrZW5kJ3MKIAkgKiBkYXRh LWxvYWRpbmcgb3B0aW1pemF0aW9ucwpAQCAtNTIwNSwxNSArNTIwMiwyOCBAQCBpbml0R2VuZXJh dGVEYXRhQ2xpZW50U2lkZVRleHRGcm10KFBHY29ubiAqY29uKQogCS8qIHRydW5jYXRlIGF3YXkg YW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7CiAKLQkvKgotCSAqIGZp bGwgYnJhbmNoZXMsIHRlbGxlcnMsIGFjY291bnRzIGluIHRoYXQgb3JkZXIgaW4gY2FzZSBmb3Jl aWduIGtleXMKLQkgKiBhbHJlYWR5IGV4aXN0Ci0JICovCi0JaW5pdFBvcHVsYXRlVGFibGVDb3B5 VGV4dChjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKLQlp bml0UG9wdWxhdGVUYWJsZUNvcHlUZXh0KGNvbiwgInBnYmVuY2hfdGVsbGVycyIsIG50ZWxsZXJz LCBpbml0VGVsbGVyKTsKLQlpbml0UG9wdWxhdGVUYWJsZUNvcHlUZXh0KGNvbiwgInBnYmVuY2hf YWNjb3VudHMiLCBuYWNjb3VudHMsIGluaXRBY2NvdW50KTsKKwlpZiAobXVsdGlfeGFjdCkKKwkJ ZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwg c2NhbGU7IGkrKykKKwl7CisJCWlmIChtdWx0aV94YWN0KQorCQkJZXhlY3V0ZVN0YXRlbWVudChj b24sICJiZWdpbiIpOworCisJCS8qCisJCSAqIGZpbGwgYnJhbmNoZXMsIHRlbGxlcnMsIGFjY291 bnRzIGluIHRoYXQgb3JkZXIgaW4gY2FzZSBmb3JlaWduIGtleXMKKwkJICogYWxyZWFkeSBleGlz dAorCQkgKi8KKwkJaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChjb24sICJwZ2JlbmNoX2JyYW5j aGVzIiwgaSwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKKwkJaW5pdFBvcHVsYXRlVGFibGVDb3B5 VGV4dChjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBpLCBudGVsbGVycywgaW5pdFRlbGxlcik7CisJ CWluaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsIGksIG5h Y2NvdW50cywgaW5pdEFjY291bnQpOwogCi0JZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQi KTsKKwkJaWYgKG11bHRpX3hhY3QpCisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIp OworCX0KKworCWlmICghbXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21t aXQiKTsKIH0KIAogCkBAIC01NDI2LDkgKzU0MzYsOSBAQCBpbml0UG9wdWxhdGVUYWJsZUNvcHlC aW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCiAJLyogVXNl IENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciBmb3IgYWxsIG9yZGluYXJ5IHRhYmxl cyAqLwogCWlmICgoUFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKSAmJgotCQlnZXRfdGFi bGVfcmVsa2luZChjb24sIHRhYmxlKSA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQlpZiAoIW11bHRp X3hhY3QpCi0JCQljb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4g d2l0aCAoZm9ybWF0IGJpbmFyeSwgZnJlZXplIG9uKSI7CisJCWdldF90YWJsZV9yZWxraW5kKGNv biwgdGFibGUpID09IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJIW11bHRpX3hhY3QpCisJCWNvcHlf c3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiB3aXRoIChmb3JtYXQgYmlu YXJ5LCBmcmVlemUgb24pIjsKIAogCW4gPSBwZ19zbnByaW50Zihjb3B5X3N0YXRlbWVudCwgc2l6 ZW9mKGNvcHlfc3RhdGVtZW50KSwgY29weV9zdGF0ZW1lbnRfZm10LCB0YWJsZSwgY29sdW1ucyk7 CiAJaWYgKG4gPj0gc2l6ZW9mKGNvcHlfc3RhdGVtZW50KSkKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIGIvc3JjL2Jpbi9wZ2JlbmNoL3Qv MDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKaW5kZXggYWNiMWUzMWQzZTguLjQ2NTY5YjBlYjM3 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5w bAorKysgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbApAQCAt MTg5LDcgKzE4OSw3IEBAICRub2RlLT5wZ2JlbmNoKAogY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwg J3NlcnZlci1zaWRlICh1bm5lc3QpJyk7CiAKIAotIyBUZXN0IHNlcnZlci1zaWRlIGdlbmVyYXRp b24gd2l0aCBDT1BZIFRFWFQKKyMgVGVzdCBjbGllbnQtc2lkZSBnZW5lcmF0aW9uIHdpdGggQ09Q WSBURVhUCiAkbm9kZS0+cGdiZW5jaCgKIAknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1kdGcn LAogCTAsCkBAIC0yMDAsNDUgKzIwMCw0OCBAQCAkbm9kZS0+cGdiZW5jaCgKIAkJcXJ7Z2VuZXJh dGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9ufSwKIAkJcXJ7ZG9u ZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKLQkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50LXNp ZGUgVEVYVCcpOworCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBURVhUIChzaW5n bGUgWEFDVCAjMSknKTsKIAotIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBk YXRhIGdlbmVyYXRpb24uCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIGNsaWVudC1zaWRlIGRh dGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAodGV4 dCknKTsKIAogJG5vZGUtPnBnYmVuY2goCi0JJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRN ZycsCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRTZycsCiAJMCwKIAlbcXJ7XiR9XSwK IAlbCiAJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAogCQlxcntjcmVhdGluZyB0YWJsZXN9LAot CQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlv bnN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBzaW5nbGUgdHJhbnNh Y3Rpb259LAorCQlxcntcZCBvZiBcZCsgdHVwbGVzIFwoXGQlXCkgb2YgcGdiZW5jaF9icmFuY2hl cyBkb25lfSwKKwkJcXJ7XGQgb2YgXGQrIHR1cGxlcyBcKFxkJVwpIG9mIHBnYmVuY2hfdGVsbGVy cyBkb25lfSwKKwkJcXJ7XGQgb2YgXGQrIHR1cGxlcyBcKFxkJVwpIG9mIHBnYmVuY2hfYWNjb3Vu dHMgZG9uZX0sCiAJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQogCV0sCi0JJ3BnYmVuY2ggLS1p bml0LXN0ZXBzIGNsaWVudC1zaWRlIFRFWFQnKTsKKwkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xp ZW50LXNpZGUgVEVYVCAoc2luZ2xlIFhBQ1QgIzIpJyk7CiAKLSMgQ2hlY2sgZGF0YSBzdGF0ZSwg YWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorIyBDaGVjayBkYXRhIHN0YXRlLCBh ZnRlciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19kYXRhX3N0YXRlKCRub2Rl LCAnY2xpZW50LXNpZGUgKHRleHQpJyk7CiAKLQotIyBUZXN0IHNlcnZlci1zaWRlIGdlbmVyYXRp b24gd2l0aCBDT1BZIEJJTkFSWQogJG5vZGUtPnBnYmVuY2goCi0JJy0taW5pdGlhbGl6ZSAtLWlu aXQtc3RlcHM9ZHRjJywKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1kdE1nJywKIAkwLAog CVtxcnteJH1dLAogCVsKIAkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCiAJCXFye2NyZWF0aW5n IHRhYmxlc30sCi0JCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlIGFzIHNpbmdsZSB0 cmFuc2FjdGlvbn0sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlIGFzIG11bHRp cGxlIHRyYW5zYWN0aW9uc30sCiAJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQogCV0sCi0JJ3Bn YmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIEJJTkFSWScpOworCSdwZ2JlbmNoIC0taW5p dC1zdGVwcyBjbGllbnQtc2lkZSBURVhUIChtdWx0aXBsZSBYQUNUcyknKTsKKworIyBDaGVjayBk YXRhIHN0YXRlLCBhZnRlciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRh X3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKHRleHQpJyk7CiAKLSMgQ2hlY2sgZGF0YSBzdGF0 ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgotY2hlY2tfZGF0YV9zdGF0ZSgk bm9kZSwgJ2NsaWVudC1zaWRlIChiaW5hcnkpJyk7CiAKKyMgVGVzdCBjbGllbnQtc2lkZSBnZW5l cmF0aW9uIHdpdGggQ09QWSBCSU5BUlkKICRub2RlLT5wZ2JlbmNoKAotCSctLWluaXRpYWxpemUg LS1pbml0LXN0ZXBzPWR0U2MnLAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0YycsCiAJ MCwKIAlbcXJ7XiR9XSwKIAlbCkBAIC0yNDcsMjQgKzI1MCwyNCBAQCAkbm9kZS0+cGdiZW5jaCgK IAkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9u fSwKIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKLQkncGdiZW5jaCAtLWluaXQtc3Rl cHMgY2xpZW50LXNpZGUgQklOQVJZJyk7CisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1z aWRlIEJJTkFSWSAoc2luZ2xlIFhBQ1QgIzEpJyk7CiAKLSMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0 ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRl ciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19kYXRhX3N0YXRlKCRub2RlLCAn Y2xpZW50LXNpZGUgKGJpbmFyeSknKTsKIAogJG5vZGUtPnBnYmVuY2goCi0JJy0taW5pdGlhbGl6 ZSAtLWluaXQtc3RlcHM9ZHRNYycsCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRTYycs CiAJMCwKIAlbcXJ7XiR9XSwKIAlbCiAJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAogCQlxcntj cmVhdGluZyB0YWJsZXN9LAotCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBt dWx0aXBsZSB0cmFuc2FjdGlvbnN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lk ZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb259LAogCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KIAld LAotCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsKKwkncGdiZW5j aCAtLWluaXQtc3RlcHMgY2xpZW50LXNpZGUgQklOQVJZIChzaW5nbGUgWEFDVCAjMiknKTsKIAot IyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCisj IENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIGNsaWVudC1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KIGNo ZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAoYmluYXJ5KScpOwogCiAkbm9kZS0+ cGdiZW5jaCgKQEAgLTI3OSw3ICsyODIsNyBAQCAkbm9kZS0+cGdiZW5jaCgKIAldLAogCSdwZ2Jl bmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsKIAotIyBDaGVjayBkYXRhIHN0 YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCisjIENoZWNrIGRhdGEgc3Rh dGUsIGFmdGVyIGNsaWVudC1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFfc3RhdGUo JG5vZGUsICdjbGllbnQtc2lkZSAoYmluYXJ5KScpOwogCiAKLS0gCjIuNDMuMAoKRnJvbSBkOWM2 MWVmZGQ4NTNjOTk5YjkyMDYxYWQ0Zjg4ZGQwMTIyNjVkYmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTog U3VuLCAxIE1hciAyMDI2IDE4OjI0OjE4ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMjQvMjdd IFJlbW92aW5nIGRvdWJsZSBjYWxsIHRvIGNoZWNrSW5pdFN0ZXBzCgotLS0KIHNyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMgfCA1ICsrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDFiNzNkYTkwNGFkLi43ZDNhMTU4MzE1 MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jCkBAIC01ODE2LDkgKzU4MTYsOSBAQCBjaGVja0luaXRTdGVwcyhjb25z dCBjaGFyICppbml0aWFsaXplX3N0ZXBzKQogCX0KIAogCWlmIChkYXRhX2luaXRfdHlwZSA9PSAw KQotCQlwZ19sb2dfZXJyb3IoIldBUk5JTkchIE5vIGRhdGEgZ2VuZXJhdGlvbiB0eXBlIGlzIHBy b3ZpZGVkIik7CisJCXBnX2xvZ193YXJuaW5nKCJObyBkYXRhIGdlbmVyYXRpb24gdHlwZSBpcyBw cm92aWRlZCIpOwogCWlmIChkYXRhX2luaXRfdHlwZSA+IDEpCi0JCXBnX2xvZ19lcnJvcigiV0FS TklORyEgTW9yZSB0aGFuIG9uZSB0eXBlIG9mIGRhdGEgaW5pdGlhbGl6YXRpb24gaXMgcmVxdWVz dGVkIik7CisJCXBnX2xvZ193YXJuaW5nKCJNb3JlIHRoYW4gb25lIHR5cGUgb2YgZGF0YSBpbml0 aWFsaXphdGlvbiBpcyByZXF1ZXN0ZWQiKTsKIH0KIAogLyoKQEAgLTc0NDksNyArNzQ0OSw2IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAnSSc6CiAJCQkJcGdfZnJlZShp bml0aWFsaXplX3N0ZXBzKTsKIAkJCQlpbml0aWFsaXplX3N0ZXBzID0gcGdfc3RyZHVwKG9wdGFy Zyk7Ci0JCQkJY2hlY2tJbml0U3RlcHMoaW5pdGlhbGl6ZV9zdGVwcyk7CiAJCQkJaW5pdGlhbGl6 YXRpb25fb3B0aW9uX3NldCA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdqJzoJCQkvKiBq b2JzICovCi0tIAoyLjQzLjAKCkZyb20gZDU5M2EyMDYzYTk5N2M4NmRlNGI5MzUwYjk3ZDRhZDY1 MjdiZGRlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9y aXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFN1biwgMSBNYXIgMjAyNiAxODo0NToyNSArMDcw MApTdWJqZWN0OiBbUEFUQ0ggdjEwIDI1LzI3XSBGaXhlZCAyIHNtYWxsIGJ1Z3MKCjEuIE92ZXJ3 cml0ZSBvZiBpbml0IG1vZGUgYnkgbGFzdCBtb2RlIGluIGNoZWNrSW5pdFN0ZXBzCgoyLiBCbGVk ZGluZyBvZiBpbml0IHByb2dyZXNzIGZyb20gcHJldmlvdXMgbW9kZSB1bmRlciBuZXcgb25lIChl ZywgJy1JZ2dHRycpCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDEwICsrKysrKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMKaW5kZXggN2QzYTE1ODMxNTIuLmRhZjMzZDczODE0IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUx MjUsOCArNTEyNSwxMSBAQCBzaG93UG9wdWxhdGVUYWJsZUNvcHlQcm9ncmVzcyhjb25zdCBjaGFy ICp0YWJsZSwgaW50NjQgY3VycmVudCwgaW50NjQgdG90YWwpCiAJCX0KIAl9CiAKLQlpZiAoY3Vy cmVudCA9PSB0b3RhbCAmJiBjaGFycyAhPSAwICYmIGVvbCAhPSAnXG4nKQotCQlmcHJpbnRmKHN0 ZGVyciwgIiUqY1xyIiwgY2hhcnMsICcgJyk7CS8qIENsZWFyIHRoZSBjdXJyZW50IGxpbmUgKi8K KwlpZiAoY3VycmVudCArIDEgPT0gdG90YWwgJiYgY2hhcnMgIT0gMCkKKwl7CisJCWZwcmludGYo c3RkZXJyLCAiJSpjIiwgY2hhcnMsICcgJyk7CS8qIENsZWFyIHRoZSBjdXJyZW50IGxpbmUgKi8K KwkJZnB1dGMoZW9sLCBzdGRlcnIpOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTU4MTAsNyAr NTgxMyw2IEBAIGNoZWNrSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiAJ CQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfU0VSSUVTOgogCQkJY2FzZSBJTklUX1NU RVBfR0VOX1RZUEVfSU5TRVJUX1VOTkVTVDoKIAkJCQlkYXRhX2luaXRfdHlwZSsrOwotCQkJCWRh dGFfZ2VuZXJhdGlvbl90eXBlID0gKnN0ZXA7CiAJCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC01ODU5 LDExICs1ODYxLDEzIEBAIHJ1bkluaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFsaXplX3N0ZXBz KQogCQkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUOgogCQkJY2FzZSBJTklUX1NU RVBfR0VOX1RZUEVfQ09QWV9CSU5BUlk6CiAJCQkJb3AgPSAiY2xpZW50LXNpZGUgZ2VuZXJhdGUi OworCQkJCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gKnN0ZXA7CiAJCQkJaW5pdEdlbmVyYXRlRGF0 YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBF X0lOU0VSVF9TRVJJRVM6CiAJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNU OgogCQkJCW9wID0gInNlcnZlci1zaWRlIGdlbmVyYXRlIjsKKwkJCQlkYXRhX2dlbmVyYXRpb25f dHlwZSA9ICpzdGVwOwogCQkJCWluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKGNvbik7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9TSU5HTEVfWEFDVDoKLS0gCjIuNDMu MAoKRnJvbSAyNjVkNGIwMTc1MjljOWJkYzIxZWNkYmY3ZmU0Nzk0Nzg5MjYwNTQ1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWls LmNvbT4KRGF0ZTogU3VuLCAxIE1hciAyMDI2IDE5OjA2OjQ1ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTAgMjYvMjddIEFkZGVkIG1vcmUgdGVzdHMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3QvMDAx X3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwgfCA5OCArKysrKysrKysrKysrKysrKysrKwogMSBmaWxl IGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv dC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbCBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2Jl bmNoX3dpdGhfc2VydmVyLnBsCmluZGV4IDQ2NTY5YjBlYjM3Li43M2QyZDc1NDI3MyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKQEAgLTE3Miw2ICsx NzIsNTMgQEAgJG5vZGUtPnBnYmVuY2goCiBjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnc2VydmVy LXNpZGUnKTsKIAogCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRoIGdlbmVyYXRl X3NlcmllcworJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRH JywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFy e2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlIGFz IHNpbmdsZSB0cmFuc2FjdGlvblwpfSwKKwkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwK KwkncGdiZW5jaCAtLWluaXQtc3RlcHMgc2VydmVyLXNpZGUgZ2VuZXJhdGVfc2VyaWVzJyk7CisK KyMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgor Y2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ3NlcnZlci1zaWRlIChnZW5lcmF0ZV9zZXJpZXMpJyk7 CisKKyRub2RlLT5wZ2JlbmNoKAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0U0cnLAor CTAsCisJW3Fye14kfV0sCisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3Jl YXRpbmcgdGFibGVzfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGUgYXMgc2lu Z2xlIHRyYW5zYWN0aW9uXCl9LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdw Z2JlbmNoIC0taW5pdC1zdGVwcyBzZXJ2ZXItc2lkZSBnZW5lcmF0ZV9zZXJpZXMnKTsKKworIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnc2VydmVyLXNpZGUgKGdlbmVyYXRlX3NlcmllcyBzaW5nbGUg WEFDVCknKTsKKworJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9 ZHRNRycsCisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAor CQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChzZXJ2ZXItc2lk ZSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlvbnNcKX0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMg fQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIHNlcnZlci1zaWRlIGdlbmVyYXRlX3Nlcmll cycpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJh dGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAoZ2VuZXJhdGVfc2Vy aWVzIG11bHRpcGxlIFhBQ1RzKScpOworCisKICMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9u IHdpdGggVU5ORVNUCiAkbm9kZS0+cGdiZW5jaCgKIAknLS1pbml0aWFsaXplIC0taW5pdC1zdGVw cz1kdFUnLApAQCAtMTg4LDYgKzIzNSwzNiBAQCAkbm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0 YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9z dGF0ZSgkbm9kZSwgJ3NlcnZlci1zaWRlICh1bm5lc3QpJyk7CiAKKyRub2RlLT5wZ2JlbmNoKAor CSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0U1UnLAorCTAsCisJW3Fye14kfV0sCisJWwor CQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJcXJ7 Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9uXCl9LAor CQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBz ZXJ2ZXItc2lkZSBVTk5FU1QnKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXIt c2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnc2VydmVyLXNp ZGUgKHVubmVzdCknKTsKKworJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQt c3RlcHM9ZHRNVScsCisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJs ZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChzZXJ2 ZXItc2lkZSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlvbnNcKX0sCisJCXFye2RvbmUgaW4gXGQrXC5c ZFxkIHMgfQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIHNlcnZlci1zaWRlIFVOTkVTVCcp OworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlv bi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAodW5uZXN0KScpOworCiAK ICMgVGVzdCBjbGllbnQtc2lkZSBnZW5lcmF0aW9uIHdpdGggQ09QWSBURVhUCiAkbm9kZS0+cGdi ZW5jaCgKQEAgLTI4Niw2ICszNjMsMjcgQEAgJG5vZGUtPnBnYmVuY2goCiBjaGVja19kYXRhX3N0 YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKIAogCisjIENoZWNrIGRhdGEgc3Rh dGUsIGFmdGVyIGRpZmZlcmVudCBtb2RlcyBvZiBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24u CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKworJG5v ZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRNY2NTYycsCisJMCwK KwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGlu ZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBtdWx0aXBs ZSB0cmFuc2FjdGlvbnN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBt dWx0aXBsZSB0cmFuc2FjdGlvbnN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lk ZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb259LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwld LAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlkgKG11bHRpcGxlIFhB Q1QgbW9kZXMpJyk7CisKKyMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgY2xpZW50LXNpZGUgZGF0 YSBnZW5lcmF0aW9uLgorY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlIChiaW5h cnkgZGlmZmVyZW50IFhBQ1QgbW9kZXMgaW4gbGlzdCBvZiAtLWluaXQtc3RlcHMpJyk7CisKKwog IyBSdW4gYWxsIGJ1aWx0aW4gc2NyaXB0cywgZm9yIGEgZmV3IHRyYW5zYWN0aW9ucyBlYWNoCiAk bm9kZS0+cGdiZW5jaCgKIAknLS10cmFuc2FjdGlvbnM9NSAtRGZvbz1ibGEgLS1jbGllbnQ9MiAt LXByb3RvY29sPXNpbXBsZSAtLWJ1aWx0aW49dCcKLS0gCjIuNDMuMAoKRnJvbSAzZjU2OWRmYmEz N2M4NzIyZmI1ZTJiOTlmM2UwMDFhOTNhOTU5NTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAz IE1hciAyMDI2IDEwOjQ5OjU0ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMjcvMjddIFNtYWxs IGNoYW5nZXMgZHVlIHRvIHJldmlldyBvZiBwYXRjaCB2OQoKLS0tCiBzcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIHwgMjYgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxNSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBkYWYz M2Q3MzgxNC4uODE1NzZkOGY3Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTYwLDcgKzE2MCw3IEBAIHR5 cGVkZWYgc3RydWN0IHNvY2tldF9zZXQKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogc29tZSBjb25maWd1cmFi bGUgcGFyYW1ldGVycyAqLwogI2RlZmluZSBERUZBVUxUX0lOSVRfU1RFUFMgImR0Z3ZwIgkvKiBk ZWZhdWx0IC1JIHNldHRpbmcgKi8KLSNkZWZpbmUgQUxMX0lOSVRfU1RFUFMgImR0Z01TY0dVdnBm IgkvKiBhbGwgcG9zc2libGUgc3RlcHMgKi8KKyNkZWZpbmUgQUxMX0lOSVRfU1RFUFMgImR0TVNj Z0dVdnBmIgkvKiBhbGwgcG9zc2libGUgc3RlcHMgKi8KIAogI2RlZmluZSBMT0dfU1RFUF9TRUNP TkRTCTUJLyogc2Vjb25kcyBiZXR3ZWVuIGxvZyBtZXNzYWdlcyAqLwogI2RlZmluZSBERUZBVUxU X05YQUNUUwkJMTAJLyogZGVmYXVsdCBueGFjdHMgKi8KQEAgLTUyMzIsNiArNTIzMiw4IEBAIGlu aXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dEZybXQoUEdjb25uICpjb24pCiAKIC8qCiAgKiBT YXZlIGNoYXIgZGF0YSB0byBidWZmZXIKKyAqIEtlcHQgYXMgc2VwYXJhdGUgcHJvYyBmb3IgcG9z c2libGUgYWRkaXRpb24gb2Ygc29tZXRoaW5nCisgKiBsaWtlIGFkZENoYXJDb2x1bW4gaW4gZnV0 dXJlCiAgKi8KIHN0YXRpYyB2b2lkCiBidWZmZXJDaGFyRGF0YShjaGFyICpzcmMsIGludDMyX3Qg bGVuKQpAQCAtNTI0OSwyMiArNTI1MSwyNCBAQCBidWZmZXJDaGFyRGF0YShjaGFyICpzcmMsIGlu dDMyX3QgbGVuKQogc3RhdGljIHZvaWQKIGJ1ZmZlckRhdGEodm9pZCAqc3JjLCBpbnQzMl90IGxl bikKIHsKKwlBc3NlcnQoYmluX2NvcHlfYnVmZmVyX2xlbmd0aCArIGxlbiA8PSBCSU5fQ09QWV9C VUZfU0laRSk7CisKICNpZmRlZiBfX3NwYXJjX18KIAlidWZmZXJDaGFyRGF0YShzcmMsIGxlbik7 CiAjZWxzZQorCiAJaWYgKGxlbiA9PSAxKQotCXsKIAkJYnVmZmVyQ2hhckRhdGEoc3JjLCBsZW4p OwotCQlyZXR1cm47Ci0JfQotCi0JZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisJ ZWxzZQogCXsKLQkJKChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciArIGJpbl9jb3B5X2J1ZmZlcl9s ZW5ndGgpW2ldID0KLQkJCSgoY2hhciAqKSBzcmMpW2xlbiAtIGkgLSAxXTsKLQl9CisJCWZvciAo aW50MzJfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQorCQl7CisJCQkoKGNoYXIgKikgYmluX2NvcHlf YnVmZmVyICsgYmluX2NvcHlfYnVmZmVyX2xlbmd0aClbaV0gPQorCQkJCSgoY2hhciAqKSBzcmMp W2xlbiAtIGkgLSAxXTsKKwkJfQogCi0JYmluX2NvcHlfYnVmZmVyX2xlbmd0aCArPSBsZW47CisJ CWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggKz0gbGVuOworCX0KICNlbmRpZgogfQogCkBAIC01MzA5 LDcgKzUzMTMsNyBAQCBhZGRJbnQ2NENvbHVtbihpbnQ2NF90IHZhbHVlKQogc3RhdGljIHZvaWQK IHNlbmRCaW5hcnlDb3B5SGVhZGVyKFBHY29ubiAqY29uKQogewotCWNoYXIJCWhlYWRlcltdID0g eydQJywgJ0cnLCAnQycsICdPJywgJ1AnLCAnWScsICdcbicsICdcMzc3JywgJ1xyJywgJ1xuJywg J1wwJywKKwlzdGF0aWMgY2hhcgloZWFkZXJbXSA9IHsnUCcsICdHJywgJ0MnLCAnTycsICdQJywg J1knLCAnXG4nLCAnXDM3NycsICdccicsICdcbicsICdcMCcsCiAJCSdcMCcsICdcMCcsICdcMCcs ICdcMCcsCiAJJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJ307CiAKLS0gCjIuNDMuMAoK --_004_PH0PR08MB70202953137489C2DE455005887FAPH0PR08MB7020namp_--