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 1vwfkW-005Qaj-0a for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 12:18:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vwfkU-00CtwA-0B for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 12:18:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vwfkT-00Ctw1-1W for pgsql-hackers@lists.postgresql.org; Sun, 01 Mar 2026 12:18:13 +0000 Received: from mail-westus3azolkn19010019.outbound.protection.outlook.com ([52.103.23.19] helo=PH7PR06CU001.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vwfkP-00000001rvx-1ot2 for pgsql-hackers@postgresql.org; Sun, 01 Mar 2026 12:18:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BxpBal1cRvGKMMP8Ycv38ryDX0o+koMU6Y0QFwbdhwbPMN+sswCkH5EPziEMUAjgfFluJ8bm6eLvEUjrV/vh5JnKEZWHLxJIFSCJ3MHojjRWlFIuHTadWDs601or4GurA8Vj/KHQqvf6999YB8Ii6V1ggwrd1bKUKxMrBEH1RwMV3daB8utT5wDMVNJYAgZHSA9t6WI3QZwUiSVasILMiMlNIBpYjRwJ09lnXLU956Wa8qxEx7X6gDUNHJ8BwNjbdmzX5SqQqH2jBjKSfyEvuHh7sWgyTRD8hKgzR6PTjmUZ5F28M2c1uHpf4wtMAXOhrAtaWrdQhkANZflGxYb/Uw== 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=y8IK3mS9D1RmOLqS0nIr+qdSQika7yI513cVq3KKYuQ=; b=pixrLxDw/2dHvR7k6Awqrji0cCBv5dlUClmu/bTBPDdBRR/Hb/w0hVz/NMklaBHjzD1v9lvqcAUzx+N1FXHCxQnSMvUCgsqxBmvmJT1hK4VKZA6aEtX1pXqxRE/yUVyuGyCFkCK0An2FShlqsoDgHozqXkSs00Ey5iu0dr+Nj5XMuIOTtTGHVgv0mOSKUDhzEP038ImGn/KLbb6aorR5/TMwsGp6gqY2/GpHH5agzyzMM9yoSj+zBmADHGs9pshBKS4UBITies9IO432l7sTRoa7tilUCnLEGc1RN/DY408ijtZ0nMtpNyRnmAespWaPhss6gxmM1ghZV7FOFJZHpg== 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=y8IK3mS9D1RmOLqS0nIr+qdSQika7yI513cVq3KKYuQ=; b=E5y4I0juYbrKnP2uKW0VIX/NYoUFCocc/FfOvC/P3cnB9x7PzWcwuyeYldNRNyqMlzZpl4bfMeEcN55JrbPorILncm19H8/dEGbFqWs2VpiSlJ6g1IupOk9Y3JtMydpTMOByy21vRqNDe67cXyIQl4DDoDQVHLygmFxB5Sre6VPIGZnjCYDG6gYupu68bBKpMjfvyFBTc9H7+SI0WHg6VI/VYFGQqxFj/pVosCPivnOB6BQFirp9wcb59kEdOebfPDMWeQxzd01nt0Hanmr5TLSP1DQMvD94vtejaxjFpa4cD+HNEY8ttYTxVyOPZSm1k2oHLmjIxKIHzaXfUtXV8A== Received: from PH0PR08MB7020.namprd08.prod.outlook.com (2603:10b6:510:74::15) by PH0PR08MB7242.namprd08.prod.outlook.com (2603:10b6:510:a1::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Sun, 1 Mar 2026 12:18:04 +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.007; Sun, 1 Mar 2026 12:18:04 +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+EIAAFWg0gArDj2mAAAeBfoAE2r6AgBXReIKACYuvBw== Date: Sun, 1 Mar 2026 12:18:03 +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_|PH0PR08MB7242:EE_ x-ms-office365-filtering-correlation-id: 75ef1785-1392-4e36-20c6-08de778c9699 x-microsoft-antispam: BCL:0;ARA:14566002|461199028|19110799012|8060799015|8062599012|51005399006|6092099016|31061999003|12121999013|15080799012|15030799006|102099032|40105399003|440099028|3412199025; x-microsoft-antispam-message-info: =?iso-8859-1?Q?SUTIEt0DK95a0XFWGkoP4Qrj2t4HYzdnraltvrA6RaCvABrmMFKpU6cxnz?= =?iso-8859-1?Q?Qby4mKZzMc1Skv2FtTb2cz5IcpNx/Ddt2ZkWVXaWaV4mjqOBcijpzuQFU5?= =?iso-8859-1?Q?oaTn8uCdVnh7X//BLv0mLYfOEZDtkiyLFT/PhaVle2Xjq3TnT7FTdmwDoe?= =?iso-8859-1?Q?bNlYUqps2JHsAuX+K2a8ITQSqhYrvqZCl6dol2kdUuNfEcW3efeiqT4gNN?= =?iso-8859-1?Q?2QA+Mg+l4xuHPp6Dz3QNHMvAh71EQuNPkcFoAqOkp8HffOi7IL9yNrEAnj?= =?iso-8859-1?Q?ycwWbMkhSgIzNNFU2zoSVtGdK/tuAECVBldrgK1i2NHWNv5AQoESWp8HKB?= =?iso-8859-1?Q?8ZgWvjPdhaALr70lcoJepLJAw4kyko9d5rNk9yhi6t/ztmW8mdkY4pip6P?= =?iso-8859-1?Q?qnAUdvmxTdsf93z+Gv2ee6c/1vFcCn4YW8noLJ2thSVce4dyiI/xH4LAIm?= =?iso-8859-1?Q?doQ7wauzsrEm53aQ094rKp6G2Z6F0n8YDsEGQDN+aw723ZoPY6MTrt0TJu?= =?iso-8859-1?Q?jJ0TqG45g0sVEiIjddvvCgR4CDpc9FmzUyXjinwsiVfgj4QNvTWZSyknPm?= =?iso-8859-1?Q?CLQpkd7WiatgHbUQwnzgCO76RX2qLGKR4tG5SKbZ6pT1VqT0UYmS67Wrik?= =?iso-8859-1?Q?zWlO88mRQILSUnqk02ltKkT88yhMEuIIugVRAyw4zqW4F4waiu4CZ3Og02?= =?iso-8859-1?Q?s25WqdOcHpQ1hCOsl65lC8eo3VEE2GYlokGNZFBgqzPuyqa5BocIFtubVn?= =?iso-8859-1?Q?+iJ+dP+2hhihO46fhQuFFlmhiIFX1E6SvL1Yml/85CdyvAQtpqBd8hthLY?= =?iso-8859-1?Q?q2uoM/BYbFoJ8I6BoMjgKlC496FWFSk7NarknlY7SdZ+7jSBkblwLsamtn?= =?iso-8859-1?Q?O/COO/ofc/O5eOdJT3aGprOZNcfTXfyUIbLx1Je1WTtqjTtnCA8ZlH+gCv?= =?iso-8859-1?Q?jIyAtTfoO1AAiSCfRqJP7ChV73ZvB6YESVQmVYrs0SH/aS983t970QNlJ9?= =?iso-8859-1?Q?4BFG3IaoAMredGXYmd1/oLH+h9xSZMC+BeT5Jd?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xte1anLgaouXAIB5sc37M4gel9jl9Ks+EnqwKP1gWN1P+1o9Ho4FDzvh6F?= =?iso-8859-1?Q?ehiI/EAUlpJqBIuqzX2I4gw1YhT84sU3MhT8iUIw11O2fArrERghXCnQBc?= =?iso-8859-1?Q?omdk0QnAa4vCQ6xP4pV0i/XWDNRhzOQCABMCY5egt6t1E+sBpQGAoSgscz?= =?iso-8859-1?Q?FsQG4BX441W5EsXJ57ox9Qes4hozXZzYkhgEe4OYkZbLVigtv5CnoaZoBm?= =?iso-8859-1?Q?OLbhH8gdmLaUF2Nuo+7v0yRQjy7FyDvGPRzkFsczpojNpgvcfDXlNy8JhR?= =?iso-8859-1?Q?VpJRgRIyySIUxCfI9Kyqb/3OC/36mrvmxJmLuY3n9yxMzB2j2hFJlNW1QB?= =?iso-8859-1?Q?9Bhaol4W5l2hIUsVQFH1uJr8LaRBtxo36sll8hrAie84zZz3sPSaua6tQR?= =?iso-8859-1?Q?8vBRoVxAZ9uLl7mlRBcGgRDDbZgOj7LJKLs/GrSpg5xRTj8Skd1aAfQaSx?= =?iso-8859-1?Q?nziAj9RMIpl9ppRl5SY2SzVwYNPH+J47ZTekBU/qo30iI3RNsDy0feP9Wt?= =?iso-8859-1?Q?2l1jcZdO6J5itPXRZ1oOJXIJv+yvXl3XpPulMPOuysDoXgLYLlEoxfZalL?= =?iso-8859-1?Q?Md398kvM8yR2XtCr07lX1jlRB5TiITEGziYp+e+X6tnEoicCj2CgXm2aFa?= =?iso-8859-1?Q?bOSZKQ0Z1TDTHhty/oh3DYj+nTIp0bj9ot8nj/odXd6FhszIU+5b4pynaB?= =?iso-8859-1?Q?t2Gcz/XFiHopx9XT8B7QnWjXiPCEL6FVqKJeyM/VlrxLFU7fBGoKjROMSd?= =?iso-8859-1?Q?zAwzfiDQXuBr8G83cisoLi/DiiM23V2Hqx9NMPOuUhTMgqU2OvYEb+mLcq?= =?iso-8859-1?Q?/P3ykQem3ZlXZNN1h20hZnq9JIThTcQQr2h2akQDnaQWzm/+FQjRNn1uFY?= =?iso-8859-1?Q?IR5JeTy2rL/qYb0KcAox0Bux0CJBObZe3nVkPShrKkER18Fl4B8Jm23pZB?= =?iso-8859-1?Q?EnfvJ7UC4SDWw3f1uBhOL/Hsxhp9WOiwKiBSN/0ze+8uOUoBkcIaSZEJNY?= =?iso-8859-1?Q?awXc4ZrhAYltsB8x1UJ9gQeMtjGs0tR5yFk4SfWNuTEbZgzintAzwrN1rO?= =?iso-8859-1?Q?TzsRHjICsvDyhRg5GmmoJAkbfjFXpPD0USnPxebLZtrPrbND2ScYuZSaik?= =?iso-8859-1?Q?n3TGdMORPOdywr3JteRxXzQDEEBk5HVPWZRVY4bmNuyYZkxxlLAgOj8GFt?= =?iso-8859-1?Q?WqPwYsZJFuy9gffc+K1/5KM5obMF8uHaqUpVEEn4+EupqHtVQd27Q5NAf+?= =?iso-8859-1?Q?CQhDB9Si3cxxdjrHWFX/CtCa80HHrYvpCYnu4KrwyQO7g7bQaE5rQ7EyP5?= =?iso-8859-1?Q?41vCr3omQvejTeTdbEViMB3JSiEcy9Q5x0NTncmAgdmCoLE1nsCHAscI+F?= =?iso-8859-1?Q?dqufhcYuEay4hL1VOhrpxOxSb9xMjOt5KqwGBHwfwoxgpD78VUgxZbRfTR?= =?iso-8859-1?Q?3iLqavT6Jqo4BDYwsnGdZL/qnetnqOWx4dTeKqcQbHsg3xrEUhSMm/AbCe?= =?iso-8859-1?Q?I=3D?= Content-Type: multipart/mixed; boundary="_004_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_" 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: 75ef1785-1392-4e36-20c6-08de778c9699 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2026 12:18:03.8907 (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: PH0PR08MB7242 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_ Content-Type: multipart/alternative; boundary="_000_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_" --_000_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Egor, Quick update. Sending slightly updated version of the patch as couple of small bugs have been fixed. Also more tests have been added to cover specifically all possible init modes when they called with "multi-" of "single-" transaction switches as well as combination of multiple init modes in one call to pgbench (eg, -IdtMccGc). Cheers, Boris --_000_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi Egor,

Quick update.
Sending slightly updated version of the patch as couple
of small bugs have been fixed. Also more tests have been
added to cover specifically all possible init modes when
they called with "multi-" of "single-" transaction swit= ches
as well as combination of multiple init modes in one call
to pgbench (eg, -IdtMccGc).

Cheers,
Boris
--_000_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_-- --_004_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_ Content-Type: application/octet-stream; name="v9-pgbench-faster-modes.patch" Content-Description: v9-pgbench-faster-modes.patch Content-Disposition: attachment; filename="v9-pgbench-faster-modes.patch"; size=125986; creation-date="Sun, 01 Mar 2026 12:13:10 GMT"; modification-date="Sun, 01 Mar 2026 12:13:25 GMT" Content-Transfer-Encoding: base64 RnJvbSBjNzY4ZjM5OWM1NTYyOTVkZTdkNTM4OTU0MTBlNjg2ZDg2YjRiOTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDE5OjM0OjU4ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2 OSAwMS8yNl0gQ29udmVydGluZyBvbmUgaHVnZSB0cmFuc2FjdGlvbiBpbnRvIHNlcmllcyBvZiBv bmUKIHBlciAnc2NhbGUnCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA2MSArKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MSBp bnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBkODc2NGJhNmZl MC4uMjg0YTdjODYwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysr IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTgxLDYgKzE4MSwxMiBAQCBzdGF0aWMg aW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hlbiB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVu ZGVyIC1UICovCiAgKi8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCisvKgorICogc2NhbGluZyBm YWN0b3IgYWZ0ZXIgd2hpY2ggd2Ugc3dpdGNoIHRvIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBkdXJp bmcKKyAqIGRhdGEgcG9wdWxhdGlvbiBwaGFzZSBvbiBzZXJ2ZXIgc2lkZQorICovCitzdGF0aWMg aW50NjQJc2luZ2xlX3R4bl9zY2FsZV9saW1pdCA9IDE7CisKIC8qCiAgKiBmaWxsZmFjdG9yLiBm b3IgZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkwIHdpbGwgdXNlIG9ubHkgOTAgcGVyY2VudAogICog c3BhY2UgZHVyaW5nIGluc2VydHMgYW5kIGxlYXZlIDEwIHBlcmNlbnQgZnJlZS4KQEAgLTUyMTMs NiArNTIxOSw3IEBAIHN0YXRpYyB2b2lkCiBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nv bm4gKmNvbikKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCWludAkJCQljaHVuayA9IChzY2Fs ZSA+PSBzaW5nbGVfdHhuX3NjYWxlX2xpbWl0KSA/IDEgOiBzY2FsZTsKIAogCWZwcmludGYoc3Rk ZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkuLi5cbiIpOwogCkBAIC01MjI1LDMw ICs1MjMyLDQ0IEBAIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCS8q IHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7 CiAKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCiAJaW5pdFBRRXhwQnVmZmVy KCZzcWwpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJICAiaW5zZXJ0IGludG8g cGdiZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKLQkJCQkJICAic2VsZWN0IGJpZCwgMCAi Ci0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLCBuYnJhbmNoZXMg KiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKLQotCXByaW50ZlBR RXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQs YmlkLHRiYWxhbmNlKSAiCi0JCQkJCSAgInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwg MCAiCi0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVy cywgbnRlbGxlcnMgKiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK LQotCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hf YWNjb3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKLQkJCQkJICAic2VsZWN0IGFpZCwg KGFpZCAtIDEpIC8gJWQgKyAxLCAwLCAnJyAiCi0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVz KDEsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCi0JCQkJCSAgbmFjY291bnRzLCAoaW50NjQp IG5hY2NvdW50cyAqIHNjYWxlKTsKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwor CWZvciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkgKz0gY2h1bmspIHsKKwkJZXhlY3V0ZVN0YXRl bWVudChjb24sICJiZWdpbiIpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCQkg ICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgorCQkJCQkJICAi c2VsZWN0IGJpZCArIDEsIDAgIgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVk KSBhcyBiaWQiLCBpLCBpICsgY2h1bmspOworCQkJCQkJICAvLyJzZWxlY3QgYmlkLCAwICIKKwkJ CQkJCSAgLy8iZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsIG5icmFuY2hlcyAq IHNjYWxlKTsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCQlwcmludGZQ UUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJzKHRp ZCxiaWQsdGJhbGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEs IDAgIgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAorCQkJ CQkJICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIGNodW5rKSAqIG50ZWxsZXJzIC0gMSk7 CisJCQkJCQkgIC8vInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwgMCAiCisJCQkJCQkg IC8vImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVycywgbnRlbGxl cnMgKiBzY2FsZSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3Vu dHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBh aWQgLyAlZCArIDEsIDAsICcnICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCIgSU5U NjRfRk9STUFUICIsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCQkgIG5hY2NvdW50 cywgKGludDY0KSBpICogbmFjY291bnRzLCAoaW50NjQpIChpICsgY2h1bmspICogbmFjY291bnRz IC0gMSk7CisJCQkJCQkgIC8vInNlbGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycg IgorCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBh cyBhaWQiLAorCQkJCQkJICAvL25hY2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7 CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKKwl9CiAKIAl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Ci0KLQlleGVj dXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogfQogCiAvKgotLSAKMi40My4wCgpGcm9tIDBl ZGRiMTU2YzE4N2Q4MjljNDM4MWJjOTI4YzUzMTQ3MDU5Mjg4NTIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRl OiBTdW4sIDkgTm92IDIwMjUgMjA6MTM6MjMgKzA3MDAKU3ViamVjdDogW1BBVENIIHY5IDAyLzI2 XSBHZXR0aW5nIHJpZCBvZmYgbGltaXQgZm9yIHNpbmdsZSB0cmFuc2FjdGlvbiBzaXplCiBkdXJp bmcgZGF0YSBnZW5lcmF0aW9uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAxNSAr KysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDExIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDI4NGE3Yzg2MGYxLi4yOGI3MmU0Y2YxZiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCkBAIC0xODEsMTIgKzE4MSw2IEBAIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkv KiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQgKi8KICAqLwogc3RhdGlj IGludAlzY2FsZSA9IDE7CiAKLS8qCi0gKiBzY2FsaW5nIGZhY3RvciBhZnRlciB3aGljaCB3ZSBz d2l0Y2ggdG8gbXVsdGlwbGUgdHJhbnNhY3Rpb25zIGR1cmluZwotICogZGF0YSBwb3B1bGF0aW9u IHBoYXNlIG9uIHNlcnZlciBzaWRlCi0gKi8KLXN0YXRpYyBpbnQ2NAlzaW5nbGVfdHhuX3NjYWxl X2xpbWl0ID0gMTsKLQogLyoKICAqIGZpbGxmYWN0b3IuIGZvciBleGFtcGxlLCBmaWxsZmFjdG9y ID0gOTAgd2lsbCB1c2Ugb25seSA5MCBwZXJjZW50CiAgKiBzcGFjZSBkdXJpbmcgaW5zZXJ0cyBh bmQgbGVhdmUgMTAgcGVyY2VudCBmcmVlLgpAQCAtNTIxOSw3ICs1MjEzLDYgQEAgc3RhdGljIHZv aWQKIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogewogCVBRRXhwQnVm ZmVyRGF0YSBzcWw7Ci0JaW50CQkJCWNodW5rID0gKHNjYWxlID49IHNpbmdsZV90eG5fc2NhbGVf bGltaXQpID8gMSA6IHNjYWxlOwogCiAJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEg KHNlcnZlci1zaWRlKS4uLlxuIik7CiAKQEAgLTUyMzYsMTMgKzUyMjksMTMgQEAgaW5pdEdlbmVy YXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAKIAlpbml0UFFFeHBCdWZmZXIoJnNxbCk7 CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpICs9IGNodW5rKSB7CisJZm9yIChpbnQg aSA9IDA7IGkgPCBzY2FsZTsgaSsrKSB7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4i KTsKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdi ZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKIAkJCQkJCSAgInNlbGVjdCBiaWQgKyAxLCAw ICIKLQkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgYmlkIiwgaSwgaSAr IGNodW5rKTsKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgYmlkIiwg aSwgaSArIDEpOwogCQkJCQkJICAvLyJzZWxlY3QgYmlkLCAwICIKIAkJCQkJCSAgLy8iZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsIG5icmFuY2hlcyAqIHNjYWxlKTsKIAkJZXhl Y3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKQEAgLTUyNTEsNyArNTI0NCw3IEBAIGluaXRH ZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCQkJCQkJICAiaW5zZXJ0IGludG8g cGdiZW5jaF90ZWxsZXJzKHRpZCxiaWQsdGJhbGFuY2UpICIKIAkJCQkJCSAgInNlbGVjdCB0aWQg KyAxLCB0aWQgLyAlZCArIDEsIDAgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQs ICVkKSBhcyB0aWQiLAotCQkJCQkJICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIGNodW5r KSAqIG50ZWxsZXJzIC0gMSk7CisJCQkJCQkgIG50ZWxsZXJzLCBpICogbnRlbGxlcnMsIChpICsg MSkgKiBudGVsbGVycyAtIDEpOwogCQkJCQkJICAvLyJzZWxlY3QgdGlkLCAodGlkIC0gMSkgLyAl ZCArIDEsIDAgIgogCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgdGlk IiwgbnRlbGxlcnMsIG50ZWxsZXJzICogc2NhbGUpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwg c3FsLmRhdGEpOwpAQCAtNTI2MCw3ICs1MjUzLDcgQEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNp ZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFp ZCxiaWQsYWJhbGFuY2UsZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8g JWQgKyAxLCAwLCAnJyAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZP Uk1BVCAiLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICBuYWNjb3VudHMsIChp bnQ2NCkgaSAqIG5hY2NvdW50cywgKGludDY0KSAoaSArIGNodW5rKSAqIG5hY2NvdW50cyAtIDEp OworCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2NvdW50cywgKGludDY0KSAoaSAr IDEpICogbmFjY291bnRzIC0gMSk7CiAJCQkJCQkgIC8vInNlbGVjdCBhaWQsIChhaWQgLSAxKSAv ICVkICsgMSwgMCwgJycgIgogCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAiIElO VDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICAvL25hY2NvdW50cywgKGludDY0KSBuYWNj b3VudHMgKiBzY2FsZSk7Ci0tIAoyLjQzLjAKCkZyb20gYzU2NTljZjQ3NGVjMjczYzA1NzY2OGYz MGE0ZjQzNWZkMDJmMmRhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWly b25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFN1biwgOSBOb3YgMjAyNSAyMDoz ODozNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMDMvMjZdIE5vIG5lZWQgdG8ga2VlcCBvbGQg Y29kZSBpbiBjb21tZW50cwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNyAtLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCAyOGI3 MmU0Y2YxZi4uOTc4OTVhYTllZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTIzNiw4ICs1MjM2LDYgQEAg aW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNlcnQg aW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgogCQkJCQkJICAic2VsZWN0IGJp ZCArIDEsIDAgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQi LCBpLCBpICsgMSk7Ci0JCQkJCQkgIC8vInNlbGVjdCBiaWQsIDAgIgotCQkJCQkJICAvLyJmcm9t IGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgYmlkIiwgbmJyYW5jaGVzICogc2NhbGUpOwogCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZz cWwsCkBAIC01MjQ1LDggKzUyNDMsNiBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nv bm4gKmNvbikKIAkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEsIDAgIgogCQkJ CQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAogCQkJCQkJICBudGVs bGVycywgaSAqIG50ZWxsZXJzLCAoaSArIDEpICogbnRlbGxlcnMgLSAxKTsKLQkJCQkJCSAgLy8i c2VsZWN0IHRpZCwgKHRpZCAtIDEpIC8gJWQgKyAxLCAwICIKLQkJCQkJCSAgLy8iZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwgJWQpIGFzIHRpZCIsIG50ZWxsZXJzLCBudGVsbGVycyAqIHNjYWxlKTsK IAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKIAogCQlwcmludGZQUUV4cEJ1ZmZl cigmc3FsLApAQCAtNTI1NCw5ICs1MjUwLDYgQEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUo UEdjb25uICpjb24pCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAn JyAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiIElO VDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5h Y2NvdW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7Ci0JCQkJCQkgIC8vInNl bGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycgIgotCQkJCQkJICAvLyJmcm9tIGdl bmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICAvL25h Y2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQo Y29uLCBzcWwuZGF0YSk7CiAKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKLS0g CjIuNDMuMAoKRnJvbSBlNDdiNTJkZGYyMzU5M2RhZDkzNzVlZjUzNTZmZDQxZDA2MjFlZGUzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92 QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAyNSAxOTowNjo0OCArMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjkgMDQvMjZdIEFkZGluZyBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24gdmlh IHVubmVzdAoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMTk5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTgyIGluc2VydGlv bnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDk3ODk1YWE5ZWRmLi42NWQ3 N2NkZWZlYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0xNjEsNyArMTYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg c29ja2V0X3NldAogICogc29tZSBjb25maWd1cmFibGUgcGFyYW1ldGVycyAqLwogCiAjZGVmaW5l IERFRkFVTFRfSU5JVF9TVEVQUyAiZHRndnAiCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLwotI2Rl ZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnR3ZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCisj ZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAq LwogCiAjZGVmaW5lIExPR19TVEVQX1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1l c3NhZ2VzICovCiAjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCTEwCQkvKiBkZWZhdWx0IG54YWN0cyAq LwpAQCAtMTcxLDYgKzE3MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAjZGVmaW5l IE1JTl9aSVBGSUFOX1BBUkFNCQkxLjAwMQkvKiBtaW5pbXVtIHBhcmFtZXRlciBmb3IgemlwZmlh biAqLwogI2RlZmluZSBNQVhfWklQRklBTl9QQVJBTQkJMTAwMC4wCS8qIG1heGltdW0gcGFyYW1l dGVyIGZvciB6aXBmaWFuICovCiAKKy8qIG9yaWdpbmFsIHNpbmdsZSB0cmFuc2FjdGlvbiBzZXJ2 ZXItc2lkZSBtZXRob2QgKi8KKyNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX09SSUdJTkFMCSdHJwkv KiB1c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAq LworLyogJ29uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8K KyNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VM RUNUIGdlbmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9UWVBF X0lOU0VSVF9VTk5FU1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdl bmVyYXRlIGRhdGEgKi8KKwogc3RhdGljIGludAlueGFjdHMgPSAwOwkJCS8qIG51bWJlciBvZiB0 cmFuc2FjdGlvbnMgcGVyIGNsaWVudCAqLwogc3RhdGljIGludAlkdXJhdGlvbiA9IDA7CQkvKiBk dXJhdGlvbiBpbiBzZWNvbmRzICovCiBzdGF0aWMgaW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hl biB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVuZGVyIC1UICovCkBAIC0xODEsNiArMTg3LDEx IEBAIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8g c2Vjb25kcywgdW5kZXIgLVQgKi8KICAqLwogc3RhdGljIGludAlzY2FsZSA9IDE7CiAKKy8qCisg KgorICovCitzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/JzsKKwogLyoKICAq IGZpbGxmYWN0b3IuIGZvciBleGFtcGxlLCBmaWxsZmFjdG9yID0gOTAgd2lsbCB1c2Ugb25seSA5 MCBwZXJjZW50CiAgKiBzcGFjZSBkdXJpbmcgaW5zZXJ0cyBhbmQgbGVhdmUgMTAgcGVyY2VudCBm cmVlLgpAQCAtOTE0LDcgKzkyNSw5IEBAIHVzYWdlKHZvaWQpCiAJCSAgICIgICAgICAgICAgICAg ICAgICAgICAgICAgICBkOiBkcm9wIGFueSBleGlzdGluZyBwZ2JlbmNoIHRhYmxlc1xuIgogCQkg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogY3JlYXRlIHRoZSB0YWJsZXMgdXNlZCBi eSB0aGUgc3RhbmRhcmQgcGdiZW5jaCBzY2VuYXJpb1xuIgogCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgZzogZ2VuZXJhdGUgZGF0YSwgY2xpZW50LXNpZGVcbiIKLQkJICAgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgIEc6IGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRlXG4iCisJ CSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBHOiBnZW5lcmF0ZSBkYXRhLCBzZXJ2ZXIt c2lkZSBpbiBzaW5nbGUgdHJhbnNhY3Rpb25cbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGk6ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiAg IHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdFxuIgog CQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogaW52b2tlIFZBQ1VVTSBvbiB0aGUg c3RhbmRhcmQgdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBwOiBj cmVhdGUgcHJpbWFyeSBrZXkgaW5kZXhlcyBvbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCiAJCSAg ICIgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiBjcmVhdGUgZm9yZWlnbiBrZXlzIGJldHdl ZW4gdGhlIHN0YW5kYXJkIHRhYmxlc1xuIgpAQCAtNTIwMywxOCArNTIxNiwxNiBAQCBpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIH0KIAogLyoKLSAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlcgotICoK LSAqIEFzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCB0aGUgY2xpZW50LXNpZGUgZGF0YSBnZW5lcmF0 aW9uLCB0aGUgZmlsbGVyCi0gKiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVMTCBpbiBwZ2JlbmNoX2Jy YW5jaGVzIGFuZCBwZ2JlbmNoX3RlbGxlcnMsCi0gKiBhbmQgaXMgYSBibGFuay1wYWRkZWQgc3Ry aW5nIGluIHBnYmVuY2hfYWNjb3VudHMuCisgKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAu LiBTRUxFQ1QgLi4gRlJPTSBnZW5lcmF0ZV9zZXJpZXMKKyAqIHdob2xlIGRhdGFzZXQgaW4gc2lu Z2xlIHRyYW5zYWN0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0R2VuZXJhdGVEYXRhU2VydmVy U2lkZShQR2Nvbm4gKmNvbikKK2dlbmVyYXRlRGF0YUluc2VydFNpbmdsZVRYTihQR2Nvbm4gKmNv bikKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOwogCi0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0 aW5nIGRhdGEgKHNlcnZlci1zaWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJ2aWEgSU5T RVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gc2luZ2xlIFRYTlxuIik7CisKIAog CS8qCiAJICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0 aGUgYmFja2VuZCdzCkBAIC01MjI1LDMxICs1MjM2LDEzNiBAQCBpbml0R2VuZXJhdGVEYXRhU2Vy dmVyU2lkZShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwog CWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCisJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOworCisJ cHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFu Y2hlcyhiaWQsIGJiYWxhbmNlKSAiCisJCQkJCSAgInNlbGVjdCBiaWQsIDAgIgorCQkJCQkgICJm cm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkiLCBzY2FsZSAqIG5icmFuY2hlcyk7CisJZXhlY3V0 ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJ CQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsIGJpZCwgdGJhbGFuY2UpICIK KwkJCQkJICAic2VsZWN0IHRpZCArIDEsIHRpZCAvICVkICsgMSwgMCAiCisJCQkJCSAgImZyb20g Z2VuZXJhdGVfc2VyaWVzKDAsICVkKSBhcyB0aWQiLAorCQkJCQkgIG50ZWxsZXJzLCAoc2NhbGUg KiBudGVsbGVycykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJ cHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9hY2Nv dW50cyhhaWQsIGJpZCwgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAgImZpbGxlcikgIgorCQkJCQkg ICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAnJyAiCisJCQkJCSAgImZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDAsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCSAgbmFjY291 bnRzLCAoaW50NjQpIChzY2FsZSAqIG5hY2NvdW50cykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50 KGNvbiwgc3FsLmRhdGEpOworCiAJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAor CXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKK30KKworCisvKgorICogR2VuZXJhdGluZyBkYXRhIHZp YSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00gZ2VuZXJhdGVfc2VyaWVzCisgKiBPbmUgdHJhbnNh Y3Rpb24gcGVyICdzY2FsZScKKyAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRlRGF0YUluc2VydFNl cmllcyhQR2Nvbm4gKmNvbikKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCisJZnByaW50Zihz dGRlcnIsICJ2aWEgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gbXVsdGlw bGUgVFhOKHMpXG4iKTsKKwogCWluaXRQUUV4cEJ1ZmZlcigmc3FsKTsKIAotCWZvciAoaW50IGkg PSAwOyBpIDwgc2NhbGU7IGkrKykgeworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsK KworCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCisJaW5pdFRydW5jYXRlVGFibGVz KGNvbik7CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCisJZm9yIChpbnQg aSA9IDA7IGkgPCBzY2FsZTsgaSsrKQorCXsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdp biIpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNlcnQgaW50byBw Z2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgotCQkJCQkJICAic2VsZWN0IGJpZCArIDEs IDAgIgotCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQiLCBpLCBp ICsgMSk7CisJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFu Y2UpICIKKwkJCQkJCSAgInZhbHVlcyglZCwgMCkiLCBpICsgMSk7CiAJCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAg Imluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsYmlkLHRiYWxhbmNlKSAiCisJCQkJCQkg ICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlkLCBiaWQsIHRiYWxhbmNlKSAiCiAJCQkJ CQkgICJzZWxlY3QgdGlkICsgMSwgdGlkIC8gJWQgKyAxLCAwICIKIAkJCQkJCSAgImZyb20gZ2Vu ZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgdGlkIiwKIAkJCQkJCSAgbnRlbGxlcnMsIGkgKiBudGVs bGVycywgKGkgKyAxKSAqIG50ZWxsZXJzIC0gMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBz cWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgImluc2VydCBp bnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAg Imluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsIGFiYWxhbmNlLCAiCisJCQkJ CQkJCQkgICAiZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAx LCAwLCAnJyAiCi0JCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAi LCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkg aSAqIG5hY2NvdW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCQkJCQkg ICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiCisJCQkJCQkJCUlOVDY0 X0ZPUk1BVCAiKSBhcyBhaWQiLAorCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2Nv dW50cywKKwkJCQkJCSAgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJj b21taXQiKTsKKwl9CisKKwl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisKKy8qCisgKiBHZW5l cmF0aW5nIGRhdGEgdmlhIElOU0VSVCAuLiBTRUxFQ1QgLi4gRlJPTSB1bm5lc3QKKyAqIE9uZSB0 cmFuc2FjdGlvbiBwZXIgJ3NjYWxlJworICovCitzdGF0aWMgdm9pZAorZ2VuZXJhdGVEYXRhSW5z ZXJ0VW5uZXN0KFBHY29ubiAqY29uKQoreworCVBRRXhwQnVmZmVyRGF0YSBzcWw7CisKKwlmcHJp bnRmKHN0ZGVyciwgInZpYSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdC4uLlxuIik7CisKKwlpbml0 UFFFeHBCdWZmZXIoJnNxbCk7CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CisK KwkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLworCWluaXRUcnVuY2F0ZVRhYmxlcyhj b24pOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCWZvciAoaW50IHMg PSAwOyBzIDwgc2NhbGU7IHMrKykKKwl7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4i KTsKKworCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdi ZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKKwkJCQkJCSAgInZhbHVlcyglZCwgMCkiLCBz ICsgMSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJpbnRmUFFF eHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQs IGJpZCwgdGJhbGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3QoYXJyYXlfYWdnKHMuaSBv cmRlciBieSBzLmkpKSBhcyB0aWQsICIKKwkJCQkJCQkJICAiJWQgYXMgYmlkLCAwIGFzIHRiYWxh bmNlICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgcyhpKSIsCisJ CQkJCQkgIHMgKyAxLCBzICogbnRlbGxlcnMgKyAxLCAocyArIDEpICogbnRlbGxlcnMpOworCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZz cWwsCisJCQkJCQkgICJ3aXRoIGRhdGEgYXMgKCIKKwkJCQkJCSAgIiAgIHNlbGVjdCBnZW5lcmF0 ZV9zZXJpZXMoIiBJTlQ2NF9GT1JNQVQgIiwgIgorCQkJCQkJCSAgSU5UNjRfRk9STUFUICIpIGFz IGkpICIKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsICIK KwkJCQkJCQkJCSAgImFiYWxhbmNlLCBmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3Qo YWlkKSwgdW5uZXN0KGJpZCksIDAgYXMgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAiJycgYXMgZmls bGVyICIKKwkJCQkJCSAgImZyb20gKHNlbGVjdCBhcnJheV9hZ2coaSsxKSBhaWQsICIKKwkJCQkJ CQkJCSAgICJhcnJheV9hZ2coaS8lZCArIDEpIGJpZCBmcm9tIGRhdGEpIiwKKwkJCQkJCSAgKGlu dDY0KSBzICogbmFjY291bnRzICsgMSwKKwkJCQkJCSAgKGludDY0KSAocyArIDEpICogbmFjY291 bnRzLCBuYWNjb3VudHMpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJ CWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CkBAIC01MjU4LDYgKzUzNzQsMzIgQEAg aW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJdGVybVBRRXhwQnVmZmVy KCZzcWwpOwogfQogCisvKgorICogRmlsbCB0aGUgc3RhbmRhcmQgdGFibGVzIHdpdGggc29tZSBk YXRhIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVyCisgKgorICogQXMgYWxyZWFkeSB0aGUgY2FzZSB3 aXRoIHRoZSBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24sIHRoZSBmaWxsZXIKKyAqIGNvbHVt biBkZWZhdWx0cyB0byBOVUxMIGluIHBnYmVuY2hfYnJhbmNoZXMgYW5kIHBnYmVuY2hfdGVsbGVy cywKKyAqIGFuZCBpcyBhIGJsYW5rLXBhZGRlZCBzdHJpbmcgaW4gcGdiZW5jaF9hY2NvdW50cy4K KyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29u KQoreworCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkgIik7 CisKKwlzd2l0Y2ggKGRhdGFfZ2VuZXJhdGlvbl90eXBlKQorCXsKKwkJY2FzZSBHRU5fVFlQRV9J TlNFUlRfT1JJR0lOQUw6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oY29uKTsKKwkJ CWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9TRVJJRVM6CisJCQlnZW5lcmF0ZURhdGFJ bnNlcnRTZXJpZXMoY29uKTsKKwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9VTk5F U1Q6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoY29uKTsKKwkJCWJyZWFrOworCX0KK30K KwogLyoKICAqIEludm9rZSB2YWN1dW0gb24gdGhlIHN0YW5kYXJkIHRhYmxlcwogICovCkBAIC01 MzQxLDYgKzU0ODMsOCBAQCBpbml0Q3JlYXRlRktleXMoUEdjb25uICpjb24pCiBzdGF0aWMgdm9p ZAogY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIHsKKwljaGFy CWRhdGFfaW5pdF90eXBlID0gMDsKKwogCWlmIChpbml0aWFsaXplX3N0ZXBzWzBdID09ICdcMCcp CiAJCXBnX2ZhdGFsKCJubyBpbml0aWFsaXphdGlvbiBzdGVwcyBzcGVjaWZpZWQiKTsKIApAQCAt NTM1Miw3ICs1NDk2LDI2IEBAIGNoZWNrSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVf c3RlcHMpCiAJCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJBbGxvd2VkIHN0ZXAgY2hhcmFjdGVycyBh cmU6IFwiIiBBTExfSU5JVF9TVEVQUyAiXCIuIik7CiAJCQlleGl0KDEpOwogCQl9CisKKwkJc3dp dGNoICgqc3RlcCkKKwkJeworCQkJY2FzZSAnRyc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJ CQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQkJY2FzZSAnaSc6 CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVw OworCQkJCWJyZWFrOworCQkJY2FzZSAnSSc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlk YXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQl9CiAJfQorCisJaWYg KGRhdGFfaW5pdF90eXBlID4gMSkKKwkJcGdfbG9nX2Vycm9yKCJXQVJOSU5HISBNb3JlIHRoYW4g b25lIHR5cGUgb2Ygc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uIGlzIHJlcXVlc3RlZCIpOwog fQogCiAvKgpAQCAtNTM5NSw2ICs1NTU4LDggQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmlu aXRpYWxpemVfc3RlcHMpCiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJ CQlicmVhazsKIAkJCWNhc2UgJ0cnOgorCQkJY2FzZSAnaSc6CisJCQljYXNlICdJJzoKIAkJCQlv cCA9ICJzZXJ2ZXItc2lkZSBnZW5lcmF0ZSI7CiAJCQkJaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNp ZGUoY29uKTsKIAkJCQlicmVhazsKLS0gCjIuNDMuMAoKRnJvbSA1ZTE4MjdiODg5YjI4M2Y1MDI5 OWNlNmFiMWE3M2Y5ZjU1YTRhODRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3Jp cyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAy NSAyMDowMDo1NiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMDUvMjZdIEZpeGluZyB0eXBvIGlu IHF1ZXJ5CgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAzICsrLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDY1 ZDc3Y2RlZmVhLi4wM2UzN2RmNDQzNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MjQxLDcgKzUyNDEsOCBA QCBnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oUEdjb25uICpjb24pCiAJcHJpbnRmUFFFeHBC dWZmZXIoJnNxbCwKIAkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFuY2hlcyhiaWQsIGJi YWxhbmNlKSAiCiAJCQkJCSAgInNlbGVjdCBiaWQsIDAgIgotCQkJCQkgICJmcm9tIGdlbmVyYXRl X3NlcmllcygxLCAlZCkiLCBzY2FsZSAqIG5icmFuY2hlcyk7CisJCQkJCSAgImZyb20gZ2VuZXJh dGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLAorCQkJCQkgIHNjYWxlICogbmJyYW5jaGVzKTsKIAll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJcHJpbnRmUFFFeHBCdWZmZXIoJnNx bCwKLS0gCjIuNDMuMAoKRnJvbSA3Y2E4NjUyMWZkYTY5MjliOGUwZGUzZmM3N2RjYmI4OTg0MDA5 Yzg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5t aXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxMSBOb3YgMjAyNSAxOTozOTo0NSArMDcwMApT dWJqZWN0OiBbUEFUQ0ggdjkgMDYvMjZdIEFkZGluZyBzdXBwb3J0IGZvciBDT1BZIEJJTkFSWSBt b2RlCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAzOTMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzODEgaW5zZXJ0aW9ucygr KSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMDNlMzdkZjQ0MzQuLjcxYWExZDk0 NzlmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTE2MSw3ICsxNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBzb2Nr ZXRfc2V0CiAgKiBzb21lIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzICovCiAKICNkZWZpbmUgREVG QVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyogZGVmYXVsdCAtSSBzZXR0aW5nICovCi0jZGVmaW5l IEFMTF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLworI2Rl ZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICov CiAKICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNlY29uZHMgYmV0d2VlbiBsb2cgbWVz c2FnZXMgKi8KICNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJCS8qIGRlZmF1bHQgbnhhY3RzICov CkBAIC0xNzYsNiArMTc2LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogLyogJ29uZSB0 cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8KICNkZWZpbmUgR0VO X1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIGdlbmVyYXRl X3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCiAjZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9VTk5F U1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdlbmVyYXRlIGRhdGEg Ki8KKyNkZWZpbmUgR0VOX1RZUEVfQ09QWV9PUklHSU5BTAkJJ2cnIC8qIHVzZSBDT1BZIC4uIEZS T00gU1RESU4gLi4gVEVYVCB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9UWVBFX0NP UFlfQklOQVJZCQknQycgLyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5BUlkgdG8gZ2Vu ZXJhdGUgZGF0YSAqLwogCiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVyIG9mIHRy YW5zYWN0aW9ucyBwZXIgY2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJCS8qIGR1 cmF0aW9uIGluIHNlY29uZHMgKi8KQEAgLTE4OCwxMCArMTkwLDE3IEBAIHN0YXRpYyBpbnQ2NCBl bmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQg Ki8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCiAvKgotICoKKyAqIG1vZGUgb2YgZGF0YSBnZW5l cmF0aW9uIHRvIHVzZQogICovCiBzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/ JzsKIAorLyoKKyAqIENPUFkgRlJPTSBCSU5BUlkgZXhlY3V0aW9uIGJ1ZmZlcgorICovCisjZGVm aW5lIEJJTl9DT1BZX0JVRl9TSVpFCTEwMjQwMAkJCQkvKiBtYXhpbXVtIGJ1ZmZlciBzaXplIGZv ciBDT1BZIEZST00gQklOQVJZICovCitzdGF0aWMgY2hhcgkJKmJpbl9jb3B5X2J1ZmZlciA9IE5V TEw7CQkvKiBidWZmZXIgZm9yIENPUFkgRlJPTSBCSU5BUlkgKi8KK3N0YXRpYyBpbnQzMl90CSBi aW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsJLyogY3VycmVudCBidWZmZXIgc2l6ZSAqLworCiAv KgogICogZmlsbGZhY3Rvci4gZm9yIGV4YW1wbGUsIGZpbGxmYWN0b3IgPSA5MCB3aWxsIHVzZSBv bmx5IDkwIHBlcmNlbnQKICAqIHNwYWNlIGR1cmluZyBpbnNlcnRzIGFuZCBsZWF2ZSAxMCBwZXJj ZW50IGZyZWUuCkBAIC04NjEsNyArODcwLDggQEAgc3RhdGljIGludAl3YWl0X29uX3NvY2tldF9z ZXQoc29ja2V0X3NldCAqc2EsIGludDY0IHVzZWNzKTsKIHN0YXRpYyBib29sIHNvY2tldF9oYXNf aW5wdXQoc29ja2V0X3NldCAqc2EsIGludCBmZCwgaW50IGlkeCk7CiAKIC8qIGNhbGxiYWNrIHVz ZWQgdG8gYnVpbGQgcm93cyBmb3IgQ09QWSBkdXJpbmcgZGF0YSBsb2FkaW5nICovCi10eXBlZGVm IHZvaWQgKCppbml0Um93TWV0aG9kKSAoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIp OwordHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZCkJCShQUUV4cEJ1ZmZlckRhdGEgKnNxbCwg aW50NjQgY3Vycik7Cit0eXBlZGVmIHZvaWQgKCppbml0Um93TWV0aG9kQmluKQkoUEdjb25uICpj b24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpOwogCiAvKiBj YWxsYmFjayBmdW5jdGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBzdGF0aWMgY29uc3QgUHNx bFNjYW5DYWxsYmFja3MgcGdiZW5jaF9jYWxsYmFja3MgPSB7CkBAIC05MjUsNiArOTM1LDcgQEAg dXNhZ2Uodm9pZCkKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IGRyb3AgYW55 IGV4aXN0aW5nIHBnYmVuY2ggdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAg ICAgICB0OiBjcmVhdGUgdGhlIHRhYmxlcyB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBwZ2JlbmNoIHNj ZW5hcmlvXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiBnZW5lcmF0ZSBk YXRhLCBjbGllbnQtc2lkZVxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQzog ICBjbGllbnQtc2lkZSAoc2luZ2xlIFROWCkgQ09QWSAuLiBGUk9NIFNURElOIC4uIEJJTkFSWVxu IgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgRzogZ2VuZXJhdGUgZGF0YSwgc2Vy dmVyLXNpZGUgaW4gc2luZ2xlIHRyYW5zYWN0aW9uXG4iCiAJCSAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICBpOiAgIHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VM RUNUIGdlbmVyYXRlX3Nlcmllc1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg STogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3Rc biIKQEAgLTUxOTEsOSArNTIwMiw5IEBAIGluaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAqY29uLCBj b25zdCBjaGFyICp0YWJsZSwgaW50NjQgYmFzZSwKICAqIGEgYmxhbmstcGFkZGVkIHN0cmluZyBp biBwZ2JlbmNoX2FjY291bnRzLgogICovCiBzdGF0aWMgdm9pZAotaW5pdEdlbmVyYXRlRGF0YUNs aWVudFNpZGUoUEdjb25uICpjb24pCitpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoUEdj b25uICpjb24pCiB7Ci0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1z aWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJURVhUIG1vZGUuLi5cbiIpOwogCiAJLyoK IAkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBi YWNrZW5kJ3MKQEAgLTUyMDksMTIgKzUyMjAsMzczIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRT aWRlKFBHY29ubiAqY29uKQogCSAqIGFscmVhZHkgZXhpc3QKIAkgKi8KIAlpbml0UG9wdWxhdGVU YWJsZShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKLQlp bml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBudGVsbGVycywgaW5pdFRl bGxlcik7CisJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgIG50ZWxs ZXJzLCAgaW5pdFRlbGxlcik7CiAJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF9hY2Nv dW50cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVudChjb24s ICJjb21taXQiKTsKIH0KIAorCisvKgorICogRHVtcHMgYmluYXJ5IGJ1ZmZlciB0byBmaWxlIChw dXJlbHkgZm9yIGRlYnVnZ2luZykKKyAqLworc3RhdGljIHZvaWQKK2R1bXBCdWZmZXJUb0ZpbGUo Y2hhciAqZmlsZW5hbWUpCit7CisJRklMRSAqZmlsZV9wdHI7CisJc2l6ZV90IGJ5dGVzX3dyaXR0 ZW47CisKKwlmaWxlX3B0ciA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKKwlpZiAoZmlsZV9wdHIg PT0gTlVMTCkKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBmaWxlICVzXG4i LCBmaWxlbmFtZSk7CisJCXJldHVybjsgLy8gRVhJVF9GQUlMVVJFOworCX0KKworCWJ5dGVzX3dy aXR0ZW4gPSBmd3JpdGUoYmluX2NvcHlfYnVmZmVyLCAxLCBiaW5fY29weV9idWZmZXJfbGVuZ3Ro LCBmaWxlX3B0cik7CisKKwlpZiAoYnl0ZXNfd3JpdHRlbiAhPSBiaW5fY29weV9idWZmZXJfbGVu Z3RoKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciB3cml0aW5nIHRvIGZpbGUgb3IgaW5j b21wbGV0ZSB3cml0ZVxuIik7CisJCWZjbG9zZShmaWxlX3B0cik7CisJCXJldHVybjsgLy8gRVhJ VF9GQUlMVVJFOworCX0KKworCWZjbG9zZShmaWxlX3B0cik7Cit9CisKKy8qCisgKiBTYXZlIGNo YXIgZGF0YSB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckNoYXJEYXRhKGNoYXIg KnNyYywgaW50MzJfdCBsZW4pCit7CisJbWVtY3B5KChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciAr IGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgsIChjaGFyICopIHNyYywgbGVuKTsKKwliaW5fY29weV9i dWZmZXJfbGVuZ3RoICs9IGxlbjsKK30KKworLyoKKyAqIENvbnZlcnRzIHBsYXRmb3JtIGJ5dGUg b3JkZXIgaW50byBuZXR3b3JrIGJ5dGUgb3JkZXIKKyAqIFNQQVJDIGRvZXNuJ3QgcmVxaXJlIHRo YXQKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckRhdGEodm9pZCAqc3JjLCBpbnQzMl90IGxlbikK K3sKKyNpZmRlZiBfX3NwYXJjX18KKwlidWZmZXJDaGFyRGF0YShzcmMsIGxlbik7CisjZWxzZQor CWlmIChsZW4gPT0gMSkKKwkJYnVmZmVyQ2hhckRhdGEoc3JjLCBsZW4pOworCWVsc2UKKwkJZm9y IChpbnQzMl90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisJCXsKKwkJCSgoY2hhciAqKSBiaW5fY29w eV9idWZmZXIgKyBiaW5fY29weV9idWZmZXJfbGVuZ3RoKVtpXSA9CisJCQkJKChjaGFyICopIHNy YylbbGVuIC0gaSAtIDFdOworCQl9CisKKwliaW5fY29weV9idWZmZXJfbGVuZ3RoICs9IGxlbjsK KyNlbmRpZgorfQorCisvKgorICogYWRkcyBjb2x1bW4gY291bnRlcgorICovCitzdGF0aWMgdm9p ZAorYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCit7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAm biwgc2l6ZW9mKG4pKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggTlVMTCB2YWx1ZQor ICovCitzdGF0aWMgdm9pZAorYWRkTnVsbENvbHVtbigpCit7CisJaW50MzJfdCBudWxsID0gLTE7 CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKK30KKworLyoKKyAq IGFkZHMgY29sdW1uIHdpdGggaW50OCB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRkSW50OENv bHVtbihpbnQ4X3QgdmFsdWUpCit7CisJaW50OF90CWRhdGEgPSB2YWx1ZTsKKwlpbnQzMl90CXNp emUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9mKHNp emUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkpOworfQorCisv KgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnQxNiB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRk SW50MTZDb2x1bW4oaW50MTZfdCB2YWx1ZSkKK3sKKwlpbnQxNl90CWRhdGEgPSB2YWx1ZTsKKwlp bnQzMl90CXNpemUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwg c2l6ZW9mKHNpemUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkp OworfQorCisvKgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnRpMzIgdmFsdWUKKyAqLworc3RhdGlj IHZvaWQKK2FkZEludDMyQ29sdW1uKGludDMyX3QgdmFsdWUpCit7CisJaW50MzJfdAlkYXRhID0g dmFsdWU7CisJaW50MzJfdAlzaXplID0gc2l6ZW9mKGRhdGEpOworCWJ1ZmZlckRhdGEoKHZvaWQg KikgJnNpemUsIHNpemVvZihzaXplKSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6 ZW9mKGRhdGEpKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggaW50aTY0IHZhbHVlCisg Ki8KK3N0YXRpYyB2b2lkCithZGRJbnQ2NENvbHVtbihpbnQ2NF90IHZhbHVlKQoreworCWludDY0 X3QJZGF0YSA9IHZhbHVlOworCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKKwlidWZmZXJE YXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckRhdGEoKHZvaWQgKikg JmRhdGEsIHNpemVvZihkYXRhKSk7Cit9CisKKy8qCisgKiBhZGRzIGNvbHVtbiB3aXRoIGNoYXIg dmFsdWUKKyAqLworc3RhdGljIHZvaWQKK2FkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUpCit7CisJ aW50MzJfdAlzaXplID0gc3RybGVuKHZhbHVlKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZzaXpl LCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckNoYXJEYXRhKHZhbHVlLCBzaXplKTsKK30KKworLyoK KyAqIFN0YXJ0cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZST00gQklOQVJZ IHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJpbmFyeUNvcHlIZWFkZXIoUEdjb25u ICpjb24pCit7CisJY2hhciBoZWFkZXJbXSA9IHsnUCcsJ0cnLCdDJywnTycsJ1AnLCdZJywnXG4n LCdcMzc3JywnXHInLCdcbicsJ1wwJywKKwkJCQkJICdcMCcsJ1wwJywnXDAnLCdcMCcsCisJCQkJ CSAnXDAnLCdcMCcsJ1wwJywnXDAnIH07CisKKwlQUXB1dENvcHlEYXRhKGNvbiwgaGVhZGVyLCAx OSk7Cit9CisKKy8qCisgKiBGaW5pc2hlcyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBD T1BZIEZST00gQklOQVJZIHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJpbmFyeUNv cHlUcmFpbGVyKFBHY29ubiAqY29uKQoreworCXN0YXRpYyBjaGFyIHRyYWlsZXJbXSA9IHsgMHhG RiwgMHhGRiB9OworCisJUFFwdXRDb3B5RGF0YShjb24sIHRyYWlsZXIsIDIpOworfQorCisvKgor ICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZlciBvdmVyIG5ldHdvcmsgaWYgbmVlZGVkCisgKi8KK3N0 YXRpYyB2b2lkCitmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50MTZf dCByb3dfbGVuKQoreworCWlmIChiaW5fY29weV9idWZmZXJfbGVuZ3RoICsgcm93X2xlbiA+IEJJ Tl9DT1BZX0JVRl9TSVpFKQorCXsKKwkJLyogZmx1c2ggY3VycmVudCBidWZmZXIgKi8KKwkJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikKKwkJCVBRcHV0Q29weURhdGEo Y29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOwor CQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKKwl9Cit9CisKKy8qCisgKiBTZW5kcyBjdXJy ZW50IGJyYW5jaCByb3cgdG8gYnVmZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QnJhbmNoQmlu YXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFy ZW50KQoreworCS8qCisJICogRWFjaCByb3cgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKKwkg KiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5zCisJICogLSA0IGJ5dGVzIGFzIGxlbmd0 aCBmb3IgZWFjaCBjb2x1bW4KKwkgKi8KKwlpbnQxNl90CW1heF9yb3dfbGVuID0gIDM1ICsgMiAr IDQqMzsgLyogbWF4IHJvdyBzaXplIGlzIDMyICovCisKKwlmbHVzaEJ1ZmZlcihjb24sIHJlcywg bWF4X3Jvd19sZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigyKTsKKworCWFkZEludDMyQ29sdW1u KGN1cnIgKyAxKTsKKwlhZGRJbnQzMkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRzIGN1cnJl bnQgdGVsbGVyIHJvdyB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2luaXRUZWxsZXJCaW5h cnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJl bnQpCit7CisJLyoKKwkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAq IC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKKwkgKiAtIDQgYnl0ZXMgYXMgbGVuZ3Ro IGZvciBlYWNoIGNvbHVtbgorCSAqLworCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgNDAgKyAyICsg NCo0OyAvKiBtYXggcm93IHNpemUgaXMgNDAgKi8KKworCWZsdXNoQnVmZmVyKGNvbiwgcmVzLCBt YXhfcm93X2xlbik7CisKKwlhZGRDb2x1bW5Db3VudGVyKDMpOworCisJYWRkSW50MzJDb2x1bW4o Y3VyciArIDEpOworCWFkZEludDMyQ29sdW1uKGN1cnIgLyBwYXJlbnQgKyAxKTsKKwlhZGRJbnQz MkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRzIGN1cnJlbnQgYWNjb3VudCByb3cgdG8gYnVm ZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK3sKKwkvKgorCSAqIEVh Y2ggcm93IGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CisJICogLSAyIGJ5dGVzIGZvciBudW1i ZXIgb2YgY29sdW1ucworCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVhY2ggY29sdW1uCisJ ICovCisJaW50MTZfdAltYXhfcm93X2xlbiA9IDI1MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6 ZSBpcyAyNTAgZm9yIGludDY0ICovCisKKwlmbHVzaEJ1ZmZlcihjb24sIHJlcywgbWF4X3Jvd19s ZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigzKTsKKworCWlmIChzY2FsZSA8PSBTQ0FMRV8zMkJJ VF9USFJFU0hPTEQpCisJCWFkZEludDMyQ29sdW1uKGN1cnIgKyAxKTsKKwllbHNlCisJCWFkZElu dDY0Q29sdW1uKGN1cnIpOworCisJYWRkSW50MzJDb2x1bW4oY3VyciAvIHBhcmVudCArIDEpOwor CWFkZEludDMyQ29sdW1uKDApOworfQorCisvKgorICogVW5pdmVyc2FsIHdyYXBwZXIgZm9yIHNl bmRpbmcgZGF0YSBpbiBiaW5hcnkgZm9ybWF0CisgKi8KK3N0YXRpYyB2b2lkCitpbml0UG9wdWxh dGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCisJ CQkJCQlpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW4gaW5pdF9yb3cpCit7CisJaW50CQkJ IG47CisJUEdyZXN1bHQJKnJlczsKKwljaGFyCQkgY29weV9zdGF0ZW1lbnRbMjU2XTsKKwljb25z dCBjaGFyCSpjb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gKGZv cm1hdCBiaW5hcnkpIjsKKwlpbnQ2NF90CQkgdG90YWwgPSBiYXNlICogc2NhbGU7CisKKwliaW5f Y29weV9idWZmZXJfbGVuZ3RoID0gMDsKKworCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYx NCBhbmQgbGF0ZXIgZm9yIGFsbCBvcmRpbmFyeSB0YWJsZXMgKi8KKwlpZiAoKFBRc2VydmVyVmVy c2lvbihjb24pID49IDE0MDAwMCkgJiYKKwkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkg PT0gUkVMS0lORF9SRUxBVElPTikKKwkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVz KSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZyZWV6ZSBvbikiOworCisJbiA9IHBn X3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9zdGF0ZW1lbnQpLCBjb3B5X3N0 YXRlbWVudF9mbXQsIHRhYmxlLCBjb2x1bW5zKTsKKwlpZiAobiA+PSBzaXplb2YoY29weV9zdGF0 ZW1lbnQpKQorCQlwZ19mYXRhbCgiaW52YWxpZCBidWZmZXIgc2l6ZTogbXVzdCBiZSBhdCBsZWFz dCAlZCBjaGFyYWN0ZXJzIGxvbmciLCBuKTsKKwllbHNlIGlmIChuID09IC0xKQorCQlwZ19mYXRh bCgiaW52YWxpZCBmb3JtYXQgc3RyaW5nIik7CisKKwlyZXMgPSBQUWV4ZWMoY29uLCBjb3B5X3N0 YXRlbWVudCk7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX0lOKQor CQlwZ19mYXRhbCgidW5leHBlY3RlZCBjb3B5IGluIHJlc3VsdDogJXMiLCBQUWVycm9yTWVzc2Fn ZShjb24pKTsKKwlQUWNsZWFyKHJlcyk7CisKKworCXNlbmRCaW5hcnlDb3B5SGVhZGVyKGNvbik7 CisKKwlmb3IgKGludDY0X3QgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKQorCXsKKwkJaW5pdF9yb3co Y29uLCByZXMsIGksIGJhc2UpOworCX0KKworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBH UkVTX0NPUFlfSU4pCisJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZm ZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOworCWVsc2UKKwkJZnByaW50ZihzdGRlcnIsICJV bmV4cGVjdGVkIG1vZGUgJWQgaW5zdGVhZCBvZiAlZFxuIiwgUFFyZXN1bHRTdGF0dXMocmVzKSwg UEdSRVNfQ09QWV9JTik7CisKKwlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKKworCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCisJeworCQlpZiAoUFFwdXRDb3B5 RW5kKGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLworCQl7CisJCQlyZXMgPSBQUWdldFJl c3VsdChjb24pOworCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9P SykKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFlcnJvck1lc3NhZ2UoY29u KSk7CisJCQlQUWNsZWFyKHJlcyk7CisJCX0KKwkJZWxzZQorCQkJZnByaW50ZihzdGRlcnIsICJF cnJvcjogJXNcbiIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOworCX0KK30KKworLyoKKyAqIFdyYXBw ZXIgZm9yIGJpbmFyeSBkYXRhIGxvYWQKKyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5lcmF0ZURh dGFDbGllbnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQoreworCisJZnByaW50ZihzdGRlcnIsICJC SU5BUlkgbW9kZS4uLlxuIik7CisKKwliaW5fY29weV9idWZmZXIgPSBwZ19tYWxsb2MoQklOX0NP UFlfQlVGX1NJWkUpOworCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOworCisJLyoKKwkgKiB3 ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBiYWNrZW5k J3MKKwkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucworCSAqLworCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCAiYmVnaW4iKTsKKworCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCisJ aW5pdFRydW5jYXRlVGFibGVzKGNvbik7CisKKwlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24s ICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCW5icmFuY2hlcywg aW5pdEJyYW5jaEJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5j aF90ZWxsZXJzIiwgICJ0aWQsIGJpZCwgdGJhbGFuY2UiLAorCQkJCQkJCW50ZWxsZXJzLCAgaW5p dFRlbGxlckJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9h Y2NvdW50cyIsICJhaWQsIGJpZCwgYWJhbGFuY2UiLAorCQkJCQkJCW5hY2NvdW50cywgaW5pdEFj Y291bnRCaW5hcnkpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCXBn X2ZyZWUoYmluX2NvcHlfYnVmZmVyKTsKK30KKworLyoKKyAqIEZpbGwgdGhlIHN0YW5kYXJkIHRh YmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUgY2xpZW50Lgor ICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24p Cit7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1zaWRlKSBpbiAi KTsKKworCXN3aXRjaCAoZGF0YV9nZW5lcmF0aW9uX3R5cGUpCisJeworCQljYXNlIEdFTl9UWVBF X0NPUFlfT1JJR0lOQUw6CisJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoY29uKTsK KwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0NPUFlfQklOQVJZOgorCQkJaW5pdEdlbmVyYXRl RGF0YUNsaWVudFNpZGVCaW5hcnkoY29uKTsKKwkJCWJyZWFrOworCX0KK30KKwogLyoKICAqIEdl bmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVDVCAuLiBGUk9NIGdlbmVyYXRlX3Nlcmll cwogICogd2hvbGUgZGF0YXNldCBpbiBzaW5nbGUgdHJhbnNhY3Rpb24KQEAgLTU1MDAsMTQgKzU4 NzIsMTAgQEAgY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIAog CQlzd2l0Y2ggKCpzdGVwKQogCQl7CisJCQljYXNlICdnJzoKKwkJCWNhc2UgJ0MnOgogCQkJY2Fz ZSAnRyc6Ci0JCQkJZGF0YV9pbml0X3R5cGUrKzsKLQkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9 ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJY2FzZSAnaSc6Ci0JCQkJZGF0YV9pbml0X3R5cGUrKzsK LQkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJY2FzZSAn SSc6CiAJCQkJZGF0YV9pbml0X3R5cGUrKzsKIAkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpz dGVwOwpAQCAtNTU1NSw2ICs1OTIzLDcgQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRp YWxpemVfc3RlcHMpCiAJCQkJaW5pdENyZWF0ZVRhYmxlcyhjb24pOwogCQkJCWJyZWFrOwogCQkJ Y2FzZSAnZyc6CisJCQljYXNlICdDJzoKIAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5lcmF0ZSI7 CiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsKLS0gCjIu NDMuMAoKRnJvbSA0YWEwYWMwNTc2NWVkZjZiNWYwYzEzZTE4YWM2NzcyODdjZTc4MjA2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IEZyaSwgMTQgTm92IDIwMjUgMjI6NDA6MzkgKzA5MDAKU3ViamVjdDogW1BBVENI IHY5IDA3LzI2XSBwZ2JlbmNoOiBGaXggYXNzZXJ0aW9uIGZhaWx1cmUgd2l0aCBtdWx0aXBsZQog XHN5bmNwaXBlbGluZSBpbiBwaXBlbGluZSBtb2RlLgoKUHJldmlvdXNseSwgd2hlbiBwZ2JlbmNo IHJhbiBhIGN1c3RvbSBzY3JpcHQgdGhhdCB0cmlnZ2VyZWQgcmV0cmlhYmxlIGVycm9ycwooZS5n LiwgZGVhZGxvY2tzKSBmb2xsb3dlZCBieSBtdWx0aXBsZSBcc3luY3BpcGVsaW5lIGNvbW1hbmRz IGluIHBpcGVsaW5lIG1vZGUsCnRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWx1cmUgY291bGQg b2NjdXI6CgogICAgQXNzZXJ0aW9uIGZhaWxlZDogKHJlcyA9PSAoKHZvaWQqKTApKSwgZnVuY3Rp b24gZGlzY2FyZFVudGlsU3luYywgZmlsZSBwZ2JlbmNoLmMsIGxpbmUgMzU5NC4KClRoZSBpc3N1 ZSB3YXMgdGhhdCBkaXNjYXJkVW50aWxTeW5jKCkgYXNzdW1lZCBhIHBpcGVsaW5lIHN5bmMgcmVz dWx0CihQR1JFU19QSVBFTElORV9TWU5DKSB3b3VsZCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgZWl0 aGVyIGFub3RoZXIgc3luYyByZXN1bHQKb3IgTlVMTC4gVGhpcyBhc3N1bXB0aW9uIHdhcyBpbmNv cnJlY3Q6IHdoZW4gbXVsdGlwbGUgc3luYyByZXF1ZXN0cyB3ZXJlIHNlbnQsCmEgc3luYyByZXN1 bHQgY291bGQgaW5zdGVhZCBiZSBmb2xsb3dlZCBieSBhbm90aGVyIHJlc3VsdCB0eXBlLiBJbiBz dWNoIGNhc2VzLApkaXNjYXJkVW50aWxTeW5jKCkgbWlzaGFuZGxlZCB0aGUgcmVzdWx0cywgbGVh ZGluZyB0byB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUuCgpUaGlzIGNvbW1pdCBmaXhlcyB0aGUgaXNz dWUgYnkgbWFraW5nIGRpc2NhcmRVbnRpbFN5bmMoKSBjb3JyZWN0bHkgaGFuZGxlIGNhc2VzCndo ZXJlIGEgcGlwZWxpbmUgc3luYyByZXN1bHQgaXMgZm9sbG93ZWQgYnkgb3RoZXIgcmVzdWx0IHR5 cGVzLiBJdCBub3cgY29udGludWVzCmRpc2NhcmRpbmcgcmVzdWx0cyB1bnRpbCBhbm90aGVyIHBp cGVsaW5lIHN5bmMgZm9sbG93ZWQgYnkgTlVMTCBpcyByZWFjaGVkLgoKQmFja3BhdGNoZWQgdG8g djE3LCB3aGVyZSBzdXBwb3J0IGZvciBcc3luY3BpcGVsaW5lIGNvbW1hbmQgaW4gcGdiZW5jaCB3 YXMKaW50cm9kdWNlZC4KCkF1dGhvcjogWXVnbyBOYWdhdGEgPG5hZ2F0YUBzcmFvc3MuY28uanA+ ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KUmV2aWV3ZWQtYnk6IEZ1amlp IE1hc2FvIDxtYXNhby5mdWppaUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vMjAyNTExMTExMDUwMzcuZjNmYzU1NDYxNmJjMTk4OTFmOTI2YzViQHNyYW9zcy5jby5q cApCYWNrcGF0Y2gtdGhyb3VnaDogMTcKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMjggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggZDg3 NjRiYTZmZTAuLmE0MjUxNzZlY2RjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTM1NjMsMTQgKzM1NjMsMTgg QEAgZG9SZXRyeShDU3RhdGUgKnN0LCBwZ190aW1lX3VzZWNfdCAqbm93KQogfQogCiAvKgotICog UmVhZCByZXN1bHRzIGFuZCBkaXNjYXJkIGl0IHVudGlsIGEgc3luYyBwb2ludC4KKyAqIFJlYWQg YW5kIGRpc2NhcmQgcmVzdWx0cyB1bnRpbCB0aGUgbGFzdCBzeW5jIHBvaW50LgogICovCiBzdGF0 aWMgaW50CiBkaXNjYXJkVW50aWxTeW5jKENTdGF0ZSAqc3QpCiB7CiAJYm9vbAkJcmVjZWl2ZWRf c3luYyA9IGZhbHNlOwogCi0JLyogc2VuZCBhIHN5bmMgKi8KKwkvKgorCSAqIFNlbmQgYSBTeW5j IG1lc3NhZ2UgdG8gZW5zdXJlIGF0IGxlYXN0IG9uZSBQR1JFU19QSVBFTElORV9TWU5DIGlzCisJ ICogcmVjZWl2ZWQgYW5kIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3AsIHNpbmNlIGFsbCBlYXJs aWVyIG9uZXMgbWF5IGhhdmUKKwkgKiBhbHJlYWR5IGJlZW4gcmVjZWl2ZWQuCisJICovCiAJaWYg KCFQUXBpcGVsaW5lU3luYyhzdC0+Y29uKSkKIAl7CiAJCXBnX2xvZ19lcnJvcigiY2xpZW50ICVk IGFib3J0ZWQ6IGZhaWxlZCB0byBzZW5kIGEgcGlwZWxpbmUgc3luYyIsCkBAIC0zNTc4LDI5ICsz NTgyLDQyIEBAIGRpc2NhcmRVbnRpbFN5bmMoQ1N0YXRlICpzdCkKIAkJcmV0dXJuIDA7CiAJfQog Ci0JLyogcmVjZWl2ZSBQR1JFU19QSVBFTElORV9TWU5DIGFuZCBudWxsIGZvbGxvd2luZyBpdCAq LworCS8qCisJICogQ29udGludWUgcmVhZGluZyByZXN1bHRzIHVudGlsIHRoZSBsYXN0IHN5bmMg cG9pbnQsIGkuZS4sIHVudGlsCisJICogcmVhY2hpbmcgbnVsbCBqdXN0IGFmdGVyIFBHUkVTX1BJ UEVMSU5FX1NZTkMuCisJICovCiAJZm9yICg7OykKIAl7CiAJCVBHcmVzdWx0ICAgKnJlcyA9IFBR Z2V0UmVzdWx0KHN0LT5jb24pOwogCisJCWlmIChQUXN0YXR1cyhzdC0+Y29uKSA9PSBDT05ORUNU SU9OX0JBRCkKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjbGllbnQgJWQgYWJvcnRlZCB3aGlsZSBy b2xsaW5nIGJhY2sgdGhlIHRyYW5zYWN0aW9uIGFmdGVyIGFuIGVycm9yOyBwZXJoYXBzIHRoZSBi YWNrZW5kIGRpZWQgd2hpbGUgcHJvY2Vzc2luZyIsCisJCQkJCQkgc3QtPmlkKTsKKwkJCVBRY2xl YXIocmVzKTsKKwkJCXJldHVybiAwOworCQl9CisKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykg PT0gUEdSRVNfUElQRUxJTkVfU1lOQykKIAkJCXJlY2VpdmVkX3N5bmMgPSB0cnVlOwotCQllbHNl IGlmIChyZWNlaXZlZF9zeW5jKQorCQllbHNlIGlmIChyZWNlaXZlZF9zeW5jICYmIHJlcyA9PSBO VUxMKQogCQl7Ci0JCQkvKgotCQkJICogUEdSRVNfUElQRUxJTkVfU1lOQyBtdXN0IGJlIGZvbGxv d2VkIGJ5IGFub3RoZXIKLQkJCSAqIFBHUkVTX1BJUEVMSU5FX1NZTkMgb3IgTlVMTDsgb3RoZXJ3 aXNlLCBhc3NlcnQgZmFpbHVyZS4KLQkJCSAqLwotCQkJQXNzZXJ0KHJlcyA9PSBOVUxMKTsKLQog CQkJLyoKIAkJCSAqIFJlc2V0IG9uZ29pbmcgc3luYyBjb3VudCB0byAwIHNpbmNlIGFsbCBQR1JF U19QSVBFTElORV9TWU5DCiAJCQkgKiByZXN1bHRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuCiAJCQkg Ki8KIAkJCXN0LT5udW1fc3luY3MgPSAwOwotCQkJUFFjbGVhcihyZXMpOwogCQkJYnJlYWs7CiAJ CX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgYSBQR1JFU19QSVBFTElORV9TWU5DIGlz IGZvbGxvd2VkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFuCisJCQkgKiBQR1JFU19QSVBFTElORV9T WU5DIG9yIE5VTEwsIGFub3RoZXIgUEdSRVNfUElQRUxJTkVfU1lOQyB3aWxsCisJCQkgKiBhcHBl YXIgbGF0ZXIuIFJlc2V0IHJlY2VpdmVkX3N5bmMgdG8gZmFsc2UgdG8gd2FpdCBmb3IgaXQuCisJ CQkgKi8KKwkJCXJlY2VpdmVkX3N5bmMgPSBmYWxzZTsKKwkJfQogCQlQUWNsZWFyKHJlcyk7CiAJ fQogCi0tIAoyLjQzLjAKCkZyb20gOWM0ZjE5MDU1NTk3ZTlhZGIyNWU2NWMyYWE4YmVkZjIwYTA5 ZTEzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMu bWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjEgTm92IDIwMjUgMTk6MDU6NTggKzA3MDAK U3ViamVjdDogW1BBVENIIHY5IDA4LzI2XSBTZXR0aW5nIGVtcHR5IHN0cmluZyBhcyBkZWZhdWx0 IHZhbHVlIGluIGZpbGxlcgogY29sdW1uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMg fCAxNiArKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDk2N2Y2Y2U2OTg0Li4wM2I1ZTVjMjhmMCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCkBAIC00OTg1LDI2ICs0OTg1LDI2IEBAIGluaXRDcmVhdGVUYWJsZXMoUEdj b25uICpjb24pCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBkZGxpbmZvIERETHNbXSA9IHsKIAkJewog CQkJInBnYmVuY2hfaGlzdG9yeSIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCAgICBpbnQsZGVs dGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikiLAotCQkJInRpZCBpbnQsYmlk IGludCxhaWQgYmlnaW50LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIp IiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkICAgIGludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0 YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlk IGJpZ2ludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0 ICcnIiwKIAkJCTAKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfdGVsbGVycyIsCi0JCQkidGlkIGlu dCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkiLAotCQkJInRp ZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwKKwkJ CSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBk ZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZp bGxlciBjaGFyKDg0KSBkZWZhdWx0ICcnIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hf YWNjb3VudHMiLAotCQkJImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQs ZmlsbGVyIGNoYXIoODQpIiwKLQkJCSJhaWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFu Y2UgaW50LGZpbGxlciBjaGFyKDg0KSIsCisJCQkiYWlkICAgIGludCBub3QgbnVsbCxiaWQgaW50 LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCisJCQkiYWlkIGJpZ2lu dCBub3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn JyIsCiAJCQkxCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJCSJiaWQgaW50 IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkiLAotCQkJImJpZCBpbnQgbm90 IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSIsCisJCQkiYmlkIGludCBub3QgbnVs bCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRlZmF1bHQgJyciLAorCQkJImJpZCBpbnQg bm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSBkZWZhdWx0ICcnIiwKIAkJCTEK IAkJfQogCX07Ci0tIAoyLjQzLjAKCkZyb20gMmFhYmFhNTJkZmZkYjc4ZmJlZmFlZjk1MTYzODgx YzE1ZTE4ZWYyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSGVpa2tpIExpbm5ha2Fu Z2FzIDxoZWlra2kubGlubmFrYW5nYXNAaWtpLmZpPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDE1 OjAzOjExICswMjAwClN1YmplY3Q6IFtQQVRDSCB2OSAwOS8yNl0gVXNlIHN0cnRvaTY0KCkgaW4g cGdiZW5jaCwgcmVwbGFjaW5nIGl0cyBvcGVuLWNvZGVkCiBpbXBsZW1lbnRhdGlvbgoKTWFrZXMg dGhlIGNvZGUgYSBsaXR0bGUgc2ltcGxlci4KClRoZSBvbGQgaW1wbGVtZW50YXRpb24gYWNjZXB0 ZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYnV0IHRoYXQgd2FzCnVubmVjZXNzYXJ5LiBGaXJzdGx5 LCBpdHMgc2libGluZyBmdW5jdGlvbiBmb3IgcGFyc2luZyBkZWNpbWFscywKc3RydG9kb3VibGUo KSwgZG9lcyBub3QgYWNjZXB0IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFNlY29uZGx5LCBub25lIG9m CnRoZSBjYWxsZXJzIGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB0 byBpdC4KCkluIHRoZSBwYXNzaW5nLCBjaGVjayBzcGVjaWZpY2FsbHkgZm9yIEVSQU5HRSBiZWZv cmUgcHJpbnRpbmcgdGhlICJvdXQKb2YgcmFuZ2UiIGVycm9yLiBPbiBzb21lIHN5c3RlbXMsIHN0 cnRvdWwoKSBhbmQgc3RydG9kKCkgcmV0dXJuIEVJTlZBTApvbiBhbiBlbXB0eSBvciBhbGwtc3Bh Y2VzIHN0cmluZywgYW5kICJpbnZhbGlkIGlucHV0IHN5bnRheCIgaXMgbW9yZQphcHByb3ByaWF0 ZSBmb3IgdGhhdCB0aGFuICJvdXQgb2YgcmFuZ2UiLiBGb3IgdGhlIGV4aXN0aW5nCnN0cnRvZG91 YmxlKCkgZnVuY3Rpb24gdGhpcyBpcyBwdXJlbHkgYWNhZGVtaWNhbCBiZWNhdXNlIGl0J3MgbmV2 ZXIKY2FsbGVkIHdpdGggZXJyb3JPSz09ZmFsc2UsIGJ1dCBsZXQncyBiZSB0aWR5LiAoUGVyaGFw cyB3ZSBzaG91bGQKcmVtb3ZlIHRoZSBkZWFkIGNvZGVwYXRocyBhbHRvZ2V0aGVyLCBidXQgSSds bCBsZWF2ZSB0aGF0IGZvciBhbm90aGVyCmRheS4pCgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGku ZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFl1ZWZlaSBTaGkgPHNoaXl1ZWZlaTEw MDRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTmVpbCBDaGVuIDxjYXJwZW50ZXIubmFpbC5jekBn bWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvODYxZGQ1YmQtZjJjOS00ZmY1LThhYTAtZjgyYmRiNzVlYzFmQGlraS5maQotLS0KIHNyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA4MyArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2Jl bmNoL3BnYmVuY2guYwppbmRleCBhNDI1MTc2ZWNkYy4uNjg3NzRhNTllZmQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwpAQCAtOTgyLDEzICs5ODIsMTcgQEAgdXNhZ2Uodm9pZCkKIAkJICAgcHJvZ25hbWUsIHByb2du YW1lLCBQQUNLQUdFX0JVR1JFUE9SVCwgUEFDS0FHRV9OQU1FLCBQQUNLQUdFX1VSTCk7CiB9CiAK LS8qIHJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSskIiAqLworLyoK KyAqIFJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSskIgorICoKKyAq IFRoaXMgc2hvdWxkIGFncmVlIHdpdGggc3RydG9pbnQ2NCgpIG9uIHdoYXQncyBhY2NlcHRlZCwg aWdub3Jpbmcgb3ZlcmZsb3dzLgorICovCiBzdGF0aWMgYm9vbAogaXNfYW5faW50KGNvbnN0IGNo YXIgKnN0cikKIHsKIAljb25zdCBjaGFyICpwdHIgPSBzdHI7CiAKLQkvKiBza2lwIGxlYWRpbmcg c3BhY2VzOyBjYXN0IGlzIGNvbnNpc3RlbnQgd2l0aCBzdHJ0b2ludDY0ICovCisJLyogc2tpcCBs ZWFkaW5nIHNwYWNlcyAqLwogCXdoaWxlICgqcHRyICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIp ICpwdHIpKQogCQlwdHIrKzsKIApAQCAtMTAxMiw5ICsxMDE2LDYgQEAgaXNfYW5faW50KGNvbnN0 IGNoYXIgKnN0cikKIC8qCiAgKiBzdHJ0b2ludDY0IC0tIGNvbnZlcnQgYSBzdHJpbmcgdG8gNjQt Yml0IGludGVnZXIKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2xpZ2h0bHkgbW9kaWZpZWQg dmVyc2lvbiBvZiBwZ19zdHJ0b2ludDY0KCkgZnJvbQotICogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L251bXV0aWxzLmMuCi0gKgogICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgY29u dmVyc2lvbiB3b3JrZWQsIGFuZCBpZiBzbwogICogIipyZXN1bHQiIGlzIHNldCB0byB0aGUgcmVz dWx0LgogICoKQEAgLTEwMjMsNzEgKzEwMjQsMjUgQEAgaXNfYW5faW50KGNvbnN0IGNoYXIgKnN0 cikKIGJvb2wKIHN0cnRvaW50NjQoY29uc3QgY2hhciAqc3RyLCBib29sIGVycm9yT0ssIGludDY0 ICpyZXN1bHQpCiB7Ci0JY29uc3QgY2hhciAqcHRyID0gc3RyOwotCWludDY0CQl0bXAgPSAwOwot CWJvb2wJCW5lZyA9IGZhbHNlOwotCi0JLyoKLQkgKiBEbyBvdXIgb3duIHNjYW4sIHJhdGhlciB0 aGFuIHJlbHlpbmcgb24gc3NjYW5mIHdoaWNoIG1pZ2h0IGJlIGJyb2tlbgotCSAqIGZvciBsb25n IGxvbmcuCi0JICoKLQkgKiBBcyBJTlQ2NF9NSU4gY2FuJ3QgYmUgc3RvcmVkIGFzIGEgcG9zaXRp dmUgNjQgYml0IGludGVnZXIsIGFjY3VtdWxhdGUKLQkgKiB2YWx1ZSBhcyBhIG5lZ2F0aXZlIG51 bWJlci4KLQkgKi8KLQotCS8qIHNraXAgbGVhZGluZyBzcGFjZXMgKi8KLQl3aGlsZSAoKnB0ciAm JiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKLQkJcHRyKys7Ci0KLQkvKiBoYW5kbGUg c2lnbiAqLwotCWlmICgqcHRyID09ICctJykKLQl7Ci0JCXB0cisrOwotCQluZWcgPSB0cnVlOwot CX0KLQllbHNlIGlmICgqcHRyID09ICcrJykKLQkJcHRyKys7CisJY2hhcgkgICAqZW5kOwogCi0J LyogcmVxdWlyZSBhdCBsZWFzdCBvbmUgZGlnaXQgKi8KLQlpZiAodW5saWtlbHkoIWlzZGlnaXQo KHVuc2lnbmVkIGNoYXIpICpwdHIpKSkKLQkJZ290byBpbnZhbGlkX3N5bnRheDsKKwllcnJubyA9 IDA7CisJKnJlc3VsdCA9IHN0cnRvaTY0KHN0ciwgJmVuZCwgMTApOwogCi0JLyogcHJvY2VzcyBk aWdpdHMgKi8KLQl3aGlsZSAoKnB0ciAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkK KwlpZiAodW5saWtlbHkoZXJybm8gPT0gRVJBTkdFKSkKIAl7Ci0JCWludDgJCWRpZ2l0ID0gKCpw dHIrKyAtICcwJyk7Ci0KLQkJaWYgKHVubGlrZWx5KHBnX211bF9zNjRfb3ZlcmZsb3codG1wLCAx MCwgJnRtcCkpIHx8Ci0JCQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRtcCwgZGlnaXQs ICZ0bXApKSkKLQkJCWdvdG8gb3V0X29mX3JhbmdlOworCQlpZiAoIWVycm9yT0spCisJCQlwZ19s b2dfZXJyb3IoInZhbHVlIFwiJXNcIiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHR5cGUgYmlnaW50Iiwg c3RyKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIGFsbG93IHRyYWlsaW5nIHdoaXRlc3Bh Y2UsIGJ1dCBub3Qgb3RoZXIgdHJhaWxpbmcgY2hhcnMgKi8KLQl3aGlsZSAoKnB0ciAhPSAnXDAn ICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQotCQlwdHIrKzsKLQotCWlmICh1bmxp a2VseSgqcHRyICE9ICdcMCcpKQotCQlnb3RvIGludmFsaWRfc3ludGF4OwotCi0JaWYgKCFuZWcp CisJaWYgKHVubGlrZWx5KGVycm5vICE9IDAgfHwgZW5kID09IHN0ciB8fCAqZW5kICE9ICdcMCcp KQogCXsKLQkJaWYgKHVubGlrZWx5KHRtcCA9PSBQR19JTlQ2NF9NSU4pKQotCQkJZ290byBvdXRf b2ZfcmFuZ2U7Ci0JCXRtcCA9IC10bXA7CisJCWlmICghZXJyb3JPSykKKwkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIiLCBzdHIpOwor CQlyZXR1cm4gZmFsc2U7CiAJfQotCi0JKnJlc3VsdCA9IHRtcDsKIAlyZXR1cm4gdHJ1ZTsKLQot b3V0X29mX3JhbmdlOgotCWlmICghZXJyb3JPSykKLQkJcGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVz XCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGJpZ2ludCIsIHN0cik7Ci0JcmV0dXJuIGZhbHNl OwotCi1pbnZhbGlkX3N5bnRheDoKLQlpZiAoIWVycm9yT0spCi0JCXBnX2xvZ19lcnJvcigiaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIiLCBzdHIpOwotCXJldHVy biBmYWxzZTsKIH0KIAogLyogY29udmVydCBzdHJpbmcgdG8gZG91YmxlLCBkZXRlY3Rpbmcgb3Zl cmZsb3dzL3VuZGVyZmxvd3MgKi8KQEAgLTEwOTksMTQgKzEwNTQsMTQgQEAgc3RydG9kb3VibGUo Y29uc3QgY2hhciAqc3RyLCBib29sIGVycm9yT0ssIGRvdWJsZSAqZHYpCiAJZXJybm8gPSAwOwog CSpkdiA9IHN0cnRvZChzdHIsICZlbmQpOwogCi0JaWYgKHVubGlrZWx5KGVycm5vICE9IDApKQor CWlmICh1bmxpa2VseShlcnJubyA9PSBFUkFOR0UpKQogCXsKIAkJaWYgKCFlcnJvck9LKQogCQkJ cGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGRvdWJs ZSIsIHN0cik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAodW5saWtlbHkoZW5kID09IHN0 ciB8fCAqZW5kICE9ICdcMCcpKQorCWlmICh1bmxpa2VseShlcnJubyAhPSAwIHx8IGVuZCA9PSBz dHIgfHwgKmVuZCAhPSAnXDAnKSkKIAl7CiAJCWlmICghZXJyb3JPSykKIAkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgZG91YmxlOiBcIiVzXCIiLCBzdHIpOwot LSAKMi40My4wCgpGcm9tIGRjYjg1ZDI2ZjgxMzJlYWFmOWQwOTZlODE0YjliZGE0OWRiN2Q0Nzgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9u b3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDIwOjA2OjI0ICswNzAwClN1Ympl Y3Q6IFtQQVRDSCB2OSAxMC8yNl0gU3dpdGNoaW5nIENPUFkgRlJPTSBCSU5BUlkgdGkgcnVuIGlu IG11bHRpcGxlCiB0cmFuc2FjdGlvbnMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8 IDI3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE2IGluc2Vy dGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDAzYjVlNWMyOGYwLi42 Yjg5MDA3YTYzYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01NDk2LDIwICs1NDk2LDIwIEBAIGluaXRBY2Nv dW50QmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMy X3QgcGFyZW50KQogICovCiBzdGF0aWMgdm9pZAogaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdj b25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAotCQkJCQkJaW50NjRfdCBiYXNl LCBpbml0Um93TWV0aG9kQmluIGluaXRfcm93KQorCQkJCQkJaW50IGNvdW50ZXIsIGludDY0X3Qg YmFzZSwgaW5pdFJvd01ldGhvZEJpbiBpbml0X3JvdykKIHsKIAlpbnQJCQkgbjsKIAlQR3Jlc3Vs dAkqcmVzOwogCWNoYXIJCSBjb3B5X3N0YXRlbWVudFsyNTZdOwogCWNvbnN0IGNoYXIJKmNvcHlf c3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiAoZm9ybWF0IGJpbmFyeSki OwotCWludDY0X3QJCSB0b3RhbCA9IGJhc2UgKiBzY2FsZTsKKwlpbnQ2NF90CQkgc3RhcnQgPSBi YXNlICogY291bnRlcjsKIAogCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOwogCiAJLyogVXNl IENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciBmb3IgYWxsIG9yZGluYXJ5IHRhYmxl cyAqLwogCWlmICgoUFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKSAmJgogCQlnZXRfdGFi bGVfcmVsa2luZChjb24sIHRhYmxlKSA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQljb3B5X3N0YXRl bWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gd2l0aCAoZm9ybWF0IGJpbmFyeSwg ZnJlZXplIG9uKSI7CisJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBz dGRpbiB3aXRoIChmb3JtYXQgYmluYXJ5KSI7CiAKIAluID0gcGdfc25wcmludGYoY29weV9zdGF0 ZW1lbnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNvcHlfc3RhdGVtZW50X2ZtdCwgdGFibGUs IGNvbHVtbnMpOwogCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVudCkpCkBAIC01NTI2LDcg KzU1MjYsNyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFi bGUsIGNoYXIgKmNvbHVtbnMsCiAKIAlzZW5kQmluYXJ5Q29weUhlYWRlcihjb24pOwogCi0JZm9y IChpbnQ2NF90IGkgPSAwOyBpIDwgdG90YWw7IGkrKykKKwlmb3IgKGludDY0X3QgaSA9IHN0YXJ0 OyBpIDwgc3RhcnQgKyBiYXNlOyBpKyspCiAJewogCQlpbml0X3Jvdyhjb24sIHJlcywgaSwgYmFz ZSk7CiAJfQpAQCAtNTU3MywxNSArNTU3MywyMCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lk ZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwog CWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCi0JaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29u LCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKLQkJCQkJCQluYnJhbmNoZXMs IGluaXRCcmFuY2hCaW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVu Y2hfdGVsbGVycyIsICAidGlkLCBiaWQsIHRiYWxhbmNlIiwKLQkJCQkJCQludGVsbGVycywgIGlu aXRUZWxsZXJCaW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hf YWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKLQkJCQkJCQluYWNjb3VudHMsIGluaXRB Y2NvdW50QmluYXJ5KTsKLQogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAKKwlm b3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpKyspCisJeworCQlpbml0UG9wdWxhdGVUYWJsZUJp bmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCQlp LCBuYnJhbmNoZXMsIGluaXRCcmFuY2hCaW5hcnkpOworCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFy eShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0YmFsYW5jZSIsCisJCQkJCQkJ CWksIG50ZWxsZXJzLCAgaW5pdFRlbGxlckJpbmFyeSk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQmlu YXJ5KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKKwkJCQkJ CQkJaSwgbmFjY291bnRzLCBpbml0QWNjb3VudEJpbmFyeSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKKwl9CisKIAlwZ19mcmVlKGJpbl9jb3B5X2J1ZmZlcik7CiB9CiAK LS0gCjIuNDMuMAoKRnJvbSBiOGUyODg4MTIyNTIzNGZkMDBiNTUyMzViYzYwZmFkMmRjNjBiNTQ0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJv bm92QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAyMiBOb3YgMjAyNSAxNzowNjowMCArMDcwMApTdWJq ZWN0OiBbUEFUQ0ggdjkgMTEvMjZdIEFkZGluZyB0ZXN0cyBmb3IgbmV3IG1vZGVzIG9mIGRhdGEg Z2VuZXJhdGlvbgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAg ICAgICB8IDIxICsrKystLS0tCiBzcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3Nl cnZlci5wbCB8IDUyICsrKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU2IGlu c2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDZiODkwMDdhNjNi Li5kZDRlNWQ1ZTA1NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0xNjQsNyArMTY0LDcgQEAgdHlwZWRlZiBz dHJ1Y3Qgc29ja2V0X3NldAogI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyog YWxsIHBvc3NpYmxlIHN0ZXBzICovCiAKICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNl Y29uZHMgYmV0d2VlbiBsb2cgbWVzc2FnZXMgKi8KLSNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJ CS8qIGRlZmF1bHQgbnhhY3RzICovCisjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCQkxMAkvKiBkZWZh dWx0IG54YWN0cyAqLwogCiAjZGVmaW5lIE1JTl9HQVVTU0lBTl9QQVJBTQkJMi4wIC8qIG1pbmlt dW0gcGFyYW1ldGVyIGZvciBnYXVzcyAqLwogCkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIGlu dAlzY2FsZSA9IDE7CiAvKgogICogbW9kZSBvZiBkYXRhIGdlbmVyYXRpb24gdG8gdXNlCiAgKi8K LXN0YXRpYyBjaGFyCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gJz8nOworc3RhdGljIGNoYXIJZGF0 YV9nZW5lcmF0aW9uX3R5cGUgPSBHRU5fVFlQRV9DT1BZX09SSUdJTkFMOwogCiAvKgogICogQ09Q WSBGUk9NIEJJTkFSWSBleGVjdXRpb24gYnVmZmVyCkBAIC00OTg1LDI2ICs0OTg1LDI2IEBAIGlu aXRDcmVhdGVUYWJsZXMoUEdjb25uICpjb24pCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBkZGxpbmZv IERETHNbXSA9IHsKIAkJewogCQkJInBnYmVuY2hfaGlzdG9yeSIsCi0JCQkidGlkIGludCxiaWQg aW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikg ZGVmYXVsdCAnJyIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCBiaWdpbnQsZGVsdGEgaW50LG10 aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnJyIsCisJCQkidGlkIGludCxi aWQgaW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigy MikgZGVmYXVsdCAnPyciLAorCQkJInRpZCBpbnQsYmlkIGludCxhaWQgYmlnaW50LGRlbHRhIGlu dCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJz8nIiwKIAkJCTAKIAkJ fSwKIAkJewogCQkJInBnYmVuY2hfdGVsbGVycyIsCi0JCQkidGlkIGludCBub3QgbnVsbCxiaWQg aW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCi0JCQkidGlkIGlu dCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn JyIsCisJCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hh cig4NCkiLAorCQkJInRpZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVy IGNoYXIoODQpIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfYWNjb3VudHMiLAotCQkJ ImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQp IGRlZmF1bHQgJyciLAotCQkJImFpZCBiaWdpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBp bnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAorCQkJImFpZCAgICBpbnQgbm90IG51bGws YmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJz8nIiwKKwkJCSJh aWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBk ZWZhdWx0ICc/JyIsCiAJCQkxCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJ CSJiaWQgaW50IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkgZGVmYXVsdCAn JyIsCi0JCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRl ZmF1bHQgJyciLAorCQkJImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFy KDg4KSIsCisJCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgp IiwKIAkJCTEKIAkJfQogCX07CkBAIC03ODM3LDYgKzc4MzcsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJCX0KIAkJfQogCisJCWNoZWNrSW5pdFN0ZXBzKGluaXRpYWxpemVfc3Rl cHMpOwogCQlydW5Jbml0U3RlcHMoaW5pdGlhbGl6ZV9zdGVwcyk7CiAJCWV4aXQoMCk7CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwg Yi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCA1ODFl OWFmNzkwNy4uYTM3NzA0OGVhZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9w Z2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNo X3dpdGhfc2VydmVyLnBsCkBAIC0xNiwyNSArMTYsMzAgQEAgc3ViIGNoZWNrX2RhdGFfc3RhdGUK IAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAx OwogCW15ICRub2RlID0gc2hpZnQ7CiAJbXkgJHR5cGUgPSBzaGlmdDsKKwlteSAkc3FsX3Jlc3Vs dDsKIAotCW15ICRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCQkn U0VMRUNUIGNvdW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJF IGZpbGxlciBJUyBOVUxMIExJTUlUIDEwOycKLQkpOwotCWlzKCRzcWxfcmVzdWx0LCAnMCcsCi0J CSIkdHlwZTogZmlsbGVyIGNvbHVtbiBvZiBwZ2JlbmNoX2FjY291bnRzIGhhcyBubyBOVUxMIGRh dGEiKTsKIAkkc3FsX3Jlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NF TEVDVCBjb3VudCgqKSBBUyBudWxsX2NvdW50IEZST00gcGdiZW5jaF9icmFuY2hlcyBXSEVSRSBm aWxsZXIgSVMgTlVMTDsnCiAJKTsKIAlpcygkc3FsX3Jlc3VsdCwgJzEnLAogCQkiJHR5cGU6IGZp bGxlciBjb2x1bW4gb2YgcGdiZW5jaF9icmFuY2hlcyBoYXMgb25seSBOVUxMIGRhdGEiKTsKKwog CSRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQknU0VMRUNUIGNv dW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX3RlbGxlcnMgV0hFUkUgZmlsbGVyIElT IE5VTEw7JwogCSk7CiAJaXMoJHNxbF9yZXN1bHQsICcxMCcsCiAJCSIkdHlwZTogZmlsbGVyIGNv bHVtbiBvZiBwZ2JlbmNoX3RlbGxlcnMgaGFzIG9ubHkgTlVMTCBkYXRhIik7CisKKwkkc3FsX3Jl c3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJJ1NFTEVDVCBjb3VudCgqKSBB UyBudWxsX2NvdW50IEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBmaWxsZXIgSVMgTlVMTCBM SU1JVCAxMDsnCisJKTsKKwlpcygkc3FsX3Jlc3VsdCwgJzAnLAorCQkiJHR5cGU6IGZpbGxlciBj b2x1bW4gb2YgcGdiZW5jaF9hY2NvdW50cyBoYXMgbm8gTlVMTCBkYXRhIik7CisKIAkkc3FsX3Jl c3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NFTEVDVCBjb3VudCgqKSBB UyBkYXRhX2NvdW50IEZST00gcGdiZW5jaF9oaXN0b3J5OycpOwotCWlzKCRzcWxfcmVzdWx0LCAn MCcsICIkdHlwZTogcGdiZW5jaF9oaXN0b3J5IGhhcyBubyBkYXRhIik7CisJaXMoJHNxbF9yZXN1 bHQsICcwJywKKwkJIiR0eXBlOiBwZ2JlbmNoX2hpc3RvcnkgaGFzIG5vIGRhdGEiKTsKIH0KIAog IyBzdGFydCBhIHBnYmVuY2ggc3BlY2lmaWMgc2VydmVyCkBAIC0xMjUsNyArMTMwLDcgQEAgJG5v ZGUtPnBnYmVuY2goCiAJJ3BnYmVuY2ggc2NhbGUgMSBpbml0aWFsaXphdGlvbicsKTsKIAogIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCi1jaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUnKTsKK2NoZWNrX2RhdGFfc3RhdGUoJG5v ZGUsICdjbGllbnQtc2lkZSAoZGVmYXVsdCBvcHRpb25zKScpOwogCiAjIEFnYWluLCB3aXRoIGFs bCBwb3NzaWJsZSBvcHRpb25zCiAkbm9kZS0+cGdiZW5jaCgKQEAgLTE0Myw2ICsxNDgsNyBAQCAk bm9kZS0+cGdiZW5jaCgKIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5j aCBzY2FsZSAxIGluaXRpYWxpemF0aW9uJyk7CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xp ZW50LXNpZGUgKGFsbCBvcHRpb25zKScpOwogCiAjIFRlc3QgaW50ZXJhY3Rpb24gb2YgLS1pbml0 LXN0ZXBzIHdpdGggbGVnYWN5IHN0ZXAtc2VsZWN0aW9uIG9wdGlvbnMKICRub2RlLT5wZ2JlbmNo KApAQCAtMTY0LDYgKzE3MCwzOCBAQCAkbm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0 ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgk bm9kZSwgJ3NlcnZlci1zaWRlJyk7CiAKKyMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uIHdp dGggVU5ORVNUCiskbm9kZS0+cGdiZW5jaCgKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1k dEknLAorCTAsCisJW3Fye14kfV0sCisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJ cXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGVc KX0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0 ZXBzIHNlcnZlci1zaWRlIFVOTkVTVCcpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNl cnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2 ZXItc2lkZSAodW5uZXN0KScpOworCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRo IFVOTkVTVAorJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRD JywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFy e2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlXCl9 LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVw cyBjbGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2 ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50 LXNpZGUgKGJpbmFyeSknKTsKKwogIyBSdW4gYWxsIGJ1aWx0aW4gc2NyaXB0cywgZm9yIGEgZmV3 IHRyYW5zYWN0aW9ucyBlYWNoCiAkbm9kZS0+cGdiZW5jaCgKIAknLS10cmFuc2FjdGlvbnM9NSAt RGZvbz1ibGEgLS1jbGllbnQ9MiAtLXByb3RvY29sPXNpbXBsZSAtLWJ1aWx0aW49dCcKLS0gCjIu NDMuMAoKRnJvbSBiM2YyYmNlMzQyMzJkMjk5YWJjNzY0NGE4NTc5ZjBjZTQ5YzhjOWQ2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdt YWlsLmNvbT4KRGF0ZTogU3VuLCAyMyBOb3YgMjAyNSAxNDowNTo1OSArMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjkgMTIvMjZdIEZpeGluZyBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcHJv Y2VkdXJlcyBieQogcmVtb3Zpbmcgb3IgY29tbWVudGluZyB0aGVtIG91dCBhcyB0aGV5IG1pZ2h0 IGJlIG5lZWRlZCBhIGJpdCBsYXRlcgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MzEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5z ZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMGEzYmEyMWRjYzku LjY4MmRiNjFmZjYxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBi L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUyMDEsNyArNTIwMSw3IEBAIGluaXRHZW5l cmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAogLyoKICAqIER1bXBzIGJpbmFy eSBidWZmZXIgdG8gZmlsZSAocHVyZWx5IGZvciBkZWJ1Z2dpbmcpCi0gKi8KKyAqCiBzdGF0aWMg dm9pZAogZHVtcEJ1ZmZlclRvRmlsZShjaGFyICpmaWxlbmFtZSkKIHsKQEAgLTUyMjYsNiArNTIy Niw3IEBAIGR1bXBCdWZmZXJUb0ZpbGUoY2hhciAqZmlsZW5hbWUpCiAKIAlmY2xvc2UoZmlsZV9w dHIpOwogfQorICovCiAKIC8qCiAgKiBTYXZlIGNoYXIgZGF0YSB0byBidWZmZXIKQEAgLTUyNzEs MzcgKzUyNzIsMTQgQEAgYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCiAKIC8qCiAgKiBhZGRz IGNvbHVtbiB3aXRoIE5VTEwgdmFsdWUKLSAqLworICoKIHN0YXRpYyB2b2lkCiBhZGROdWxsQ29s dW1uKCkKIHsKIAlpbnQzMl90IG51bGwgPSAtMTsKIAlidWZmZXJEYXRhKCh2b2lkICopICZudWxs LCBzaXplb2YobnVsbCkpOwogfQotCi0vKgotICogYWRkcyBjb2x1bW4gd2l0aCBpbnQ4IHZhbHVl CiAgKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQ4Q29sdW1uKGludDhfdCB2YWx1ZSkKLXsKLQlpbnQ4 X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKLQlidWZmZXJE YXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwotCWJ1ZmZlckRhdGEoKHZvaWQgKikg JmRhdGEsIHNpemVvZihkYXRhKSk7Ci19Ci0KLS8qCi0gKiBhZGRzIGNvbHVtbiB3aXRoIGludDE2 IHZhbHVlCi0gKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQxNkNvbHVtbihpbnQxNl90IHZhbHVlKQot ewotCWludDE2X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsK LQlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwotCWJ1ZmZlckRhdGEo KHZvaWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Ci19CiAKIC8qCiAgKiBhZGRzIGNvbHVtbiB3 aXRoIGludGkzMiB2YWx1ZQpAQCAtNTMyOSw3ICs1MzA3LDcgQEAgYWRkSW50NjRDb2x1bW4oaW50 NjRfdCB2YWx1ZSkKIAogLyoKICAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2YWx1ZQotICovCisg Kgogc3RhdGljIHZvaWQKIGFkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUpCiB7CkBAIC01MzM3LDYg KzUzMTUsNyBAQCBhZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQogCWJ1ZmZlckRhdGEoKHZvaWQg KikgJnNpemUsIHNpemVvZihzaXplKSk7CiAJYnVmZmVyQ2hhckRhdGEodmFsdWUsIHNpemUpOwog fQorICovCiAKIC8qCiAgKiBTdGFydHMgY29tbXVuaWNhdGlvbiB3aXRoIHNlcnZlciBmb3IgQ09Q WSBGUk9NIEJJTkFSWSBzdGF0ZW1lbnQKLS0gCjIuNDMuMAoKRnJvbSA5YWI3ZmUzMDJiYTdkZTQw NTkzZTdjYmE4ZWExY2EzYjg3NmMxZWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBC b3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyOSBKYW4g MjAyNiAxOToyMjoxNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMTMvMjZdIE1vdmluZyBQUWNs ZWFyIGNhbGwgdG8gdGhlIGVuZCBvZiBwcm9jZWR1cmUgdG8gYXZvaWQKIGFjY2VzcyB0byBwcmV2 aW91c2x5IHJlbGVhc2VkIG1lbW9yeQoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MjcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0 aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggNjgyZGI2MWZmNjEuLjM2 ODdiNjU4NzFlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3Ny Yy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUzNjMsMTEgKzUzNjMsMTEgQEAgc3RhdGljIHZv aWQKIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3Qg Y3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5n IGV4dHJhIGJ5dGVzOgorCSAqIEVhY2ggcm93IG9mIGJyYW5jaCB0YWJsZSBoYXMgZm9sbG93aW5n IGV4dHJhIGJ5dGVzOgogCSAqIC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKLQkgKiAt IDQgYnl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIGNvbHVtbgorCSAqIC0gNCBieXRlcyBhcyBsZW5n dGggZm9yIGVhY2ggb2YgdGFibGUncyAzIGNvbHVtbnMKIAkgKi8KLQlpbnQxNl90CW1heF9yb3df bGVuID0gIDM1ICsgMiArIDQqMzsgLyogbWF4IHJvdyBzaXplIGlzIDMyICovCisJaW50MTZfdAlt YXhfcm93X2xlbiA9ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLwogCiAJ Zmx1c2hCdWZmZXIoY29uLCByZXMsIG1heF9yb3dfbGVuKTsKIApAQCAtNTM4NCw5ICs1Mzg0LDkg QEAgc3RhdGljIHZvaWQKIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpy ZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBo YXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAqIEVhY2ggcm93IG9mIHRlbGxlcnMgdGFibGUg aGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKIAkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBj b2x1bW5zCi0JICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBjb2x1bW4KKwkgKiAtIDQg Ynl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIG9mIHRhYmxlJ3MgNCBjb2x1bW5zCiAJICovCiAJaW50 MTZfdAltYXhfcm93X2xlbiA9ICA0MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBpcyA0MCAq LwogCkBAIC01NDA2LDkgKzU0MDYsOSBAQCBzdGF0aWMgdm9pZAogaW5pdEFjY291bnRCaW5hcnko UEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQp CiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAqIEVh Y2ggcm93IG9mIGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CiAJICog LSAyIGJ5dGVzIGZvciBudW1iZXIgb2YgY29sdW1ucwotCSAqIC0gNCBieXRlcyBhcyBsZW5ndGgg Zm9yIGVhY2ggY29sdW1uCisJICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBvZiB0YWJs ZSdzIDQgY29sdW1ucwogCSAqLwogCWludDE2X3QJbWF4X3Jvd19sZW4gPSAyNTAgKyAyICsgNCo0 OyAvKiBtYXggcm93IHNpemUgaXMgMjUwIGZvciBpbnQ2NCAqLwogCkBAIC01NDU1LDExICs1NDU1 LDExIEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwg Y2hhciAqY29sdW1ucywKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlf SU4pCiAJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNvcHkgaW4gcmVzdWx0OiAlcyIsIFBRZXJyb3JN ZXNzYWdlKGNvbikpOwotCVBRY2xlYXIocmVzKTsKIAogCiAJc2VuZEJpbmFyeUNvcHlIZWFkZXIo Y29uKTsKIAorCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgYmFzZTsgaSsr KQogCXsKIAkJaW5pdF9yb3coY29uLCByZXMsIGksIGJhc2UpOwpAQCAtNTQ3MCw4ICs1NDcwLDEw IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hh ciAqY29sdW1ucywKIAllbHNlCiAJCWZwcmludGYoc3RkZXJyLCAiVW5leHBlY3RlZCBtb2RlICVk IGluc3RlYWQgb2YgJWRcbiIsIFBRcmVzdWx0U3RhdHVzKHJlcyksIFBHUkVTX0NPUFlfSU4pOwog CisKIAlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKIAorCiAJaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgPT0gUEdSRVNfQ09QWV9JTikKIAl7CiAJCWlmIChQUXB1dENvcHlFbmQoY29uLCBOVUxM KSA9PSAxKSAvKiBzdWNjZXNzICovCkBAIC01NDg0LDYgKzU0ODYsOCBAQCBpbml0UG9wdWxhdGVU YWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJCWVs c2UKIAkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24p KTsKIAl9CisKKwlQUWNsZWFyKHJlcyk7CiB9CiAKIC8qCkBAIC01NDk5LDggKzU1MDMsOSBAQCBp bml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAliaW5fY29weV9i dWZmZXJfbGVuZ3RoID0gMDsKIAogCS8qCi0JICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRy YW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCi0JICogZGF0YS1sb2FkaW5nIG9wdGlt aXphdGlvbnMKKwkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBtdWx0aXBsZSB0cmFuc2FjdGlvbnMK KwkgKiB0byBtaW5pbWl6ZSBsb2FkIG9uIERCIHNlcnZlciBhbmQgcGVyaGFwcworCSAqIGluIGZ1 dHVyZSBhbGxvdyBsb2FkIGluIHBhcmFsbGVsIHNlc3Npb25zCiAJICovCiAJZXhlY3V0ZVN0YXRl bWVudChjb24sICJiZWdpbiIpOwogCkBAIC01NTExLDYgKzU1MTYsOCBAQCBpbml0R2VuZXJhdGVE YXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAogCWZvciAoaW50IGkgPSAwOyBpIDwg c2NhbGU7IGkrKykKIAl7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKwogCQlp bml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJh bGFuY2UiLAogCQkJCQkJCQlpLCBuYnJhbmNoZXMsIGluaXRCcmFuY2hCaW5hcnkpOwogCQlpbml0 UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0 YmFsYW5jZSIsCi0tIAoyLjQzLjAKCkZyb20gM2Q3YjJjNTNiM2ZhNDViODg0ODM2OWJmYmM0OWEw YzdlNTg1NDMwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8 Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTk6NDc6MjYg KzA3MDAKU3ViamVjdDogW1BBVENIIHY5IDE0LzI2XSBGaXhpbmcgZXJyb3IgYWJvdXQgZnJlZWlu ZyBtZW1vcnkgdHdpY2UKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwppbmRleCAzNjg3YjY1ODcxZS4uNmY0MjQzOGQ5NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTQ2Miw2 ICs1NDYyLDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRh YmxlLCBjaGFyICpjb2x1bW5zLAogCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0 ICsgYmFzZTsgaSsrKQogCXsKKwkJcmVzID0gUFFnZXRSZXN1bHQoY29uKTsKIAkJaW5pdF9yb3co Y29uLCByZXMsIGksIGJhc2UpOwogCX0KIApAQCAtNTQ3Myw3ICs1NDc0LDcgQEAgaW5pdFBvcHVs YXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAog CiAJc2VuZEJpbmFyeUNvcHlUcmFpbGVyKGNvbik7CiAKLQorCXJlcyA9IFBRZ2V0UmVzdWx0KGNv bik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikKIAl7CiAJCWlm IChQUXB1dENvcHlFbmQoY29uLCBOVUxMKSA9PSAxKSAvKiBzdWNjZXNzICovCkBAIC01NDgxLDcg KzU0ODIsNiBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFi bGUsIGNoYXIgKmNvbHVtbnMsCiAJCQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCQkJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJCQlmcHJpbnRmKHN0ZGVy ciwgIkVycm9yOiAlc1xuIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7Ci0JCQlQUWNsZWFyKHJlcyk7 CiAJCX0KIAkJZWxzZQogCQkJZnByaW50ZihzdGRlcnIsICJFcnJvcjogJXNcbiIsIFBRZXJyb3JN ZXNzYWdlKGNvbikpOwotLSAKMi40My4wCgpGcm9tIGE3MWM5MGY1NTZiYTE0MzMzNWQ5NjMxZWJi ZGY5NmI3MTIwYzZkMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9u b3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBUaHUsIDI5IEphbiAyMDI2IDIwOjI0 OjU0ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2OSAxNS8yNl0gRml4aW5nIG1lbW9yeSBsZWFrIGR1 cmluZyBkYXRhIGZsdXNoIGluIENPUFkgQklOQVJZCiB0ZXN0CgotLS0KIHNyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgfCAyNiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDE2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDZm NDI0MzhkOTcwLi44ZWNhNTM3YjcxOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC04NzEsNyArODcxLDcgQEAg c3RhdGljIGJvb2wgc29ja2V0X2hhc19pbnB1dChzb2NrZXRfc2V0ICpzYSwgaW50IGZkLCBpbnQg aWR4KTsKIAogLyogY2FsbGJhY2sgdXNlZCB0byBidWlsZCByb3dzIGZvciBDT1BZIGR1cmluZyBk YXRhIGxvYWRpbmcgKi8KIHR5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2QpCQkoUFFFeHBCdWZm ZXJEYXRhICpzcWwsIGludDY0IGN1cnIpOwotdHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZEJp bikJKFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFy ZW50KTsKK3R5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2RCaW4pCShQR2Nvbm4gKmNvbiwgaW50 NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCk7CiAKIC8qIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3Ig b3VyIGZsZXggbGV4ZXIgKi8KIHN0YXRpYyBjb25zdCBQc3FsU2NhbkNhbGxiYWNrcyBwZ2JlbmNo X2NhbGxiYWNrcyA9IHsKQEAgLTUzNDUsMTMgKzUzNDUsMTggQEAgc2VuZEJpbmFyeUNvcHlUcmFp bGVyKFBHY29ubiAqY29uKQogICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZlciBvdmVyIG5ldHdvcmsg aWYgbmVlZGVkCiAgKi8KIHN0YXRpYyB2b2lkCi1mbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50MTZfdCByb3dfbGVuKQorZmx1c2hCdWZmZXIoUEdjb25uICpjb24sIGlu dDE2X3Qgcm93X2xlbikKIHsKKwlQR3Jlc3VsdCAqcmVzOworCiAJaWYgKGJpbl9jb3B5X2J1ZmZl cl9sZW5ndGggKyByb3dfbGVuID4gQklOX0NPUFlfQlVGX1NJWkUpCiAJeworCQlyZXMgPSBQUWdl dFJlc3VsdChjb24pOwogCQkvKiBmbHVzaCBjdXJyZW50IGJ1ZmZlciAqLwogCQlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSA9PSBQR1JFU19DT1BZX0lOKQogCQkJUFFwdXRDb3B5RGF0YShjb24sIChj aGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CisJCWVsc2UK KwkJCXBnX2ZhdGFsKCJJdCBpcyBOT1QgYSBDT1BZIGNvbW1hbmQgdGhhdCBpcyBjdXJyZW50bHkg cnVubmluZyIpOwogCQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKIAl9CiB9CkBAIC01MzYw LDcgKzUzNjUsNyBAQCBmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50 MTZfdCByb3dfbGVuKQogICogU2VuZHMgY3VycmVudCBicmFuY2ggcm93IHRvIGJ1ZmZlcgogICov CiBzdGF0aWMgdm9pZAotaW5pdEJyYW5jaEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJl cywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK2luaXRCcmFuY2hCaW5hcnkoUEdjb25u ICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKIAkgKiBFYWNoIHJv dyBvZiBicmFuY2ggdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzNjksNyAr NTM3NCw3IEBAIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGlu dDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZfdAltYXhfcm93X2xlbiA9 ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLwogCi0JZmx1c2hCdWZmZXIo Y29uLCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsK IAogCWFkZENvbHVtbkNvdW50ZXIoMik7CiAKQEAgLTUzODEsNyArNTM4Niw3IEBAIGluaXRCcmFu Y2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJf dCBwYXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IHRlbGxlciByb3cgdG8gYnVmZmVyCiAgKi8KIHN0 YXRpYyB2b2lkCi1pbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBp bnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQoraW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNv biwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9m IHRlbGxlcnMgdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzOTAsNyArNTM5 NSw3IEBAIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0 X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZfdAltYXhfcm93X2xlbiA9ICA0 MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBpcyA0MCAqLwogCi0JZmx1c2hCdWZmZXIoY29u LCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsKIAog CWFkZENvbHVtbkNvdW50ZXIoMyk7CiAKQEAgLTU0MDMsNyArNTQwOCw3IEBAIGluaXRUZWxsZXJC aW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBw YXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IGFjY291bnQgcm93IHRvIGJ1ZmZlcgogICovCiBzdGF0 aWMgdm9pZAotaW5pdEFjY291bnRCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGlu dDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCitpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNv biwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9m IGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CkBAIC01NDEyLDcgKzU0 MTcsNyBAQCBpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50 NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIAkgKi8KIAlpbnQxNl90CW1heF9yb3dfbGVuID0g MjUwICsgMiArIDQqNDsgLyogbWF4IHJvdyBzaXplIGlzIDI1MCBmb3IgaW50NjQgKi8KIAotCWZs dXNoQnVmZmVyKGNvbiwgcmVzLCBtYXhfcm93X2xlbik7CisJZmx1c2hCdWZmZXIoY29uLCBtYXhf cm93X2xlbik7CiAKIAlhZGRDb2x1bW5Db3VudGVyKDMpOwogCkBAIC01NDYyLDEwICs1NDY3LDEw IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hh ciAqY29sdW1ucywKIAogCWZvciAoaW50NjRfdCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGJhc2U7 IGkrKykKIAl7Ci0JCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7Ci0JCWluaXRfcm93KGNvbiwgcmVz LCBpLCBiYXNlKTsKKwkJaW5pdF9yb3coY29uLCBpLCBiYXNlKTsKIAl9CiAKKwlyZXMgPSBQUWdl dFJlc3VsdChjb24pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4p CiAJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5 X2J1ZmZlcl9sZW5ndGgpOwogCWVsc2UKQEAgLTU0NzQsNiArNTQ3OSw3IEBAIGluaXRQb3B1bGF0 ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAog CXNlbmRCaW5hcnlDb3B5VHJhaWxlcihjb24pOwogCisKIAlyZXMgPSBQUWdldFJlc3VsdChjb24p OwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCiAJewotLSAKMi40 My4wCgpGcm9tIGE1OTMzZjQwYmUwZjNkNDA4YmI5MjBmMjk2ZmI1MTE5YzNlYzI4ZjQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21h aWwuY29tPgpEYXRlOiBGcmksIDMwIEphbiAyMDI2IDEzOjU5OjM2ICswNzAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxNi8yNl0gRml4aW5nIG1lbW9yeSBsZWFrIHNob3duIGJ5IHZhbGdyaW5kCgotLS0K IHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA2ICsrKysrLQogMSBmaWxlIGNoYW5nZWQsIDUg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDhlY2E1MzdiNzE4 Li40NjZkOTAyM2Q3MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MzU3LDYgKzUzNTcsOCBAQCBmbHVzaEJ1 ZmZlcihQR2Nvbm4gKmNvbiwgaW50MTZfdCByb3dfbGVuKQogCQkJUFFwdXRDb3B5RGF0YShjb24s IChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CiAJCWVs c2UKIAkJCXBnX2ZhdGFsKCJJdCBpcyBOT1QgYSBDT1BZIGNvbW1hbmQgdGhhdCBpcyBjdXJyZW50 bHkgcnVubmluZyIpOworCisJCVBRY2xlYXIocmVzKTsKIAkJYmluX2NvcHlfYnVmZmVyX2xlbmd0 aCA9IDA7CiAJfQogfQpAQCAtNTQ2MCw2ICs1NDYyLDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5h cnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCiAJaWYgKFBRcmVz dWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09QWV9JTikKIAkJcGdfZmF0YWwoInVuZXhwZWN0ZWQg Y29weSBpbiByZXN1bHQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7CisJUFFjbGVhcihyZXMp OwogCiAKIAlzZW5kQmluYXJ5Q29weUhlYWRlcihjb24pOwpAQCAtNTQ3NSw2ICs1NDc4LDcgQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCQlQUXB1dENvcHlEYXRhKGNvbiwgKGNoYXIgKikgYmluX2NvcHlfYnVmZmVyLCBi aW5fY29weV9idWZmZXJfbGVuZ3RoKTsKIAllbHNlCiAJCWZwcmludGYoc3RkZXJyLCAiVW5leHBl Y3RlZCBtb2RlICVkIGluc3RlYWQgb2YgJWRcbiIsIFBRcmVzdWx0U3RhdHVzKHJlcyksIFBHUkVT X0NPUFlfSU4pOworCVBRY2xlYXIocmVzKTsKIAogCiAJc2VuZEJpbmFyeUNvcHlUcmFpbGVyKGNv bik7CkBAIC01NDg1LDYgKzU0ODksNyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4g KmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJewogCQlpZiAoUFFwdXRDb3B5RW5k KGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLwogCQl7CisJCQlQUWNsZWFyKHJlcyk7CiAJ CQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfQ09NTUFORF9PSykKIAkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFl cnJvck1lc3NhZ2UoY29uKSk7CkBAIC01NDkyLDcgKzU0OTcsNiBAQCBpbml0UG9wdWxhdGVUYWJs ZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJCWVsc2UK IAkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24pKTsK IAl9Ci0KIAlQUWNsZWFyKHJlcyk7CiB9CiAKLS0gCjIuNDMuMAoKRnJvbSA2YTMwMzZmODk4YjA1 MGQ1ZTcxZTcwZWFjZWNjZDYzMDAzYWE2NDQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA2IEZl YiAyMDI2IDEzOjUzOjA3ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2OSAxNy8yNl0gQWRkaW5nIGFi aWxpdHkgdG8gc3dpdGNoIGRhdGEgaW5pdCBiZXR3ZWVuIHNpbmdsZQogYW5kIG11bHRpcGxlIHRy YW5zYWN0aW9ucwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAg ICAgICB8IDE5MiArKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdi ZW5jaF93aXRoX3NlcnZlci5wbCB8ICA5MyArKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTcz IGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA0NjZkOTAy M2Q3Mi4uYWY3MWUzNThlNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMK KysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTU5LDkgKzE1OSw4IEBAIHR5cGVk ZWYgc3RydWN0IHNvY2tldF9zZXQKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBzb21lIGNvbmZpZ3VyYWJs ZSBwYXJhbWV0ZXJzICovCi0KLSNkZWZpbmUgREVGQVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyog ZGVmYXVsdCAtSSBzZXR0aW5nICovCi0jZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdDR2lJdnBm IgkvKiBhbGwgcG9zc2libGUgc3RlcHMgKi8KKyNkZWZpbmUgREVGQVVMVF9JTklUX1NURVBTICJk dGd2cCIJCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLworI2RlZmluZSBBTExfSU5JVF9TVEVQUyAi ZHRnTVNjR1V2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQ X1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1lc3NhZ2VzICovCiAjZGVmaW5lIERF RkFVTFRfTlhBQ1RTCQkxMAkvKiBkZWZhdWx0IG54YWN0cyAqLwpAQCAtMTcxLDE0ICsxNzAsMTcg QEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogI2RlZmluZSBNSU5fWklQRklBTl9QQVJBTQkJ MS4wMDEJLyogbWluaW11bSBwYXJhbWV0ZXIgZm9yIHppcGZpYW4gKi8KICNkZWZpbmUgTUFYX1pJ UEZJQU5fUEFSQU0JCTEwMDAuMAkvKiBtYXhpbXVtIHBhcmFtZXRlciBmb3IgemlwZmlhbiAqLwog Ci0vKiBvcmlnaW5hbCBzaW5nbGUgdHJhbnNhY3Rpb24gc2VydmVyLXNpZGUgbWV0aG9kICovCi0j ZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9PUklHSU5BTAknRycJLyogdXNlIElOU0VSVCAuLiBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzIHRvIGdlbmVyYXRlIGRhdGEgKi8KLS8qICdvbmUgdHJhbnNhY3Rp b24gcGVyIHNjYWxlJyBzZXJ2ZXItc2lkZSBtZXRob2RzICovCi0jZGVmaW5lIEdFTl9UWVBFX0lO U0VSVF9TRVJJRVMJCSdpJwkvKiB1c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMg dG8gZ2VuZXJhdGUgZGF0YSAqLwotI2RlZmluZSBHRU5fVFlQRV9JTlNFUlRfVU5ORVNUICAJJ0kn CS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdCB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVm aW5lIEdFTl9UWVBFX0NPUFlfT1JJR0lOQUwJCSdnJyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNURElO IC4uIFRFWFQgdG8gZ2VuZXJhdGUgZGF0YSAqLwotI2RlZmluZSBHRU5fVFlQRV9DT1BZX0JJTkFS WQkJJ0MnIC8qIHVzZSBDT1BZIC4uIEZST00gU1RESU4gLi4gQklOQVJZIHRvIGdlbmVyYXRlIGRh dGEgKi8KLQorLyogc2VydmVyLXNpZGUgbWV0aG9kcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVm aW5lIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfU0VSSUVTCSdHJwkvKiB1c2UgSU5TRVJUIC4u IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklU X1NURVBfR0VOX1RZUEVfSU5TRVJUX1VOTkVTVAknVScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1Qg dW5uZXN0IHRvIGdlbmVyYXRlIGRhdGEgKi8KKy8qIGNsaWVudC1zaWRlIG1ldGhvZHMgdG8gZ2Vu ZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUCQknZycg LyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBURVhUIHRvIGdlbmVyYXRlIGRhdGEgKi8KKyNk ZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZCQknYycgLyogdXNlIENPUFkgLi4g RlJPTSBTVERJTiAuLiBCSU5BUlkgdG8gZ2VuZXJhdGUgZGF0YSAqLworLyogZGF0YSBpbml0IHBz ZXVkbyBzdGVwcyAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfU0lOR0xFX1hBQ1QJCSdT JyAvKiBzd2l0Y2ggdG8gaW5pdCBkYXRhIGFzIHNpbmdsZSB0cmFuc2FjdGlvbiAqLworI2RlZmlu ZSBJTklUX1NURVBfR0VOX1RZUEVfTVVMVElfWEFDVAkJJ00nIC8qIHN3aXRjaCB0byBpbml0IGRh dGEgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25zICovCisKK3N0YXRpYyBib29sIG11bHRpX3hhY3Qg PSBmYWxzZTsJLyogaW5pdCBkYXRhIHR5cGUgKGFzIHNpbmdsZSBvciBtdWx0aXBsZSB0cmFuc2Fj dGlvbnMpICovCiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBwZXIgY2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJCS8qIGR1cmF0aW9u IGluIHNlY29uZHMgKi8KIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0 b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQgKi8KQEAgLTE5Miw3ICsxOTQsNyBAQCBzdGF0 aWMgaW50CXNjYWxlID0gMTsKIC8qCiAgKiBtb2RlIG9mIGRhdGEgZ2VuZXJhdGlvbiB0byB1c2UK ICAqLwotc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSBHRU5fVFlQRV9DT1BZX09S SUdJTkFMOworc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSBJTklUX1NURVBfR0VO X1RZUEVfQ09QWV9URVhUOwogCiAvKgogICogQ09QWSBGUk9NIEJJTkFSWSBleGVjdXRpb24gYnVm ZmVyCkBAIC05MzQsMTEgKzkzNiwxMyBAQCB1c2FnZSh2b2lkKQogCQkgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgcnVuIHNlbGVjdGVkIGluaXRpYWxpemF0aW9uIHN0ZXBzLCBpbiB0aGUg c3BlY2lmaWVkIG9yZGVyXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBk cm9wIGFueSBleGlzdGluZyBwZ2JlbmNoIHRhYmxlc1xuIgogCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgdDogY3JlYXRlIHRoZSB0YWJsZXMgdXNlZCBieSB0aGUgc3RhbmRhcmQgcGdi ZW5jaCBzY2VuYXJpb1xuIgotCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogZ2Vu ZXJhdGUgZGF0YSwgY2xpZW50LXNpZGVcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIEM6ICAgY2xpZW50LXNpZGUgKHNpbmdsZSBUTlgpIENPUFkgLi4gRlJPTSBTVERJTiAuLiBC SU5BUllcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEc6IGdlbmVyYXRlIGRh dGEsIHNlcnZlci1zaWRlIGluIHNpbmdsZSB0cmFuc2FjdGlvblxuIgotCQkgICAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgaTogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJU IC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXNcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIEk6ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1Qg dW5uZXN0XG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBk YXRhLCBjbGllbnQtc2lkZTpcbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZzogICBDT1BZIC4uIEZST00gU1RESU4gLi4gVEVYVFxuIgorCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjOiAgIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5BUllcbiIKKwkJICAg IiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRl OlxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHOiAgIElOU0VSVCAuLiBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFU6ICAgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3RcbiIKKwkJICAgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgIE06IHVzZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW5pdGlhbGl6ZSBk YXRhXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiBpbnZva2UgVkFDVVVN IG9uIHRoZSBzdGFuZGFyZCB0YWJsZXNcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHA6IGNyZWF0ZSBwcmltYXJ5IGtleSBpbmRleGVzIG9uIHRoZSBzdGFuZGFyZCB0YWJsZXNc biIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IGNyZWF0ZSBmb3JlaWduIGtl eXMgYmV0d2VlbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCkBAIC01MDQ5LDggKzUwNTMsOCBAQCBp bml0QWNjb3VudChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKIH0KIAogc3RhdGlj IHZvaWQKLWluaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJsZSwg aW50NjQgYmFzZSwKLQkJCQkgIGluaXRSb3dNZXRob2QgaW5pdF9yb3cpCitpbml0UG9wdWxhdGVU YWJsZVRleHQoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLAorCQkJ CQkgIGluaXRSb3dNZXRob2QgaW5pdF9yb3cpCiB7CiAJaW50CQkJbjsKIAlpbnQ2NAkJazsKQEAg LTUxNzgsNiArNTE4Miw5IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4g KmNvbikKIHsKIAlmcHJpbnRmKHN0ZGVyciwgIlRFWFQgbW9kZS4uLlxuIik7CiAKKwlpZiAobXVs dGlfeGFjdCkKKwkJZnByaW50ZihzdGRlcnIsICJXQVJOSU5HISBNdWx0aXBsZSB0cmFuc2FjdGlv bnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBtb2RlXG4iKTsKKwogCS8qCiAJICogd2UgZG8g YWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCiAJ ICogZGF0YS1sb2FkaW5nIG9wdGltaXphdGlvbnMKQEAgLTUxOTEsOSArNTE5OCw5IEBAIGluaXRH ZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAkgKiBmaWxsIGJyYW5jaGVz LCB0ZWxsZXJzLCBhY2NvdW50cyBpbiB0aGF0IG9yZGVyIGluIGNhc2UgZm9yZWlnbiBrZXlzCiAJ ICogYWxyZWFkeSBleGlzdAogCSAqLwotCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hf YnJhbmNoZXMiLCBuYnJhbmNoZXMsIGluaXRCcmFuY2gpOwotCWluaXRQb3B1bGF0ZVRhYmxlKGNv biwgInBnYmVuY2hfdGVsbGVycyIsICBudGVsbGVycywgIGluaXRUZWxsZXIpOwotCWluaXRQb3B1 bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3VudHMsIGluaXRBY2NvdW50 KTsKKwlpbml0UG9wdWxhdGVUYWJsZVRleHQoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIG5icmFu Y2hlcywgaW5pdEJyYW5jaCk7CisJaW5pdFBvcHVsYXRlVGFibGVUZXh0KGNvbiwgInBnYmVuY2hf dGVsbGVycyIsICBudGVsbGVycywgIGluaXRUZWxsZXIpOworCWluaXRQb3B1bGF0ZVRhYmxlVGV4 dChjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgbmFjY291bnRzLCBpbml0QWNjb3VudCk7CiAKIAll eGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogfQpAQCAtNTQ1MCw3ICs1NDU3LDggQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0ZXIgZm9yIGFs bCBvcmRpbmFyeSB0YWJsZXMgKi8KIAlpZiAoKFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAw MCkgJiYKIAkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkgPT0gUkVMS0lORF9SRUxBVElP TikKLQkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGgg KGZvcm1hdCBiaW5hcnkpIjsKKwkJaWYgKCFtdWx0aV94YWN0KQorCQkJY29weV9zdGF0ZW1lbnRf Zm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZyZWV6 ZSBvbikiOwogCiAJbiA9IHBnX3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9z dGF0ZW1lbnQpLCBjb3B5X3N0YXRlbWVudF9mbXQsIHRhYmxlLCBjb2x1bW5zKTsKIAlpZiAobiA+ PSBzaXplb2YoY29weV9zdGF0ZW1lbnQpKQpAQCAtNTUyMiwxMSArNTUzMCwxMyBAQCBpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5 IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCi0JZXhlY3V0ZVN0 YXRlbWVudChjb24sICJjb21taXQiKTsKKwlpZiAobXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRl bWVudChjb24sICJjb21taXQiKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkrKykK IAl7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKwkJaWYgKG11bHRpX3hhY3Qp CisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CiAKIAkJaW5pdFBvcHVsYXRlVGFi bGVCaW5hcnkoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKIAkJCQkJ CQkJaSwgbmJyYW5jaGVzLCBpbml0QnJhbmNoQmluYXJ5KTsKQEAgLTU1MzUsOSArNTU0NSwxMyBA QCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkJaW5pdFBv cHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsICJhaWQsIGJpZCwgYWJh bGFuY2UiLAogCQkJCQkJCQlpLCBuYWNjb3VudHMsIGluaXRBY2NvdW50QmluYXJ5KTsKIAotCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4 ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAJfQogCisJaWYgKCFtdWx0aV94YWN0KQor CQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCiAJcGdfZnJlZShiaW5fY29weV9i dWZmZXIpOwogfQogCkBAIC01NTQ3LDE0ICs1NTYxLDE1IEBAIGluaXRHZW5lcmF0ZURhdGFDbGll bnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIGluaXRHZW5lcmF0ZURhdGFD bGllbnRTaWRlKFBHY29ubiAqY29uKQogewotCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBk YXRhIChjbGllbnQtc2lkZSkgaW4gIik7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRh dGEgKGNsaWVudC1zaWRlIGFzICVzIHRyYW5zYWN0aW9uJXMpIGluICIsCisJCQltdWx0aV94YWN0 ID8gIm11bHRpcGxlIiA6ICJzaW5nbGUiLCBtdWx0aV94YWN0ID8gInMiIDogIiIpOwogCiAJc3dp dGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKIAl7Ci0JCWNhc2UgR0VOX1RZUEVfQ09QWV9PUklH SU5BTDoKKwkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUOgogCQkJaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGVUZXh0KGNvbik7CiAJCQlicmVhazsKLQkJY2FzZSBHRU5fVFlQRV9D T1BZX0JJTkFSWToKKwkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9CSU5BUlk6CiAJCQlp bml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShjb24pOwogCQkJYnJlYWs7CiAJfQpAQCAt NTU2Miw1OCArNTU3Nyw3IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29u KQogCiAvKgogICogR2VuZXJhdGluZyBkYXRhIHZpYSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00g Z2VuZXJhdGVfc2VyaWVzCi0gKiB3aG9sZSBkYXRhc2V0IGluIHNpbmdsZSB0cmFuc2FjdGlvbgot ICovCi1zdGF0aWMgdm9pZAotZ2VuZXJhdGVEYXRhSW5zZXJ0U2luZ2xlVFhOKFBHY29ubiAqY29u KQotewotCVBRRXhwQnVmZmVyRGF0YSBzcWw7Ci0KLQlmcHJpbnRmKHN0ZGVyciwgInZpYSBJTlNF UlQgLi4gU0VMRUNUIGdlbmVyYXRlX3Nlcmllcy4uLiBpbiBzaW5nbGUgVFhOXG4iKTsKLQotCi0J LyoKLQkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRo ZSBiYWNrZW5kJ3MKLQkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucwotCSAqLwotCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKLQotCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBk YXRhICovCi0JaW5pdFRydW5jYXRlVGFibGVzKGNvbik7Ci0KLQlpbml0UFFFeHBCdWZmZXIoJnNx bCk7Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJpbnNlcnQgaW50byBwZ2Jl bmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFuY2UpICIKLQkJCQkJICAic2VsZWN0IGJpZCwgMCAiCi0J CQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLAotCQkJCQkgIHNjYWxl ICogbmJyYW5jaGVzKTsKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwotCi0JcHJp bnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJz KHRpZCwgYmlkLCB0YmFsYW5jZSkgIgotCQkJCQkgICJzZWxlY3QgdGlkICsgMSwgdGlkIC8gJWQg KyAxLCAwICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMCwgJWQpIGFzIHRpZCIsCi0J CQkJCSAgbnRlbGxlcnMsIChzY2FsZSAqIG50ZWxsZXJzKSAtIDEpOwotCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJp bnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFpZCwgYmlkLCBhYmFsYW5jZSwgIgotCQkJCQkJ CQkgICAiZmlsbGVyKSAiCi0JCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBhaWQgLyAlZCArIDEsIDAs ICcnICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMCwgIiBJTlQ2NF9GT1JNQVQgIikg YXMgYWlkIiwKLQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgKHNjYWxlICogbmFjY291bnRzKSAt IDEpOwotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7Ci0KLQlleGVjdXRlU3RhdGVt ZW50KGNvbiwgImNvbW1pdCIpOwotCi0JdGVybVBRRXhwQnVmZmVyKCZzcWwpOwotfQotCi0KLS8q Ci0gKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAuLiBTRUxFQ1QgLi4gRlJPTSBnZW5lcmF0 ZV9zZXJpZXMKLSAqIE9uZSB0cmFuc2FjdGlvbiBwZXIgJ3NjYWxlJworICogUG9zc2libHkgYXMg Ik9uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUiIGluIG11bHRpLXRyYW5zYWN0aW9uIG1vZGUKICAq Lwogc3RhdGljIHZvaWQKIGdlbmVyYXRlRGF0YUluc2VydFNlcmllcyhQR2Nvbm4gKmNvbikKQEAg LTU2MjksMTEgKzU1OTMsMTMgQEAgZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVzKFBHY29ubiAqY29u KQogCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVz KGNvbik7CiAKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCWlmIChtdWx0aV94 YWN0KQorCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogCiAJZm9yIChpbnQgaSA9 IDA7IGkgPCBzY2FsZTsgaSsrKQogCXsKLQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIp OworCQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsK IAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5j aF9icmFuY2hlcyhiaWQsIGJiYWxhbmNlKSAiCkBAIC01NjU3LDE1ICs1NjIzLDE5IEBAIGdlbmVy YXRlRGF0YUluc2VydFNlcmllcyhQR2Nvbm4gKmNvbikKIAkJCQkJCSAgKGludDY0KSAoaSArIDEp ICogbmFjY291bnRzIC0gMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CiAK LQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwkJaWYgKG11bHRpX3hhY3QpCisJ CQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogCX0KIAorCWlmICghbXVsdGlfeGFj dCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwogCXRlcm1QUUV4cEJ1ZmZl cigmc3FsKTsKIH0KIAogLyoKICAqIEdlbmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVD VCAuLiBGUk9NIHVubmVzdAotICogT25lIHRyYW5zYWN0aW9uIHBlciAnc2NhbGUnCisgKiBQb3Nz aWJseSBhcyAiT25lIHRyYW5zYWN0aW9uIHBlciBzY2FsZSIgaW4gbXVsdGktdGFuc2FjdGlvbiBt b2RlCiAgKi8KIHN0YXRpYyB2b2lkCiBnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoUEdjb25uICpj b24pCkBAIC01NjgxLDExICs1NjUxLDEzIEBAIGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQR2Nv bm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVuY2F0 ZVRhYmxlcyhjb24pOwogCi0JZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwlpZiAo bXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAogCWZvciAo aW50IHMgPSAwOyBzIDwgc2NhbGU7IHMrKykKIAl7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAi YmVnaW4iKTsKKwkJaWYgKG11bHRpX3hhY3QpCisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJl Z2luIik7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKIAkJCQkJCSAgImluc2VydCBpbnRv IHBnYmVuY2hfYnJhbmNoZXMoYmlkLGJiYWxhbmNlKSAiCkBAIC01NzE0LDE0ICs1Njg2LDE4IEBA IGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQR2Nvbm4gKmNvbikKIAkJCQkJCSAgKGludDY0KSAo cyArIDEpICogbmFjY291bnRzLCBuYWNjb3VudHMpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwg c3FsLmRhdGEpOwogCi0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisJCWlmICht dWx0aV94YWN0KQorCQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAl9CiAKKwlp ZiAoIW11bHRpX3hhY3QpCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisKIAl0 ZXJtUFFFeHBCdWZmZXIoJnNxbCk7CiB9CiAKIC8qCi0gKiBGaWxsIHRoZSBzdGFuZGFyZCB0YWJs ZXMgd2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIKKyAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBzaWRl CiAgKgogICogQXMgYWxyZWFkeSB0aGUgY2FzZSB3aXRoIHRoZSBjbGllbnQtc2lkZSBkYXRhIGdl bmVyYXRpb24sIHRoZSBmaWxsZXIKICAqIGNvbHVtbiBkZWZhdWx0cyB0byBOVUxMIGluIHBnYmVu Y2hfYnJhbmNoZXMgYW5kIHBnYmVuY2hfdGVsbGVycywKQEAgLTU3MzAsMTcgKzU3MDYsMTUgQEAg Z2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0KFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIGluaXRH ZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogewotCWZwcmludGYoc3RkZXJyLCAi Z2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkgIik7CisJZnByaW50ZihzdGRlcnIsICJnZW5l cmF0aW5nIGRhdGEgKHNlcnZlci1zaWRlIGFzICVzIHRyYW5zYWN0aW9uJXMpICIsCisJCQltdWx0 aV94YWN0ID8gIm11bHRpcGxlIiA6ICJzaW5nbGUiLCBtdWx0aV94YWN0ID8gInMiIDogIiIpOwog CiAJc3dpdGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKIAl7Ci0JCWNhc2UgR0VOX1RZUEVfSU5T RVJUX09SSUdJTkFMOgotCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0U2luZ2xlVFhOKGNvbik7Ci0JCQli cmVhazsKLQkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfU0VSSUVTOgorCQljYXNlIElOSVRfU1RFUF9H RU5fVFlQRV9JTlNFUlRfU0VSSUVTOgogCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVzKGNvbik7 CiAJCQlicmVhazsKLQkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgorCQljYXNlIElOSVRf U1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgogCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0 KGNvbik7CiAJCQlicmVhazsKIAl9CkBAIC01ODQ1LDE5ICs1ODE5LDIwIEBAIGNoZWNrSW5pdFN0 ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiAKIAkJc3dpdGNoICgqc3RlcCkKIAkJ ewotCQkJY2FzZSAnZyc6Ci0JCQljYXNlICdDJzoKLQkJCWNhc2UgJ0cnOgotCQkJY2FzZSAnaSc6 Ci0JCQljYXNlICdJJzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVYVDoKKwkJ CWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZOgorCQkJY2FzZSBJTklUX1NURVBf R0VOX1RZUEVfSU5TRVJUX1NFUklFUzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VS VF9VTk5FU1Q6CiAJCQkJZGF0YV9pbml0X3R5cGUrKzsKIAkJCQlkYXRhX2dlbmVyYXRpb25fdHlw ZSA9ICpzdGVwOwogCQkJCWJyZWFrOwogCQl9CiAJfQogCisJaWYgKGRhdGFfaW5pdF90eXBlID09 IDApCisJCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTm8gZGF0YSBnZW5lcmF0aW9uIHR5cGUgaXMg cHJvdmlkZWQiKTsKIAlpZiAoZGF0YV9pbml0X3R5cGUgPiAxKQotCQlwZ19sb2dfZXJyb3IoIldB Uk5JTkchIE1vcmUgdGhhbiBvbmUgdHlwZSBvZiBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24g aXMgcmVxdWVzdGVkIik7CisJCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTW9yZSB0aGFuIG9uZSB0 eXBlIG9mIGRhdGEgaW5pdGlhbGl6YXRpb24gaXMgcmVxdWVzdGVkIik7CiB9CiAKIC8qCkBAIC01 ODk1LDE3ICs1ODcwLDIyIEBAIHJ1bkluaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFsaXplX3N0 ZXBzKQogCQkJCW9wID0gImNyZWF0ZSB0YWJsZXMiOwogCQkJCWluaXRDcmVhdGVUYWJsZXMoY29u KTsKIAkJCQlicmVhazsKLQkJCWNhc2UgJ2cnOgotCQkJY2FzZSAnQyc6CisJCQljYXNlIElOSVRf U1RFUF9HRU5fVFlQRV9DT1BZX1RFWFQ6CisJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZ X0JJTkFSWToKIAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5lcmF0ZSI7CiAJCQkJaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsKLQkJCWNhc2UgJ0cnOgotCQkJY2Fz ZSAnaSc6Ci0JCQljYXNlICdJJzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9T RVJJRVM6CisJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgogCQkJCW9w ID0gInNlcnZlci1zaWRlIGdlbmVyYXRlIjsKIAkJCQlpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lk ZShjb24pOwogCQkJCWJyZWFrOworCQkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfU0lOR0xFX1hB Q1Q6CisJCQkJbXVsdGlfeGFjdCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJY2FzZSBJTklUX1NU RVBfR0VOX1RZUEVfTVVMVElfWEFDVDoKKwkJCQltdWx0aV94YWN0ID0gdHJ1ZTsKKwkJCQlicmVh azsKIAkJCWNhc2UgJ3YnOgogCQkJCW9wID0gInZhY3V1bSI7CiAJCQkJaW5pdFZhY3V1bShjb24p OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIu cGwgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCBh Mzc3MDQ4ZWFkMS4uYWNiMWUzMWQzZTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAw MV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2Jl bmNoX3dpdGhfc2VydmVyLnBsCkBAIC0xMTcsNiArMTE3LDcgQEAgJG5vZGUtPnBnYmVuY2goCiAJ W3Fye1BlcmhhcHMgeW91IG5lZWQgdG8gZG8gaW5pdGlhbGl6YXRpb259XSwKIAkncnVuIHdpdGhv dXQgaW5pdCcpOwogCisKICMgSW5pdGlhbGl6ZSBwZ2JlbmNoIHRhYmxlcyBzY2FsZSAxCiAkbm9k ZS0+cGdiZW5jaCgKIAknLWknLCAwLApAQCAtMTYwLDcgKzE2MSw3IEBAICRub2RlLT5wZ2JlbmNo KAogCQlxcntjcmVhdGluZyB0YWJsZXN9LAogCQlxcntjcmVhdGluZyAzIHBhcnRpdGlvbnN9LAog CQlxcntjcmVhdGluZyBwcmltYXJ5IGtleXN9LAotCQlxcntnZW5lcmF0aW5nIGRhdGEgXChzZXJ2 ZXItc2lkZVwpfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGUgYXMgc2luZ2xl IHRyYW5zYWN0aW9uXCl9LAogCQlxcntjcmVhdGluZyBmb3JlaWduIGtleXN9LAogCQlxcnsoPyF2 YWN1dW1pbmcpfSwgICAgIyBubyB2YWN1dW0KIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CkBA IC0xNzAsMTUgKzE3MSwxNiBAQCAkbm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0ZSwg YWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgkbm9k ZSwgJ3NlcnZlci1zaWRlJyk7CiAKKwogIyBUZXN0IHNlcnZlci1zaWRlIGdlbmVyYXRpb24gd2l0 aCBVTk5FU1QKICRub2RlLT5wZ2JlbmNoKAotCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0 SScsCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRVJywKIAkwLAogCVtxcnteJH1dLAog CVsKIAkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCiAJCXFye2NyZWF0aW5nIHRhYmxlc30sCi0J CXFye2dlbmVyYXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlXCl9LAorCQlxcntnZW5lcmF0aW5nIGRh dGEgXChzZXJ2ZXItc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb25cKX0sCiAJCXFye2RvbmUgaW4g XGQrXC5cZFxkIHMgfQogCV0sCiAJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIHNlcnZlci1zaWRlIFVO TkVTVCcpOwpAQCAtMTg2LDE1ICsxODgsNDggQEAgJG5vZGUtPnBnYmVuY2goCiAjIENoZWNrIGRh dGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFf c3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAodW5uZXN0KScpOwogCi0jIFRlc3Qgc2VydmVyLXNp ZGUgZ2VuZXJhdGlvbiB3aXRoIFVOTkVTVAorCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlv biB3aXRoIENPUFkgVEVYVAorJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQt c3RlcHM9ZHRnJywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxl c30sCisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVu dC1zaWRlIGFzIHNpbmdsZSB0cmFuc2FjdGlvbn0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMg fQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIFRFWFQnKTsKKworIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKHRleHQpJyk7CisKKyRub2RlLT5wZ2Jl bmNoKAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0TWcnLAorCTAsCisJW3Fye14kfV0s CisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwK KwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rp b25zfSwKKwkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5jaCAtLWluaXQt c3RlcHMgY2xpZW50LXNpZGUgVEVYVCcpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNl cnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGll bnQtc2lkZSAodGV4dCknKTsKKworCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRo IENPUFkgQklOQVJZCiAkbm9kZS0+cGdiZW5jaCgKLQknLS1pbml0aWFsaXplIC0taW5pdC1zdGVw cz1kdEMnLAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0YycsCiAJMCwKIAlbcXJ7XiR9 XSwKIAlbCiAJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAogCQlxcntjcmVhdGluZyB0YWJsZXN9 LAotCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZVwpfSwKKwkJcXJ7Z2VuZXJhdGlu ZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9ufSwKIAkJcXJ7ZG9uZSBp biBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50LXNpZGUg QklOQVJZJyk7CkBAIC0yMDIsNiArMjM3LDUyIEBAICRub2RlLT5wZ2JlbmNoKAogIyBDaGVjayBk YXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19kYXRh X3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKIAorJG5vZGUtPnBnYmVuY2go CisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRTYycsCisJMCwKKwlbcXJ7XiR9XSwKKwlb CisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlx cntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb259LAor CQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBj bGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXIt c2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNp ZGUgKGJpbmFyeSknKTsKKworJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQt c3RlcHM9ZHRNYycsCisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJs ZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGll bnQtc2lkZSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlvbnN9LAorCQlxcntkb25lIGluIFxkK1wuXGRc ZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsK KworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24u CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKworJG5v ZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRNYycsCisJMCwKKwlb cXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0 YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBtdWx0aXBsZSB0 cmFuc2FjdGlvbnN9LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNo IC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRl LCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRu b2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKworCiAjIFJ1biBhbGwgYnVpbHRpbiBzY3Jp cHRzLCBmb3IgYSBmZXcgdHJhbnNhY3Rpb25zIGVhY2gKICRub2RlLT5wZ2JlbmNoKAogCSctLXRy YW5zYWN0aW9ucz01IC1EZm9vPWJsYSAtLWNsaWVudD0yIC0tcHJvdG9jb2w9c2ltcGxlIC0tYnVp bHRpbj10JwotLSAKMi40My4wCgpGcm9tIDI0NzFiYjQ3YmY3MTU0MDJlY2U2MWIwODRiNjlhZmUz YmI1Mzc0MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJv cmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDYgRmViIDIwMjYgMTM6NTU6NDcgKzA3 MDAKU3ViamVjdDogW1BBVENIIHY5IDE4LzI2XSBSZW1vdmluZyBjb21tZW50ZWQgb3V0IHByb2Nl ZHVyZXMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDUyIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCmluZGV4IGFmNzFlMzU4ZTcxLi4zNDQ2NGI3MDM3YyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j CkBAIC01MjA2LDM1ICs1MjA2LDYgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0KFBH Y29ubiAqY29uKQogfQogCiAKLS8qCi0gKiBEdW1wcyBiaW5hcnkgYnVmZmVyIHRvIGZpbGUgKHB1 cmVseSBmb3IgZGVidWdnaW5nKQotICoKLXN0YXRpYyB2b2lkCi1kdW1wQnVmZmVyVG9GaWxlKGNo YXIgKmZpbGVuYW1lKQotewotCUZJTEUgKmZpbGVfcHRyOwotCXNpemVfdCBieXRlc193cml0dGVu OwotCi0JZmlsZV9wdHIgPSBmb3BlbihmaWxlbmFtZSwgIndiIik7Ci0JaWYgKGZpbGVfcHRyID09 IE5VTEwpCi0JewotCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgZmlsZSAlc1xuIiwg ZmlsZW5hbWUpOwotCQlyZXR1cm47IC8vIEVYSVRfRkFJTFVSRTsKLQl9Ci0KLQlieXRlc193cml0 dGVuID0gZndyaXRlKGJpbl9jb3B5X2J1ZmZlciwgMSwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCwg ZmlsZV9wdHIpOwotCi0JaWYgKGJ5dGVzX3dyaXR0ZW4gIT0gYmluX2NvcHlfYnVmZmVyX2xlbmd0 aCkKLQl7Ci0JCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igd3JpdGluZyB0byBmaWxlIG9yIGluY29t cGxldGUgd3JpdGVcbiIpOwotCQlmY2xvc2UoZmlsZV9wdHIpOwotCQlyZXR1cm47IC8vIEVYSVRf RkFJTFVSRTsKLQl9Ci0KLQlmY2xvc2UoZmlsZV9wdHIpOwotfQotICovCi0KIC8qCiAgKiBTYXZl IGNoYXIgZGF0YSB0byBidWZmZXIKICAqLwpAQCAtNTI3NywxNyArNTI0OCw2IEBAIGFkZENvbHVt bkNvdW50ZXIoaW50MTZfdCBuKQogCWJ1ZmZlckRhdGEoKHZvaWQgKikgJm4sIHNpemVvZihuKSk7 CiB9CiAKLS8qCi0gKiBhZGRzIGNvbHVtbiB3aXRoIE5VTEwgdmFsdWUKLSAqCi1zdGF0aWMgdm9p ZAotYWRkTnVsbENvbHVtbigpCi17Ci0JaW50MzJfdCBudWxsID0gLTE7Ci0JYnVmZmVyRGF0YSgo dm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKLX0KLSAqLwotCiAvKgogICogYWRkcyBjb2x1 bW4gd2l0aCBpbnRpMzIgdmFsdWUKICAqLwpAQCAtNTMxMiwxOCArNTI3Miw2IEBAIGFkZEludDY0 Q29sdW1uKGludDY0X3QgdmFsdWUpCiAJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6ZW9m KGRhdGEpKTsKIH0KIAotLyoKLSAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2YWx1ZQotICoKLXN0 YXRpYyB2b2lkCi1hZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQotewotCWludDMyX3QJc2l6ZSA9 IHN0cmxlbih2YWx1ZSk7Ci0JYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9mKHNpemUp KTsKLQlidWZmZXJDaGFyRGF0YSh2YWx1ZSwgc2l6ZSk7Ci19Ci0gKi8KLQogLyoKICAqIFN0YXJ0 cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZST00gQklOQVJZIHN0YXRlbWVu dAogICovCi0tIAoyLjQzLjAKCkZyb20gMTBkZmE2MjJiMDljNDIwZDc5ZGE4Nzc0YzkzMjFmOTE1 NDBjODYwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9y aXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTYgRmViIDIwMjYgMDk6MDg6MTcgKzA3 MDAKU3ViamVjdDogW1BBVENIIHY5IDE5LzI2XSBTbWFsbCBjaGFuZ2VzIGR1ZSB0byBiaWcgY29k ZSByZXZpZXcKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDcxICsrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM5IGluc2VydGlv bnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDM0NDY0YjcwMzdjLi45ZjNk N2Y5OWEyNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC04NzMsNyArODczLDcgQEAgc3RhdGljIGJvb2wgc29j a2V0X2hhc19pbnB1dChzb2NrZXRfc2V0ICpzYSwgaW50IGZkLCBpbnQgaWR4KTsKIAogLyogY2Fs bGJhY2sgdXNlZCB0byBidWlsZCByb3dzIGZvciBDT1BZIGR1cmluZyBkYXRhIGxvYWRpbmcgKi8K IHR5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2QpCQkoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGlu dDY0IGN1cnIpOwotdHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZEJpbikJKFBHY29ubiAqY29u LCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KTsKK3R5cGVkZWYgdm9pZCAoKmluaXRSb3dN ZXRob2RCaW5hcnkpCShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCwg aW50OF90IGNvbHVtbkNvdW50ZXIpOwogCiAvKiBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIG91ciBm bGV4IGxleGVyICovCiBzdGF0aWMgY29uc3QgUHNxbFNjYW5DYWxsYmFja3MgcGdiZW5jaF9jYWxs YmFja3MgPSB7CkBAIC05NDIsNyArOTQyLDggQEAgdXNhZ2Uodm9pZCkKIAkJICAgIiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRlOlxuIgogCQkg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHOiAgIElOU0VSVCAuLiBTRUxFQ1QgZ2Vu ZXJhdGVfc2VyaWVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU6ICAg SU5TRVJUIC4uIFNFTEVDVCB1bm5lc3RcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIE06IHVzZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW5pdGlhbGl6ZSBkYXRhXG4iCisJ CSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBTOiBmbGFnIHRvIHVzZSBzaW5nbGUgdHJh bnNhY3Rpb24gdG8gaW5pdGlhbGl6ZSBkYXRhXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAg ICAgICAgICBNOiBmbGFnIHRvIHVzZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW5pdGlhbGl6 ZSBkYXRhXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiBpbnZva2UgVkFD VVVNIG9uIHRoZSBzdGFuZGFyZCB0YWJsZXNcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHA6IGNyZWF0ZSBwcmltYXJ5IGtleSBpbmRleGVzIG9uIHRoZSBzdGFuZGFyZCB0YWJs ZXNcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IGNyZWF0ZSBmb3JlaWdu IGtleXMgYmV0d2VlbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCkBAIC01MDUzLDggKzUwNTQsOCBA QCBpbml0QWNjb3VudChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKIH0KIAogc3Rh dGljIHZvaWQKLWluaXRQb3B1bGF0ZVRhYmxlVGV4dChQR2Nvbm4gKmNvbiwgY29uc3QgY2hhciAq dGFibGUsIGludDY0IGJhc2UsCi0JCQkJCSAgaW5pdFJvd01ldGhvZCBpbml0X3JvdykKK2luaXRQ b3B1bGF0ZVRhYmxlQ29weVRleHQoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2 NCBiYXNlLAorCQkJCQkJICBpbml0Um93TWV0aG9kIGluaXRfcm93KQogewogCWludAkJCW47CiAJ aW50NjQJCWs7CkBAIC01MTc4LDcgKzUxNzksNyBAQCBpbml0UG9wdWxhdGVUYWJsZVRleHQoUEdj b25uICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLAogICogYSBibGFuay1wYWRk ZWQgc3RyaW5nIGluIHBnYmVuY2hfYWNjb3VudHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoUEdjb25uICpjb24pCitpbml0R2VuZXJhdGVEYXRhQ2xp ZW50U2lkZVRleHRGcm10KFBHY29ubiAqY29uKQogewogCWZwcmludGYoc3RkZXJyLCAiVEVYVCBt b2RlLi4uXG4iKTsKIApAQCAtNTE5OCw5ICs1MTk5LDkgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVu dFNpZGVUZXh0KFBHY29ubiAqY29uKQogCSAqIGZpbGwgYnJhbmNoZXMsIHRlbGxlcnMsIGFjY291 bnRzIGluIHRoYXQgb3JkZXIgaW4gY2FzZSBmb3JlaWduIGtleXMKIAkgKiBhbHJlYWR5IGV4aXN0 CiAJICovCi0JaW5pdFBvcHVsYXRlVGFibGVUZXh0KGNvbiwgInBnYmVuY2hfYnJhbmNoZXMiLCBu YnJhbmNoZXMsIGluaXRCcmFuY2gpOwotCWluaXRQb3B1bGF0ZVRhYmxlVGV4dChjb24sICJwZ2Jl bmNoX3RlbGxlcnMiLCAgbnRlbGxlcnMsICBpbml0VGVsbGVyKTsKLQlpbml0UG9wdWxhdGVUYWJs ZVRleHQoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwor CWluaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIG5icmFu Y2hlcywgaW5pdEJyYW5jaCk7CisJaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChjb24sICJwZ2Jl bmNoX3RlbGxlcnMiLCAgbnRlbGxlcnMsICBpbml0VGVsbGVyKTsKKwlpbml0UG9wdWxhdGVUYWJs ZUNvcHlUZXh0KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3VudHMsIGluaXRBY2NvdW50 KTsKIAogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiB9CkBAIC01MjEyLDYgKzUy MTMsOCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoUEdjb25uICpjb24pCiBzdGF0 aWMgdm9pZAogYnVmZmVyQ2hhckRhdGEoY2hhciAqc3JjLCBpbnQzMl90IGxlbikKIHsKKwlBc3Nl cnQoYmluX2NvcHlfYnVmZmVyX2xlbmd0aCArIGxlbiA8PSBCSU5fQ09QWV9CVUZfU0laRSk7CisK IAltZW1jcHkoKGNoYXIgKikgYmluX2NvcHlfYnVmZmVyICsgYmluX2NvcHlfYnVmZmVyX2xlbmd0 aCwgKGNoYXIgKikgc3JjLCBsZW4pOwogCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggKz0gbGVuOwog fQpAQCAtNTIyNywxMyArNTIzMCwxNiBAQCBidWZmZXJEYXRhKHZvaWQgKnNyYywgaW50MzJfdCBs ZW4pCiAJYnVmZmVyQ2hhckRhdGEoc3JjLCBsZW4pOwogI2Vsc2UKIAlpZiAobGVuID09IDEpCisJ ewogCQlidWZmZXJDaGFyRGF0YShzcmMsIGxlbik7Ci0JZWxzZQotCQlmb3IgKGludDMyX3QgaSA9 IDA7IGkgPCBsZW47IGkrKykKLQkJewotCQkJKChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciArIGJp bl9jb3B5X2J1ZmZlcl9sZW5ndGgpW2ldID0KLQkJCQkoKGNoYXIgKikgc3JjKVtsZW4gLSBpIC0g MV07Ci0JCX0KKwkJcmV0dXJuOworCX0KKworCWZvciAoaW50MzJfdCBpID0gMDsgaSA8IGxlbjsg aSsrKQorCXsKKwkJKChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciArIGJpbl9jb3B5X2J1ZmZlcl9s ZW5ndGgpW2ldID0KKwkJCSgoY2hhciAqKSBzcmMpW2xlbiAtIGkgLSAxXTsKKwl9CiAKIAliaW5f Y29weV9idWZmZXJfbGVuZ3RoICs9IGxlbjsKICNlbmRpZgpAQCAtNTMyMiw3ICs1MzI4LDcgQEAg Zmx1c2hCdWZmZXIoUEdjb25uICpjb24sIGludDE2X3Qgcm93X2xlbikKICAqIFNlbmRzIGN1cnJl bnQgYnJhbmNoIHJvdyB0byBidWZmZXIKICAqLwogc3RhdGljIHZvaWQKLWluaXRCcmFuY2hCaW5h cnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCitpbml0QnJhbmNo QmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4X3Qg Y29sdW1uQ291bnRlcikKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9mIGJyYW5jaCB0YWJsZSBoYXMg Zm9sbG93aW5nIGV4dHJhIGJ5dGVzOgpAQCAtNTMzMyw3ICs1MzM5LDcgQEAgaW5pdEJyYW5jaEJp bmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIAogCWZsdXNo QnVmZmVyKGNvbiwgbWF4X3Jvd19sZW4pOwogCi0JYWRkQ29sdW1uQ291bnRlcigyKTsKKwlhZGRD b2x1bW5Db3VudGVyKGNvbHVtbkNvdW50ZXIpOwogCiAJYWRkSW50MzJDb2x1bW4oY3VyciArIDEp OwogCWFkZEludDMyQ29sdW1uKDApOwpAQCAtNTM0Myw3ICs1MzQ5LDcgQEAgaW5pdEJyYW5jaEJp bmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKICAqIFNlbmRz IGN1cnJlbnQgdGVsbGVyIHJvdyB0byBidWZmZXIKICAqLwogc3RhdGljIHZvaWQKLWluaXRUZWxs ZXJCaW5hcnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCitpbml0 VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBp bnQ4X3QgY29sdW1uQ291bnRlcikKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9mIHRlbGxlcnMgdGFi bGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzNTQsNyArNTM2MCw3IEBAIGluaXRU ZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAK IAlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsKIAotCWFkZENvbHVtbkNvdW50ZXIoMyk7 CisJYWRkQ29sdW1uQ291bnRlcihjb2x1bW5Db3VudGVyKTsKIAogCWFkZEludDMyQ29sdW1uKGN1 cnIgKyAxKTsKIAlhZGRJbnQzMkNvbHVtbihjdXJyIC8gcGFyZW50ICsgMSk7CkBAIC01MzY1LDcg KzUzNzEsNyBAQCBpbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGlu dDMyX3QgcGFyZW50KQogICogU2VuZHMgY3VycmVudCBhY2NvdW50IHJvdyB0byBidWZmZXIKICAq Lwogc3RhdGljIHZvaWQKLWluaXRBY2NvdW50QmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1 cnIsIGludDMyX3QgcGFyZW50KQoraW5pdEFjY291bnRCaW5hcnkoUEdjb25uICpjb24sIGludDY0 X3QgY3VyciwgaW50MzJfdCBwYXJlbnQsIGludDhfdCBjb2x1bW5Db3VudGVyKQogewogCS8qCiAJ ICogRWFjaCByb3cgb2YgYWNjb3VudHMgdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoK QEAgLTUzNzYsNyArNTM4Miw3IEBAIGluaXRBY2NvdW50QmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2 NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQogCiAJZmx1c2hCdWZmZXIoY29uLCBtYXhfcm93X2xl bik7CiAKLQlhZGRDb2x1bW5Db3VudGVyKDMpOworCWFkZENvbHVtbkNvdW50ZXIoY29sdW1uQ291 bnRlcik7CiAKIAlpZiAoc2NhbGUgPD0gU0NBTEVfMzJCSVRfVEhSRVNIT0xEKQogCQlhZGRJbnQz MkNvbHVtbihjdXJyICsgMSk7CkBAIC01MzkxLDggKzUzOTcsOSBAQCBpbml0QWNjb3VudEJpbmFy eShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKICAqIFVuaXZlcnNh bCB3cmFwcGVyIGZvciBzZW5kaW5nIGRhdGEgaW4gYmluYXJ5IGZvcm1hdAogICovCiBzdGF0aWMg dm9pZAotaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBj aGFyICpjb2x1bW5zLAotCQkJCQkJaW50IGNvdW50ZXIsIGludDY0X3QgYmFzZSwgaW5pdFJvd01l dGhvZEJpbiBpbml0X3JvdykKK2luaXRQb3B1bGF0ZVRhYmxlQ29weUJpbmFyeShQR2Nvbm4gKmNv biwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCisJCQkJCQkJaW50IGNvdW50ZXIsIGludDY0 X3QgYmFzZSwgaW5pdFJvd01ldGhvZEJpbmFyeSBpbml0X3JvdywKKwkJCQkJCQlpbnQgY29sdW1u Q291bnRlcikKIHsKIAlpbnQJCQkgbjsKIAlQR3Jlc3VsdAkqcmVzOwpAQCAtNTQyNiw3ICs1NDMz LDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBj aGFyICpjb2x1bW5zLAogCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgYmFz ZTsgaSsrKQogCXsKLQkJaW5pdF9yb3coY29uLCBpLCBiYXNlKTsKKwkJaW5pdF9yb3coY29uLCBp LCBiYXNlLCBjb2x1bW5Db3VudGVyKTsKIAl9CiAKIAlyZXMgPSBQUWdldFJlc3VsdChjb24pOwpA QCAtNTQ2MCw3ICs1NDY3LDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24s IGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogICogV3JhcHBlciBmb3IgYmluYXJ5IGRhdGEg bG9hZAogICovCiBzdGF0aWMgdm9pZAotaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnko UEdjb25uICpjb24pCitpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeUZybXQoUEdjb25u ICpjb24pCiB7CiAKIAlmcHJpbnRmKHN0ZGVyciwgIkJJTkFSWSBtb2RlLi4uXG4iKTsKQEAgLTU0 ODYsMTIgKzU0OTMsMTIgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnkoUEdjb25u ICpjb24pCiAJCWlmIChtdWx0aV94YWN0KQogCQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdp biIpOwogCi0JCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hfYnJhbmNoZXMi LCAiYmlkLCBiYmFsYW5jZSIsCi0JCQkJCQkJCWksIG5icmFuY2hlcywgaW5pdEJyYW5jaEJpbmFy eSk7Ci0JCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hfdGVsbGVycyIsICAi dGlkLCBiaWQsIHRiYWxhbmNlIiwKLQkJCQkJCQkJaSwgbnRlbGxlcnMsICBpbml0VGVsbGVyQmlu YXJ5KTsKLQkJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9hY2NvdW50cyIs ICJhaWQsIGJpZCwgYWJhbGFuY2UiLAotCQkJCQkJCQlpLCBuYWNjb3VudHMsIGluaXRBY2NvdW50 QmluYXJ5KTsKKwkJaW5pdFBvcHVsYXRlVGFibGVDb3B5QmluYXJ5KGNvbiwgInBnYmVuY2hfYnJh bmNoZXMiLCAiYmlkLCBiYmFsYW5jZSIsCisJCQkJCQkJCQlpLCBuYnJhbmNoZXMsIGluaXRCcmFu Y2hCaW5hcnksIDIpOworCQlpbml0UG9wdWxhdGVUYWJsZUNvcHlCaW5hcnkoY29uLCAicGdiZW5j aF90ZWxsZXJzIiwgICJ0aWQsIGJpZCwgdGJhbGFuY2UiLAorCQkJCQkJCQkJaSwgbnRlbGxlcnMs ICBpbml0VGVsbGVyQmluYXJ5LCAzKTsKKwkJaW5pdFBvcHVsYXRlVGFibGVDb3B5QmluYXJ5KGNv biwgInBnYmVuY2hfYWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKKwkJCQkJCQkJCWks IG5hY2NvdW50cywgaW5pdEFjY291bnRCaW5hcnksIDMpOwogCiAJCWlmIChtdWx0aV94YWN0KQog CQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKQEAgLTU1MTUsMTAgKzU1MjIsMTAg QEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAJc3dpdGNoIChkYXRh X2dlbmVyYXRpb25fdHlwZSkKIAl7CiAJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVY VDoKLQkJCWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChjb24pOworCQkJaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGVUZXh0RnJtdChjb24pOwogCQkJYnJlYWs7CiAJCWNhc2UgSU5JVF9T VEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZOgotCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVC aW5hcnkoY29uKTsKKwkJCWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlQmluYXJ5RnJtdChjb24p OwogCQkJYnJlYWs7CiAJfQogfQotLSAKMi40My4wCgpGcm9tIGQ5NWM1M2Q0MTJmZjBlOTRlMTYy ZWFmMzk5MDIzM2ZhZTAwN2FlM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlz IE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBNb24sIDE2IEZlYiAyMDI2 IDEwOjA3OjEzICswNzAwClN1YmplY3Q6IFtQQVRDSCB2OSAyMC8yNl0gUnVubmluZyBpbmRlbnQg dG8gZml4IGNvZGUgZm9ybWF0dGluZwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MTExICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNjIgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggOWYz ZDdmOTlhMjUuLjgxOThmMWQ0YzlhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTE1OSw3ICsxNTksNyBAQCB0 eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogc29tZSBjb25maWd1 cmFibGUgcGFyYW1ldGVycyAqLwotI2RlZmluZSBERUZBVUxUX0lOSVRfU1RFUFMgImR0Z3ZwIgkJ LyogZGVmYXVsdCAtSSBzZXR0aW5nICovCisjZGVmaW5lIERFRkFVTFRfSU5JVF9TVEVQUyAiZHRn dnAiCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLwogI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRn TVNjR1V2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQX1NF Q09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1lc3NhZ2VzICovCkBAIC0xNzEsMTYgKzE3 MSwyNCBAQCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAjZGVmaW5lIE1BWF9aSVBGSUFOX1BB UkFNCQkxMDAwLjAJLyogbWF4aW11bSBwYXJhbWV0ZXIgZm9yIHppcGZpYW4gKi8KIAogLyogc2Vy dmVyLXNpZGUgbWV0aG9kcyB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVmaW5lIElOSVRfU1RFUF9H RU5fVFlQRV9JTlNFUlRfU0VSSUVTCSdHJwkvKiB1c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0 ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAqLwotI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVf SU5TRVJUX1VOTkVTVAknVScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdlbmVy YXRlIGRhdGEgKi8KKyNkZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9TRVJJRVMJJ0cn IC8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUCisJCQkJCQkJCQkJCQkgKiBnZW5lcmF0ZV9zZXJpZXMg dG8gZ2VuZXJhdGUKKwkJCQkJCQkJCQkJCSAqIGRhdGEgKi8KKyNkZWZpbmUgSU5JVF9TVEVQX0dF Tl9UWVBFX0lOU0VSVF9VTk5FU1QJJ1UnIC8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdAor CQkJCQkJCQkJCQkJICogdG8gZ2VuZXJhdGUgZGF0YSAqLwogLyogY2xpZW50LXNpZGUgbWV0aG9k cyB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVmaW5lIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZX1RF WFQJCSdnJyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNURElOIC4uIFRFWFQgdG8gZ2VuZXJhdGUgZGF0 YSAqLwotI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9CSU5BUlkJCSdjJyAvKiB1c2Ug Q09QWSAuLiBGUk9NIFNURElOIC4uIEJJTkFSWSB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5l IElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZX1RFWFQJCSdnJyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNU RElOIC4uCisJCQkJCQkJCQkJCQkgKiBURVhUIHRvIGdlbmVyYXRlIGRhdGEgKi8KKyNkZWZpbmUg SU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZCQknYycgLyogdXNlIENPUFkgLi4gRlJPTSBT VERJTiAuLgorCQkJCQkJCQkJCQkJICogQklOQVJZIHRvIGdlbmVyYXRlIGRhdGEgKi8KIC8qIGRh dGEgaW5pdCBwc2V1ZG8gc3RlcHMgKi8KLSNkZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX1NJTkdM RV9YQUNUCQknUycgLyogc3dpdGNoIHRvIGluaXQgZGF0YSBhcyBzaW5nbGUgdHJhbnNhY3Rpb24g Ki8KLSNkZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX01VTFRJX1hBQ1QJCSdNJyAvKiBzd2l0Y2gg dG8gaW5pdCBkYXRhIGFzIG11bHRpcGxlIHRyYW5zYWN0aW9ucyAqLworI2RlZmluZSBJTklUX1NU RVBfR0VOX1RZUEVfU0lOR0xFX1hBQ1QJCSdTJyAvKiBzd2l0Y2ggdG8gaW5pdCBkYXRhIGFzCisJ CQkJCQkJCQkJCQkgKiBzaW5nbGUgdHJhbnNhY3Rpb24gKi8KKyNkZWZpbmUgSU5JVF9TVEVQX0dF Tl9UWVBFX01VTFRJX1hBQ1QJCSdNJyAvKiBzd2l0Y2ggdG8gaW5pdCBkYXRhIGFzCisJCQkJCQkJ CQkJCQkgKiBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgKi8KIAotc3RhdGljIGJvb2wgbXVsdGlfeGFj dCA9IGZhbHNlOwkvKiBpbml0IGRhdGEgdHlwZSAoYXMgc2luZ2xlIG9yIG11bHRpcGxlIHRyYW5z YWN0aW9ucykgKi8KK3N0YXRpYyBib29sIG11bHRpX3hhY3QgPSBmYWxzZTsgLyogaW5pdCBkYXRh IHR5cGUgKGFzIHNpbmdsZSBvciBtdWx0aXBsZQorCQkJCQkJCQkgKiB0cmFuc2FjdGlvbnMpICov CiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBwZXIg Y2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJCS8qIGR1cmF0aW9uIGluIHNlY29u ZHMgKi8KIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWlj cm8gc2Vjb25kcywgdW5kZXIgLVQgKi8KQEAgLTE5NCwxNCArMjAyLDE1IEBAIHN0YXRpYyBpbnQJ c2NhbGUgPSAxOwogLyoKICAqIG1vZGUgb2YgZGF0YSBnZW5lcmF0aW9uIHRvIHVzZQogICovCi1z dGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9IElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZ X1RFWFQ7CitzdGF0aWMgY2hhciBkYXRhX2dlbmVyYXRpb25fdHlwZSA9IElOSVRfU1RFUF9HRU5f VFlQRV9DT1BZX1RFWFQ7CiAKIC8qCiAgKiBDT1BZIEZST00gQklOQVJZIGV4ZWN1dGlvbiBidWZm ZXIKICAqLwotI2RlZmluZSBCSU5fQ09QWV9CVUZfU0laRQkxMDI0MDAJCQkJLyogbWF4aW11bSBi dWZmZXIgc2l6ZSBmb3IgQ09QWSBGUk9NIEJJTkFSWSAqLwotc3RhdGljIGNoYXIJCSpiaW5fY29w eV9idWZmZXIgPSBOVUxMOwkJLyogYnVmZmVyIGZvciBDT1BZIEZST00gQklOQVJZICovCi1zdGF0 aWMgaW50MzJfdAkgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCA9IDA7CS8qIGN1cnJlbnQgYnVmZmVy IHNpemUgKi8KKyNkZWZpbmUgQklOX0NPUFlfQlVGX1NJWkUJMTAyNDAwCS8qIG1heGltdW0gYnVm ZmVyIHNpemUgZm9yIENPUFkgRlJPTQorCQkJCQkJCQkJICogQklOQVJZICovCitzdGF0aWMgY2hh ciAqYmluX2NvcHlfYnVmZmVyID0gTlVMTDsJLyogYnVmZmVyIGZvciBDT1BZIEZST00gQklOQVJZ ICovCitzdGF0aWMgaW50MzJfdCBiaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsJLyogY3VycmVu dCBidWZmZXIgc2l6ZSAqLwogCiAvKgogICogZmlsbGZhY3Rvci4gZm9yIGV4YW1wbGUsIGZpbGxm YWN0b3IgPSA5MCB3aWxsIHVzZSBvbmx5IDkwIHBlcmNlbnQKQEAgLTg3Miw4ICs4ODEsOCBAQCBz dGF0aWMgaW50CXdhaXRfb25fc29ja2V0X3NldChzb2NrZXRfc2V0ICpzYSwgaW50NjQgdXNlY3Mp Owogc3RhdGljIGJvb2wgc29ja2V0X2hhc19pbnB1dChzb2NrZXRfc2V0ICpzYSwgaW50IGZkLCBp bnQgaWR4KTsKIAogLyogY2FsbGJhY2sgdXNlZCB0byBidWlsZCByb3dzIGZvciBDT1BZIGR1cmlu ZyBkYXRhIGxvYWRpbmcgKi8KLXR5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2QpCQkoUFFFeHBC dWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIpOwotdHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhv ZEJpbmFyeSkJKFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4 X3QgY29sdW1uQ291bnRlcik7Cit0eXBlZGVmIHZvaWQgKCppbml0Um93TWV0aG9kKSAoUFFFeHBC dWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIpOwordHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhv ZEJpbmFyeSkgKFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4 X3QgY29sdW1uQ291bnRlcik7CiAKIC8qIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3Igb3VyIGZsZXgg bGV4ZXIgKi8KIHN0YXRpYyBjb25zdCBQc3FsU2NhbkNhbGxiYWNrcyBwZ2JlbmNoX2NhbGxiYWNr cyA9IHsKQEAgLTUyMDAsNyArNTIwOSw3IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4 dEZybXQoUEdjb25uICpjb24pCiAJICogYWxyZWFkeSBleGlzdAogCSAqLwogCWluaXRQb3B1bGF0 ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIG5icmFuY2hlcywgaW5pdEJy YW5jaCk7Ci0JaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChjb24sICJwZ2JlbmNoX3RlbGxlcnMi LCAgbnRlbGxlcnMsICBpbml0VGVsbGVyKTsKKwlpbml0UG9wdWxhdGVUYWJsZUNvcHlUZXh0KGNv biwgInBnYmVuY2hfdGVsbGVycyIsIG50ZWxsZXJzLCBpbml0VGVsbGVyKTsKIAlpbml0UG9wdWxh dGVUYWJsZUNvcHlUZXh0KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3VudHMsIGluaXRB Y2NvdW50KTsKIAogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CkBAIC01MjYwLDgg KzUyNjksOSBAQCBhZGRDb2x1bW5Db3VudGVyKGludDE2X3QgbikKIHN0YXRpYyB2b2lkCiBhZGRJ bnQzMkNvbHVtbihpbnQzMl90IHZhbHVlKQogewotCWludDMyX3QJZGF0YSA9IHZhbHVlOwotCWlu dDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKKwlpbnQzMl90CQlkYXRhID0gdmFsdWU7CisJaW50 MzJfdAkJc2l6ZSA9IHNpemVvZihkYXRhKTsKKwogCWJ1ZmZlckRhdGEoKHZvaWQgKikgJnNpemUs IHNpemVvZihzaXplKSk7CiAJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6ZW9mKGRhdGEp KTsKIH0KQEAgLTUyNzIsOCArNTI4Miw5IEBAIGFkZEludDMyQ29sdW1uKGludDMyX3QgdmFsdWUp CiBzdGF0aWMgdm9pZAogYWRkSW50NjRDb2x1bW4oaW50NjRfdCB2YWx1ZSkKIHsKLQlpbnQ2NF90 CWRhdGEgPSB2YWx1ZTsKLQlpbnQzMl90CXNpemUgPSBzaXplb2YoZGF0YSk7CisJaW50NjRfdAkJ ZGF0YSA9IHZhbHVlOworCWludDMyX3QJCXNpemUgPSBzaXplb2YoZGF0YSk7CisKIAlidWZmZXJE YXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwogCWJ1ZmZlckRhdGEoKHZvaWQgKikg JmRhdGEsIHNpemVvZihkYXRhKSk7CiB9CkBAIC01Mjg0LDkgKzUyOTUsOSBAQCBhZGRJbnQ2NENv bHVtbihpbnQ2NF90IHZhbHVlKQogc3RhdGljIHZvaWQKIHNlbmRCaW5hcnlDb3B5SGVhZGVyKFBH Y29ubiAqY29uKQogewotCWNoYXIgaGVhZGVyW10gPSB7J1AnLCdHJywnQycsJ08nLCdQJywnWScs J1xuJywnXDM3NycsJ1xyJywnXG4nLCdcMCcsCi0JCQkJCSAnXDAnLCdcMCcsJ1wwJywnXDAnLAot CQkJCQkgJ1wwJywnXDAnLCdcMCcsJ1wwJyB9OworCWNoYXIJCWhlYWRlcltdID0geydQJywgJ0cn LCAnQycsICdPJywgJ1AnLCAnWScsICdcbicsICdcMzc3JywgJ1xyJywgJ1xuJywgJ1wwJywKKwkJ J1wwJywgJ1wwJywgJ1wwJywgJ1wwJywKKwknXDAnLCAnXDAnLCAnXDAnLCAnXDAnfTsKIAogCVBR cHV0Q29weURhdGEoY29uLCBoZWFkZXIsIDE5KTsKIH0KQEAgLTUyOTcsNyArNTMwOCw3IEBAIHNl bmRCaW5hcnlDb3B5SGVhZGVyKFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIHNlbmRCaW5hcnlD b3B5VHJhaWxlcihQR2Nvbm4gKmNvbikKIHsKLQlzdGF0aWMgY2hhciB0cmFpbGVyW10gPSB7IDB4 RkYsIDB4RkYgfTsKKwlzdGF0aWMgY2hhciB0cmFpbGVyW10gPSB7MHhGRiwgMHhGRn07CiAKIAlQ UXB1dENvcHlEYXRhKGNvbiwgdHJhaWxlciwgMik7CiB9CkBAIC01MzA4LDcgKzUzMTksNyBAQCBz ZW5kQmluYXJ5Q29weVRyYWlsZXIoUEdjb25uICpjb24pCiBzdGF0aWMgdm9pZAogZmx1c2hCdWZm ZXIoUEdjb25uICpjb24sIGludDE2X3Qgcm93X2xlbikKIHsKLQlQR3Jlc3VsdCAqcmVzOworCVBH cmVzdWx0ICAgKnJlczsKIAogCWlmIChiaW5fY29weV9idWZmZXJfbGVuZ3RoICsgcm93X2xlbiA+ IEJJTl9DT1BZX0JVRl9TSVpFKQogCXsKQEAgLTUzMzAsMTIgKzUzNDEsMTMgQEAgZmx1c2hCdWZm ZXIoUEdjb25uICpjb24sIGludDE2X3Qgcm93X2xlbikKIHN0YXRpYyB2b2lkCiBpbml0QnJhbmNo QmluYXJ5KFBHY29ubiAqY29uLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50LCBpbnQ4X3Qg Y29sdW1uQ291bnRlcikKIHsKLQkvKgorCS8qLS0tCiAJICogRWFjaCByb3cgb2YgYnJhbmNoIHRh YmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CiAJICogLSAyIGJ5dGVzIGZvciBudW1iZXIg b2YgY29sdW1ucwogCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVhY2ggb2YgdGFibGUncyAz IGNvbHVtbnMKKwkgKi0tLQogCSAqLwotCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgMzUgKyAyICsg NCozOyAvKiBtYXggcm93IHNpemUgaXMgMzUgKi8KKwlpbnQxNl90CQltYXhfcm93X2xlbiA9IDM1 ICsgMiArIDQgKiAzOwkvKiBtYXggcm93IHNpemUgaXMgMzUgKi8KIAogCWZsdXNoQnVmZmVyKGNv biwgbWF4X3Jvd19sZW4pOwogCkBAIC01MzUxLDEyICs1MzYzLDEzIEBAIGluaXRCcmFuY2hCaW5h cnkoUEdjb25uICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQsIGludDhfdCBjb2x1 bW5Db3VudGVyCiBzdGF0aWMgdm9pZAogaW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNvbiwgaW50 NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCwgaW50OF90IGNvbHVtbkNvdW50ZXIpCiB7Ci0JLyoK KwkvKi0tLQogCSAqIEVhY2ggcm93IG9mIHRlbGxlcnMgdGFibGUgaGFzIGZvbGxvd2luZyBleHRy YSBieXRlczoKIAkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5zCiAJICogLSA0IGJ5 dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBvZiB0YWJsZSdzIDQgY29sdW1ucworCSAqLS0tCiAJICov Ci0JaW50MTZfdAltYXhfcm93X2xlbiA9ICA0MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBp cyA0MCAqLworCWludDE2X3QJCW1heF9yb3dfbGVuID0gNDAgKyAyICsgNCAqIDQ7CS8qIG1heCBy b3cgc2l6ZSBpcyA0MCAqLwogCiAJZmx1c2hCdWZmZXIoY29uLCBtYXhfcm93X2xlbik7CiAKQEAg LTUzNzMsMTIgKzUzODYsMTMgQEAgaW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNvbiwgaW50NjRf dCBjdXJyLCBpbnQzMl90IHBhcmVudCwgaW50OF90IGNvbHVtbkNvdW50ZXIKIHN0YXRpYyB2b2lk CiBpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBh cmVudCwgaW50OF90IGNvbHVtbkNvdW50ZXIpCiB7Ci0JLyoKKwkvKi0tLQogCSAqIEVhY2ggcm93 IG9mIGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CiAJICogLSAyIGJ5 dGVzIGZvciBudW1iZXIgb2YgY29sdW1ucwogCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVh Y2ggb2YgdGFibGUncyA0IGNvbHVtbnMKIAkgKi8KLQlpbnQxNl90CW1heF9yb3dfbGVuID0gMjUw ICsgMiArIDQqNDsgLyogbWF4IHJvdyBzaXplIGlzIDI1MCBmb3IgaW50NjQgKi8KKwlpbnQxNl90 CQltYXhfcm93X2xlbiA9IDI1MCArIDIgKyA0ICogNDsJLyogbWF4IHJvdyBzaXplIGlzIDI1MCBm b3IKKwkJCQkJCQkJCQkJCSAqIGludDY0ICovCiAKIAlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3df bGVuKTsKIApAQCAtNTQwMSwxMSArNTQxNSwxMSBAQCBpbml0UG9wdWxhdGVUYWJsZUNvcHlCaW5h cnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCQkJCQkJCWludCBj b3VudGVyLCBpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW5hcnkgaW5pdF9yb3csCiAJCQkJ CQkJaW50IGNvbHVtbkNvdW50ZXIpCiB7Ci0JaW50CQkJIG47Ci0JUEdyZXN1bHQJKnJlczsKLQlj aGFyCQkgY29weV9zdGF0ZW1lbnRbMjU2XTsKLQljb25zdCBjaGFyCSpjb3B5X3N0YXRlbWVudF9m bXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gKGZvcm1hdCBiaW5hcnkpIjsKLQlpbnQ2NF90 CQkgc3RhcnQgPSBiYXNlICogY291bnRlcjsKKwlpbnQJCQluOworCVBHcmVzdWx0ICAgKnJlczsK KwljaGFyCQljb3B5X3N0YXRlbWVudFsyNTZdOworCWNvbnN0IGNoYXIgKmNvcHlfc3RhdGVtZW50 X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiAoZm9ybWF0IGJpbmFyeSkiOworCWludDY0 X3QJCXN0YXJ0ID0gYmFzZSAqIGNvdW50ZXI7CiAKIAliaW5fY29weV9idWZmZXJfbGVuZ3RoID0g MDsKIApAQCAtNTQ1MCw3ICs1NDY0LDcgQEAgaW5pdFBvcHVsYXRlVGFibGVDb3B5QmluYXJ5KFBH Y29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAlyZXMgPSBQUWdldFJlc3Vs dChjb24pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCiAJewot CQlpZiAoUFFwdXRDb3B5RW5kKGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLworCQlpZiAo UFFwdXRDb3B5RW5kKGNvbiwgTlVMTCkgPT0gMSkJLyogc3VjY2VzcyAqLwogCQl7CiAJCQlQUWNs ZWFyKHJlcyk7CiAJCQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwpAQCAtNTQ3Niw5ICs1NDkwLDgg QEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVCaW5hcnlGcm10KFBHY29ubiAqY29uKQogCWJp bl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOwogCiAJLyoKLQkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBp biBtdWx0aXBsZSB0cmFuc2FjdGlvbnMKLQkgKiB0byBtaW5pbWl6ZSBsb2FkIG9uIERCIHNlcnZl ciBhbmQgcGVyaGFwcwotCSAqIGluIGZ1dHVyZSBhbGxvdyBsb2FkIGluIHBhcmFsbGVsIHNlc3Np b25zCisJICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHRvIG1p bmltaXplIGxvYWQgb24gREIKKwkgKiBzZXJ2ZXIgYW5kIHBlcmhhcHMgaW4gZnV0dXJlIGFsbG93 IGxvYWQgaW4gcGFyYWxsZWwgc2Vzc2lvbnMKIAkgKi8KIAlleGVjdXRlU3RhdGVtZW50KGNvbiwg ImJlZ2luIik7CiAKQEAgLTU0OTUsOCArNTUwOCw4IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRT aWRlQmluYXJ5RnJtdChQR2Nvbm4gKmNvbikKIAogCQlpbml0UG9wdWxhdGVUYWJsZUNvcHlCaW5h cnkoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKIAkJCQkJCQkJCWks IG5icmFuY2hlcywgaW5pdEJyYW5jaEJpbmFyeSwgMik7Ci0JCWluaXRQb3B1bGF0ZVRhYmxlQ29w eUJpbmFyeShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0YmFsYW5jZSIsCi0J CQkJCQkJCQlpLCBudGVsbGVycywgIGluaXRUZWxsZXJCaW5hcnksIDMpOworCQlpbml0UG9wdWxh dGVUYWJsZUNvcHlCaW5hcnkoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgInRpZCwgYmlkLCB0YmFs YW5jZSIsCisJCQkJCQkJCQlpLCBudGVsbGVycywgaW5pdFRlbGxlckJpbmFyeSwgMyk7CiAJCWlu aXRQb3B1bGF0ZVRhYmxlQ29weUJpbmFyeShjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgImFpZCwg YmlkLCBhYmFsYW5jZSIsCiAJCQkJCQkJCQlpLCBuYWNjb3VudHMsIGluaXRBY2NvdW50QmluYXJ5 LCAzKTsKIApAQCAtNTU3MCwxMCArNTU4MywxMCBAQCBnZW5lcmF0ZURhdGFJbnNlcnRTZXJpZXMo UEdjb25uICpjb24pCiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKIAkJCQkJCSAgImluc2Vy dCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsIGFiYWxhbmNlLCAiCi0JCQkJCQkJCQkg ICAiZmlsbGVyKSAiCisJCQkJCQkgICJmaWxsZXIpICIKIAkJCQkJCSAgInNlbGVjdCBhaWQgKyAx LCBhaWQgLyAlZCArIDEsIDAsICcnICIKIAkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCIg SU5UNjRfRk9STUFUICIsICIKLQkJCQkJCQkJSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJ CQkgIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkg aSAqIG5hY2NvdW50cywKIAkJCQkJCSAgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7 CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CkBAIC01NjIyLDcgKzU2MzUsNyBA QCBnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoUEdjb25uICpjb24pCiAJCXByaW50ZlBRRXhwQnVm ZmVyKCZzcWwsCiAJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlkLCBiaWQs IHRiYWxhbmNlKSAiCiAJCQkJCQkgICJzZWxlY3QgdW5uZXN0KGFycmF5X2FnZyhzLmkgb3JkZXIg Ynkgcy5pKSkgYXMgdGlkLCAiCi0JCQkJCQkJCSAgIiVkIGFzIGJpZCwgMCBhcyB0YmFsYW5jZSAi CisJCQkJCQkgICIlZCBhcyBiaWQsIDAgYXMgdGJhbGFuY2UgIgogCQkJCQkJICAiZnJvbSBnZW5l cmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBzKGkpIiwKIAkJCQkJCSAgcyArIDEsIHMgKiBudGVsbGVy cyArIDEsIChzICsgMSkgKiBudGVsbGVycyk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwu ZGF0YSk7CkBAIC01NjMwLDEzICs1NjQzLDEzIEBAIGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQ R2Nvbm4gKmNvbikKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKIAkJCQkJCSAgIndpdGggZGF0 YSBhcyAoIgogCQkJCQkJICAiICAgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1B VCAiLCAiCi0JCQkJCQkJICBJTlQ2NF9GT1JNQVQgIikgYXMgaSkgIgorCQkJCQkJICBJTlQ2NF9G T1JNQVQgIikgYXMgaSkgIgogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9hY2NvdW50cyhh aWQsIGJpZCwgIgotCQkJCQkJCQkJICAiYWJhbGFuY2UsIGZpbGxlcikgIgorCQkJCQkJICAiYWJh bGFuY2UsIGZpbGxlcikgIgogCQkJCQkJICAic2VsZWN0IHVubmVzdChhaWQpLCB1bm5lc3QoYmlk KSwgMCBhcyBhYmFsYW5jZSwgIgotCQkJCQkJCQkgICInJyBhcyBmaWxsZXIgIgorCQkJCQkJICAi JycgYXMgZmlsbGVyICIKIAkJCQkJCSAgImZyb20gKHNlbGVjdCBhcnJheV9hZ2coaSsxKSBhaWQs ICIKLQkJCQkJCQkJCSAgICJhcnJheV9hZ2coaS8lZCArIDEpIGJpZCBmcm9tIGRhdGEpIiwKKwkJ CQkJCSAgImFycmF5X2FnZyhpLyVkICsgMSkgYmlkIGZyb20gZGF0YSkiLAogCQkJCQkJICAoaW50 NjQpIHMgKiBuYWNjb3VudHMgKyAxLAogCQkJCQkJICAoaW50NjQpIChzICsgMSkgKiBuYWNjb3Vu dHMsIG5hY2NvdW50cyk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CkBAIC01 NzU4LDcgKzU3NzEsNyBAQCBpbml0Q3JlYXRlRktleXMoUEdjb25uICpjb24pCiBzdGF0aWMgdm9p ZAogY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIHsKLQljaGFy CWRhdGFfaW5pdF90eXBlID0gMDsKKwljaGFyCQlkYXRhX2luaXRfdHlwZSA9IDA7CiAKIAlpZiAo aW5pdGlhbGl6ZV9zdGVwc1swXSA9PSAnXDAnKQogCQlwZ19mYXRhbCgibm8gaW5pdGlhbGl6YXRp b24gc3RlcHMgc3BlY2lmaWVkIik7Ci0tIAoyLjQzLjAKCkZyb20gMjcwZDJiZjE0YjY4NzNmZjY2 ZmMzN2NhMGE1ZGNjYzA1NWRhYjFmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9y aXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTYgRmViIDIw MjYgMTQ6NTc6MTggKzA3MDAKU3ViamVjdDogW1BBVENIIHY5IDIxLzI2XSBSZW1vdmluZyBkZWJ1 Z2dpbmcgZmlsbGVyIHZhbHVlCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA4ICsr KystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jCmluZGV4IDgxOThmMWQ0YzlhLi43MTBiMmE1YjcwZCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBA IC00OTU0LDggKzQ5NTQsOCBAQCBpbml0Q3JlYXRlVGFibGVzKFBHY29ubiAqY29uKQogCXN0YXRp YyBjb25zdCBzdHJ1Y3QgZGRsaW5mbyBERExzW10gPSB7CiAJCXsKIAkJCSJwZ2JlbmNoX2hpc3Rv cnkiLAotCQkJInRpZCBpbnQsYmlkIGludCxhaWQgICAgaW50LGRlbHRhIGludCxtdGltZSB0aW1l c3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJz8nIiwKLQkJCSJ0aWQgaW50LGJpZCBpbnQs YWlkIGJpZ2ludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZh dWx0ICc/JyIsCisJCQkidGlkIGludCxiaWQgaW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1l IHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnJyIsCisJCQkidGlkIGludCxiaWQg aW50LGFpZCBiaWdpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikg ZGVmYXVsdCAnJyIsCiAJCQkwCiAJCX0sCiAJCXsKQEAgLTQ5NjYsOCArNDk2Niw4IEBAIGluaXRD cmVhdGVUYWJsZXMoUEdjb25uICpjb24pCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2FjY291bnRz IiwKLQkJCSJhaWQgICAgaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBj aGFyKDg0KSBkZWZhdWx0ICc/JyIsCi0JCQkiYWlkIGJpZ2ludCBub3QgbnVsbCxiaWQgaW50LGFi YWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnPyciLAorCQkJImFpZCAgICBpbnQg bm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyci LAorCQkJImFpZCBiaWdpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNo YXIoODQpIGRlZmF1bHQgJyciLAogCQkJMQogCQl9LAogCQl7Ci0tIAoyLjQzLjAKCkZyb20gODZh MTExYzYzZTcwMDZkNDgwMWNlN2JiNTk0YTViNzdkODdiNDJiMCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMjMgRmViIDIwMjYgMTY6MTU6MDYgKzA3MDAKU3ViamVjdDogW1BBVENIIHY5IDIyLzI2 XSBNb3Zpbmcgb3V0IGxvZ2ljIHNob3dpbmcgZGF0YSBsb2FkIHByb2dyZXNzIGludG8gb3duCiBw cm9jZWR1cmUKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDE0MiArKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc1IGluc2VydGlv bnMoKyksIDY3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDcxMGIyYTViNzBkLi5lM2Uw ZTA3Mzc5MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC00ODcsNiArNDg3LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg U3RhdHNEYXRhCiAgKi8KIHN0YXRpYyBwZ190aW1lX3VzZWNfdCBlcG9jaF9zaGlmdDsKIAorLyog dXNlZCB0byB0cmFjayBlbGFwc2VkIHRpbWUgYW5kIGVzdGltYXRlIG9mIHRoZSByZW1haW5pbmcg dGltZSBvZiBkYXRhIGxvYWQgKi8KK3N0YXRpYyBwZ190aW1lX3VzZWNfdCBkYXRhX2xvYWRfc3Rh cnQ7CisKIC8qCiAgKiBFcnJvciBzdGF0dXMgZm9yIGVycm9ycyBkdXJpbmcgc2NyaXB0IGV4ZWN1 dGlvbi4KICAqLwpAQCAtNTA2MiwyNyArNTA2NSw4MiBAQCBpbml0QWNjb3VudChQUUV4cEJ1ZmZl ckRhdGEgKnNxbCwgaW50NjQgY3VycikKIAkJCQkJICBjdXJyICsgMSwgY3VyciAvIG5hY2NvdW50 cyArIDEpOwogfQogCitzdGF0aWMgdm9pZAorc2hvd1BvcHVsYXRlVGFibGVDb3B5UHJvZ3Jlc3Mo Y29uc3QgY2hhciAqdGFibGUsIGludDY0IGN1cnJlbnQsIGludDY0IHRvdGFsKQoreworCXN0YXRp YyBpbnQJY2hhcnMgPSAwOworCXN0YXRpYyBpbnQJcHJldl9jaGFycyA9IDA7CisJc3RhdGljIGlu dAlsb2dfaW50ZXJ2YWwgPSAxOworCisJLyogU3RheSBvbiB0aGUgc2FtZSBsaW5lIGlmIHJlcG9y dGluZyB0byBhIHRlcm1pbmFsICovCisJY2hhcgkJZW9sID0gaXNhdHR5KGZpbGVubyhzdGRlcnIp KSA/ICdccicgOiAnXG4nOworCisJZG91YmxlCQllbGFwc2VkX3NlYyA9IFBHX1RJTUVfR0VUX0RP VUJMRShwZ190aW1lX25vdygpIC0gZGF0YV9sb2FkX3N0YXJ0KTsKKwlkb3VibGUJCXJlbWFpbmlu Z19zZWMgPSAoKGRvdWJsZSkgdG90YWwgLSBjdXJyZW50KSAqIGVsYXBzZWRfc2VjIC8gY3VycmVu dDsKKworCS8qCisJICogSWYgd2Ugd2FudCB0byBzdGljayB3aXRoIHRoZSBvcmlnaW5hbCBsb2dn aW5nLCBwcmludCBhIG1lc3NhZ2UgZWFjaAorCSAqIDEwMGsgaW5zZXJ0ZWQgcm93cy4KKwkgKi8K KwlpZiAoKCF1c2VfcXVpZXQpICYmIChjdXJyZW50ICUgMTAwMDAwID09IDApKQorCXsKKwkJY2hh cnMgPSBmcHJpbnRmKHN0ZGVyciwgSU5UNjRfRk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0 dXBsZXMgKCVkJSUpIG9mICVzIGRvbmUgKGVsYXBzZWQgJS4yZiBzLCByZW1haW5pbmcgJS4yZiBz KSIsCisJCQkJCQljdXJyZW50LCB0b3RhbCwKKwkJCQkJCShpbnQpICgoY3VycmVudCAqIDEwMCkg LyB0b3RhbCksCisJCQkJCQl0YWJsZSwgZWxhcHNlZF9zZWMsIHJlbWFpbmluZ19zZWMpOworCisJ CS8qCisJCSAqIElmIHRoZSBwcmV2aW91cyBwcm9ncmVzcyBtZXNzYWdlIGlzIGxvbmdlciB0aGFu IHRoZSBjdXJyZW50IG9uZSwKKwkJICogYWRkIHNwYWNlcyB0byB0aGUgY3VycmVudCBsaW5lIHRv IGZ1bGx5IG92ZXJ3cml0ZSBhbnkgcmVtYWluaW5nCisJCSAqIGNoYXJhY3RlcnMgZnJvbSB0aGUg cHJldmlvdXMgbWVzc2FnZS4KKwkJICovCisJCWlmIChwcmV2X2NoYXJzID4gY2hhcnMpCisJCQlm cHJpbnRmKHN0ZGVyciwgIiUqYyIsIHByZXZfY2hhcnMgLSBjaGFycywgJyAnKTsKKwkJZnB1dGMo ZW9sLCBzdGRlcnIpOworCQlwcmV2X2NoYXJzID0gY2hhcnM7CisJfQorCS8qIGxldCdzIG5vdCBj YWxsIHRoZSB0aW1pbmcgZm9yIGVhY2ggcm93LCBidXQgb25seSBlYWNoIDEwMCByb3dzICovCisJ ZWxzZSBpZiAodXNlX3F1aWV0ICYmIChjdXJyZW50ICUgMTAwID09IDApKQorCXsKKwkJLyogaGF2 ZSB3ZSByZWFjaGVkIHRoZSBuZXh0IGludGVydmFsIChvciBlbmQpPyAqLworCQlpZiAoKGN1cnJl bnQgPT0gdG90YWwpIHx8IChlbGFwc2VkX3NlYyA+PSBsb2dfaW50ZXJ2YWwgKiBMT0dfU1RFUF9T RUNPTkRTKSkKKwkJeworCQkJY2hhcnMgPSBmcHJpbnRmKHN0ZGVyciwgSU5UNjRfRk9STUFUICIg b2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUpIG9mICVzIGRvbmUgKGVsYXBzZWQgJS4y ZiBzLCByZW1haW5pbmcgJS4yZiBzKSIsCisJCQkJCQkJY3VycmVudCwgdG90YWwsCisJCQkJCQkJ KGludCkgKChjdXJyZW50ICogMTAwKSAvIHRvdGFsKSwKKwkJCQkJCQl0YWJsZSwgZWxhcHNlZF9z ZWMsIHJlbWFpbmluZ19zZWMpOworCisJCQkvKgorCQkJICogSWYgdGhlIHByZXZpb3VzIHByb2dy ZXNzIG1lc3NhZ2UgaXMgbG9uZ2VyIHRoYW4gdGhlIGN1cnJlbnQKKwkJCSAqIG9uZSwgYWRkIHNw YWNlcyB0byB0aGUgY3VycmVudCBsaW5lIHRvIGZ1bGx5IG92ZXJ3cml0ZSBhbnkKKwkJCSAqIHJl bWFpbmluZyBjaGFyYWN0ZXJzIGZyb20gdGhlIHByZXZpb3VzIG1lc3NhZ2UuCisJCQkgKi8KKwkJ CWlmIChwcmV2X2NoYXJzID4gY2hhcnMpCisJCQkJZnByaW50ZihzdGRlcnIsICIlKmMiLCBwcmV2 X2NoYXJzIC0gY2hhcnMsICcgJyk7CisJCQlmcHV0Yyhlb2wsIHN0ZGVycik7CisJCQlwcmV2X2No YXJzID0gY2hhcnM7CisKKwkJCS8qIHNraXAgdG8gdGhlIG5leHQgaW50ZXJ2YWwgKi8KKwkJCWxv Z19pbnRlcnZhbCA9IChpbnQpIGNlaWwoZWxhcHNlZF9zZWMgLyBMT0dfU1RFUF9TRUNPTkRTKTsK KwkJfQorCX0KKworCWlmIChjdXJyZW50ID09IHRvdGFsICYmIGNoYXJzICE9IDAgJiYgZW9sICE9 ICdcbicpCisJCWZwcmludGYoc3RkZXJyLCAiJSpjXHIiLCBjaGFycywgJyAnKTsJLyogQ2xlYXIg dGhlIGN1cnJlbnQgbGluZSAqLworfQorCiBzdGF0aWMgdm9pZAogaW5pdFBvcHVsYXRlVGFibGVD b3B5VGV4dChQR2Nvbm4gKmNvbiwgY29uc3QgY2hhciAqdGFibGUsIGludDY0IGJhc2UsCiAJCQkJ CQkgIGluaXRSb3dNZXRob2QgaW5pdF9yb3cpCiB7CiAJaW50CQkJbjsKIAlpbnQ2NAkJazsKLQlp bnQJCQljaGFycyA9IDA7Ci0JaW50CQkJcHJldl9jaGFycyA9IDA7CiAJUEdyZXN1bHQgICAqcmVz OwogCVBRRXhwQnVmZmVyRGF0YSBzcWw7CiAJY2hhcgkJY29weV9zdGF0ZW1lbnRbMjU2XTsKIAlj b25zdCBjaGFyICpjb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyBmcm9tIHN0ZGluIjsKIAlp bnQ2NAkJdG90YWwgPSBiYXNlICogc2NhbGU7CiAKLQkvKiB1c2VkIHRvIHRyYWNrIGVsYXBzZWQg dGltZSBhbmQgZXN0aW1hdGUgb2YgdGhlIHJlbWFpbmluZyB0aW1lICovCi0JcGdfdGltZV91c2Vj X3Qgc3RhcnQ7Ci0JaW50CQkJbG9nX2ludGVydmFsID0gMTsKLQotCS8qIFN0YXkgb24gdGhlIHNh bWUgbGluZSBpZiByZXBvcnRpbmcgdG8gYSB0ZXJtaW5hbCAqLwotCWNoYXIJCWVvbCA9IGlzYXR0 eShmaWxlbm8oc3RkZXJyKSkgPyAnXHInIDogJ1xuJzsKLQogCWluaXRQUUV4cEJ1ZmZlcigmc3Fs KTsKIAogCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0ZXIgZm9yIGFsbCBv cmRpbmFyeSB0YWJsZXMgKi8KQEAgLTUxMDMsMTIgKzUxNjEsOCBAQCBpbml0UG9wdWxhdGVUYWJs ZUNvcHlUZXh0KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJsZSwgaW50NjQgYmFzZSwKIAkJ cGdfZmF0YWwoInVuZXhwZWN0ZWQgY29weSBpbiByZXN1bHQ6ICVzIiwgUFFlcnJvck1lc3NhZ2Uo Y29uKSk7CiAJUFFjbGVhcihyZXMpOwogCi0Jc3RhcnQgPSBwZ190aW1lX25vdygpOwotCiAJZm9y IChrID0gMDsgayA8IHRvdGFsOyBrKyspCiAJewotCQlpbnQ2NAkJaiA9IGsgKyAxOwotCiAJCWlu aXRfcm93KCZzcWwsIGspOwogCQlpZiAoUFFwdXRsaW5lKGNvbiwgc3FsLmRhdGEpKQogCQkJcGdf ZmF0YWwoIlBRcHV0bGluZSBmYWlsZWQiKTsKQEAgLTUxMTYsNjIgKzUxNzAsOSBAQCBpbml0UG9w dWxhdGVUYWJsZUNvcHlUZXh0KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJsZSwgaW50NjQg YmFzZSwKIAkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCWJyZWFrOwogCi0JCS8qCi0JCSAqIElm IHdlIHdhbnQgdG8gc3RpY2sgd2l0aCB0aGUgb3JpZ2luYWwgbG9nZ2luZywgcHJpbnQgYSBtZXNz YWdlIGVhY2gKLQkJICogMTAwayBpbnNlcnRlZCByb3dzLgotCQkgKi8KLQkJaWYgKCghdXNlX3F1 aWV0KSAmJiAoaiAlIDEwMDAwMCA9PSAwKSkKLQkJewotCQkJZG91YmxlCQllbGFwc2VkX3NlYyA9 IFBHX1RJTUVfR0VUX0RPVUJMRShwZ190aW1lX25vdygpIC0gc3RhcnQpOwotCQkJZG91YmxlCQly ZW1haW5pbmdfc2VjID0gKChkb3VibGUpIHRvdGFsIC0gaikgKiBlbGFwc2VkX3NlYyAvIGo7Ci0K LQkJCWNoYXJzID0gZnByaW50ZihzdGRlcnIsIElOVDY0X0ZPUk1BVCAiIG9mICIgSU5UNjRfRk9S TUFUICIgdHVwbGVzICglZCUlKSBvZiAlcyBkb25lIChlbGFwc2VkICUuMmYgcywgcmVtYWluaW5n ICUuMmYgcykiLAotCQkJCQkJCWosIHRvdGFsLAotCQkJCQkJCShpbnQpICgoaiAqIDEwMCkgLyB0 b3RhbCksCi0JCQkJCQkJdGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjKTsKLQotCQkJ LyoKLQkJCSAqIElmIHRoZSBwcmV2aW91cyBwcm9ncmVzcyBtZXNzYWdlIGlzIGxvbmdlciB0aGFu IHRoZSBjdXJyZW50Ci0JCQkgKiBvbmUsIGFkZCBzcGFjZXMgdG8gdGhlIGN1cnJlbnQgbGluZSB0 byBmdWxseSBvdmVyd3JpdGUgYW55Ci0JCQkgKiByZW1haW5pbmcgY2hhcmFjdGVycyBmcm9tIHRo ZSBwcmV2aW91cyBtZXNzYWdlLgotCQkJICovCi0JCQlpZiAocHJldl9jaGFycyA+IGNoYXJzKQot CQkJCWZwcmludGYoc3RkZXJyLCAiJSpjIiwgcHJldl9jaGFycyAtIGNoYXJzLCAnICcpOwotCQkJ ZnB1dGMoZW9sLCBzdGRlcnIpOwotCQkJcHJldl9jaGFycyA9IGNoYXJzOwotCQl9Ci0JCS8qIGxl dCdzIG5vdCBjYWxsIHRoZSB0aW1pbmcgZm9yIGVhY2ggcm93LCBidXQgb25seSBlYWNoIDEwMCBy b3dzICovCi0JCWVsc2UgaWYgKHVzZV9xdWlldCAmJiAoaiAlIDEwMCA9PSAwKSkKLQkJewotCQkJ ZG91YmxlCQllbGFwc2VkX3NlYyA9IFBHX1RJTUVfR0VUX0RPVUJMRShwZ190aW1lX25vdygpIC0g c3RhcnQpOwotCQkJZG91YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3VibGUpIHRvdGFsIC0gaikg KiBlbGFwc2VkX3NlYyAvIGo7Ci0KLQkJCS8qIGhhdmUgd2UgcmVhY2hlZCB0aGUgbmV4dCBpbnRl cnZhbCAob3IgZW5kKT8gKi8KLQkJCWlmICgoaiA9PSB0b3RhbCkgfHwgKGVsYXBzZWRfc2VjID49 IGxvZ19pbnRlcnZhbCAqIExPR19TVEVQX1NFQ09ORFMpKQotCQkJewotCQkJCWNoYXJzID0gZnBy aW50ZihzdGRlcnIsIElOVDY0X0ZPUk1BVCAiIG9mICIgSU5UNjRfRk9STUFUICIgdHVwbGVzICgl ZCUlKSBvZiAlcyBkb25lIChlbGFwc2VkICUuMmYgcywgcmVtYWluaW5nICUuMmYgcykiLAotCQkJ CQkJCQlqLCB0b3RhbCwKLQkJCQkJCQkJKGludCkgKChqICogMTAwKSAvIHRvdGFsKSwKLQkJCQkJ CQkJdGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjKTsKLQotCQkJCS8qCi0JCQkJICog SWYgdGhlIHByZXZpb3VzIHByb2dyZXNzIG1lc3NhZ2UgaXMgbG9uZ2VyIHRoYW4gdGhlIGN1cnJl bnQKLQkJCQkgKiBvbmUsIGFkZCBzcGFjZXMgdG8gdGhlIGN1cnJlbnQgbGluZSB0byBmdWxseSBv dmVyd3JpdGUgYW55Ci0JCQkJICogcmVtYWluaW5nIGNoYXJhY3RlcnMgZnJvbSB0aGUgcHJldmlv dXMgbWVzc2FnZS4KLQkJCQkgKi8KLQkJCQlpZiAocHJldl9jaGFycyA+IGNoYXJzKQotCQkJCQlm cHJpbnRmKHN0ZGVyciwgIiUqYyIsIHByZXZfY2hhcnMgLSBjaGFycywgJyAnKTsKLQkJCQlmcHV0 Yyhlb2wsIHN0ZGVycik7Ci0JCQkJcHJldl9jaGFycyA9IGNoYXJzOwotCi0JCQkJLyogc2tpcCB0 byB0aGUgbmV4dCBpbnRlcnZhbCAqLwotCQkJCWxvZ19pbnRlcnZhbCA9IChpbnQpIGNlaWwoZWxh cHNlZF9zZWMgLyBMT0dfU1RFUF9TRUNPTkRTKTsKLQkJCX0KLQkJfQorCQlzaG93UG9wdWxhdGVU YWJsZUNvcHlQcm9ncmVzcyh0YWJsZSwgayArIDEsIHRvdGFsKTsKIAl9CiAKLQlpZiAoY2hhcnMg IT0gMCAmJiBlb2wgIT0gJ1xuJykKLQkJZnByaW50ZihzdGRlcnIsICIlKmNcciIsIGNoYXJzLCAn ICcpOwkvKiBDbGVhciB0aGUgY3VycmVudCBsaW5lICovCiAKIAlpZiAoUFFwdXRsaW5lKGNvbiwg IlxcLlxuIikpCiAJCXBnX2ZhdGFsKCJ2ZXJ5IGxhc3QgUFFwdXRsaW5lIGZhaWxlZCIpOwpAQCAt NTQ0OCw2ICs1NDQ5LDExIEBAIGluaXRQb3B1bGF0ZVRhYmxlQ29weUJpbmFyeShQR2Nvbm4gKmNv biwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsg aSA8IHN0YXJ0ICsgYmFzZTsgaSsrKQogCXsKIAkJaW5pdF9yb3coY29uLCBpLCBiYXNlLCBjb2x1 bW5Db3VudGVyKTsKKworCQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQorCQkJYnJlYWs7CisKKwkJc2hv d1BvcHVsYXRlVGFibGVDb3B5UHJvZ3Jlc3ModGFibGUsIGksIGJhc2UgKiBzY2FsZSk7CiAJfQog CiAJcmVzID0gUFFnZXRSZXN1bHQoY29uKTsKQEAgLTU1MzIsNiArNTUzOCw4IEBAIGluaXRHZW5l cmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQogCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJh dGluZyBkYXRhIChjbGllbnQtc2lkZSBhcyAlcyB0cmFuc2FjdGlvbiVzKSBpbiAiLAogCQkJbXVs dGlfeGFjdCA/ICJtdWx0aXBsZSIgOiAic2luZ2xlIiwgbXVsdGlfeGFjdCA/ICJzIiA6ICIiKTsK IAorCWRhdGFfbG9hZF9zdGFydCA9IHBnX3RpbWVfbm93KCk7CisKIAlzd2l0Y2ggKGRhdGFfZ2Vu ZXJhdGlvbl90eXBlKQogCXsKIAkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUOgot LSAKMi40My4wCgpGcm9tIGFmZTNmNjliMjMxOTBmMzc1YjU3ZDVjZjBhM2VhZTJjZDhlNDBjYWEg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9u b3ZAZ21haWwuY29tPgpEYXRlOiBNb24sIDIzIEZlYiAyMDI2IDE3OjA3OjE2ICswNzAwClN1Ympl Y3Q6IFtQQVRDSCB2OSAyMy8yNl0gQWRkaW5nIG11bHRpLXRyYW5zYWN0aW9uIG1vZGUgdG8gY2xp ZW50LXNpZGUgZGF0YQogZ2VuZXJhdGlvbgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j ICAgICAgICAgICAgICAgICAgICB8IDUyICsrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3Bn YmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbCB8IDQ3ICsrKysrKysrKy0tLS0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYwppbmRleCBlM2UwZTA3Mzc5Mi4uMWI3M2RhOTA0YWQgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAt NTEzMCwyMiArNTEzMCwyMiBAQCBzaG93UG9wdWxhdGVUYWJsZUNvcHlQcm9ncmVzcyhjb25zdCBj aGFyICp0YWJsZSwgaW50NjQgY3VycmVudCwgaW50NjQgdG90YWwpCiB9CiAKIHN0YXRpYyB2b2lk Ci1pbml0UG9wdWxhdGVUYWJsZUNvcHlUZXh0KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJs ZSwgaW50NjQgYmFzZSwKK2luaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoUEdjb25uICpjb24sIGNv bnN0IGNoYXIgKnRhYmxlLCBpbnQgY291bnRlciwgaW50NjQgYmFzZSwKIAkJCQkJCSAgaW5pdFJv d01ldGhvZCBpbml0X3JvdykKIHsKIAlpbnQJCQluOwotCWludDY0CQlrOwogCVBHcmVzdWx0ICAg KnJlczsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOwogCWNoYXIJCWNvcHlfc3RhdGVtZW50WzI1Nl07 CiAJY29uc3QgY2hhciAqY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgZnJvbSBzdGRpbiI7 Ci0JaW50NjQJCXRvdGFsID0gYmFzZSAqIHNjYWxlOworCWludDY0CQlzdGFydCA9IGJhc2UgKiBj b3VudGVyOwogCiAJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOwogCiAJLyogVXNlIENPUFkgd2l0aCBG UkVFWkUgb24gdjE0IGFuZCBsYXRlciBmb3IgYWxsIG9yZGluYXJ5IHRhYmxlcyAqLwogCWlmICgo UFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKSAmJgotCQlnZXRfdGFibGVfcmVsa2luZChj b24sIHRhYmxlKSA9PSBSRUxLSU5EX1JFTEFUSU9OKQorCQlnZXRfdGFibGVfcmVsa2luZChjb24s IHRhYmxlKSA9PSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCSFtdWx0aV94YWN0KQogCQljb3B5X3N0 YXRlbWVudF9mbXQgPSAiY29weSAlcyBmcm9tIHN0ZGluIHdpdGggKGZyZWV6ZSBvbikiOwogCiAK QEAgLTUxNjEsMTYgKzUxNjEsMTYgQEAgaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4dChQR2Nvbm4g KmNvbiwgY29uc3QgY2hhciAqdGFibGUsIGludDY0IGJhc2UsCiAJCXBnX2ZhdGFsKCJ1bmV4cGVj dGVkIGNvcHkgaW4gcmVzdWx0OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOwogCVBRY2xlYXIo cmVzKTsKIAotCWZvciAoayA9IDA7IGsgPCB0b3RhbDsgaysrKQorCWZvciAoaW50NjRfdCBpID0g c3RhcnQ7IGkgPCBzdGFydCArIGJhc2U7IGkrKykKIAl7Ci0JCWluaXRfcm93KCZzcWwsIGspOwor CQlpbml0X3Jvdygmc3FsLCBpKTsKIAkJaWYgKFBRcHV0bGluZShjb24sIHNxbC5kYXRhKSkKIAkJ CXBnX2ZhdGFsKCJQUXB1dGxpbmUgZmFpbGVkIik7CiAKIAkJaWYgKENhbmNlbFJlcXVlc3RlZCkK IAkJCWJyZWFrOwogCi0JCXNob3dQb3B1bGF0ZVRhYmxlQ29weVByb2dyZXNzKHRhYmxlLCBrICsg MSwgdG90YWwpOworCQlzaG93UG9wdWxhdGVUYWJsZUNvcHlQcm9ncmVzcyh0YWJsZSwgaSwgYmFz ZSAqIHNjYWxlKTsKIAl9CiAKIApAQCAtNTE5Myw5ICs1MTkzLDYgQEAgaW5pdEdlbmVyYXRlRGF0 YUNsaWVudFNpZGVUZXh0RnJtdChQR2Nvbm4gKmNvbikKIHsKIAlmcHJpbnRmKHN0ZGVyciwgIlRF WFQgbW9kZS4uLlxuIik7CiAKLQlpZiAobXVsdGlfeGFjdCkKLQkJZnByaW50ZihzdGRlcnIsICJX QVJOSU5HISBNdWx0aXBsZSB0cmFuc2FjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBt b2RlXG4iKTsKLQogCS8qCiAJICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9u IHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCiAJICogZGF0YS1sb2FkaW5nIG9wdGltaXphdGlvbnMK QEAgLTUyMDUsMTUgKzUyMDIsMjggQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0RnJt dChQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwogCWluaXRU cnVuY2F0ZVRhYmxlcyhjb24pOwogCi0JLyoKLQkgKiBmaWxsIGJyYW5jaGVzLCB0ZWxsZXJzLCBh Y2NvdW50cyBpbiB0aGF0IG9yZGVyIGluIGNhc2UgZm9yZWlnbiBrZXlzCi0JICogYWxyZWFkeSBl eGlzdAotCSAqLwotCWluaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF9icmFu Y2hlcyIsIG5icmFuY2hlcywgaW5pdEJyYW5jaCk7Ci0JaW5pdFBvcHVsYXRlVGFibGVDb3B5VGV4 dChjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBudGVsbGVycywgaW5pdFRlbGxlcik7Ci0JaW5pdFBv cHVsYXRlVGFibGVDb3B5VGV4dChjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgbmFjY291bnRzLCBp bml0QWNjb3VudCk7CisJaWYgKG11bHRpX3hhY3QpCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAi Y29tbWl0Iik7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpKyspCisJeworCQlpZiAo bXVsdGlfeGFjdCkKKwkJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKworCQkvKgor CQkgKiBmaWxsIGJyYW5jaGVzLCB0ZWxsZXJzLCBhY2NvdW50cyBpbiB0aGF0IG9yZGVyIGluIGNh c2UgZm9yZWlnbiBrZXlzCisJCSAqIGFscmVhZHkgZXhpc3QKKwkJICovCisJCWluaXRQb3B1bGF0 ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIGksIG5icmFuY2hlcywgaW5p dEJyYW5jaCk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQ29weVRleHQoY29uLCAicGdiZW5jaF90ZWxs ZXJzIiwgaSwgbnRlbGxlcnMsIGluaXRUZWxsZXIpOworCQlpbml0UG9wdWxhdGVUYWJsZUNvcHlU ZXh0KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBpLCBuYWNjb3VudHMsIGluaXRBY2NvdW50KTsK IAotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisJCWlmIChtdWx0aV94YWN0KQor CQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwl9CisKKwlpZiAoIW11bHRpX3hh Y3QpCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiB9CiAKIApAQCAtNTQyNiw5 ICs1NDM2LDkgQEAgaW5pdFBvcHVsYXRlVGFibGVDb3B5QmluYXJ5KFBHY29ubiAqY29uLCBjaGFy ICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAogCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYx NCBhbmQgbGF0ZXIgZm9yIGFsbCBvcmRpbmFyeSB0YWJsZXMgKi8KIAlpZiAoKFBRc2VydmVyVmVy c2lvbihjb24pID49IDE0MDAwMCkgJiYKLQkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkg PT0gUkVMS0lORF9SRUxBVElPTikKLQkJaWYgKCFtdWx0aV94YWN0KQotCQkJY29weV9zdGF0ZW1l bnRfZm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZy ZWV6ZSBvbikiOworCQlnZXRfdGFibGVfcmVsa2luZChjb24sIHRhYmxlKSA9PSBSRUxLSU5EX1JF TEFUSU9OICYmCisJCSFtdWx0aV94YWN0KQorCQljb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAl cyAoJXMpIGZyb20gc3RkaW4gd2l0aCAoZm9ybWF0IGJpbmFyeSwgZnJlZXplIG9uKSI7CiAKIAlu ID0gcGdfc25wcmludGYoY29weV9zdGF0ZW1lbnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNv cHlfc3RhdGVtZW50X2ZtdCwgdGFibGUsIGNvbHVtbnMpOwogCWlmIChuID49IHNpemVvZihjb3B5 X3N0YXRlbWVudCkpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93 aXRoX3NlcnZlci5wbCBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVy LnBsCmluZGV4IGFjYjFlMzFkM2U4Li40NjU2OWIwZWIzNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKKysrIGIvc3JjL2Jpbi9wZ2JlbmNo L3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKQEAgLTE4OSw3ICsxODksNyBAQCAkbm9kZS0+ cGdiZW5jaCgKIGNoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAodW5uZXN0KScp OwogCiAKLSMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uIHdpdGggQ09QWSBURVhUCisjIFRl c3QgY2xpZW50LXNpZGUgZ2VuZXJhdGlvbiB3aXRoIENPUFkgVEVYVAogJG5vZGUtPnBnYmVuY2go CiAJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRnJywKIAkwLApAQCAtMjAwLDQ1ICsyMDAs NDggQEAgJG5vZGUtPnBnYmVuY2goCiAJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRl IGFzIHNpbmdsZSB0cmFuc2FjdGlvbn0sCiAJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQogCV0s Ci0JJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIFRFWFQnKTsKKwkncGdiZW5jaCAt LWluaXQtc3RlcHMgY2xpZW50LXNpZGUgVEVYVCAoc2luZ2xlIFhBQ1QgIzEpJyk7CiAKLSMgQ2hl Y2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorIyBDaGVj ayBkYXRhIHN0YXRlLCBhZnRlciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19k YXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKHRleHQpJyk7CiAKICRub2RlLT5wZ2JlbmNo KAotCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0TWcnLAorCSctLWluaXRpYWxpemUgLS1p bml0LXN0ZXBzPWR0U2cnLAogCTAsCiAJW3Fye14kfV0sCiAJWwogCQlxcntkcm9wcGluZyBvbGQg dGFibGVzfSwKIAkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKLQkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwo Y2xpZW50LXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25zfSwKKwkJcXJ7Z2VuZXJhdGluZyBk YXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9ufSwKKwkJcXJ7XGQgb2YgXGQr IHR1cGxlcyBcKFxkJVwpIG9mIHBnYmVuY2hfYnJhbmNoZXMgZG9uZX0sCisJCXFye1xkIG9mIFxk KyB0dXBsZXMgXChcZCVcKSBvZiBwZ2JlbmNoX3RlbGxlcnMgZG9uZX0sCisJCXFye1xkIG9mIFxk KyB0dXBsZXMgXChcZCVcKSBvZiBwZ2JlbmNoX2FjY291bnRzIGRvbmV9LAogCQlxcntkb25lIGlu IFxkK1wuXGRcZCBzIH0KIAldLAotCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBU RVhUJyk7CisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIFRFWFQgKHNpbmdsZSBY QUNUICMyKScpOwogCi0jIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEg Z2VuZXJhdGlvbi4KKyMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgY2xpZW50LXNpZGUgZGF0YSBn ZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlICh0ZXh0KScp OwogCi0KLSMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uIHdpdGggQ09QWSBCSU5BUlkKICRu b2RlLT5wZ2JlbmNoKAotCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0YycsCisJJy0taW5p dGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRNZycsCiAJMCwKIAlbcXJ7XiR9XSwKIAlbCiAJCXFye2Ry b3BwaW5nIG9sZCB0YWJsZXN9LAogCQlxcntjcmVhdGluZyB0YWJsZXN9LAotCQlxcntnZW5lcmF0 aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb259LAorCQlxcntnZW5l cmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlvbnN9LAogCQlx cntkb25lIGluIFxkK1wuXGRcZCBzIH0KIAldLAotCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGll bnQtc2lkZSBCSU5BUlknKTsKKwkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50LXNpZGUgVEVY VCAobXVsdGlwbGUgWEFDVHMpJyk7CisKKyMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgY2xpZW50 LXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1z aWRlICh0ZXh0KScpOwogCi0jIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRh dGEgZ2VuZXJhdGlvbi4KLWNoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAoYmlu YXJ5KScpOwogCisjIFRlc3QgY2xpZW50LXNpZGUgZ2VuZXJhdGlvbiB3aXRoIENPUFkgQklOQVJZ CiAkbm9kZS0+cGdiZW5jaCgKLQknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1kdFNjJywKKwkn LS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1kdGMnLAogCTAsCiAJW3Fye14kfV0sCiAJWwpAQCAt MjQ3LDI0ICsyNTAsMjQgQEAgJG5vZGUtPnBnYmVuY2goCiAJCXFye2dlbmVyYXRpbmcgZGF0YSBc KGNsaWVudC1zaWRlIGFzIHNpbmdsZSB0cmFuc2FjdGlvbn0sCiAJCXFye2RvbmUgaW4gXGQrXC5c ZFxkIHMgfQogCV0sCi0JJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIEJJTkFSWScp OworCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlkgKHNpbmdsZSBYQUNU ICMxKScpOwogCi0jIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2Vu ZXJhdGlvbi4KKyMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgY2xpZW50LXNpZGUgZGF0YSBnZW5l cmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlIChiaW5hcnkpJyk7 CiAKICRub2RlLT5wZ2JlbmNoKAotCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0TWMnLAor CSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0U2MnLAogCTAsCiAJW3Fye14kfV0sCiAJWwog CQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKIAkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKLQkJcXJ7 Z2VuZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25zfSwK KwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9u fSwKIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKLQkncGdiZW5jaCAtLWluaXQtc3Rl cHMgY2xpZW50LXNpZGUgQklOQVJZJyk7CisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1z aWRlIEJJTkFSWSAoc2luZ2xlIFhBQ1QgIzIpJyk7CiAKLSMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0 ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRl ciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19kYXRhX3N0YXRlKCRub2RlLCAn Y2xpZW50LXNpZGUgKGJpbmFyeSknKTsKIAogJG5vZGUtPnBnYmVuY2goCkBAIC0yNzksNyArMjgy LDcgQEAgJG5vZGUtPnBnYmVuY2goCiAJXSwKIAkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50 LXNpZGUgQklOQVJZJyk7CiAKLSMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUg ZGF0YSBnZW5lcmF0aW9uLgorIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBjbGllbnQtc2lkZSBk YXRhIGdlbmVyYXRpb24uCiBjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJp bmFyeSknKTsKIAogCi0tIAoyLjQzLjAKCkZyb20gZDljNjFlZmRkODUzYzk5OWI5MjA2MWFkNGY4 OGRkMDEyMjY1ZGJiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25v diA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFN1biwgMSBNYXIgMjAyNiAxODoyNDox OCArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMjQvMjZdIFJlbW92aW5nIGRvdWJsZSBjYWxsIHRv IGNoZWNrSW5pdFN0ZXBzCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA1ICsrLS0t CiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCmluZGV4IDFiNzNkYTkwNGFkLi43ZDNhMTU4MzE1MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01ODE2 LDkgKzU4MTYsOSBAQCBjaGVja0luaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFsaXplX3N0ZXBz KQogCX0KIAogCWlmIChkYXRhX2luaXRfdHlwZSA9PSAwKQotCQlwZ19sb2dfZXJyb3IoIldBUk5J TkchIE5vIGRhdGEgZ2VuZXJhdGlvbiB0eXBlIGlzIHByb3ZpZGVkIik7CisJCXBnX2xvZ193YXJu aW5nKCJObyBkYXRhIGdlbmVyYXRpb24gdHlwZSBpcyBwcm92aWRlZCIpOwogCWlmIChkYXRhX2lu aXRfdHlwZSA+IDEpCi0JCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTW9yZSB0aGFuIG9uZSB0eXBl IG9mIGRhdGEgaW5pdGlhbGl6YXRpb24gaXMgcmVxdWVzdGVkIik7CisJCXBnX2xvZ193YXJuaW5n KCJNb3JlIHRoYW4gb25lIHR5cGUgb2YgZGF0YSBpbml0aWFsaXphdGlvbiBpcyByZXF1ZXN0ZWQi KTsKIH0KIAogLyoKQEAgLTc0NDksNyArNzQ0OSw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQkJY2FzZSAnSSc6CiAJCQkJcGdfZnJlZShpbml0aWFsaXplX3N0ZXBzKTsKIAkJCQlp bml0aWFsaXplX3N0ZXBzID0gcGdfc3RyZHVwKG9wdGFyZyk7Ci0JCQkJY2hlY2tJbml0U3RlcHMo aW5pdGlhbGl6ZV9zdGVwcyk7CiAJCQkJaW5pdGlhbGl6YXRpb25fb3B0aW9uX3NldCA9IHRydWU7 CiAJCQkJYnJlYWs7CiAJCQljYXNlICdqJzoJCQkvKiBqb2JzICovCi0tIAoyLjQzLjAKCkZyb20g ZDU5M2EyMDYzYTk5N2M4NmRlNGI5MzUwYjk3ZDRhZDY1MjdiZGRlZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRh dGU6IFN1biwgMSBNYXIgMjAyNiAxODo0NToyNSArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMjUv MjZdIEZpeGVkIDIgc21hbGwgYnVncwoKMS4gT3ZlcndyaXRlIG9mIGluaXQgbW9kZSBieSBsYXN0 IG1vZGUgaW4gY2hlY2tJbml0U3RlcHMKCjIuIEJsZWRkaW5nIG9mIGluaXQgcHJvZ3Jlc3MgZnJv bSBwcmV2aW91cyBtb2RlIHVuZGVyIG5ldyBvbmUgKGVnLCAnLUlnZ0dHJykKLS0tCiBzcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jIHwgMTAgKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA3ZDNhMTU4MzE1Mi4u ZGFmMzNkNzM4MTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTEyNSw4ICs1MTI1LDExIEBAIHNob3dQb3B1 bGF0ZVRhYmxlQ29weVByb2dyZXNzKGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBjdXJyZW50LCBp bnQ2NCB0b3RhbCkKIAkJfQogCX0KIAotCWlmIChjdXJyZW50ID09IHRvdGFsICYmIGNoYXJzICE9 IDAgJiYgZW9sICE9ICdcbicpCi0JCWZwcmludGYoc3RkZXJyLCAiJSpjXHIiLCBjaGFycywgJyAn KTsJLyogQ2xlYXIgdGhlIGN1cnJlbnQgbGluZSAqLworCWlmIChjdXJyZW50ICsgMSA9PSB0b3Rh bCAmJiBjaGFycyAhPSAwKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICIlKmMiLCBjaGFycywgJyAn KTsJLyogQ2xlYXIgdGhlIGN1cnJlbnQgbGluZSAqLworCQlmcHV0Yyhlb2wsIHN0ZGVycik7CisJ fQogfQogCiBzdGF0aWMgdm9pZApAQCAtNTgxMCw3ICs1ODEzLDYgQEAgY2hlY2tJbml0U3RlcHMo Y29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIAkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBF X0lOU0VSVF9TRVJJRVM6CiAJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNU OgogCQkJCWRhdGFfaW5pdF90eXBlKys7Ci0JCQkJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSAqc3Rl cDsKIAkJCQlicmVhazsKIAkJfQogCX0KQEAgLTU4NTksMTEgKzU4NjEsMTMgQEAgcnVuSW5pdFN0 ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiAJCQljYXNlIElOSVRfU1RFUF9HRU5f VFlQRV9DT1BZX1RFWFQ6CiAJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZX0JJTkFSWToK IAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5lcmF0ZSI7CisJCQkJZGF0YV9nZW5lcmF0aW9uX3R5 cGUgPSAqc3RlcDsKIAkJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShjb24pOwogCQkJCWJy ZWFrOwogCQkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfSU5TRVJUX1NFUklFUzoKIAkJCWNhc2Ug SU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9VTk5FU1Q6CiAJCQkJb3AgPSAic2VydmVyLXNpZGUg Z2VuZXJhdGUiOworCQkJCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gKnN0ZXA7CiAJCQkJaW5pdEdl bmVyYXRlRGF0YVNlcnZlclNpZGUoY29uKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgSU5JVF9TVEVQ X0dFTl9UWVBFX1NJTkdMRV9YQUNUOgotLSAKMi40My4wCgpGcm9tIDI2NWQ0YjAxNzUyOWM5YmRj MjFlY2RiZjdmZTQ3OTQ3ODkyNjA1NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJv cmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBTdW4sIDEgTWFyIDIw MjYgMTk6MDY6NDUgKzA3MDAKU3ViamVjdDogW1BBVENIIHY5IDI2LzI2XSBBZGRlZCBtb3JlIHRl c3RzCgotLS0KIHNyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIHwg OTggKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIu cGwgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCA0 NjU2OWIwZWIzNy4uNzNkMmQ3NTQyNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAw MV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2Jl bmNoX3dpdGhfc2VydmVyLnBsCkBAIC0xNzIsNiArMTcyLDUzIEBAICRub2RlLT5wZ2JlbmNoKAog Y2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ3NlcnZlci1zaWRlJyk7CiAKIAorIyBUZXN0IHNlcnZl ci1zaWRlIGdlbmVyYXRpb24gd2l0aCBnZW5lcmF0ZV9zZXJpZXMKKyRub2RlLT5wZ2JlbmNoKAor CSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0RycsCisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJ CXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntn ZW5lcmF0aW5nIGRhdGEgXChzZXJ2ZXItc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb25cKX0sCisJ CXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIHNl cnZlci1zaWRlIGdlbmVyYXRlX3NlcmllcycpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVy IHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdz ZXJ2ZXItc2lkZSAoZ2VuZXJhdGVfc2VyaWVzKScpOworCiskbm9kZS0+cGdiZW5jaCgKKwknLS1p bml0aWFsaXplIC0taW5pdC1zdGVwcz1kdFNHJywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7 ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVy YXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlIGFzIHNpbmdsZSB0cmFuc2FjdGlvblwpfSwKKwkJcXJ7 ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5jaCAtLWluaXQtc3RlcHMgc2VydmVy LXNpZGUgZ2VuZXJhdGVfc2VyaWVzJyk7CisKKyMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2Vy dmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ3NlcnZl ci1zaWRlIChnZW5lcmF0ZV9zZXJpZXMgc2luZ2xlIFhBQ1QpJyk7CisKKyRub2RlLT5wZ2JlbmNo KAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0TUcnLAorCTAsCisJW3Fye14kfV0sCisJ WworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJ cXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25z XCl9LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1z dGVwcyBzZXJ2ZXItc2lkZSBnZW5lcmF0ZV9zZXJpZXMnKTsKKworIyBDaGVjayBkYXRhIHN0YXRl LCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRu b2RlLCAnc2VydmVyLXNpZGUgKGdlbmVyYXRlX3NlcmllcyBtdWx0aXBsZSBYQUNUcyknKTsKKwor CiAjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRoIFVOTkVTVAogJG5vZGUtPnBnYmVu Y2goCiAJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRVJywKQEAgLTE4OCw2ICsyMzUsMzYg QEAgJG5vZGUtPnBnYmVuY2goCiAjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRl IGRhdGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAo dW5uZXN0KScpOwogCiskbm9kZS0+cGdiZW5jaCgKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVw cz1kdFNVJywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30s CisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKHNlcnZlci1z aWRlIGFzIHNpbmdsZSB0cmFuc2FjdGlvblwpfSwKKwkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9 CisJXSwKKwkncGdiZW5jaCAtLWluaXQtc3RlcHMgc2VydmVyLXNpZGUgVU5ORVNUJyk7CisKKyMg Q2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorY2hl Y2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ3NlcnZlci1zaWRlICh1bm5lc3QpJyk7CisKKyRub2RlLT5w Z2JlbmNoKAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0TVUnLAorCTAsCisJW3Fye14k fV0sCisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVz fSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNh Y3Rpb25zXCl9LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0t aW5pdC1zdGVwcyBzZXJ2ZXItc2lkZSBVTk5FU1QnKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBh ZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2Rl LCAnc2VydmVyLXNpZGUgKHVubmVzdCknKTsKKwogCiAjIFRlc3QgY2xpZW50LXNpZGUgZ2VuZXJh dGlvbiB3aXRoIENPUFkgVEVYVAogJG5vZGUtPnBnYmVuY2goCkBAIC0yODYsNiArMzYzLDI3IEBA ICRub2RlLT5wZ2JlbmNoKAogY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlIChi aW5hcnkpJyk7CiAKIAorIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBkaWZmZXJlbnQgbW9kZXMg b2YgY2xpZW50LXNpZGUgZGF0YSBnZW5lcmF0aW9uLgorY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwg J2NsaWVudC1zaWRlIChiaW5hcnkpJyk7CisKKyRub2RlLT5wZ2JlbmNoKAorCSctLWluaXRpYWxp emUgLS1pbml0LXN0ZXBzPWR0TWNjU2MnLAorCTAsCisJW3Fye14kfV0sCisJWworCQlxcntkcm9w cGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJcXJ7Z2VuZXJhdGlu ZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25zfSwKKwkJcXJ7Z2Vu ZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25zfSwKKwkJ cXJ7Z2VuZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9ufSwK KwkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5jaCAtLWluaXQtc3RlcHMg Y2xpZW50LXNpZGUgQklOQVJZIChtdWx0aXBsZSBYQUNUIG1vZGVzKScpOworCisjIENoZWNrIGRh dGEgc3RhdGUsIGFmdGVyIGNsaWVudC1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFf c3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAoYmluYXJ5IGRpZmZlcmVudCBYQUNUIG1vZGVzIGlu IGxpc3Qgb2YgLS1pbml0LXN0ZXBzKScpOworCisKICMgUnVuIGFsbCBidWlsdGluIHNjcmlwdHMs IGZvciBhIGZldyB0cmFuc2FjdGlvbnMgZWFjaAogJG5vZGUtPnBnYmVuY2goCiAJJy0tdHJhbnNh Y3Rpb25zPTUgLURmb289YmxhIC0tY2xpZW50PTIgLS1wcm90b2NvbD1zaW1wbGUgLS1idWlsdGlu PXQnCi0tIAoyLjQzLjAKCg== --_004_PH0PR08MB702074674145021B680D9D6C8871APH0PR08MB7020namp_--