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 1vN4sn-00AOY5-30 for pgsql-hackers@arkaria.postgresql.org; Sun, 23 Nov 2025 07:51:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vN4sk-00DrZb-39 for pgsql-hackers@arkaria.postgresql.org; Sun, 23 Nov 2025 07:51:39 +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 1vN4sk-00DrZG-1S for pgsql-hackers@lists.postgresql.org; Sun, 23 Nov 2025 07:51:38 +0000 Received: from mail-southcentralusazolkn19013082.outbound.protection.outlook.com ([52.103.14.82] helo=SA9PR02CU001.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vN4si-0011sP-0E for pgsql-hackers@postgresql.org; Sun, 23 Nov 2025 07:51:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rjhZo/Wl4yvdsojoSiyyo8rvp3tQ0wQf1fx3d7+wMFaw44aHUYBQ1CoSTm539vSP8S7MOMVT+X03A/DkHyntdEe+7HCL6vbW2zy0VzZqC3AAlKLYAhO14/m+Imxsxo4AdmKs9A+4ARZlOZjY52y4q4Roe2xenevrPdyyYaksDwI7BT/R7Ibg8OoxLZdC85f+Y0BKKbDlTGg4YTEjPZAEmB6CetQVarCIkcSwDyHgbErZx/0S6GXjbh7ddhChqMF/eo7pLZF/DbtGOl6RdbZs7hj+/9z5akeV+cuNd6q0KUpUBc+cPRVxMWFG3LJEYdEpiy53WYsSgr+jbP/JTqBarQ== 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=Dv8KvLd/BzTKNEsgvXG9ANrujDQEAGQPCnTBvYRzysM=; b=l8NXA8yldv2PxmHenVisa2iTCYXGWBOaFCfBXdAQKvYoPZZEtz1oSwLqsWC8CJr98S+kKIgAcfcApcijNktEz/55blb677fNEAizcMz/FiqyJlKS+FOIAD4h8rCmUSABurV7V1UF8aL1P7LSXLU54Gs0axCqkQHgvJ1BqICI3dvxk5FcJQj9rBd7gE2mfbVu1gBuzXIuQV84wrRzl+W/xtdMm9gZ5bAadC07OeCIp8bzf4gyjsSDn3oo3cGRXQfoC3zLym8XZYvagkhGwSBOSGxqEeHY7vr8bojfkXhZcLicl4R+hns0iEP3GGPn1Q04f+zDT2V97lh+pywAN0Yixg== 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=Dv8KvLd/BzTKNEsgvXG9ANrujDQEAGQPCnTBvYRzysM=; b=TXuip69Ek7PkMnzBTGwVMPhy2zwTXhfEltPh+kPBT8+fAfTP+/aDcWY5EQxn35G3F982Q4Rdypcas6+XMO0i4rqA+XU/at9tI58RcJ2R0jaGkrs9LuDGgxmZKI2RS/3vZhKtJo90ECZ/JjnnHiv0ReDKlB6FeZQO02wMpC668qVhwnC94DIp+tInWaMlw94V8IbX8GAkbm063RGvXX+XB9F/iczfG8+lhW2wMam1u8CMHeOkFeXjsK2+6YMhzOpQ83w//3ltYuw9PK8+CzAwlm3l6mP4vuAo5SFuNGCkStV4uScNeKAlQSxE7Gy32oaYh51Jakfn3swa9/E7oGSl7g== Received: from PH0PR08MB7020.namprd08.prod.outlook.com (2603:10b6:510:74::15) by SA1PR08MB7117.namprd08.prod.outlook.com (2603:10b6:806:1a1::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.8; Sun, 23 Nov 2025 07:51:30 +0000 Received: from PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::e38d:5955:b14c:6ebd]) by PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::e38d:5955:b14c:6ebd%4]) with mapi id 15.20.9343.011; Sun, 23 Nov 2025 07:51:30 +0000 From: Boris Mironov To: Ashutosh Bapat CC: "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+YAGXmPMgAFzjL6AAV1tSw== Date: Sun, 23 Nov 2025 07:51:30 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-CA, en-US Content-Language: en-CA X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR08MB7020:EE_|SA1PR08MB7117:EE_ x-ms-office365-filtering-correlation-id: a57ef031-ae90-4317-f51f-08de2a651d33 x-microsoft-antispam: BCL:0;ARA:14566002|31061999003|51005399006|461199028|6092099016|15030799006|15080799012|8060799015|8062599012|19110799012|440099028|3412199025|40105399003|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?oSPwstPiK/tQoZENNg4xyLV5L/iLwHLLpmwq8LM/r1NyrsUu6Dtnm+liAp?= =?iso-8859-1?Q?KRqbXw9yEPG9Bz4g8/sxSTkurV473VF8GcVA84K4hfmCNFFp5LX3N5ve8T?= =?iso-8859-1?Q?8zcEdSmH1mdc/Mi74985sTpSWhdnbWwa6injr9f2q948HT3LwVVySn4djH?= =?iso-8859-1?Q?S3VCQPuGZYWBq4UflrROa1f7oZcGRb2Btwxr3buGa/qQzREBLkI21umsoA?= =?iso-8859-1?Q?Sf8mq6omzKXUuSx5QtiPYDTbQwIMhd9tm1Ax3g7rLudmfswTlGgPRTcCHR?= =?iso-8859-1?Q?NhhLlce5tmNruJHacz0IIiLq6Ff/SJTcOFaDImnb1o1QJId2Ci4I5yIsSw?= =?iso-8859-1?Q?jcinRIKePhk4gHsZlKBnnY6fV+EQtN7H8Ek0ghqjZWKxC2mrSa2JLqespf?= =?iso-8859-1?Q?r57AbihKQTLd9Ri6JRjoWDkBNXt4ZYwr5Gw/MRCTNTiF6XWjOrPc/bI4w5?= =?iso-8859-1?Q?IA6WQltp3LP1k8OzJ4Ot/Wybl/LdEFvpRxgs4LZDNgAY8oyD3LP2UN59t4?= =?iso-8859-1?Q?UW+n5c1CPCtqw1blyCCD92lKhY09xaVLkPwVwPljdfzSkMlGDBn0oMEpzC?= =?iso-8859-1?Q?Mw38LeZU8L9eQ+MW/Puvi7JS9EtqTV5qIo83ZDF9DWKXjUVe80Qv91RYyY?= =?iso-8859-1?Q?sMOiVH52+B5biv2xMdR3JgjeB2h/sFpeWw/bz2XLTZoy6hPOEqQYxWJslB?= =?iso-8859-1?Q?ka8qw7om8BubtWzpyAoVGtoYNyN3i1uFSmjpQIgxsbiKloacKBNwnG58xC?= =?iso-8859-1?Q?LwSjgJkEaR7TJB5ZKFI9You/bQ21r9no9Xm/1iLP4qi13silXAKWq+y2wc?= =?iso-8859-1?Q?JkmqoDC2yS+VDLp5dXXROYn1PyxAOIr3UTyzmsm1bVP7JCuaqr9UGhdgjx?= =?iso-8859-1?Q?819kNMegaIgePKExXJOW50K090YJqzUlX4HayZpEXtcsthH9B5YrfP1Vjn?= =?iso-8859-1?Q?mkyLilL3+IA0BmJjhDDZlrOyVALY10IGxdj4LtxD8JYGn6c5NmzOG0CeNB?= =?iso-8859-1?Q?E55JJ7mxdlNFQWL8UGYd9C26qQsJnWoZ1EhOvcv9musNXwhBFSJgGVPwxa?= =?iso-8859-1?Q?mkFPR537V2nVTa6tWJX8E69LjwjN7e7ZnaJPuxdmle2v7yCIUKQPpewc0U?= =?iso-8859-1?Q?SHpShUuKwEaPfqALjy9IRAGbC+XiLZ93Q4lMxqesZivwPzb9kkf+zKU87R?= =?iso-8859-1?Q?+kKpp7Vln+uEZJTqTUocDVE8HmE1bZWFHkoGiQLc0Dw0P8HKGq3+wgLiyP?= =?iso-8859-1?Q?BO6+poMrRTFLmpZYE9Z/TXoFX4+8TjqvmloaCxh2o=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?bgGDOVvf4BRT4mmqr1eG3kdPjcKpYPeu0mz0DK5t2DzTI1aLFWB6rMUi7d?= =?iso-8859-1?Q?VM+rBJpZqb+9wNSa8g22Eg+Zrkokr0hwikOTxemuiRIXaTzwdYFMHZsCE4?= =?iso-8859-1?Q?e78yWPG000MeG9527i5iNluKSMKkrPWJchTGaWchpfKGhX/gVTou9fAl1k?= =?iso-8859-1?Q?DdmqvhRnQvN7EPBh1fLKwnG67AY3duqcmoUCsGJLR+IsWX26ubJdLHXkWN?= =?iso-8859-1?Q?idpcBFAxGSNO1eWtI8iR7y55YckK9FEGHlc+ktcyjU0K0noTlevu3H5DmR?= =?iso-8859-1?Q?cx+WSeWkWyUYtOAP6AwcPE+M7lHfxt0ohZkSXduFxk02UBv4Jvp8LxQnTK?= =?iso-8859-1?Q?SxPhxNg5E2w/MGSmfYMHMpFgAKAX1A9py6UTAZ+F2r5CJelaRoB3BZjoo4?= =?iso-8859-1?Q?p2i9JyHQw/X24O0BKIQoV10DtngAJJhiY4h5zDbo/U1OVCTxPV2HN3N4E+?= =?iso-8859-1?Q?dQJjgHbDT95DavHYsydC0VJAU0VRxHMMl1FT7Blf8qlTWP+iXSfbuu2+fZ?= =?iso-8859-1?Q?39q1/otrOS6Wi/B8Wf6pZvP6SNrlCpcy6u3QBdmhwkya0D++Fgwog4Okt9?= =?iso-8859-1?Q?z7tRmdq8ypwU/gG9Hav8eWZRzkZ/H6nDGAcqR75YS1s90fGBgg7QYuFvH1?= =?iso-8859-1?Q?DZM9KYyZxOvic1FokZr3EZSpaqSRaFyLaaZW0Ud2dJj2bWnxZAqnpiILZL?= =?iso-8859-1?Q?EZcfBCWObW4AXdtkXSnZDz8KNBMKb+XoQ2A9Sf5yUl6yPfLrwY2anuWI5F?= =?iso-8859-1?Q?a6GMylyvcl7TD6Tsxj77F1ev47N8SDxgez1aiNL7i+nsguvaZwc9GQa3fb?= =?iso-8859-1?Q?aKEssXYnHgS2yZZNoupLbbyXu7MmOFZ3989ljvq7gGTIY/5z0TwRdchK0P?= =?iso-8859-1?Q?PfBJsSrU7fG6/LrDnhIufYa1bsVwRUVjtiFre8wRMU+lifFD5o3Gyb8h+2?= =?iso-8859-1?Q?I3NTEH6d9JFCrv+YVGA41z2J9CDKZY5VGMGjfyRQlwNf+om0iHHhF26QVv?= =?iso-8859-1?Q?uRu5uZnB2x4mfOh8n+aoRlHg2IzmJUy0ZnQm6mJIo3UWMqWZSMfKusPH+/?= =?iso-8859-1?Q?VZ8W+/qfgqYJAcBWT/sBJrVSNz6T3sjifegv2xnUjbAhWXZate5HPilAhJ?= =?iso-8859-1?Q?khp2pUTZm7Qe1FzEPNpyKsnSr3VX8hTtsXH4l1K/7qBRU09gnrrreA0brj?= =?iso-8859-1?Q?+9KKdv+hUvuNdAizF3LySTNQWk6lOigYQdkbsi6rjDGGFaxOWSVNQ9o4yE?= =?iso-8859-1?Q?P3VT6EvHG+9oMUh22exYqMEXUTUC1jP12vYFz+ixA=3D?= Content-Type: multipart/mixed; boundary="_004_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_" 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: a57ef031-ae90-4317-f51f-08de2a651d33 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2025 07:51:30.2800 (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: SA1PR08MB7117 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_ Content-Type: multipart/alternative; boundary="_000_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_" --_000_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello, Updating code to satisfy compiler warnings about unused code. Cheers, Boris --_000_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello,

Updating code to satisfy compiler warnings about unused code.

Cheers,
Boris
--_000_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_-- --_004_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_ Content-Type: application/octet-stream; name="v4-pgbench-faster-modes.patch" Content-Description: v4-pgbench-faster-modes.patch Content-Disposition: attachment; filename="v4-pgbench-faster-modes.patch"; size=52849; creation-date="Sun, 23 Nov 2025 07:50:08 GMT"; modification-date="Sun, 23 Nov 2025 07:50:22 GMT" Content-Transfer-Encoding: base64 RnJvbSBjNzY4ZjM5OWM1NTYyOTVkZTdkNTM4OTU0MTBlNjg2ZDg2YjRiOTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDE5OjM0OjU4ICswNzAwClN1YmplY3Q6IFtQQVRDSCAw MS8xMl0gQ29udmVydGluZyBvbmUgaHVnZSB0cmFuc2FjdGlvbiBpbnRvIHNlcmllcyBvZiBvbmUg cGVyCiAnc2NhbGUnCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA2MSArKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MSBpbnNl cnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBkODc2NGJhNmZlMC4u Mjg0YTdjODYwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTgxLDYgKzE4MSwxMiBAQCBzdGF0aWMgaW50 NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hlbiB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVuZGVy IC1UICovCiAgKi8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCisvKgorICogc2NhbGluZyBmYWN0 b3IgYWZ0ZXIgd2hpY2ggd2Ugc3dpdGNoIHRvIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBkdXJpbmcK KyAqIGRhdGEgcG9wdWxhdGlvbiBwaGFzZSBvbiBzZXJ2ZXIgc2lkZQorICovCitzdGF0aWMgaW50 NjQJc2luZ2xlX3R4bl9zY2FsZV9saW1pdCA9IDE7CisKIC8qCiAgKiBmaWxsZmFjdG9yLiBmb3Ig ZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkwIHdpbGwgdXNlIG9ubHkgOTAgcGVyY2VudAogICogc3Bh Y2UgZHVyaW5nIGluc2VydHMgYW5kIGxlYXZlIDEwIHBlcmNlbnQgZnJlZS4KQEAgLTUyMTMsNiAr NTIxOSw3IEBAIHN0YXRpYyB2b2lkCiBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nvbm4g KmNvbikKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCWludAkJCQljaHVuayA9IChzY2FsZSA+ PSBzaW5nbGVfdHhuX3NjYWxlX2xpbWl0KSA/IDEgOiBzY2FsZTsKIAogCWZwcmludGYoc3RkZXJy LCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkuLi5cbiIpOwogCkBAIC01MjI1LDMwICs1 MjMyLDQ0IEBAIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCS8qIHRy dW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7CiAK KwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCiAJaW5pdFBRRXhwQnVmZmVyKCZz cWwpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJICAiaW5zZXJ0IGludG8gcGdi ZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKLQkJCQkJICAic2VsZWN0IGJpZCwgMCAiCi0J CQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLCBuYnJhbmNoZXMgKiBz Y2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKLQotCXByaW50ZlBRRXhw QnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsYmlk LHRiYWxhbmNlKSAiCi0JCQkJCSAgInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwgMCAi Ci0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVycywg bnRlbGxlcnMgKiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKLQot CXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNj b3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKLQkJCQkJICAic2VsZWN0IGFpZCwgKGFp ZCAtIDEpIC8gJWQgKyAxLCAwLCAnJyAiCi0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEs ICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCi0JCQkJCSAgbmFjY291bnRzLCAoaW50NjQpIG5h Y2NvdW50cyAqIHNjYWxlKTsKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCWZv ciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkgKz0gY2h1bmspIHsKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJiZWdpbiIpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCQkgICJp bnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgorCQkJCQkJICAic2Vs ZWN0IGJpZCArIDEsIDAgIgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBh cyBiaWQiLCBpLCBpICsgY2h1bmspOworCQkJCQkJICAvLyJzZWxlY3QgYmlkLCAwICIKKwkJCQkJ CSAgLy8iZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsIG5icmFuY2hlcyAqIHNj YWxlKTsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCQlwcmludGZQUUV4 cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJzKHRpZCxi aWQsdGJhbGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEsIDAg IgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAorCQkJCQkJ ICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIGNodW5rKSAqIG50ZWxsZXJzIC0gMSk7CisJ CQkJCQkgIC8vInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwgMCAiCisJCQkJCQkgIC8v ImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVycywgbnRlbGxlcnMg KiBzY2FsZSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJpbnRm UFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMo YWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBhaWQg LyAlZCArIDEsIDAsICcnICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCIgSU5UNjRf Rk9STUFUICIsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCQkgIG5hY2NvdW50cywg KGludDY0KSBpICogbmFjY291bnRzLCAoaW50NjQpIChpICsgY2h1bmspICogbmFjY291bnRzIC0g MSk7CisJCQkJCQkgIC8vInNlbGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycgIgor CQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBh aWQiLAorCQkJCQkJICAvL25hY2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7CisJ CWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVudChj b24sICJjb21taXQiKTsKKwl9CiAKIAl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Ci0KLQlleGVjdXRl U3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogfQogCiAvKgotLSAKMi40My4wCgoKRnJvbSAwZWRk YjE1NmMxODdkODI5YzQzODFiYzkyOGM1MzE0NzA1OTI4ODUyIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTog U3VuLCA5IE5vdiAyMDI1IDIwOjEzOjIzICswNzAwClN1YmplY3Q6IFtQQVRDSCAwMi8xMl0gR2V0 dGluZyByaWQgb2ZmIGxpbWl0IGZvciBzaW5nbGUgdHJhbnNhY3Rpb24gc2l6ZQogZHVyaW5nIGRh dGEgZ2VuZXJhdGlvbgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMTUgKysrKy0t LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2Jl bmNoL3BnYmVuY2guYwppbmRleCAyODRhN2M4NjBmMS4uMjhiNzJlNGNmMWYgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwpAQCAtMTgxLDEyICsxODEsNiBAQCBzdGF0aWMgaW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hl biB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVuZGVyIC1UICovCiAgKi8KIHN0YXRpYyBpbnQJ c2NhbGUgPSAxOwogCi0vKgotICogc2NhbGluZyBmYWN0b3IgYWZ0ZXIgd2hpY2ggd2Ugc3dpdGNo IHRvIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBkdXJpbmcKLSAqIGRhdGEgcG9wdWxhdGlvbiBwaGFz ZSBvbiBzZXJ2ZXIgc2lkZQotICovCi1zdGF0aWMgaW50NjQJc2luZ2xlX3R4bl9zY2FsZV9saW1p dCA9IDE7Ci0KIC8qCiAgKiBmaWxsZmFjdG9yLiBmb3IgZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkw IHdpbGwgdXNlIG9ubHkgOTAgcGVyY2VudAogICogc3BhY2UgZHVyaW5nIGluc2VydHMgYW5kIGxl YXZlIDEwIHBlcmNlbnQgZnJlZS4KQEAgLTUyMTksNyArNTIxMyw2IEBAIHN0YXRpYyB2b2lkCiBp bml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nvbm4gKmNvbikKIHsKIAlQUUV4cEJ1ZmZlckRh dGEgc3FsOwotCWludAkJCQljaHVuayA9IChzY2FsZSA+PSBzaW5nbGVfdHhuX3NjYWxlX2xpbWl0 KSA/IDEgOiBzY2FsZTsKIAogCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2 ZXItc2lkZSkuLi5cbiIpOwogCkBAIC01MjM2LDEzICs1MjI5LDEzIEBAIGluaXRHZW5lcmF0ZURh dGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCiAJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOwogCi0J Zm9yIChpbnQgaSA9IDA7IGkgPCBzY2FsZTsgaSArPSBjaHVuaykgeworCWZvciAoaW50IGkgPSAw OyBpIDwgc2NhbGU7IGkrKykgewogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CiAK IAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKIAkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hf YnJhbmNoZXMoYmlkLGJiYWxhbmNlKSAiCiAJCQkJCQkgICJzZWxlY3QgYmlkICsgMSwgMCAiCi0J CQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcyglZCwgJWQpIGFzIGJpZCIsIGksIGkgKyBjaHVu ayk7CisJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcyglZCwgJWQpIGFzIGJpZCIsIGksIGkg KyAxKTsKIAkJCQkJCSAgLy8ic2VsZWN0IGJpZCwgMCAiCiAJCQkJCQkgIC8vImZyb20gZ2VuZXJh dGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLCBuYnJhbmNoZXMgKiBzY2FsZSk7CiAJCWV4ZWN1dGVT dGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CkBAIC01MjUxLDcgKzUyNDQsNyBAQCBpbml0R2VuZXJh dGVEYXRhU2VydmVyU2lkZShQR2Nvbm4gKmNvbikKIAkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVu Y2hfdGVsbGVycyh0aWQsYmlkLHRiYWxhbmNlKSAiCiAJCQkJCQkgICJzZWxlY3QgdGlkICsgMSwg dGlkIC8gJWQgKyAxLCAwICIKIAkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkg YXMgdGlkIiwKLQkJCQkJCSAgbnRlbGxlcnMsIGkgKiBudGVsbGVycywgKGkgKyBjaHVuaykgKiBu dGVsbGVycyAtIDEpOworCQkJCQkJICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIDEpICog bnRlbGxlcnMgLSAxKTsKIAkJCQkJCSAgLy8ic2VsZWN0IHRpZCwgKHRpZCAtIDEpIC8gJWQgKyAx LCAwICIKIAkJCQkJCSAgLy8iZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIHRpZCIsIG50 ZWxsZXJzLCBudGVsbGVycyAqIHNjYWxlKTsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5k YXRhKTsKQEAgLTUyNjAsNyArNTI1Myw3IEBAIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBH Y29ubiAqY29uKQogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9hY2NvdW50cyhhaWQsYmlk LGFiYWxhbmNlLGZpbGxlcikgIgogCQkJCQkJICAic2VsZWN0IGFpZCArIDEsIGFpZCAvICVkICsg MSwgMCwgJycgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoIiBJTlQ2NF9GT1JNQVQg IiwgIiBJTlQ2NF9GT1JNQVQgIikgYXMgYWlkIiwKLQkJCQkJCSAgbmFjY291bnRzLCAoaW50NjQp IGkgKiBuYWNjb3VudHMsIChpbnQ2NCkgKGkgKyBjaHVuaykgKiBuYWNjb3VudHMgLSAxKTsKKwkJ CQkJCSAgbmFjY291bnRzLCAoaW50NjQpIGkgKiBuYWNjb3VudHMsIChpbnQ2NCkgKGkgKyAxKSAq IG5hY2NvdW50cyAtIDEpOwogCQkJCQkJICAvLyJzZWxlY3QgYWlkLCAoYWlkIC0gMSkgLyAlZCAr IDEsIDAsICcnICIKIAkJCQkJCSAgLy8iZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgIiBJTlQ2NF9G T1JNQVQgIikgYXMgYWlkIiwKIAkJCQkJCSAgLy9uYWNjb3VudHMsIChpbnQ2NCkgbmFjY291bnRz ICogc2NhbGUpOwotLSAKMi40My4wCgoKRnJvbSBjNTY1OWNmNDc0ZWMyNzNjMDU3NjY4ZjMwYTRm NDM1ZmQwMmYyZGE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92 IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDIwOjM4OjM2 ICswNzAwClN1YmplY3Q6IFtQQVRDSCAwMy8xMl0gTm8gbmVlZCB0byBrZWVwIG9sZCBjb2RlIGlu IGNvbW1lbnRzCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA3IC0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDI4YjcyZTRjZjFm Li45Nzg5NWFhOWVkZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MjM2LDggKzUyMzYsNiBAQCBpbml0R2Vu ZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nvbm4gKmNvbikKIAkJCQkJCSAgImluc2VydCBpbnRvIHBn YmVuY2hfYnJhbmNoZXMoYmlkLGJiYWxhbmNlKSAiCiAJCQkJCQkgICJzZWxlY3QgYmlkICsgMSwg MCAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcyglZCwgJWQpIGFzIGJpZCIsIGksIGkg KyAxKTsKLQkJCQkJCSAgLy8ic2VsZWN0IGJpZCwgMCAiCi0JCQkJCQkgIC8vImZyb20gZ2VuZXJh dGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLCBuYnJhbmNoZXMgKiBzY2FsZSk7CiAJCWV4ZWN1dGVT dGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKQEAg LTUyNDUsOCArNTI0Myw2IEBAIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29u KQogCQkJCQkJICAic2VsZWN0IHRpZCArIDEsIHRpZCAvICVkICsgMSwgMCAiCiAJCQkJCQkgICJm cm9tIGdlbmVyYXRlX3NlcmllcyglZCwgJWQpIGFzIHRpZCIsCiAJCQkJCQkgIG50ZWxsZXJzLCBp ICogbnRlbGxlcnMsIChpICsgMSkgKiBudGVsbGVycyAtIDEpOwotCQkJCQkJICAvLyJzZWxlY3Qg dGlkLCAodGlkIC0gMSkgLyAlZCArIDEsIDAgIgotCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3Nl cmllcygxLCAlZCkgYXMgdGlkIiwgbnRlbGxlcnMsIG50ZWxsZXJzICogc2NhbGUpOwogCQlleGVj dXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWws CkBAIC01MjU0LDkgKzUyNTAsNiBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nvbm4g KmNvbikKIAkJCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBhaWQgLyAlZCArIDEsIDAsICcnICIKIAkJ CQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCIgSU5UNjRfRk9STUFUICIsICIgSU5UNjRfRk9S TUFUICIpIGFzIGFpZCIsCiAJCQkJCQkgIG5hY2NvdW50cywgKGludDY0KSBpICogbmFjY291bnRz LCAoaW50NjQpIChpICsgMSkgKiBuYWNjb3VudHMgLSAxKTsKLQkJCQkJCSAgLy8ic2VsZWN0IGFp ZCwgKGFpZCAtIDEpIC8gJWQgKyAxLCAwLCAnJyAiCi0JCQkJCQkgIC8vImZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCi0JCQkJCQkgIC8vbmFjY291bnRz LCAoaW50NjQpIG5hY2NvdW50cyAqIHNjYWxlKTsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNx bC5kYXRhKTsKIAogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwotLSAKMi40My4w CgoKRnJvbSBlNDdiNTJkZGYyMzU5M2RhZDkzNzVlZjUzNTZmZDQxZDA2MjFlZGUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWls LmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAyNSAxOTowNjo0OCArMDcwMApTdWJqZWN0OiBbUEFU Q0ggMDQvMTJdIEFkZGluZyBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24gdmlhIHVubmVzdAoK LS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMTk5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMoKyksIDE3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDk3ODk1YWE5ZWRmLi42NWQ3N2NkZWZlYSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCkBAIC0xNjEsNyArMTYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3Nl dAogICogc29tZSBjb25maWd1cmFibGUgcGFyYW1ldGVycyAqLwogCiAjZGVmaW5lIERFRkFVTFRf SU5JVF9TVEVQUyAiZHRndnAiCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLwotI2RlZmluZSBBTExf SU5JVF9TVEVQUyAiZHRnR3ZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCisjZGVmaW5lIEFM TF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLwogCiAjZGVm aW5lIExPR19TVEVQX1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1lc3NhZ2VzICov CiAjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCTEwCQkvKiBkZWZhdWx0IG54YWN0cyAqLwpAQCAtMTcx LDYgKzE3MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAjZGVmaW5lIE1JTl9aSVBG SUFOX1BBUkFNCQkxLjAwMQkvKiBtaW5pbXVtIHBhcmFtZXRlciBmb3IgemlwZmlhbiAqLwogI2Rl ZmluZSBNQVhfWklQRklBTl9QQVJBTQkJMTAwMC4wCS8qIG1heGltdW0gcGFyYW1ldGVyIGZvciB6 aXBmaWFuICovCiAKKy8qIG9yaWdpbmFsIHNpbmdsZSB0cmFuc2FjdGlvbiBzZXJ2ZXItc2lkZSBt ZXRob2QgKi8KKyNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX09SSUdJTkFMCSdHJwkvKiB1c2UgSU5T RVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAqLworLyogJ29u ZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8KKyNkZWZpbmUg R0VOX1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIGdlbmVy YXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9V Tk5FU1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdlbmVyYXRlIGRh dGEgKi8KKwogc3RhdGljIGludAlueGFjdHMgPSAwOwkJCS8qIG51bWJlciBvZiB0cmFuc2FjdGlv bnMgcGVyIGNsaWVudCAqLwogc3RhdGljIGludAlkdXJhdGlvbiA9IDA7CQkvKiBkdXJhdGlvbiBp biBzZWNvbmRzICovCiBzdGF0aWMgaW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hlbiB0byBzdG9w IGluIG1pY3JvIHNlY29uZHMsIHVuZGVyIC1UICovCkBAIC0xODEsNiArMTg3LDExIEBAIHN0YXRp YyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywg dW5kZXIgLVQgKi8KICAqLwogc3RhdGljIGludAlzY2FsZSA9IDE7CiAKKy8qCisgKgorICovCitz dGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/JzsKKwogLyoKICAqIGZpbGxmYWN0 b3IuIGZvciBleGFtcGxlLCBmaWxsZmFjdG9yID0gOTAgd2lsbCB1c2Ugb25seSA5MCBwZXJjZW50 CiAgKiBzcGFjZSBkdXJpbmcgaW5zZXJ0cyBhbmQgbGVhdmUgMTAgcGVyY2VudCBmcmVlLgpAQCAt OTE0LDcgKzkyNSw5IEBAIHVzYWdlKHZvaWQpCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAg ICAgICBkOiBkcm9wIGFueSBleGlzdGluZyBwZ2JlbmNoIHRhYmxlc1xuIgogCQkgICAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgdDogY3JlYXRlIHRoZSB0YWJsZXMgdXNlZCBieSB0aGUgc3Rh bmRhcmQgcGdiZW5jaCBzY2VuYXJpb1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAg ICAgZzogZ2VuZXJhdGUgZGF0YSwgY2xpZW50LXNpZGVcbiIKLQkJICAgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgIEc6IGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRlXG4iCisJCSAgICIgICAg ICAgICAgICAgICAgICAgICAgICAgICBHOiBnZW5lcmF0ZSBkYXRhLCBzZXJ2ZXItc2lkZSBpbiBz aW5nbGUgdHJhbnNhY3Rpb25cbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6 ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiAgIHNlcnZlci1z aWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdFxuIgogCQkgICAiICAg ICAgICAgICAgICAgICAgICAgICAgICAgdjogaW52b2tlIFZBQ1VVTSBvbiB0aGUgc3RhbmRhcmQg dGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBwOiBjcmVhdGUgcHJp bWFyeSBrZXkgaW5kZXhlcyBvbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCiAJCSAgICIgICAgICAg ICAgICAgICAgICAgICAgICAgICBmOiBjcmVhdGUgZm9yZWlnbiBrZXlzIGJldHdlZW4gdGhlIHN0 YW5kYXJkIHRhYmxlc1xuIgpAQCAtNTIwMywxOCArNTIxNiwxNiBAQCBpbml0R2VuZXJhdGVEYXRh Q2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIH0KIAogLyoKLSAqIEZpbGwgdGhlIHN0YW5kYXJkIHRh YmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlcgotICoKLSAqIEFzIGFs cmVhZHkgdGhlIGNhc2Ugd2l0aCB0aGUgY2xpZW50LXNpZGUgZGF0YSBnZW5lcmF0aW9uLCB0aGUg ZmlsbGVyCi0gKiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVMTCBpbiBwZ2JlbmNoX2JyYW5jaGVzIGFu ZCBwZ2JlbmNoX3RlbGxlcnMsCi0gKiBhbmQgaXMgYSBibGFuay1wYWRkZWQgc3RyaW5nIGluIHBn YmVuY2hfYWNjb3VudHMuCisgKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAuLiBTRUxFQ1Qg Li4gRlJPTSBnZW5lcmF0ZV9zZXJpZXMKKyAqIHdob2xlIGRhdGFzZXQgaW4gc2luZ2xlIHRyYW5z YWN0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nv bm4gKmNvbikKK2dlbmVyYXRlRGF0YUluc2VydFNpbmdsZVRYTihQR2Nvbm4gKmNvbikKIHsKIAlQ UUV4cEJ1ZmZlckRhdGEgc3FsOwogCi0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEg KHNlcnZlci1zaWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJ2aWEgSU5TRVJUIC4uIFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gc2luZ2xlIFRYTlxuIik7CisKIAogCS8qCiAJICog d2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2Vu ZCdzCkBAIC01MjI1LDMxICs1MjM2LDEzNiBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQ R2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVu Y2F0ZVRhYmxlcyhjb24pOwogCisJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOworCisJcHJpbnRmUFFF eHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFuY2hlcyhiaWQs IGJiYWxhbmNlKSAiCisJCQkJCSAgInNlbGVjdCBiaWQsIDAgIgorCQkJCQkgICJmcm9tIGdlbmVy YXRlX3NlcmllcygxLCAlZCkiLCBzY2FsZSAqIG5icmFuY2hlcyk7CisJZXhlY3V0ZVN0YXRlbWVu dChjb24sIHNxbC5kYXRhKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCSAgImlu c2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsIGJpZCwgdGJhbGFuY2UpICIKKwkJCQkJICAi c2VsZWN0IHRpZCArIDEsIHRpZCAvICVkICsgMSwgMCAiCisJCQkJCSAgImZyb20gZ2VuZXJhdGVf c2VyaWVzKDAsICVkKSBhcyB0aWQiLAorCQkJCQkgIG50ZWxsZXJzLCAoc2NhbGUgKiBudGVsbGVy cykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJcHJpbnRmUFFF eHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9hY2NvdW50cyhhaWQs IGJpZCwgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAgImZpbGxlcikgIgorCQkJCQkgICJzZWxlY3Qg YWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAnJyAiCisJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2Vy aWVzKDAsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCSAgbmFjY291bnRzLCAoaW50 NjQpIChzY2FsZSAqIG5hY2NvdW50cykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3Fs LmRhdGEpOworCiAJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAorCXRlcm1QUUV4 cEJ1ZmZlcigmc3FsKTsKK30KKworCisvKgorICogR2VuZXJhdGluZyBkYXRhIHZpYSBJTlNFUlQg Li4gU0VMRUNUIC4uIEZST00gZ2VuZXJhdGVfc2VyaWVzCisgKiBPbmUgdHJhbnNhY3Rpb24gcGVy ICdzY2FsZScKKyAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRlRGF0YUluc2VydFNlcmllcyhQR2Nv bm4gKmNvbikKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCisJZnByaW50ZihzdGRlcnIsICJ2 aWEgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gbXVsdGlwbGUgVFhOKHMp XG4iKTsKKwogCWluaXRQUUV4cEJ1ZmZlcigmc3FsKTsKIAotCWZvciAoaW50IGkgPSAwOyBpIDwg c2NhbGU7IGkrKykgeworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKworCS8qIHRy dW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCisJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7CisK KwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCisJZm9yIChpbnQgaSA9IDA7IGkg PCBzY2FsZTsgaSsrKQorCXsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIpOwogCiAJ CXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2Jy YW5jaGVzKGJpZCxiYmFsYW5jZSkgIgotCQkJCQkJICAic2VsZWN0IGJpZCArIDEsIDAgIgotCQkJ CQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQiLCBpLCBpICsgMSk7CisJ CQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFuY2UpICIKKwkJ CQkJCSAgInZhbHVlcyglZCwgMCkiLCBpICsgMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBz cWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgImluc2VydCBp bnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsYmlkLHRiYWxhbmNlKSAiCisJCQkJCQkgICJpbnNlcnQg aW50byBwZ2JlbmNoX3RlbGxlcnModGlkLCBiaWQsIHRiYWxhbmNlKSAiCiAJCQkJCQkgICJzZWxl Y3QgdGlkICsgMSwgdGlkIC8gJWQgKyAxLCAwICIKIAkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2Vy aWVzKCVkLCAlZCkgYXMgdGlkIiwKIAkJCQkJCSAgbnRlbGxlcnMsIGkgKiBudGVsbGVycywgKGkg KyAxKSAqIG50ZWxsZXJzIC0gMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7 CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVu Y2hfYWNjb3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAgImluc2VydCBp bnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsIGFiYWxhbmNlLCAiCisJCQkJCQkJCQkgICAi ZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAnJyAi Ci0JCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiIElOVDY0 X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2Nv dW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCQkJCQkgICJmcm9tIGdl bmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiCisJCQkJCQkJCUlOVDY0X0ZPUk1BVCAi KSBhcyBhaWQiLAorCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2NvdW50cywKKwkJ CQkJCSAgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsK Kwl9CisKKwl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisKKy8qCisgKiBHZW5lcmF0aW5nIGRh dGEgdmlhIElOU0VSVCAuLiBTRUxFQ1QgLi4gRlJPTSB1bm5lc3QKKyAqIE9uZSB0cmFuc2FjdGlv biBwZXIgJ3NjYWxlJworICovCitzdGF0aWMgdm9pZAorZ2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0 KFBHY29ubiAqY29uKQoreworCVBRRXhwQnVmZmVyRGF0YSBzcWw7CisKKwlmcHJpbnRmKHN0ZGVy ciwgInZpYSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdC4uLlxuIik7CisKKwlpbml0UFFFeHBCdWZm ZXIoJnNxbCk7CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CisKKwkvKiB0cnVu Y2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLworCWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOworCisJ ZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCWZvciAoaW50IHMgPSAwOyBzIDwg c2NhbGU7IHMrKykKKwl7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKworCQlw cmludGZQUUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFu Y2hlcyhiaWQsYmJhbGFuY2UpICIKKwkJCQkJCSAgInZhbHVlcyglZCwgMCkiLCBzICsgMSk7CisJ CWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJpbnRmUFFFeHBCdWZmZXIo JnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsIGJpZCwgdGJh bGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3QoYXJyYXlfYWdnKHMuaSBvcmRlciBieSBz LmkpKSBhcyB0aWQsICIKKwkJCQkJCQkJICAiJWQgYXMgYmlkLCAwIGFzIHRiYWxhbmNlICIKKwkJ CQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgcyhpKSIsCisJCQkJCQkgIHMg KyAxLCBzICogbnRlbGxlcnMgKyAxLCAocyArIDEpICogbnRlbGxlcnMpOworCQlleGVjdXRlU3Rh dGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJ CQkgICJ3aXRoIGRhdGEgYXMgKCIKKwkJCQkJCSAgIiAgIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMo IiBJTlQ2NF9GT1JNQVQgIiwgIgorCQkJCQkJCSAgSU5UNjRfRk9STUFUICIpIGFzIGkpICIKKwkJ CQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsICIKKwkJCQkJCQkJ CSAgImFiYWxhbmNlLCBmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3QoYWlkKSwgdW5u ZXN0KGJpZCksIDAgYXMgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAiJycgYXMgZmlsbGVyICIKKwkJ CQkJCSAgImZyb20gKHNlbGVjdCBhcnJheV9hZ2coaSsxKSBhaWQsICIKKwkJCQkJCQkJCSAgICJh cnJheV9hZ2coaS8lZCArIDEpIGJpZCBmcm9tIGRhdGEpIiwKKwkJCQkJCSAgKGludDY0KSBzICog bmFjY291bnRzICsgMSwKKwkJCQkJCSAgKGludDY0KSAocyArIDEpICogbmFjY291bnRzLCBuYWNj b3VudHMpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJCWV4ZWN1dGVT dGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CkBAIC01MjU4LDYgKzUzNzQsMzIgQEAgaW5pdEdlbmVy YXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJdGVybVBRRXhwQnVmZmVyKCZzcWwpOwog fQogCisvKgorICogRmlsbCB0aGUgc3RhbmRhcmQgdGFibGVzIHdpdGggc29tZSBkYXRhIGdlbmVy YXRlZCBvbiB0aGUgc2VydmVyCisgKgorICogQXMgYWxyZWFkeSB0aGUgY2FzZSB3aXRoIHRoZSBj bGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24sIHRoZSBmaWxsZXIKKyAqIGNvbHVtbiBkZWZhdWx0 cyB0byBOVUxMIGluIHBnYmVuY2hfYnJhbmNoZXMgYW5kIHBnYmVuY2hfdGVsbGVycywKKyAqIGFu ZCBpcyBhIGJsYW5rLXBhZGRlZCBzdHJpbmcgaW4gcGdiZW5jaF9hY2NvdW50cy4KKyAqLworc3Rh dGljIHZvaWQKK2luaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQoreworCWZw cmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkgIik7CisKKwlzd2l0 Y2ggKGRhdGFfZ2VuZXJhdGlvbl90eXBlKQorCXsKKwkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfT1JJ R0lOQUw6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oY29uKTsKKwkJCWJyZWFrOwor CQljYXNlIEdFTl9UWVBFX0lOU0VSVF9TRVJJRVM6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRTZXJp ZXMoY29uKTsKKwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9VTk5FU1Q6CisJCQln ZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoY29uKTsKKwkJCWJyZWFrOworCX0KK30KKwogLyoKICAq IEludm9rZSB2YWN1dW0gb24gdGhlIHN0YW5kYXJkIHRhYmxlcwogICovCkBAIC01MzQxLDYgKzU0 ODMsOCBAQCBpbml0Q3JlYXRlRktleXMoUEdjb25uICpjb24pCiBzdGF0aWMgdm9pZAogY2hlY2tJ bml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIHsKKwljaGFyCWRhdGFfaW5p dF90eXBlID0gMDsKKwogCWlmIChpbml0aWFsaXplX3N0ZXBzWzBdID09ICdcMCcpCiAJCXBnX2Zh dGFsKCJubyBpbml0aWFsaXphdGlvbiBzdGVwcyBzcGVjaWZpZWQiKTsKIApAQCAtNTM1Miw3ICs1 NDk2LDI2IEBAIGNoZWNrSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiAJ CQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJBbGxvd2VkIHN0ZXAgY2hhcmFjdGVycyBhcmU6IFwiIiBB TExfSU5JVF9TVEVQUyAiXCIuIik7CiAJCQlleGl0KDEpOwogCQl9CisKKwkJc3dpdGNoICgqc3Rl cCkKKwkJeworCQkJY2FzZSAnRyc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlkYXRhX2dl bmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQkJY2FzZSAnaSc6CisJCQkJZGF0 YV9pbml0X3R5cGUrKzsKKwkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJy ZWFrOworCQkJY2FzZSAnSSc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlkYXRhX2dlbmVy YXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQl9CiAJfQorCisJaWYgKGRhdGFfaW5p dF90eXBlID4gMSkKKwkJcGdfbG9nX2Vycm9yKCJXQVJOSU5HISBNb3JlIHRoYW4gb25lIHR5cGUg b2Ygc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uIGlzIHJlcXVlc3RlZCIpOwogfQogCiAvKgpA QCAtNTM5NSw2ICs1NTU4LDggQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVf c3RlcHMpCiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsK IAkJCWNhc2UgJ0cnOgorCQkJY2FzZSAnaSc6CisJCQljYXNlICdJJzoKIAkJCQlvcCA9ICJzZXJ2 ZXItc2lkZSBnZW5lcmF0ZSI7CiAJCQkJaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoY29uKTsK IAkJCQlicmVhazsKLS0gCjIuNDMuMAoKCkZyb20gNWUxODI3Yjg4OWIyODNmNTAyOTljZTZhYjFh NzNmOWY1NWE0YTg0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25v diA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTAgTm92IDIwMjUgMjA6MDA6 NTYgKzA3MDAKU3ViamVjdDogW1BBVENIIDA1LzEyXSBGaXhpbmcgdHlwbyBpbiBxdWVyeQoKLS0t CiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA2NWQ3N2NkZWZlYS4u MDNlMzdkZjQ0MzQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTI0MSw3ICs1MjQxLDggQEAgZ2VuZXJhdGVE YXRhSW5zZXJ0U2luZ2xlVFhOKFBHY29ubiAqY29uKQogCXByaW50ZlBRRXhwQnVmZmVyKCZzcWws CiAJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYnJhbmNoZXMoYmlkLCBiYmFsYW5jZSkgIgog CQkJCQkgICJzZWxlY3QgYmlkLCAwICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwg JWQpIiwgc2NhbGUgKiBuYnJhbmNoZXMpOworCQkJCQkgICJmcm9tIGdlbmVyYXRlX3Nlcmllcygx LCAlZCkgYXMgYmlkIiwKKwkJCQkJICBzY2FsZSAqIG5icmFuY2hlcyk7CiAJZXhlY3V0ZVN0YXRl bWVudChjb24sIHNxbC5kYXRhKTsKIAogCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0tIAoyLjQz LjAKCgpGcm9tIDdjYTg2NTIxZmRhNjkyOWI4ZTBkZTNmYzc3ZGNiYjg5ODQwMDljODggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21h aWwuY29tPgpEYXRlOiBUdWUsIDExIE5vdiAyMDI1IDE5OjM5OjQ1ICswNzAwClN1YmplY3Q6IFtQ QVRDSCAwNi8xMl0gQWRkaW5nIHN1cHBvcnQgZm9yIENPUFkgQklOQVJZIG1vZGUKCi0tLQogc3Jj L2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDM5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDM4MSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYwppbmRleCAwM2UzN2RmNDQzNC4uNzFhYTFkOTQ3OWYgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYwpAQCAtMTYxLDcgKzE2MSw3IEBAIHR5cGVkZWYgc3RydWN0IHNvY2tldF9zZXQKICAqIHNv bWUgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMgKi8KIAogI2RlZmluZSBERUZBVUxUX0lOSVRfU1RF UFMgImR0Z3ZwIgkvKiBkZWZhdWx0IC1JIHNldHRpbmcgKi8KLSNkZWZpbmUgQUxMX0lOSVRfU1RF UFMgImR0Z0dpSXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCisjZGVmaW5lIEFMTF9JTklU X1NURVBTICJkdGdDR2lJdnBmIgkvKiBhbGwgcG9zc2libGUgc3RlcHMgKi8KIAogI2RlZmluZSBM T0dfU1RFUF9TRUNPTkRTCTUJLyogc2Vjb25kcyBiZXR3ZWVuIGxvZyBtZXNzYWdlcyAqLwogI2Rl ZmluZSBERUZBVUxUX05YQUNUUwkxMAkJLyogZGVmYXVsdCBueGFjdHMgKi8KQEAgLTE3Niw2ICsx NzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAvKiAnb25lIHRyYW5zYWN0aW9uIHBl ciBzY2FsZScgc2VydmVyLXNpZGUgbWV0aG9kcyAqLwogI2RlZmluZSBHRU5fVFlQRV9JTlNFUlRf U0VSSUVTCQknaScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzIHRvIGdl bmVyYXRlIGRhdGEgKi8KICNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX1VOTkVTVCAgCSdJJwkvKiB1 c2UgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3QgdG8gZ2VuZXJhdGUgZGF0YSAqLworI2RlZmluZSBH RU5fVFlQRV9DT1BZX09SSUdJTkFMCQknZycgLyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBU RVhUIHRvIGdlbmVyYXRlIGRhdGEgKi8KKyNkZWZpbmUgR0VOX1RZUEVfQ09QWV9CSU5BUlkJCSdD JyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNURElOIC4uIEJJTkFSWSB0byBnZW5lcmF0ZSBkYXRhICov CiAKIHN0YXRpYyBpbnQJbnhhY3RzID0gMDsJCQkvKiBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHBl ciBjbGllbnQgKi8KIHN0YXRpYyBpbnQJZHVyYXRpb24gPSAwOwkJLyogZHVyYXRpb24gaW4gc2Vj b25kcyAqLwpAQCAtMTg4LDEwICsxOTAsMTcgQEAgc3RhdGljIGludDY0IGVuZF90aW1lID0gMDsJ CS8qIHdoZW4gdG8gc3RvcCBpbiBtaWNybyBzZWNvbmRzLCB1bmRlciAtVCAqLwogc3RhdGljIGlu dAlzY2FsZSA9IDE7CiAKIC8qCi0gKgorICogbW9kZSBvZiBkYXRhIGdlbmVyYXRpb24gdG8gdXNl CiAgKi8KIHN0YXRpYyBjaGFyCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gJz8nOwogCisvKgorICog Q09QWSBGUk9NIEJJTkFSWSBleGVjdXRpb24gYnVmZmVyCisgKi8KKyNkZWZpbmUgQklOX0NPUFlf QlVGX1NJWkUJMTAyNDAwCQkJCS8qIG1heGltdW0gYnVmZmVyIHNpemUgZm9yIENPUFkgRlJPTSBC SU5BUlkgKi8KK3N0YXRpYyBjaGFyCQkqYmluX2NvcHlfYnVmZmVyID0gTlVMTDsJCS8qIGJ1ZmZl ciBmb3IgQ09QWSBGUk9NIEJJTkFSWSAqLworc3RhdGljIGludDMyX3QJIGJpbl9jb3B5X2J1ZmZl cl9sZW5ndGggPSAwOwkvKiBjdXJyZW50IGJ1ZmZlciBzaXplICovCisKIC8qCiAgKiBmaWxsZmFj dG9yLiBmb3IgZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkwIHdpbGwgdXNlIG9ubHkgOTAgcGVyY2Vu dAogICogc3BhY2UgZHVyaW5nIGluc2VydHMgYW5kIGxlYXZlIDEwIHBlcmNlbnQgZnJlZS4KQEAg LTg2MSw3ICs4NzAsOCBAQCBzdGF0aWMgaW50CXdhaXRfb25fc29ja2V0X3NldChzb2NrZXRfc2V0 ICpzYSwgaW50NjQgdXNlY3MpOwogc3RhdGljIGJvb2wgc29ja2V0X2hhc19pbnB1dChzb2NrZXRf c2V0ICpzYSwgaW50IGZkLCBpbnQgaWR4KTsKIAogLyogY2FsbGJhY2sgdXNlZCB0byBidWlsZCBy b3dzIGZvciBDT1BZIGR1cmluZyBkYXRhIGxvYWRpbmcgKi8KLXR5cGVkZWYgdm9pZCAoKmluaXRS b3dNZXRob2QpIChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3Vycik7Cit0eXBlZGVmIHZv aWQgKCppbml0Um93TWV0aG9kKQkJKFBRRXhwQnVmZmVyRGF0YSAqc3FsLCBpbnQ2NCBjdXJyKTsK K3R5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2RCaW4pCShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQg KnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCk7CiAKIC8qIGNhbGxiYWNrIGZ1bmN0 aW9ucyBmb3Igb3VyIGZsZXggbGV4ZXIgKi8KIHN0YXRpYyBjb25zdCBQc3FsU2NhbkNhbGxiYWNr cyBwZ2JlbmNoX2NhbGxiYWNrcyA9IHsKQEAgLTkyNSw2ICs5MzUsNyBAQCB1c2FnZSh2b2lkKQog CQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgZDogZHJvcCBhbnkgZXhpc3RpbmcgcGdi ZW5jaCB0YWJsZXNcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IGNyZWF0 ZSB0aGUgdGFibGVzIHVzZWQgYnkgdGhlIHN0YW5kYXJkIHBnYmVuY2ggc2NlbmFyaW9cbiIKIAkJ ICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IGdlbmVyYXRlIGRhdGEsIGNsaWVudC1z aWRlXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBDOiAgIGNsaWVudC1zaWRl IChzaW5nbGUgVE5YKSBDT1BZIC4uIEZST00gU1RESU4gLi4gQklOQVJZXG4iCiAJCSAgICIgICAg ICAgICAgICAgICAgICAgICAgICAgICBHOiBnZW5lcmF0ZSBkYXRhLCBzZXJ2ZXItc2lkZSBpbiBz aW5nbGUgdHJhbnNhY3Rpb25cbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6 ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiAgIHNlcnZlci1z aWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdFxuIgpAQCAtNTE5MSw5 ICs1MjAyLDkgQEAgaW5pdFBvcHVsYXRlVGFibGUoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnRh YmxlLCBpbnQ2NCBiYXNlLAogICogYSBibGFuay1wYWRkZWQgc3RyaW5nIGluIHBnYmVuY2hfYWNj b3VudHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nv bm4gKmNvbikKK2luaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIHsK LQlmcHJpbnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoY2xpZW50LXNpZGUpLi4uXG4iKTsK KwlmcHJpbnRmKHN0ZGVyciwgIlRFWFQgbW9kZS4uLlxuIik7CiAKIAkvKgogCSAqIHdlIGRvIGFs bCBvZiB0aGlzIGluIG9uZSB0cmFuc2FjdGlvbiB0byBlbmFibGUgdGhlIGJhY2tlbmQncwpAQCAt NTIwOSwxMiArNTIyMCwzNzMgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpj b24pCiAJICogYWxyZWFkeSBleGlzdAogCSAqLwogCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBn YmVuY2hfYnJhbmNoZXMiLCBuYnJhbmNoZXMsIGluaXRCcmFuY2gpOwotCWluaXRQb3B1bGF0ZVRh YmxlKGNvbiwgInBnYmVuY2hfdGVsbGVycyIsIG50ZWxsZXJzLCBpbml0VGVsbGVyKTsKKwlpbml0 UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgbnRlbGxlcnMsICBpbml0VGVs bGVyKTsKIAlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgbmFjY291 bnRzLCBpbml0QWNjb3VudCk7CiAKIAlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwog fQogCisKKy8qCisgKiBEdW1wcyBiaW5hcnkgYnVmZmVyIHRvIGZpbGUgKHB1cmVseSBmb3IgZGVi dWdnaW5nKQorICovCitzdGF0aWMgdm9pZAorZHVtcEJ1ZmZlclRvRmlsZShjaGFyICpmaWxlbmFt ZSkKK3sKKwlGSUxFICpmaWxlX3B0cjsKKwlzaXplX3QgYnl0ZXNfd3JpdHRlbjsKKworCWZpbGVf cHRyID0gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOworCWlmIChmaWxlX3B0ciA9PSBOVUxMKQorCXsK KwkJZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5nIGZpbGUgJXNcbiIsIGZpbGVuYW1lKTsK KwkJcmV0dXJuOyAvLyBFWElUX0ZBSUxVUkU7CisJfQorCisJYnl0ZXNfd3JpdHRlbiA9IGZ3cml0 ZShiaW5fY29weV9idWZmZXIsIDEsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgsIGZpbGVfcHRyKTsK KworCWlmIChieXRlc193cml0dGVuICE9IGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpCisJeworCQlm cHJpbnRmKHN0ZGVyciwgIkVycm9yIHdyaXRpbmcgdG8gZmlsZSBvciBpbmNvbXBsZXRlIHdyaXRl XG4iKTsKKwkJZmNsb3NlKGZpbGVfcHRyKTsKKwkJcmV0dXJuOyAvLyBFWElUX0ZBSUxVUkU7CisJ fQorCisJZmNsb3NlKGZpbGVfcHRyKTsKK30KKworLyoKKyAqIFNhdmUgY2hhciBkYXRhIHRvIGJ1 ZmZlcgorICovCitzdGF0aWMgdm9pZAorYnVmZmVyQ2hhckRhdGEoY2hhciAqc3JjLCBpbnQzMl90 IGxlbikKK3sKKwltZW1jcHkoKGNoYXIgKikgYmluX2NvcHlfYnVmZmVyICsgYmluX2NvcHlfYnVm ZmVyX2xlbmd0aCwgKGNoYXIgKikgc3JjLCBsZW4pOworCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgg Kz0gbGVuOworfQorCisvKgorICogQ29udmVydHMgcGxhdGZvcm0gYnl0ZSBvcmRlciBpbnRvIG5l dHdvcmsgYnl0ZSBvcmRlcgorICogU1BBUkMgZG9lc24ndCByZXFpcmUgdGhhdAorICovCitzdGF0 aWMgdm9pZAorYnVmZmVyRGF0YSh2b2lkICpzcmMsIGludDMyX3QgbGVuKQoreworI2lmZGVmIF9f c3BhcmNfXworCWJ1ZmZlckNoYXJEYXRhKHNyYywgbGVuKTsKKyNlbHNlCisJaWYgKGxlbiA9PSAx KQorCQlidWZmZXJDaGFyRGF0YShzcmMsIGxlbik7CisJZWxzZQorCQlmb3IgKGludDMyX3QgaSA9 IDA7IGkgPCBsZW47IGkrKykKKwkJeworCQkJKChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciArIGJp bl9jb3B5X2J1ZmZlcl9sZW5ndGgpW2ldID0KKwkJCQkoKGNoYXIgKikgc3JjKVtsZW4gLSBpIC0g MV07CisJCX0KKworCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggKz0gbGVuOworI2VuZGlmCit9CisK Ky8qCisgKiBhZGRzIGNvbHVtbiBjb3VudGVyCisgKi8KK3N0YXRpYyB2b2lkCithZGRDb2x1bW5D b3VudGVyKGludDE2X3QgbikKK3sKKwlidWZmZXJEYXRhKCh2b2lkICopICZuLCBzaXplb2Yobikp OworfQorCisvKgorICogYWRkcyBjb2x1bW4gd2l0aCBOVUxMIHZhbHVlCisgKi8KK3N0YXRpYyB2 b2lkCithZGROdWxsQ29sdW1uKCkKK3sKKwlpbnQzMl90IG51bGwgPSAtMTsKKwlidWZmZXJEYXRh KCh2b2lkICopICZudWxsLCBzaXplb2YobnVsbCkpOworfQorCisvKgorICogYWRkcyBjb2x1bW4g d2l0aCBpbnQ4IHZhbHVlCisgKi8KK3N0YXRpYyB2b2lkCithZGRJbnQ4Q29sdW1uKGludDhfdCB2 YWx1ZSkKK3sKKwlpbnQ4X3QJZGF0YSA9IHZhbHVlOworCWludDMyX3QJc2l6ZSA9IHNpemVvZihk YXRhKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZl ckRhdGEoKHZvaWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Cit9CisKKy8qCisgKiBhZGRzIGNv bHVtbiB3aXRoIGludDE2IHZhbHVlCisgKi8KK3N0YXRpYyB2b2lkCithZGRJbnQxNkNvbHVtbihp bnQxNl90IHZhbHVlKQoreworCWludDE2X3QJZGF0YSA9IHZhbHVlOworCWludDMyX3QJc2l6ZSA9 IHNpemVvZihkYXRhKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkp OworCWJ1ZmZlckRhdGEoKHZvaWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Cit9CisKKy8qCisg KiBhZGRzIGNvbHVtbiB3aXRoIGludGkzMiB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRkSW50 MzJDb2x1bW4oaW50MzJfdCB2YWx1ZSkKK3sKKwlpbnQzMl90CWRhdGEgPSB2YWx1ZTsKKwlpbnQz Ml90CXNpemUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6 ZW9mKHNpemUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkpOwor fQorCisvKgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnRpNjQgdmFsdWUKKyAqLworc3RhdGljIHZv aWQKK2FkZEludDY0Q29sdW1uKGludDY0X3QgdmFsdWUpCit7CisJaW50NjRfdAlkYXRhID0gdmFs dWU7CisJaW50MzJfdAlzaXplID0gc2l6ZW9mKGRhdGEpOworCWJ1ZmZlckRhdGEoKHZvaWQgKikg JnNpemUsIHNpemVvZihzaXplKSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6ZW9m KGRhdGEpKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2YWx1ZQorICovCitz dGF0aWMgdm9pZAorYWRkQ2hhckNvbHVtbihjaGFyICp2YWx1ZSkKK3sKKwlpbnQzMl90CXNpemUg PSBzdHJsZW4odmFsdWUpOworCWJ1ZmZlckRhdGEoKHZvaWQgKikgJnNpemUsIHNpemVvZihzaXpl KSk7CisJYnVmZmVyQ2hhckRhdGEodmFsdWUsIHNpemUpOworfQorCisvKgorICogU3RhcnRzIGNv bW11bmljYXRpb24gd2l0aCBzZXJ2ZXIgZm9yIENPUFkgRlJPTSBCSU5BUlkgc3RhdGVtZW50Cisg Ki8KK3N0YXRpYyB2b2lkCitzZW5kQmluYXJ5Q29weUhlYWRlcihQR2Nvbm4gKmNvbikKK3sKKwlj aGFyIGhlYWRlcltdID0geydQJywnRycsJ0MnLCdPJywnUCcsJ1knLCdcbicsJ1wzNzcnLCdccics J1xuJywnXDAnLAorCQkJCQkgJ1wwJywnXDAnLCdcMCcsJ1wwJywKKwkJCQkJICdcMCcsJ1wwJywn XDAnLCdcMCcgfTsKKworCVBRcHV0Q29weURhdGEoY29uLCBoZWFkZXIsIDE5KTsKK30KKworLyoK KyAqIEZpbmlzaGVzIGNvbW11bmljYXRpb24gd2l0aCBzZXJ2ZXIgZm9yIENPUFkgRlJPTSBCSU5B Ulkgc3RhdGVtZW50CisgKi8KK3N0YXRpYyB2b2lkCitzZW5kQmluYXJ5Q29weVRyYWlsZXIoUEdj b25uICpjb24pCit7CisJc3RhdGljIGNoYXIgdHJhaWxlcltdID0geyAweEZGLCAweEZGIH07CisK KwlQUXB1dENvcHlEYXRhKGNvbiwgdHJhaWxlciwgMik7Cit9CisKKy8qCisgKiBGbGFzaGVzIGN1 cnJlbnQgYnVmZmVyIG92ZXIgbmV0d29yayBpZiBuZWVkZWQKKyAqLworc3RhdGljIHZvaWQKK2Zs dXNoQnVmZmVyKFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQxNl90IHJvd19sZW4pCit7 CisJaWYgKGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggKyByb3dfbGVuID4gQklOX0NPUFlfQlVGX1NJ WkUpCisJeworCQkvKiBmbHVzaCBjdXJyZW50IGJ1ZmZlciAqLworCQlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzKSA9PSBQR1JFU19DT1BZX0lOKQorCQkJUFFwdXRDb3B5RGF0YShjb24sIChjaGFyICop IGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CisJCWJpbl9jb3B5X2J1 ZmZlcl9sZW5ndGggPSAwOworCX0KK30KKworLyoKKyAqIFNlbmRzIGN1cnJlbnQgYnJhbmNoIHJv dyB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2luaXRCcmFuY2hCaW5hcnkoUEdjb25uICpj b24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCit7CisJLyoK KwkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAqIC0gMiBieXRlcyBm b3IgbnVtYmVyIG9mIGNvbHVtbnMKKwkgKiAtIDQgYnl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIGNv bHVtbgorCSAqLworCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgMzUgKyAyICsgNCozOyAvKiBtYXgg cm93IHNpemUgaXMgMzIgKi8KKworCWZsdXNoQnVmZmVyKGNvbiwgcmVzLCBtYXhfcm93X2xlbik7 CisKKwlhZGRDb2x1bW5Db3VudGVyKDIpOworCisJYWRkSW50MzJDb2x1bW4oY3VyciArIDEpOwor CWFkZEludDMyQ29sdW1uKDApOworfQorCisvKgorICogU2VuZHMgY3VycmVudCB0ZWxsZXIgcm93 IHRvIGJ1ZmZlcgorICovCitzdGF0aWMgdm9pZAoraW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNv biwgUEdyZXN1bHQgKnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK3sKKwkvKgor CSAqIEVhY2ggcm93IGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CisJICogLSAyIGJ5dGVzIGZv ciBudW1iZXIgb2YgY29sdW1ucworCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVhY2ggY29s dW1uCisJICovCisJaW50MTZfdAltYXhfcm93X2xlbiA9ICA0MCArIDIgKyA0KjQ7IC8qIG1heCBy b3cgc2l6ZSBpcyA0MCAqLworCisJZmx1c2hCdWZmZXIoY29uLCByZXMsIG1heF9yb3dfbGVuKTsK KworCWFkZENvbHVtbkNvdW50ZXIoMyk7CisKKwlhZGRJbnQzMkNvbHVtbihjdXJyICsgMSk7CisJ YWRkSW50MzJDb2x1bW4oY3VyciAvIHBhcmVudCArIDEpOworCWFkZEludDMyQ29sdW1uKDApOwor fQorCisvKgorICogU2VuZHMgY3VycmVudCBhY2NvdW50IHJvdyB0byBidWZmZXIKKyAqLworc3Rh dGljIHZvaWQKK2luaXRBY2NvdW50QmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBp bnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQoreworCS8qCisJICogRWFjaCByb3cgaGFzIGZv bGxvd2luZyBleHRyYSBieXRlczoKKwkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5z CisJICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBjb2x1bW4KKwkgKi8KKwlpbnQxNl90 CW1heF9yb3dfbGVuID0gMjUwICsgMiArIDQqNDsgLyogbWF4IHJvdyBzaXplIGlzIDI1MCBmb3Ig aW50NjQgKi8KKworCWZsdXNoQnVmZmVyKGNvbiwgcmVzLCBtYXhfcm93X2xlbik7CisKKwlhZGRD b2x1bW5Db3VudGVyKDMpOworCisJaWYgKHNjYWxlIDw9IFNDQUxFXzMyQklUX1RIUkVTSE9MRCkK KwkJYWRkSW50MzJDb2x1bW4oY3VyciArIDEpOworCWVsc2UKKwkJYWRkSW50NjRDb2x1bW4oY3Vy cik7CisKKwlhZGRJbnQzMkNvbHVtbihjdXJyIC8gcGFyZW50ICsgMSk7CisJYWRkSW50MzJDb2x1 bW4oMCk7Cit9CisKKy8qCisgKiBVbml2ZXJzYWwgd3JhcHBlciBmb3Igc2VuZGluZyBkYXRhIGlu IGJpbmFyeSBmb3JtYXQKKyAqLworc3RhdGljIHZvaWQKK2luaXRQb3B1bGF0ZVRhYmxlQmluYXJ5 KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKKwkJCQkJCWludDY0X3Qg YmFzZSwgaW5pdFJvd01ldGhvZEJpbiBpbml0X3JvdykKK3sKKwlpbnQJCQkgbjsKKwlQR3Jlc3Vs dAkqcmVzOworCWNoYXIJCSBjb3B5X3N0YXRlbWVudFsyNTZdOworCWNvbnN0IGNoYXIJKmNvcHlf c3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiAoZm9ybWF0IGJpbmFyeSki OworCWludDY0X3QJCSB0b3RhbCA9IGJhc2UgKiBzY2FsZTsKKworCWJpbl9jb3B5X2J1ZmZlcl9s ZW5ndGggPSAwOworCisJLyogVXNlIENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciBm b3IgYWxsIG9yZGluYXJ5IHRhYmxlcyAqLworCWlmICgoUFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0g MTQwMDAwKSAmJgorCQlnZXRfdGFibGVfcmVsa2luZChjb24sIHRhYmxlKSA9PSBSRUxLSU5EX1JF TEFUSU9OKQorCQljb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4g d2l0aCAoZm9ybWF0IGJpbmFyeSwgZnJlZXplIG9uKSI7CisKKwluID0gcGdfc25wcmludGYoY29w eV9zdGF0ZW1lbnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNvcHlfc3RhdGVtZW50X2ZtdCwg dGFibGUsIGNvbHVtbnMpOworCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVudCkpCisJCXBn X2ZhdGFsKCJpbnZhbGlkIGJ1ZmZlciBzaXplOiBtdXN0IGJlIGF0IGxlYXN0ICVkIGNoYXJhY3Rl cnMgbG9uZyIsIG4pOworCWVsc2UgaWYgKG4gPT0gLTEpCisJCXBnX2ZhdGFsKCJpbnZhbGlkIGZv cm1hdCBzdHJpbmciKTsKKworCXJlcyA9IFBRZXhlYyhjb24sIGNvcHlfc3RhdGVtZW50KTsKKwor CWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlfSU4pCisJCXBnX2ZhdGFsKCJ1 bmV4cGVjdGVkIGNvcHkgaW4gcmVzdWx0OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOworCVBR Y2xlYXIocmVzKTsKKworCisJc2VuZEJpbmFyeUNvcHlIZWFkZXIoY29uKTsKKworCWZvciAoaW50 NjRfdCBpID0gMDsgaSA8IHRvdGFsOyBpKyspCisJeworCQlpbml0X3Jvdyhjb24sIHJlcywgaSwg YmFzZSk7CisJfQorCisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikK KwkJUFFwdXRDb3B5RGF0YShjb24sIChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlf YnVmZmVyX2xlbmd0aCk7CisJZWxzZQorCQlmcHJpbnRmKHN0ZGVyciwgIlVuZXhwZWN0ZWQgbW9k ZSAlZCBpbnN0ZWFkIG9mICVkXG4iLCBQUXJlc3VsdFN0YXR1cyhyZXMpLCBQR1JFU19DT1BZX0lO KTsKKworCXNlbmRCaW5hcnlDb3B5VHJhaWxlcihjb24pOworCisJaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgPT0gUEdSRVNfQ09QWV9JTikKKwl7CisJCWlmIChQUXB1dENvcHlFbmQoY29uLCBOVUxM KSA9PSAxKSAvKiBzdWNjZXNzICovCisJCXsKKwkJCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7CisJ CQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCQkJCWZwcmlu dGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24pKTsKKwkJCVBRY2xl YXIocmVzKTsKKwkJfQorCQllbHNlCisJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwg UFFlcnJvck1lc3NhZ2UoY29uKSk7CisJfQorfQorCisvKgorICogV3JhcHBlciBmb3IgYmluYXJ5 IGRhdGEgbG9hZAorICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVC aW5hcnkoUEdjb25uICpjb24pCit7CisKKwlmcHJpbnRmKHN0ZGVyciwgIkJJTkFSWSBtb2RlLi4u XG4iKTsKKworCWJpbl9jb3B5X2J1ZmZlciA9IHBnX21hbGxvYyhCSU5fQ09QWV9CVUZfU0laRSk7 CisJYmluX2NvcHlfYnVmZmVyX2xlbmd0aCA9IDA7CisKKwkvKgorCSAqIHdlIGRvIGFsbCBvZiB0 aGlzIGluIG9uZSB0cmFuc2FjdGlvbiB0byBlbmFibGUgdGhlIGJhY2tlbmQncworCSAqIGRhdGEt bG9hZGluZyBvcHRpbWl6YXRpb25zCisJICovCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdp biIpOworCisJLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xkIGRhdGEgKi8KKwlpbml0VHJ1bmNhdGVU YWJsZXMoY29uKTsKKworCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hfYnJh bmNoZXMiLCAiYmlkLCBiYmFsYW5jZSIsCisJCQkJCQkJbmJyYW5jaGVzLCBpbml0QnJhbmNoQmlu YXJ5KTsKKwlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAg InRpZCwgYmlkLCB0YmFsYW5jZSIsCisJCQkJCQkJbnRlbGxlcnMsICBpbml0VGVsbGVyQmluYXJ5 KTsKKwlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgImFp ZCwgYmlkLCBhYmFsYW5jZSIsCisJCQkJCQkJbmFjY291bnRzLCBpbml0QWNjb3VudEJpbmFyeSk7 CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCisJcGdfZnJlZShiaW5fY29w eV9idWZmZXIpOworfQorCisvKgorICogRmlsbCB0aGUgc3RhbmRhcmQgdGFibGVzIHdpdGggc29t ZSBkYXRhIGdlbmVyYXRlZCBhbmQgc2VudCBmcm9tIHRoZSBjbGllbnQuCisgKi8KK3N0YXRpYyB2 b2lkCitpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKK3sKKwlmcHJpbnRm KHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoY2xpZW50LXNpZGUpIGluICIpOworCisJc3dpdGNo IChkYXRhX2dlbmVyYXRpb25fdHlwZSkKKwl7CisJCWNhc2UgR0VOX1RZUEVfQ09QWV9PUklHSU5B TDoKKwkJCWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChjb24pOworCQkJYnJlYWs7CisJ CWNhc2UgR0VOX1RZUEVfQ09QWV9CSU5BUlk6CisJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lk ZUJpbmFyeShjb24pOworCQkJYnJlYWs7CisJfQorfQorCiAvKgogICogR2VuZXJhdGluZyBkYXRh IHZpYSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00gZ2VuZXJhdGVfc2VyaWVzCiAgKiB3aG9sZSBk YXRhc2V0IGluIHNpbmdsZSB0cmFuc2FjdGlvbgpAQCAtNTUwMCwxNCArNTg3MiwxMCBAQCBjaGVj a0luaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFsaXplX3N0ZXBzKQogCiAJCXN3aXRjaCAoKnN0 ZXApCiAJCXsKKwkJCWNhc2UgJ2cnOgorCQkJY2FzZSAnQyc6CiAJCQljYXNlICdHJzoKLQkJCQlk YXRhX2luaXRfdHlwZSsrOwotCQkJCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gKnN0ZXA7Ci0JCQkJ YnJlYWs7CiAJCQljYXNlICdpJzoKLQkJCQlkYXRhX2luaXRfdHlwZSsrOwotCQkJCWRhdGFfZ2Vu ZXJhdGlvbl90eXBlID0gKnN0ZXA7Ci0JCQkJYnJlYWs7CiAJCQljYXNlICdJJzoKIAkJCQlkYXRh X2luaXRfdHlwZSsrOwogCQkJCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gKnN0ZXA7CkBAIC01NTU1 LDYgKzU5MjMsNyBAQCBydW5Jbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykK IAkJCQlpbml0Q3JlYXRlVGFibGVzKGNvbik7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdnJzoKKwkJ CWNhc2UgJ0MnOgogCQkJCW9wID0gImNsaWVudC1zaWRlIGdlbmVyYXRlIjsKIAkJCQlpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZShjb24pOwogCQkJCWJyZWFrOwotLSAKMi40My4wCgoKRnJvbSA0 YWEwYWMwNTc2NWVkZjZiNWYwYzEzZTE4YWM2NzcyODdjZTc4MjA2IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5vcmc+CkRhdGU6IEZy aSwgMTQgTm92IDIwMjUgMjI6NDA6MzkgKzA5MDAKU3ViamVjdDogW1BBVENIIDA3LzEyXSBwZ2Jl bmNoOiBGaXggYXNzZXJ0aW9uIGZhaWx1cmUgd2l0aCBtdWx0aXBsZQogXHN5bmNwaXBlbGluZSBp biBwaXBlbGluZSBtb2RlLgoKUHJldmlvdXNseSwgd2hlbiBwZ2JlbmNoIHJhbiBhIGN1c3RvbSBz Y3JpcHQgdGhhdCB0cmlnZ2VyZWQgcmV0cmlhYmxlIGVycm9ycwooZS5nLiwgZGVhZGxvY2tzKSBm b2xsb3dlZCBieSBtdWx0aXBsZSBcc3luY3BpcGVsaW5lIGNvbW1hbmRzIGluIHBpcGVsaW5lIG1v ZGUsCnRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWx1cmUgY291bGQgb2NjdXI6CgogICAgQXNz ZXJ0aW9uIGZhaWxlZDogKHJlcyA9PSAoKHZvaWQqKTApKSwgZnVuY3Rpb24gZGlzY2FyZFVudGls U3luYywgZmlsZSBwZ2JlbmNoLmMsIGxpbmUgMzU5NC4KClRoZSBpc3N1ZSB3YXMgdGhhdCBkaXNj YXJkVW50aWxTeW5jKCkgYXNzdW1lZCBhIHBpcGVsaW5lIHN5bmMgcmVzdWx0CihQR1JFU19QSVBF TElORV9TWU5DKSB3b3VsZCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgZWl0aGVyIGFub3RoZXIgc3lu YyByZXN1bHQKb3IgTlVMTC4gVGhpcyBhc3N1bXB0aW9uIHdhcyBpbmNvcnJlY3Q6IHdoZW4gbXVs dGlwbGUgc3luYyByZXF1ZXN0cyB3ZXJlIHNlbnQsCmEgc3luYyByZXN1bHQgY291bGQgaW5zdGVh ZCBiZSBmb2xsb3dlZCBieSBhbm90aGVyIHJlc3VsdCB0eXBlLiBJbiBzdWNoIGNhc2VzLApkaXNj YXJkVW50aWxTeW5jKCkgbWlzaGFuZGxlZCB0aGUgcmVzdWx0cywgbGVhZGluZyB0byB0aGUgYXNz ZXJ0aW9uIGZhaWx1cmUuCgpUaGlzIGNvbW1pdCBmaXhlcyB0aGUgaXNzdWUgYnkgbWFraW5nIGRp c2NhcmRVbnRpbFN5bmMoKSBjb3JyZWN0bHkgaGFuZGxlIGNhc2VzCndoZXJlIGEgcGlwZWxpbmUg c3luYyByZXN1bHQgaXMgZm9sbG93ZWQgYnkgb3RoZXIgcmVzdWx0IHR5cGVzLiBJdCBub3cgY29u dGludWVzCmRpc2NhcmRpbmcgcmVzdWx0cyB1bnRpbCBhbm90aGVyIHBpcGVsaW5lIHN5bmMgZm9s bG93ZWQgYnkgTlVMTCBpcyByZWFjaGVkLgoKQmFja3BhdGNoZWQgdG8gdjE3LCB3aGVyZSBzdXBw b3J0IGZvciBcc3luY3BpcGVsaW5lIGNvbW1hbmQgaW4gcGdiZW5jaCB3YXMKaW50cm9kdWNlZC4K CkF1dGhvcjogWXVnbyBOYWdhdGEgPG5hZ2F0YUBzcmFvc3MuY28uanA+ClJldmlld2VkLWJ5OiBD aGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KUmV2aWV3ZWQtYnk6IEZ1amlpIE1hc2FvIDxtYXNhby5m dWppaUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyNTExMTEx MDUwMzcuZjNmYzU1NDYxNmJjMTk4OTFmOTI2YzViQHNyYW9zcy5jby5qcApCYWNrcGF0Y2gtdGhy b3VnaDogMTcKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMzkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9u cygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggZDg3NjRiYTZmZTAuLmE0MjUx NzZlY2RjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTM1NjMsMTQgKzM1NjMsMTggQEAgZG9SZXRyeShDU3Rh dGUgKnN0LCBwZ190aW1lX3VzZWNfdCAqbm93KQogfQogCiAvKgotICogUmVhZCByZXN1bHRzIGFu ZCBkaXNjYXJkIGl0IHVudGlsIGEgc3luYyBwb2ludC4KKyAqIFJlYWQgYW5kIGRpc2NhcmQgcmVz dWx0cyB1bnRpbCB0aGUgbGFzdCBzeW5jIHBvaW50LgogICovCiBzdGF0aWMgaW50CiBkaXNjYXJk VW50aWxTeW5jKENTdGF0ZSAqc3QpCiB7CiAJYm9vbAkJcmVjZWl2ZWRfc3luYyA9IGZhbHNlOwog Ci0JLyogc2VuZCBhIHN5bmMgKi8KKwkvKgorCSAqIFNlbmQgYSBTeW5jIG1lc3NhZ2UgdG8gZW5z dXJlIGF0IGxlYXN0IG9uZSBQR1JFU19QSVBFTElORV9TWU5DIGlzCisJICogcmVjZWl2ZWQgYW5k IHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3AsIHNpbmNlIGFsbCBlYXJsaWVyIG9uZXMgbWF5IGhh dmUKKwkgKiBhbHJlYWR5IGJlZW4gcmVjZWl2ZWQuCisJICovCiAJaWYgKCFQUXBpcGVsaW5lU3lu YyhzdC0+Y29uKSkKIAl7CiAJCXBnX2xvZ19lcnJvcigiY2xpZW50ICVkIGFib3J0ZWQ6IGZhaWxl ZCB0byBzZW5kIGEgcGlwZWxpbmUgc3luYyIsCkBAIC0zNTc4LDI5ICszNTgyLDQyIEBAIGRpc2Nh cmRVbnRpbFN5bmMoQ1N0YXRlICpzdCkKIAkJcmV0dXJuIDA7CiAJfQogCi0JLyogcmVjZWl2ZSBQ R1JFU19QSVBFTElORV9TWU5DIGFuZCBudWxsIGZvbGxvd2luZyBpdCAqLworCS8qCisJICogQ29u dGludWUgcmVhZGluZyByZXN1bHRzIHVudGlsIHRoZSBsYXN0IHN5bmMgcG9pbnQsIGkuZS4sIHVu dGlsCisJICogcmVhY2hpbmcgbnVsbCBqdXN0IGFmdGVyIFBHUkVTX1BJUEVMSU5FX1NZTkMuCisJ ICovCiAJZm9yICg7OykKIAl7CiAJCVBHcmVzdWx0ICAgKnJlcyA9IFBRZ2V0UmVzdWx0KHN0LT5j b24pOwogCisJCWlmIChQUXN0YXR1cyhzdC0+Y29uKSA9PSBDT05ORUNUSU9OX0JBRCkKKwkJewor CQkJcGdfbG9nX2Vycm9yKCJjbGllbnQgJWQgYWJvcnRlZCB3aGlsZSByb2xsaW5nIGJhY2sgdGhl IHRyYW5zYWN0aW9uIGFmdGVyIGFuIGVycm9yOyBwZXJoYXBzIHRoZSBiYWNrZW5kIGRpZWQgd2hp bGUgcHJvY2Vzc2luZyIsCisJCQkJCQkgc3QtPmlkKTsKKwkJCVBRY2xlYXIocmVzKTsKKwkJCXJl dHVybiAwOworCQl9CisKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfUElQRUxJ TkVfU1lOQykKIAkJCXJlY2VpdmVkX3N5bmMgPSB0cnVlOwotCQllbHNlIGlmIChyZWNlaXZlZF9z eW5jKQorCQllbHNlIGlmIChyZWNlaXZlZF9zeW5jICYmIHJlcyA9PSBOVUxMKQogCQl7Ci0JCQkv KgotCQkJICogUEdSRVNfUElQRUxJTkVfU1lOQyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFub3RoZXIK LQkJCSAqIFBHUkVTX1BJUEVMSU5FX1NZTkMgb3IgTlVMTDsgb3RoZXJ3aXNlLCBhc3NlcnQgZmFp bHVyZS4KLQkJCSAqLwotCQkJQXNzZXJ0KHJlcyA9PSBOVUxMKTsKLQogCQkJLyoKIAkJCSAqIFJl c2V0IG9uZ29pbmcgc3luYyBjb3VudCB0byAwIHNpbmNlIGFsbCBQR1JFU19QSVBFTElORV9TWU5D CiAJCQkgKiByZXN1bHRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuCiAJCQkgKi8KIAkJCXN0LT5udW1f c3luY3MgPSAwOwotCQkJUFFjbGVhcihyZXMpOwogCQkJYnJlYWs7CiAJCX0KKwkJZWxzZQorCQl7 CisJCQkvKgorCQkJICogSWYgYSBQR1JFU19QSVBFTElORV9TWU5DIGlzIGZvbGxvd2VkIGJ5IHNv bWV0aGluZyBvdGhlciB0aGFuCisJCQkgKiBQR1JFU19QSVBFTElORV9TWU5DIG9yIE5VTEwsIGFu b3RoZXIgUEdSRVNfUElQRUxJTkVfU1lOQyB3aWxsCisJCQkgKiBhcHBlYXIgbGF0ZXIuIFJlc2V0 IHJlY2VpdmVkX3N5bmMgdG8gZmFsc2UgdG8gd2FpdCBmb3IgaXQuCisJCQkgKi8KKwkJCXJlY2Vp dmVkX3N5bmMgPSBmYWxzZTsKKwkJfQogCQlQUWNsZWFyKHJlcyk7CiAJfQogCi0tIAoyLjQzLjAK CgpGcm9tIDljNGYxOTA1NTU5N2U5YWRiMjVlNjVjMmFhOGJlZGYyMGEwOWUxM2QgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwu Y29tPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDE5OjA1OjU4ICswNzAwClN1YmplY3Q6IFtQQVRD SCAwOC8xMl0gU2V0dGluZyBlbXB0eSBzdHJpbmcgYXMgZGVmYXVsdCB2YWx1ZSBpbiBmaWxsZXIg Y29sdW1uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAxNiArKysrKysrKy0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCmluZGV4IDk2N2Y2Y2U2OTg0Li4wM2I1ZTVjMjhmMCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC00 OTg1LDI2ICs0OTg1LDI2IEBAIGluaXRDcmVhdGVUYWJsZXMoUEdjb25uICpjb24pCiAJc3RhdGlj IGNvbnN0IHN0cnVjdCBkZGxpbmZvIERETHNbXSA9IHsKIAkJewogCQkJInBnYmVuY2hfaGlzdG9y eSIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVz dGFtcCxmaWxsZXIgY2hhcigyMikiLAotCQkJInRpZCBpbnQsYmlkIGludCxhaWQgYmlnaW50LGRl bHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIiwKKwkJCSJ0aWQgaW50LGJp ZCBpbnQsYWlkICAgIGludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIy KSBkZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkIGJpZ2ludCxkZWx0YSBpbnQs bXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0ICcnIiwKIAkJCTAKIAkJfSwK IAkJewogCQkJInBnYmVuY2hfdGVsbGVycyIsCi0JCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50 LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkiLAotCQkJInRpZCBpbnQgbm90IG51bGwsYmlk IGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwKKwkJCSJ0aWQgaW50IG5vdCBudWxs LGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZhdWx0ICcnIiwKKwkJCSJ0 aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZh dWx0ICcnIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfYWNjb3VudHMiLAotCQkJImFp ZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwK LQkJCSJhaWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFy KDg0KSIsCisJCQkiYWlkICAgIGludCBub3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxs ZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCisJCQkiYWlkIGJpZ2ludCBub3QgbnVsbCxiaWQgaW50 LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCiAJCQkxCiAJCX0sCiAJ CXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJCSJiaWQgaW50IG5vdCBudWxsLGJiYWxhbmNl IGludCxmaWxsZXIgY2hhcig4OCkiLAotCQkJImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50 LGZpbGxlciBjaGFyKDg4KSIsCisJCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmls bGVyIGNoYXIoODgpIGRlZmF1bHQgJyciLAorCQkJImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2Ug aW50LGZpbGxlciBjaGFyKDg4KSBkZWZhdWx0ICcnIiwKIAkJCTEKIAkJfQogCX07Ci0tIAoyLjQz LjAKCgpGcm9tIDJhYWJhYTUyZGZmZGI3OGZiZWZhZWY5NTE2Mzg4MWMxNWUxOGVmMjkgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEhlaWtraSBMaW5uYWthbmdhcyA8aGVpa2tpLmxpbm5h a2FuZ2FzQGlraS5maT4KRGF0ZTogRnJpLCAyMSBOb3YgMjAyNSAxNTowMzoxMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDkvMTJdIFVzZSBzdHJ0b2k2NCgpIGluIHBnYmVuY2gsIHJlcGxhY2luZyBp dHMgb3Blbi1jb2RlZAogaW1wbGVtZW50YXRpb24KCk1ha2VzIHRoZSBjb2RlIGEgbGl0dGxlIHNp bXBsZXIuCgpUaGUgb2xkIGltcGxlbWVudGF0aW9uIGFjY2VwdGVkIHRyYWlsaW5nIHdoaXRlc3Bh Y2UsIGJ1dCB0aGF0IHdhcwp1bm5lY2Vzc2FyeS4gRmlyc3RseSwgaXRzIHNpYmxpbmcgZnVuY3Rp b24gZm9yIHBhcnNpbmcgZGVjaW1hbHMsCnN0cnRvZG91YmxlKCksIGRvZXMgbm90IGFjY2VwdCB0 cmFpbGluZyB3aGl0ZXNwYWNlLiBTZWNvbmRseSwgbm9uZSBvZgp0aGUgY2FsbGVycyBjYW4gcGFz cyBhIHN0cmluZyB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2UgdG8gaXQuCgpJbiB0aGUgcGFzc2lu ZywgY2hlY2sgc3BlY2lmaWNhbGx5IGZvciBFUkFOR0UgYmVmb3JlIHByaW50aW5nIHRoZSAib3V0 Cm9mIHJhbmdlIiBlcnJvci4gT24gc29tZSBzeXN0ZW1zLCBzdHJ0b3VsKCkgYW5kIHN0cnRvZCgp IHJldHVybiBFSU5WQUwKb24gYW4gZW1wdHkgb3IgYWxsLXNwYWNlcyBzdHJpbmcsIGFuZCAiaW52 YWxpZCBpbnB1dCBzeW50YXgiIGlzIG1vcmUKYXBwcm9wcmlhdGUgZm9yIHRoYXQgdGhhbiAib3V0 IG9mIHJhbmdlIi4gRm9yIHRoZSBleGlzdGluZwpzdHJ0b2RvdWJsZSgpIGZ1bmN0aW9uIHRoaXMg aXMgcHVyZWx5IGFjYWRlbWljYWwgYmVjYXVzZSBpdCdzIG5ldmVyCmNhbGxlZCB3aXRoIGVycm9y T0s9PWZhbHNlLCBidXQgbGV0J3MgYmUgdGlkeS4gKFBlcmhhcHMgd2Ugc2hvdWxkCnJlbW92ZSB0 aGUgZGVhZCBjb2RlcGF0aHMgYWx0b2dldGhlciwgYnV0IEknbGwgbGVhdmUgdGhhdCBmb3IgYW5v dGhlcgpkYXkuKQoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBZdWVmZWkgU2hpIDxzaGl5dWVmZWkxMDA0QGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IE5laWwgQ2hlbiA8Y2FycGVudGVyLm5haWwuY3pAZ21haWwuY29tPgpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzg2MWRkNWJkLWYyYzktNGZm NS04YWEwLWY4MmJkYjc1ZWMxZkBpa2kuZmkKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j IHwgODMgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXgg YTQyNTE3NmVjZGMuLjY4Nzc0YTU5ZWZkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTk4MiwxMyArOTgyLDE3 IEBAIHVzYWdlKHZvaWQpCiAJCSAgIHByb2duYW1lLCBwcm9nbmFtZSwgUEFDS0FHRV9CVUdSRVBP UlQsIFBBQ0tBR0VfTkFNRSwgUEFDS0FHRV9VUkwpOwogfQogCi0vKiByZXR1cm4gd2hldGhlciBz dHIgbWF0Y2hlcyAiXlxzKlstK10/WzAtOV0rJCIgKi8KKy8qCisgKiBSZXR1cm4gd2hldGhlciBz dHIgbWF0Y2hlcyAiXlxzKlstK10/WzAtOV0rJCIKKyAqCisgKiBUaGlzIHNob3VsZCBhZ3JlZSB3 aXRoIHN0cnRvaW50NjQoKSBvbiB3aGF0J3MgYWNjZXB0ZWQsIGlnbm9yaW5nIG92ZXJmbG93cy4K KyAqLwogc3RhdGljIGJvb2wKIGlzX2FuX2ludChjb25zdCBjaGFyICpzdHIpCiB7CiAJY29uc3Qg Y2hhciAqcHRyID0gc3RyOwogCi0JLyogc2tpcCBsZWFkaW5nIHNwYWNlczsgY2FzdCBpcyBjb25z aXN0ZW50IHdpdGggc3RydG9pbnQ2NCAqLworCS8qIHNraXAgbGVhZGluZyBzcGFjZXMgKi8KIAl3 aGlsZSAoKnB0ciAmJiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKIAkJcHRyKys7CiAK QEAgLTEwMTIsOSArMTAxNiw2IEBAIGlzX2FuX2ludChjb25zdCBjaGFyICpzdHIpCiAvKgogICog c3RydG9pbnQ2NCAtLSBjb252ZXJ0IGEgc3RyaW5nIHRvIDY0LWJpdCBpbnRlZ2VyCiAgKgotICog VGhpcyBmdW5jdGlvbiBpcyBhIHNsaWdodGx5IG1vZGlmaWVkIHZlcnNpb24gb2YgcGdfc3RydG9p bnQ2NCgpIGZyb20KLSAqIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW11dGlscy5jLgotICoKICAq IFRoZSBmdW5jdGlvbiByZXR1cm5zIHdoZXRoZXIgdGhlIGNvbnZlcnNpb24gd29ya2VkLCBhbmQg aWYgc28KICAqICIqcmVzdWx0IiBpcyBzZXQgdG8gdGhlIHJlc3VsdC4KICAqCkBAIC0xMDIzLDcx ICsxMDI0LDI1IEBAIGlzX2FuX2ludChjb25zdCBjaGFyICpzdHIpCiBib29sCiBzdHJ0b2ludDY0 KGNvbnN0IGNoYXIgKnN0ciwgYm9vbCBlcnJvck9LLCBpbnQ2NCAqcmVzdWx0KQogewotCWNvbnN0 IGNoYXIgKnB0ciA9IHN0cjsKLQlpbnQ2NAkJdG1wID0gMDsKLQlib29sCQluZWcgPSBmYWxzZTsK LQotCS8qCi0JICogRG8gb3VyIG93biBzY2FuLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHNzY2Fu ZiB3aGljaCBtaWdodCBiZSBicm9rZW4KLQkgKiBmb3IgbG9uZyBsb25nLgotCSAqCi0JICogQXMg SU5UNjRfTUlOIGNhbid0IGJlIHN0b3JlZCBhcyBhIHBvc2l0aXZlIDY0IGJpdCBpbnRlZ2VyLCBh Y2N1bXVsYXRlCi0JICogdmFsdWUgYXMgYSBuZWdhdGl2ZSBudW1iZXIuCi0JICovCi0KLQkvKiBz a2lwIGxlYWRpbmcgc3BhY2VzICovCi0Jd2hpbGUgKCpwdHIgJiYgaXNzcGFjZSgodW5zaWduZWQg Y2hhcikgKnB0cikpCi0JCXB0cisrOwotCi0JLyogaGFuZGxlIHNpZ24gKi8KLQlpZiAoKnB0ciA9 PSAnLScpCi0JewotCQlwdHIrKzsKLQkJbmVnID0gdHJ1ZTsKLQl9Ci0JZWxzZSBpZiAoKnB0ciA9 PSAnKycpCi0JCXB0cisrOworCWNoYXIJICAgKmVuZDsKIAotCS8qIHJlcXVpcmUgYXQgbGVhc3Qg b25lIGRpZ2l0ICovCi0JaWYgKHVubGlrZWx5KCFpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRy KSkpCi0JCWdvdG8gaW52YWxpZF9zeW50YXg7CisJZXJybm8gPSAwOworCSpyZXN1bHQgPSBzdHJ0 b2k2NChzdHIsICZlbmQsIDEwKTsKIAotCS8qIHByb2Nlc3MgZGlnaXRzICovCi0Jd2hpbGUgKCpw dHIgJiYgaXNkaWdpdCgodW5zaWduZWQgY2hhcikgKnB0cikpCisJaWYgKHVubGlrZWx5KGVycm5v ID09IEVSQU5HRSkpCiAJewotCQlpbnQ4CQlkaWdpdCA9ICgqcHRyKysgLSAnMCcpOwotCi0JCWlm ICh1bmxpa2VseShwZ19tdWxfczY0X292ZXJmbG93KHRtcCwgMTAsICZ0bXApKSB8fAotCQkJdW5s aWtlbHkocGdfc3ViX3M2NF9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkpCi0JCQlnb3RvIG91 dF9vZl9yYW5nZTsKKwkJaWYgKCFlcnJvck9LKQorCQkJcGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVz XCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGJpZ2ludCIsIHN0cik7CisJCXJldHVybiBmYWxz ZTsKIAl9CiAKLQkvKiBhbGxvdyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBidXQgbm90IG90aGVyIHRy YWlsaW5nIGNoYXJzICovCi0Jd2hpbGUgKCpwdHIgIT0gJ1wwJyAmJiBpc3NwYWNlKCh1bnNpZ25l ZCBjaGFyKSAqcHRyKSkKLQkJcHRyKys7Ci0KLQlpZiAodW5saWtlbHkoKnB0ciAhPSAnXDAnKSkK LQkJZ290byBpbnZhbGlkX3N5bnRheDsKLQotCWlmICghbmVnKQorCWlmICh1bmxpa2VseShlcnJu byAhPSAwIHx8IGVuZCA9PSBzdHIgfHwgKmVuZCAhPSAnXDAnKSkKIAl7Ci0JCWlmICh1bmxpa2Vs eSh0bXAgPT0gUEdfSU5UNjRfTUlOKSkKLQkJCWdvdG8gb3V0X29mX3JhbmdlOwotCQl0bXAgPSAt dG1wOworCQlpZiAoIWVycm9yT0spCisJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgaW5wdXQgc3lu dGF4IGZvciB0eXBlIGJpZ2ludDogXCIlc1wiIiwgc3RyKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0K LQotCSpyZXN1bHQgPSB0bXA7CiAJcmV0dXJuIHRydWU7Ci0KLW91dF9vZl9yYW5nZToKLQlpZiAo IWVycm9yT0spCi0JCXBnX2xvZ19lcnJvcigidmFsdWUgXCIlc1wiIGlzIG91dCBvZiByYW5nZSBm b3IgdHlwZSBiaWdpbnQiLCBzdHIpOwotCXJldHVybiBmYWxzZTsKLQotaW52YWxpZF9zeW50YXg6 Ci0JaWYgKCFlcnJvck9LKQotCQlwZ19sb2dfZXJyb3IoImludmFsaWQgaW5wdXQgc3ludGF4IGZv ciB0eXBlIGJpZ2ludDogXCIlc1wiIiwgc3RyKTsKLQlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qIGNv bnZlcnQgc3RyaW5nIHRvIGRvdWJsZSwgZGV0ZWN0aW5nIG92ZXJmbG93cy91bmRlcmZsb3dzICov CkBAIC0xMDk5LDE0ICsxMDU0LDE0IEBAIHN0cnRvZG91YmxlKGNvbnN0IGNoYXIgKnN0ciwgYm9v bCBlcnJvck9LLCBkb3VibGUgKmR2KQogCWVycm5vID0gMDsKIAkqZHYgPSBzdHJ0b2Qoc3RyLCAm ZW5kKTsKIAotCWlmICh1bmxpa2VseShlcnJubyAhPSAwKSkKKwlpZiAodW5saWtlbHkoZXJybm8g PT0gRVJBTkdFKSkKIAl7CiAJCWlmICghZXJyb3JPSykKIAkJCXBnX2xvZ19lcnJvcigidmFsdWUg XCIlc1wiIGlzIG91dCBvZiByYW5nZSBmb3IgdHlwZSBkb3VibGUiLCBzdHIpOwogCQlyZXR1cm4g ZmFsc2U7CiAJfQogCi0JaWYgKHVubGlrZWx5KGVuZCA9PSBzdHIgfHwgKmVuZCAhPSAnXDAnKSkK KwlpZiAodW5saWtlbHkoZXJybm8gIT0gMCB8fCBlbmQgPT0gc3RyIHx8ICplbmQgIT0gJ1wwJykp CiAJewogCQlpZiAoIWVycm9yT0spCiAJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgaW5wdXQgc3lu dGF4IGZvciB0eXBlIGRvdWJsZTogXCIlc1wiIiwgc3RyKTsKLS0gCjIuNDMuMAoKCkZyb20gZGNi ODVkMjZmODEzMmVhYWY5ZDA5NmU4MTRiOWJkYTQ5ZGI3ZDQ3OCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMjEgTm92IDIwMjUgMjA6MDY6MjQgKzA3MDAKU3ViamVjdDogW1BBVENIIDEwLzEyXSBT d2l0Y2hpbmcgQ09QWSBGUk9NIEJJTkFSWSB0aSBydW4gaW4gbXVsdGlwbGUKIHRyYW5zYWN0aW9u cwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMjcgKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMKaW5kZXggMDNiNWU1YzI4ZjAuLjZiODkwMDdhNjNiIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKQEAgLTU0OTYsMjAgKzU0OTYsMjAgQEAgaW5pdEFjY291bnRCaW5hcnkoUEdjb25uICpjb24s IFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAgKi8KIHN0YXRp YyB2b2lkCiBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUs IGNoYXIgKmNvbHVtbnMsCi0JCQkJCQlpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW4gaW5p dF9yb3cpCisJCQkJCQlpbnQgY291bnRlciwgaW50NjRfdCBiYXNlLCBpbml0Um93TWV0aG9kQmlu IGluaXRfcm93KQogewogCWludAkJCSBuOwogCVBHcmVzdWx0CSpyZXM7CiAJY2hhcgkJIGNvcHlf c3RhdGVtZW50WzI1Nl07CiAJY29uc3QgY2hhcgkqY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkg JXMgKCVzKSBmcm9tIHN0ZGluIChmb3JtYXQgYmluYXJ5KSI7Ci0JaW50NjRfdAkJIHRvdGFsID0g YmFzZSAqIHNjYWxlOworCWludDY0X3QJCSBzdGFydCA9IGJhc2UgKiBjb3VudGVyOwogCiAJYmlu X2NvcHlfYnVmZmVyX2xlbmd0aCA9IDA7CiAKIAkvKiBVc2UgQ09QWSB3aXRoIEZSRUVaRSBvbiB2 MTQgYW5kIGxhdGVyIGZvciBhbGwgb3JkaW5hcnkgdGFibGVzICovCiAJaWYgKChQUXNlcnZlclZl cnNpb24oY29uKSA+PSAxNDAwMDApICYmCiAJCWdldF90YWJsZV9yZWxraW5kKGNvbiwgdGFibGUp ID09IFJFTEtJTkRfUkVMQVRJT04pCi0JCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICgl cykgZnJvbSBzdGRpbiB3aXRoIChmb3JtYXQgYmluYXJ5LCBmcmVlemUgb24pIjsKKwkJY29weV9z dGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5h cnkpIjsKIAogCW4gPSBwZ19zbnByaW50Zihjb3B5X3N0YXRlbWVudCwgc2l6ZW9mKGNvcHlfc3Rh dGVtZW50KSwgY29weV9zdGF0ZW1lbnRfZm10LCB0YWJsZSwgY29sdW1ucyk7CiAJaWYgKG4gPj0g c2l6ZW9mKGNvcHlfc3RhdGVtZW50KSkKQEAgLTU1MjYsNyArNTUyNiw3IEBAIGluaXRQb3B1bGF0 ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAog CXNlbmRCaW5hcnlDb3B5SGVhZGVyKGNvbik7CiAKLQlmb3IgKGludDY0X3QgaSA9IDA7IGkgPCB0 b3RhbDsgaSsrKQorCWZvciAoaW50NjRfdCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGJhc2U7IGkr KykKIAl7CiAJCWluaXRfcm93KGNvbiwgcmVzLCBpLCBiYXNlKTsKIAl9CkBAIC01NTczLDE1ICs1 NTczLDIwIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQog CS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNv bik7CiAKLQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwg ImJpZCwgYmJhbGFuY2UiLAotCQkJCQkJCW5icmFuY2hlcywgaW5pdEJyYW5jaEJpbmFyeSk7Ci0J aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgICJ0aWQsIGJp ZCwgdGJhbGFuY2UiLAotCQkJCQkJCW50ZWxsZXJzLCAgaW5pdFRlbGxlckJpbmFyeSk7Ci0JaW5p dFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsICJhaWQsIGJpZCwg YWJhbGFuY2UiLAotCQkJCQkJCW5hY2NvdW50cywgaW5pdEFjY291bnRCaW5hcnkpOwotCiAJZXhl Y3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAorCWZvciAoaW50IGkgPSAwOyBpIDwgc2Nh bGU7IGkrKykKKwl7CisJCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hfYnJh bmNoZXMiLCAiYmlkLCBiYmFsYW5jZSIsCisJCQkJCQkJCWksIG5icmFuY2hlcywgaW5pdEJyYW5j aEJpbmFyeSk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hfdGVsbGVy cyIsICAidGlkLCBiaWQsIHRiYWxhbmNlIiwKKwkJCQkJCQkJaSwgbnRlbGxlcnMsICBpbml0VGVs bGVyQmluYXJ5KTsKKwkJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9hY2Nv dW50cyIsICJhaWQsIGJpZCwgYWJhbGFuY2UiLAorCQkJCQkJCQlpLCBuYWNjb3VudHMsIGluaXRB Y2NvdW50QmluYXJ5KTsKKworCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCX0K KwogCXBnX2ZyZWUoYmluX2NvcHlfYnVmZmVyKTsKIH0KIAotLSAKMi40My4wCgoKRnJvbSBiOGUy ODg4MTIyNTIzNGZkMDBiNTUyMzViYzYwZmFkMmRjNjBiNTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTog U2F0LCAyMiBOb3YgMjAyNSAxNzowNjowMCArMDcwMApTdWJqZWN0OiBbUEFUQ0ggMTEvMTJdIEFk ZGluZyB0ZXN0cyBmb3IgbmV3IG1vZGVzIG9mIGRhdGEgZ2VuZXJhdGlvbgoKLS0tCiBzcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAgICAgICB8IDIxICsrKystLS0tCiBzcmMv YmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbCB8IDUyICsrKysrKysrKysr KysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jCmluZGV4IDZiODkwMDdhNjNiLi5kZDRlNWQ1ZTA1NiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCkBAIC0xNjQsNyArMTY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogI2RlZmlu ZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCiAK ICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNlY29uZHMgYmV0d2VlbiBsb2cgbWVzc2Fn ZXMgKi8KLSNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJCS8qIGRlZmF1bHQgbnhhY3RzICovCisj ZGVmaW5lIERFRkFVTFRfTlhBQ1RTCQkxMAkvKiBkZWZhdWx0IG54YWN0cyAqLwogCiAjZGVmaW5l IE1JTl9HQVVTU0lBTl9QQVJBTQkJMi4wIC8qIG1pbmltdW0gcGFyYW1ldGVyIGZvciBnYXVzcyAq LwogCkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIGludAlzY2FsZSA9IDE7CiAvKgogICogbW9k ZSBvZiBkYXRhIGdlbmVyYXRpb24gdG8gdXNlCiAgKi8KLXN0YXRpYyBjaGFyCWRhdGFfZ2VuZXJh dGlvbl90eXBlID0gJz8nOworc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSBHRU5f VFlQRV9DT1BZX09SSUdJTkFMOwogCiAvKgogICogQ09QWSBGUk9NIEJJTkFSWSBleGVjdXRpb24g YnVmZmVyCkBAIC00OTg1LDI2ICs0OTg1LDI2IEBAIGluaXRDcmVhdGVUYWJsZXMoUEdjb25uICpj b24pCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBkZGxpbmZvIERETHNbXSA9IHsKIAkJewogCQkJInBn YmVuY2hfaGlzdG9yeSIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCAgICBpbnQsZGVsdGEgaW50 LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnJyIsCi0JCQkidGlkIGlu dCxiaWQgaW50LGFpZCBiaWdpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hh cigyMikgZGVmYXVsdCAnJyIsCisJCQkidGlkIGludCxiaWQgaW50LGFpZCAgICBpbnQsZGVsdGEg aW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnPyciLAorCQkJInRp ZCBpbnQsYmlkIGludCxhaWQgYmlnaW50LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVy IGNoYXIoMjIpIGRlZmF1bHQgJz8nIiwKIAkJCTAKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfdGVs bGVycyIsCi0JCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIg Y2hhcig4NCkgZGVmYXVsdCAnJyIsCi0JCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50LHRiYWxh bmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCisJCQkidGlkIGludCBub3QgbnVs bCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkiLAorCQkJInRpZCBpbnQgbm90 IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwKIAkJCTEKIAkJfSwK IAkJewogCQkJInBnYmVuY2hfYWNjb3VudHMiLAotCQkJImFpZCAgICBpbnQgbm90IG51bGwsYmlk IGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAotCQkJImFpZCBi aWdpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1 bHQgJyciLAorCQkJImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmls bGVyIGNoYXIoODQpIGRlZmF1bHQgJz8nIiwKKwkJCSJhaWQgYmlnaW50IG5vdCBudWxsLGJpZCBp bnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZhdWx0ICc/JyIsCiAJCQkxCiAJCX0s CiAJCXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJCSJiaWQgaW50IG5vdCBudWxsLGJiYWxh bmNlIGludCxmaWxsZXIgY2hhcig4OCkgZGVmYXVsdCAnJyIsCi0JCQkiYmlkIGludCBub3QgbnVs bCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRlZmF1bHQgJyciLAorCQkJImJpZCBpbnQg bm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSIsCisJCQkiYmlkIGludCBub3Qg bnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIiwKIAkJCTEKIAkJfQogCX07CkBAIC03 ODM3LDYgKzc4MzcsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCX0KIAkJfQog CisJCWNoZWNrSW5pdFN0ZXBzKGluaXRpYWxpemVfc3RlcHMpOwogCQlydW5Jbml0U3RlcHMoaW5p dGlhbGl6ZV9zdGVwcyk7CiAJCWV4aXQoMCk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2Jl bmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFf cGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCA1ODFlOWFmNzkwNy4uYTM3NzA0OGVhZDEgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCisr KyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCkBAIC0xNiwy NSArMTYsMzAgQEAgc3ViIGNoZWNrX2RhdGFfc3RhdGUKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6 TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAxOwogCW15ICRub2RlID0gc2hpZnQ7CiAJ bXkgJHR5cGUgPSBzaGlmdDsKKwlteSAkc3FsX3Jlc3VsdDsKIAotCW15ICRzcWxfcmVzdWx0ID0g JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCQknU0VMRUNUIGNvdW50KCopIEFTIG51bGxf Y291bnQgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJFIGZpbGxlciBJUyBOVUxMIExJTUlUIDEw OycKLQkpOwotCWlzKCRzcWxfcmVzdWx0LCAnMCcsCi0JCSIkdHlwZTogZmlsbGVyIGNvbHVtbiBv ZiBwZ2JlbmNoX2FjY291bnRzIGhhcyBubyBOVUxMIGRhdGEiKTsKIAkkc3FsX3Jlc3VsdCA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NFTEVDVCBjb3VudCgqKSBBUyBudWxsX2Nv dW50IEZST00gcGdiZW5jaF9icmFuY2hlcyBXSEVSRSBmaWxsZXIgSVMgTlVMTDsnCiAJKTsKIAlp cygkc3FsX3Jlc3VsdCwgJzEnLAogCQkiJHR5cGU6IGZpbGxlciBjb2x1bW4gb2YgcGdiZW5jaF9i cmFuY2hlcyBoYXMgb25seSBOVUxMIGRhdGEiKTsKKwogCSRzcWxfcmVzdWx0ID0gJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCQknU0VMRUNUIGNvdW50KCopIEFTIG51bGxfY291bnQgRlJP TSBwZ2JlbmNoX3RlbGxlcnMgV0hFUkUgZmlsbGVyIElTIE5VTEw7JwogCSk7CiAJaXMoJHNxbF9y ZXN1bHQsICcxMCcsCiAJCSIkdHlwZTogZmlsbGVyIGNvbHVtbiBvZiBwZ2JlbmNoX3RlbGxlcnMg aGFzIG9ubHkgTlVMTCBkYXRhIik7CisKKwkkc3FsX3Jlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJJ1NFTEVDVCBjb3VudCgqKSBBUyBudWxsX2NvdW50IEZST00gcGdiZW5j aF9hY2NvdW50cyBXSEVSRSBmaWxsZXIgSVMgTlVMTCBMSU1JVCAxMDsnCisJKTsKKwlpcygkc3Fs X3Jlc3VsdCwgJzAnLAorCQkiJHR5cGU6IGZpbGxlciBjb2x1bW4gb2YgcGdiZW5jaF9hY2NvdW50 cyBoYXMgbm8gTlVMTCBkYXRhIik7CisKIAkkc3FsX3Jlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkJJ1NFTEVDVCBjb3VudCgqKSBBUyBkYXRhX2NvdW50IEZST00gcGdiZW5j aF9oaXN0b3J5OycpOwotCWlzKCRzcWxfcmVzdWx0LCAnMCcsICIkdHlwZTogcGdiZW5jaF9oaXN0 b3J5IGhhcyBubyBkYXRhIik7CisJaXMoJHNxbF9yZXN1bHQsICcwJywKKwkJIiR0eXBlOiBwZ2Jl bmNoX2hpc3RvcnkgaGFzIG5vIGRhdGEiKTsKIH0KIAogIyBzdGFydCBhIHBnYmVuY2ggc3BlY2lm aWMgc2VydmVyCkBAIC0xMjUsNyArMTMwLDcgQEAgJG5vZGUtPnBnYmVuY2goCiAJJ3BnYmVuY2gg c2NhbGUgMSBpbml0aWFsaXphdGlvbicsKTsKIAogIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBj bGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCi1jaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xp ZW50LXNpZGUnKTsKK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGllbnQtc2lkZSAoZGVmYXVs dCBvcHRpb25zKScpOwogCiAjIEFnYWluLCB3aXRoIGFsbCBwb3NzaWJsZSBvcHRpb25zCiAkbm9k ZS0+cGdiZW5jaCgKQEAgLTE0Myw2ICsxNDgsNyBAQCAkbm9kZS0+cGdiZW5jaCgKIAkJcXJ7ZG9u ZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5jaCBzY2FsZSAxIGluaXRpYWxpemF0aW9u Jyk7CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGFsbCBvcHRpb25zKScp OwogCiAjIFRlc3QgaW50ZXJhY3Rpb24gb2YgLS1pbml0LXN0ZXBzIHdpdGggbGVnYWN5IHN0ZXAt c2VsZWN0aW9uIG9wdGlvbnMKICRub2RlLT5wZ2JlbmNoKApAQCAtMTY0LDYgKzE3MCwzOCBAQCAk bm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0 YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ3NlcnZlci1zaWRlJyk7CiAK KyMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uIHdpdGggVU5ORVNUCiskbm9kZS0+cGdiZW5j aCgKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1kdEknLAorCTAsCisJW3Fye14kfV0sCisJ WworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJ cXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGVcKX0sCisJCXFye2RvbmUgaW4gXGQrXC5c ZFxkIHMgfQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIHNlcnZlci1zaWRlIFVOTkVTVCcp OworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlv bi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAodW5uZXN0KScpOworCisj IFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRoIFVOTkVTVAorJG5vZGUtPnBnYmVuY2go CisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRDJywKKwkwLAorCVtxcnteJH1dLAorCVsK KwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFy e2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlXCl9LAorCQlxcntkb25lIGluIFxkK1wuXGRc ZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsK KworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24u CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKwogIyBS dW4gYWxsIGJ1aWx0aW4gc2NyaXB0cywgZm9yIGEgZmV3IHRyYW5zYWN0aW9ucyBlYWNoCiAkbm9k ZS0+cGdiZW5jaCgKIAknLS10cmFuc2FjdGlvbnM9NSAtRGZvbz1ibGEgLS1jbGllbnQ9MiAtLXBy b3RvY29sPXNpbXBsZSAtLWJ1aWx0aW49dCcKLS0gCjIuNDMuMAoKCkZyb20gYjNmMmJjZTM0MjMy ZDI5OWFiYzc2NDRhODU3OWYwY2U0OWM4YzlkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjMg Tm92IDIwMjUgMTQ6MDU6NTkgKzA3MDAKU3ViamVjdDogW1BBVENIIDEyLzEyXSBGaXhpbmcgY29t cGlsZXIgd2FybmluZ3MgYWJvdXQgdW51c2VkIHByb2NlZHVyZXMgYnkKIHJlbW92aW5nIG9yIGNv bW1lbnRpbmcgdGhlbSBvdXQgYXMgdGhleSBtaWdodCBiZSBuZWVkZWQgYSBiaXQgbGF0ZXIKCi0t LQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDMxICsrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCmluZGV4IDBhM2JhMjFkY2M5Li42ODJkYjYxZmY2MSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j CkBAIC01MjAxLDcgKzUyMDEsNyBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoUEdj b25uICpjb24pCiAKIC8qCiAgKiBEdW1wcyBiaW5hcnkgYnVmZmVyIHRvIGZpbGUgKHB1cmVseSBm b3IgZGVidWdnaW5nKQotICovCisgKgogc3RhdGljIHZvaWQKIGR1bXBCdWZmZXJUb0ZpbGUoY2hh ciAqZmlsZW5hbWUpCiB7CkBAIC01MjI2LDYgKzUyMjYsNyBAQCBkdW1wQnVmZmVyVG9GaWxlKGNo YXIgKmZpbGVuYW1lKQogCiAJZmNsb3NlKGZpbGVfcHRyKTsKIH0KKyAqLwogCiAvKgogICogU2F2 ZSBjaGFyIGRhdGEgdG8gYnVmZmVyCkBAIC01MjcxLDM3ICs1MjcyLDE0IEBAIGFkZENvbHVtbkNv dW50ZXIoaW50MTZfdCBuKQogCiAvKgogICogYWRkcyBjb2x1bW4gd2l0aCBOVUxMIHZhbHVlCi0g Ki8KKyAqCiBzdGF0aWMgdm9pZAogYWRkTnVsbENvbHVtbigpCiB7CiAJaW50MzJfdCBudWxsID0g LTE7CiAJYnVmZmVyRGF0YSgodm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKIH0KLQotLyoK LSAqIGFkZHMgY29sdW1uIHdpdGggaW50OCB2YWx1ZQogICovCi1zdGF0aWMgdm9pZAotYWRkSW50 OENvbHVtbihpbnQ4X3QgdmFsdWUpCi17Ci0JaW50OF90CWRhdGEgPSB2YWx1ZTsKLQlpbnQzMl90 CXNpemUgPSBzaXplb2YoZGF0YSk7Ci0JYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9m KHNpemUpKTsKLQlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkpOwotfQot Ci0vKgotICogYWRkcyBjb2x1bW4gd2l0aCBpbnQxNiB2YWx1ZQotICovCi1zdGF0aWMgdm9pZAot YWRkSW50MTZDb2x1bW4oaW50MTZfdCB2YWx1ZSkKLXsKLQlpbnQxNl90CWRhdGEgPSB2YWx1ZTsK LQlpbnQzMl90CXNpemUgPSBzaXplb2YoZGF0YSk7Ci0JYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6 ZSwgc2l6ZW9mKHNpemUpKTsKLQlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0 YSkpOwotfQogCiAvKgogICogYWRkcyBjb2x1bW4gd2l0aCBpbnRpMzIgdmFsdWUKQEAgLTUzMjks NyArNTMwNyw3IEBAIGFkZEludDY0Q29sdW1uKGludDY0X3QgdmFsdWUpCiAKIC8qCiAgKiBhZGRz IGNvbHVtbiB3aXRoIGNoYXIgdmFsdWUKLSAqLworICoKIHN0YXRpYyB2b2lkCiBhZGRDaGFyQ29s dW1uKGNoYXIgKnZhbHVlKQogewpAQCAtNTMzNyw2ICs1MzE1LDcgQEAgYWRkQ2hhckNvbHVtbihj aGFyICp2YWx1ZSkKIAlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwog CWJ1ZmZlckNoYXJEYXRhKHZhbHVlLCBzaXplKTsKIH0KKyAqLwogCiAvKgogICogU3RhcnRzIGNv bW11bmljYXRpb24gd2l0aCBzZXJ2ZXIgZm9yIENPUFkgRlJPTSBCSU5BUlkgc3RhdGVtZW50Ci0t IAoyLjQzLjAKCg== --_004_PH0PR08MB7020802F14B1AC122AAB6F7588D3APH0PR08MB7020namp_--