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 1vMlNr-001P6J-1s for pgsql-hackers@arkaria.postgresql.org; Sat, 22 Nov 2025 11:02:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vMlNp-00BJBl-0k for pgsql-hackers@arkaria.postgresql.org; Sat, 22 Nov 2025 11:02:25 +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 1vMlNo-00BJBd-2L for pgsql-hackers@lists.postgresql.org; Sat, 22 Nov 2025 11:02:25 +0000 Received: from mail-northcentralusazolkn19013064.outbound.protection.outlook.com ([52.103.20.64] helo=CH4PR04CU002.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 1vMlNm-000sgl-19 for pgsql-hackers@postgresql.org; Sat, 22 Nov 2025 11:02:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VAYZEr08Bv6b4WIhdcaB9aqpz98s51tkrdUCESZd5//DPoCSUp/DIa7M7PGJFOFaDo7yhzf7C8ynccAKawmot5vhDuJpQ5h+ude4Dha47KAyGKRNzTdBrHVigZaRtEXP7XAVHVDrt+FIFLWC4pmvqhJACoqoDNbjdCQD+RItECpcf4VIyWOqdtJeO3l5HmDpddQuLSPLWj/gRC8UWqpEURO/fAUJvAzA0eFUsrHmSkhM2qkfDV3ft7dcJZQUfAw9KVwE5ieCxdMSjsH83BlTeIqwYybpz/Ske6NAW+ax1F851161KyvuBOvNdcBrv1wpLRhK4PI5kcDdglx9kwLd+g== 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=JQzqpWnyULV0VMTGqnLZ5zHDomoNipHvaIyft1C5gMY=; b=osGBzMG7GXfzARDFIoNVNe4j+NQRbQMFXey7yo8FnxPZRh59ResgrTItQmBw/fNSxtpYENrI+xWIKe9tkFZgrJCDfXbswyAlMTxpZTZMuTP4bfpDm/ogtGAKIqry0T+/GQQMyZMY+Y6qoXgMKCc8STxvhXSal63UXARFEJwdVLnMwSUDOd6lLST3eDQV7NKxR5rAyNzufURFsjpsPF04k7GjIHS7YEOBblR2oN+UM+jaG2D43W76IB508wstXp+k8/w7dPe2Z0oIYOFGc9qGrUVkiR9FbNgl4OeLF8eg1j8ze74vnSW6rcdZiTEKl8N4pLyRtDcqy8xeowuUeyUHgQ== 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=JQzqpWnyULV0VMTGqnLZ5zHDomoNipHvaIyft1C5gMY=; b=ujJh9VLgx4KA0X6jTIiOpauv0/SOsBJCpSXiO+tuteYExBck1uWSVnDKZAjyPZ1loOf8eAuBh2ciseOz3E33+PyXP/7FJgOQfAG8UKR5q6QNwxEUl/JTE0SN2G2AsN8xHK/0H11XWrrF72cBiUhoX5ZrFE/jUhotWrc+ghUkP361x/EIvpwt+MacT5+r4nWOAulTKZVKR906WJCdSVjESviFvEPQGHWw0mLyH+cLZs5SKm1fAliaimJfhT6QE1KXaUMDBYqhW5COUrhggsiNP3MK+9P5SYmDVlNifWp2QJl0C5Ew326WLasDQNbm7FPhXucrFoA0dZjB0s2PAyLUEg== Received: from PH0PR08MB7020.namprd08.prod.outlook.com (2603:10b6:510:74::15) by BN5PR08MB10601.namprd08.prod.outlook.com (2603:10b6:408:2a8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.12; Sat, 22 Nov 2025 11:02:15 +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; Sat, 22 Nov 2025 11:02:15 +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+YAGXmPMgAFzjL4= Date: Sat, 22 Nov 2025 11:02:12 +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_|BN5PR08MB10601:EE_ x-ms-office365-filtering-correlation-id: 9622ff5a-d8e2-4327-86e5-08de29b6971e x-microsoft-antispam: BCL:0;ARA:14566002|461199028|31061999003|8060799015|8062599012|15080799012|6092099016|51005399006|19110799012|15030799006|40105399003|440099028|3412199025|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?SLXCHrbltPtxy30osewf6SunMEBHbnTpSVe+R2mnc0E7JUXAQNtOdTZyV4?= =?iso-8859-1?Q?m6EhHusv/M536CQmuf/j/eJWfhrlOTwVdsghS0K0/oRIO5NABnET/3fJC+?= =?iso-8859-1?Q?qnd/yMJvmJGVRPCPLjuf1vqgpnsKubMqsX9kxL/VpKiKNW2gA3z6/i6rmw?= =?iso-8859-1?Q?L7xMC+V+vnrSvuP3Y9Entpf7MNFAHW61ijvOF9fCpAiQcaTGkGw1mAbHJ9?= =?iso-8859-1?Q?UkGnKOxkrN6/gRyHESsZ+mmQ3qxkNhZei464MBJLcY8TwOoo/42hQMCj6/?= =?iso-8859-1?Q?355yGGaMAI04xCqyWi4z6l8MOWMUM9fK/bZDThRKeS9pNCP7T4oxU+OWaw?= =?iso-8859-1?Q?uc4HqiFb2+tEvoEe54OGFb7DJkeg6vxOSp7FHjcI5cY7C4HksBgWMkED1e?= =?iso-8859-1?Q?s/PDyKYXFsIXUqthJGW+WuqN6Hb4jtcX+xQruiWbLYgMN5dg0QTg9XvWsz?= =?iso-8859-1?Q?3r++fkH2XXbjjsQXfjVvhZ7dMIl9R8mGr1v3oz30cSjd/zQo0OGi1T3jd7?= =?iso-8859-1?Q?jbYfMQjkilDVapLHfGsG8RHJ2jBcdeRBY0YOu9COP0ObzlKXh/CGGwfEMF?= =?iso-8859-1?Q?d5QmiPq/5Vw7aO4GFrCU45tjUc8iwSIMSwZ0C3KJxNtNOOrwJUQFF8gNU9?= =?iso-8859-1?Q?EnLf52D7cvmLKk1I7NKjLfwuLeMb/lsbZE7leCZlMF0PgDYuOUA2F6nNKM?= =?iso-8859-1?Q?xhLhmAr8/tnvWqqCHdIzGRMMQeL33Jmqm2hFrn0Dr2ggYTE6mrIpnB7ujN?= =?iso-8859-1?Q?wKB9GQNkfUlgPf3+7iu/LBNb4OoYtCofcRA6t5sSMp0rynicwrxi71NCpl?= =?iso-8859-1?Q?gFdDztxJZ5n3b1XjLYjWSn5fa5+4HcBwg43mXkMNGHTfWnNFImpALae2n6?= =?iso-8859-1?Q?qKEtHcV44eXxx9zzGzl1T3Oem2Fy1lUSA+kZ7lydfAB46ef8fTgHiqIB7G?= =?iso-8859-1?Q?olYbYGyuPUc4y9Z9pgsDUi2CIWE2L9OUxKr5q5QDaT0CZlj78J1fBMmbEv?= =?iso-8859-1?Q?Oy22IK3WPAX4nXCugTM9v879XuFbkH0gx6WCb3Enm8T90JeUvgoaERsKYv?= =?iso-8859-1?Q?yUrlkW0skM2KBjfA9atw+mSeHdI1Lkb+HR2kZwRTBp5kNBdn8iFOjHWFln?= =?iso-8859-1?Q?K65T/WXoQ9ePkHGFJGlWSy/9ZLBqdevTdlKnLD/b+aukPws+et9yijVNa5?= =?iso-8859-1?Q?TihwGXpUlFWAFq+tTbkaG8/6pdOV3imn3kZsvNsDiqe2jECpNE1zwvJ531?= =?iso-8859-1?Q?6U9X2t7OSRhOUhdoUi47Ng/j9KKeC7xLW+juBuDCjuorTmQPyMasZ2lOSX?= =?iso-8859-1?Q?0K5C?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?fY45ZQKOeZznF9SL/t/YGW2MqZVThOqemoY9SSsQH5T2paAabWR7mYwZzW?= =?iso-8859-1?Q?WslZ+TAIfjAUzSjJv9dxLsWEiZBnDepU9pYZgdbKgmWnJGd6TebuIsgGgx?= =?iso-8859-1?Q?3DzxbLyyjZGCLaQ0ISPd4lLH3AQxa0/sOPnWh6IdYqUdMkfNGFAWEfGyXK?= =?iso-8859-1?Q?2hpHKF4N3uufXY2iDKzhccTIMVs883cV1g6TRHIBvHhyZwJGCY6ppdgd7R?= =?iso-8859-1?Q?xwv4a0l+kobNPJ41dUvTeIB4T2CuvOOeBqjFp4d7gc87Y/63EpvdBKVMjQ?= =?iso-8859-1?Q?eVIcugdcj7z1sHSj7ZUFyn7g9NCWg/ATnGjiT8knPVW/2Z1dIWMpa67dz6?= =?iso-8859-1?Q?bvFqt9UHHTFDQLq0znB/zMsYVeC52s9NZwTvMR71u1yTNm7eghGs2YpIb+?= =?iso-8859-1?Q?pIr7lGO+rNIxm/fzxys/QhCxLsBfHvSVP4wr+hzIblLvbqhyC37a78ha9Q?= =?iso-8859-1?Q?oNjK5GsxK9hSPmeGvmMqYAhFeNv6YJuYbGrDGROE7MGzzkWeXqbKlWyFK+?= =?iso-8859-1?Q?BDzJEHh9HqP0fFI5o5YkEUdE+VQhwsBIrXqYsGyVcOsHeq26h6DLD1HnA0?= =?iso-8859-1?Q?P4/7FcoJ7M5BUOJtjVV7p7MCjJMLLfSq7E/uRMgyYNC87fVEwqXmX1KSEd?= =?iso-8859-1?Q?ixoyezzzGOTgkf4YaJX2AnllQpqa+Y0/t6j/xesdSjIqQ0JponZfzD37EJ?= =?iso-8859-1?Q?5tpLDw7UgbHDEYu9DGvwHZEQWyZr5+70/kapwjXY5dOwCjh4sn4sLC3dYZ?= =?iso-8859-1?Q?3pWZNm0T9oo00+Pvh5rs9UZAztcIoq0Cec7np8V/DlTlosFuLbn7sI7Zom?= =?iso-8859-1?Q?LULmczaPm+QsXEZ4FbNx0ffM0HAJAZV0v5r1nnGRPdDD7OlWdEJXx09Eva?= =?iso-8859-1?Q?kD9TmvQJzEr5+Tmm2IHO95WIyL21XHuIzJwVRqlogfXUhbzsflund7sdkg?= =?iso-8859-1?Q?rwwmow/cH3D/i2BwyoELSLaXaUlLqYh1rzI35ZIc0tm8gohkZC1N34XxWS?= =?iso-8859-1?Q?hSZGU9oV1UQQNUT0ON+gDdqq3Vq04PBiChtpE0aPH1FULAeiipl1h3sDqA?= =?iso-8859-1?Q?bQpzNjmbSWYSIYufwQCjhVajHz9+KQUMAhpfWgnkrkEiCHwX8QeGwptYos?= =?iso-8859-1?Q?x9mGNUEjWBfjRpdSl00gVYVruJc1uaV5i1SMbLDE4L43qMF01NHH1NgwSe?= =?iso-8859-1?Q?f9l67y2w/iRsrJ1t4Nh4FxVR4yr8rUmpjPoXyuOEwMZxhoMIrK5fKQpRKm?= =?iso-8859-1?Q?M23KnHNkembYqXCJ+Q47WevVc95jll1/UIn6u4agI=3D?= Content-Type: multipart/mixed; boundary="_004_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_" 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: 9622ff5a-d8e2-4327-86e5-08de29b6971e X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Nov 2025 11:02:12.8797 (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: BN5PR08MB10601 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_ Content-Type: multipart/alternative; boundary="_000_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_" --_000_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello, Adding tests for new modes into Perl testing framework for pgbench. The goal is to pass GitHub checks for the patch in green to simplify review= er's life. Cheers, Boris --_000_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello,

Adding tests for new modes into Perl testing framework for pgbench.

The goal is to pass GitHub checks for the patch in green to simplify review= er's life.

Cheers,
Boris
--_000_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_-- --_004_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_ Content-Type: application/octet-stream; name="v3-pgbench-faster-modes.patch" Content-Description: v3-pgbench-faster-modes.patch Content-Disposition: attachment; filename="v3-pgbench-faster-modes.patch"; size=45994; creation-date="Sat, 22 Nov 2025 11:00:27 GMT"; modification-date="Sat, 22 Nov 2025 11:00:45 GMT" Content-Transfer-Encoding: base64 RnJvbSBjNzY4ZjM5OWM1NTYyOTVkZTdkNTM4OTU0MTBlNjg2ZDg2YjRiOTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDE5OjM0OjU4ICswNzAwClN1YmplY3Q6IFtQQVRDSCAw MS8xMF0gQ29udmVydGluZyBvbmUgaHVnZSB0cmFuc2FjdGlvbiBpbnRvIHNlcmllcyBvZiBvbmUg 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 U3VuLCA5IE5vdiAyMDI1IDIwOjEzOjIzICswNzAwClN1YmplY3Q6IFtQQVRDSCAwMi8xMF0gR2V0 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 ICswNzAwClN1YmplY3Q6IFtQQVRDSCAwMy8xMF0gTm8gbmVlZCB0byBrZWVwIG9sZCBjb2RlIGlu 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 Q0ggMDQvMTBdIEFkZGluZyBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24gdmlhIHVubmVzdAoK 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 NTYgKzA3MDAKU3ViamVjdDogW1BBVENIIDA1LzEwXSBGaXhpbmcgdHlwbyBpbiBxdWVyeQoKLS0t CiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA2NWQ3N2NkZWZlYS4u MDNlMzdkZjQ0MzQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTI0MSw3ICs1MjQxLDggQEAgZ2VuZXJhdGVE YXRhSW5zZXJ0U2luZ2xlVFhOKFBHY29ubiAqY29uKQogCXByaW50ZlBRRXhwQnVmZmVyKCZzcWws CiAJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYnJhbmNoZXMoYmlkLCBiYmFsYW5jZSkgIgog CQkJCQkgICJzZWxlY3QgYmlkLCAwICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwg JWQpIiwgc2NhbGUgKiBuYnJhbmNoZXMpOworCQkJCQkgICJmcm9tIGdlbmVyYXRlX3Nlcmllcygx LCAlZCkgYXMgYmlkIiwKKwkJCQkJICBzY2FsZSAqIG5icmFuY2hlcyk7CiAJZXhlY3V0ZVN0YXRl bWVudChjb24sIHNxbC5kYXRhKTsKIAogCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0tIAoyLjQz LjAKCgpGcm9tIDdjYTg2NTIxZmRhNjkyOWI4ZTBkZTNmYzc3ZGNiYjg5ODQwMDljODggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21h aWwuY29tPgpEYXRlOiBUdWUsIDExIE5vdiAyMDI1IDE5OjM5OjQ1ICswNzAwClN1YmplY3Q6IFtQ QVRDSCAwNi8xMF0gQWRkaW5nIHN1cHBvcnQgZm9yIENPUFkgQklOQVJZIG1vZGUKCi0tLQogc3Jj 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 aSwgMTQgTm92IDIwMjUgMjI6NDA6MzkgKzA5MDAKU3ViamVjdDogW1BBVENIIDA3LzEwXSBwZ2Jl 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 SCAwOC8xMF0gU2V0dGluZyBlbXB0eSBzdHJpbmcgYXMgZGVmYXVsdCB2YWx1ZSBpbiBmaWxsZXIg 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 LjAKCgpGcm9tIGRjYjg1ZDI2ZjgxMzJlYWFmOWQwOTZlODE0YjliZGE0OWRiN2Q0NzggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21h aWwuY29tPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDIwOjA2OjI0ICswNzAwClN1YmplY3Q6IFtQ QVRDSCAwOS8xMF0gU3dpdGNoaW5nIENPUFkgRlJPTSBCSU5BUlkgdGkgcnVuIGluIG11bHRpcGxl CiB0cmFuc2FjdGlvbnMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDI3ICsrKysr KysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyks IDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDAzYjVlNWMyOGYwLi42Yjg5MDA3YTYz YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jCkBAIC01NDk2LDIwICs1NDk2LDIwIEBAIGluaXRBY2NvdW50QmluYXJ5 KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50 KQogICovCiBzdGF0aWMgdm9pZAogaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24s IGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAotCQkJCQkJaW50NjRfdCBiYXNlLCBpbml0Um93 TWV0aG9kQmluIGluaXRfcm93KQorCQkJCQkJaW50IGNvdW50ZXIsIGludDY0X3QgYmFzZSwgaW5p dFJvd01ldGhvZEJpbiBpbml0X3JvdykKIHsKIAlpbnQJCQkgbjsKIAlQR3Jlc3VsdAkqcmVzOwog CWNoYXIJCSBjb3B5X3N0YXRlbWVudFsyNTZdOwogCWNvbnN0IGNoYXIJKmNvcHlfc3RhdGVtZW50 X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiAoZm9ybWF0IGJpbmFyeSkiOwotCWludDY0 X3QJCSB0b3RhbCA9IGJhc2UgKiBzY2FsZTsKKwlpbnQ2NF90CQkgc3RhcnQgPSBiYXNlICogY291 bnRlcjsKIAogCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOwogCiAJLyogVXNlIENPUFkgd2l0 aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciBmb3IgYWxsIG9yZGluYXJ5IHRhYmxlcyAqLwogCWlm ICgoUFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKSAmJgogCQlnZXRfdGFibGVfcmVsa2lu ZChjb24sIHRhYmxlKSA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQljb3B5X3N0YXRlbWVudF9mbXQg PSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gd2l0aCAoZm9ybWF0IGJpbmFyeSwgZnJlZXplIG9u KSI7CisJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiB3aXRo IChmb3JtYXQgYmluYXJ5KSI7CiAKIAluID0gcGdfc25wcmludGYoY29weV9zdGF0ZW1lbnQsIHNp emVvZihjb3B5X3N0YXRlbWVudCksIGNvcHlfc3RhdGVtZW50X2ZtdCwgdGFibGUsIGNvbHVtbnMp OwogCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVudCkpCkBAIC01NTI2LDcgKzU1MjYsNyBA QCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIg KmNvbHVtbnMsCiAKIAlzZW5kQmluYXJ5Q29weUhlYWRlcihjb24pOwogCi0JZm9yIChpbnQ2NF90 IGkgPSAwOyBpIDwgdG90YWw7IGkrKykKKwlmb3IgKGludDY0X3QgaSA9IHN0YXJ0OyBpIDwgc3Rh cnQgKyBiYXNlOyBpKyspCiAJewogCQlpbml0X3Jvdyhjb24sIHJlcywgaSwgYmFzZSk7CiAJfQpA QCAtNTU3MywxNSArNTU3MywyMCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQ R2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVu Y2F0ZVRhYmxlcyhjb24pOwogCi0JaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5j aF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKLQkJCQkJCQluYnJhbmNoZXMsIGluaXRCcmFu Y2hCaW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hfdGVsbGVy cyIsICAidGlkLCBiaWQsIHRiYWxhbmNlIiwKLQkJCQkJCQludGVsbGVycywgIGluaXRUZWxsZXJC aW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hfYWNjb3VudHMi LCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKLQkJCQkJCQluYWNjb3VudHMsIGluaXRBY2NvdW50Qmlu YXJ5KTsKLQogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAKKwlmb3IgKGludCBp ID0gMDsgaSA8IHNjYWxlOyBpKyspCisJeworCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24s ICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCQlpLCBuYnJhbmNo ZXMsIGluaXRCcmFuY2hCaW5hcnkpOworCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJw Z2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0YmFsYW5jZSIsCisJCQkJCQkJCWksIG50ZWxs ZXJzLCAgaW5pdFRlbGxlckJpbmFyeSk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwg InBnYmVuY2hfYWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKKwkJCQkJCQkJaSwgbmFj Y291bnRzLCBpbml0QWNjb3VudEJpbmFyeSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJj b21taXQiKTsKKwl9CisKIAlwZ19mcmVlKGJpbl9jb3B5X2J1ZmZlcik7CiB9CiAKLS0gCjIuNDMu MAoKCkZyb20gYjhlMjg4ODEyMjUyMzRmZDAwYjU1MjM1YmM2MGZhZDJkYzYwYjU0NCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMubWlyb25vdkBnbWFp bC5jb20+CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMTc6MDY6MDAgKzA3MDAKU3ViamVjdDogW1BB VENIIDEwLzEwXSBBZGRpbmcgdGVzdHMgZm9yIG5ldyBtb2RlcyBvZiBkYXRhIGdlbmVyYXRpb24K Ci0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyAgICAgICAgICAgICAgICAgICAgfCAyMSAr KysrLS0tLQogc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwgfCA1 MiArKysrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCsp LCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA2Yjg5MDA3YTYzYi4uZGQ0ZTVkNWUw NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYwpAQCAtMTY0LDcgKzE2NCw3IEBAIHR5cGVkZWYgc3RydWN0IHNvY2tl dF9zZXQKICNkZWZpbmUgQUxMX0lOSVRfU1RFUFMgImR0Z0NHaUl2cGYiCS8qIGFsbCBwb3NzaWJs ZSBzdGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQX1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdl ZW4gbG9nIG1lc3NhZ2VzICovCi0jZGVmaW5lIERFRkFVTFRfTlhBQ1RTCTEwCQkvKiBkZWZhdWx0 IG54YWN0cyAqLworI2RlZmluZSBERUZBVUxUX05YQUNUUwkJMTAJLyogZGVmYXVsdCBueGFjdHMg Ki8KIAogI2RlZmluZSBNSU5fR0FVU1NJQU5fUEFSQU0JCTIuMCAvKiBtaW5pbXVtIHBhcmFtZXRl ciBmb3IgZ2F1c3MgKi8KIApAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBpbnQJc2NhbGUgPSAx OwogLyoKICAqIG1vZGUgb2YgZGF0YSBnZW5lcmF0aW9uIHRvIHVzZQogICovCi1zdGF0aWMgY2hh cglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/JzsKK3N0YXRpYyBjaGFyCWRhdGFfZ2VuZXJhdGlv bl90eXBlID0gR0VOX1RZUEVfQ09QWV9PUklHSU5BTDsKIAogLyoKICAqIENPUFkgRlJPTSBCSU5B UlkgZXhlY3V0aW9uIGJ1ZmZlcgpAQCAtNDk4NSwyNiArNDk4NSwyNiBAQCBpbml0Q3JlYXRlVGFi bGVzKFBHY29ubiAqY29uKQogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRsaW5mbyBERExzW10gPSB7 CiAJCXsKIAkJCSJwZ2JlbmNoX2hpc3RvcnkiLAotCQkJInRpZCBpbnQsYmlkIGludCxhaWQgICAg aW50LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJyci LAotCQkJInRpZCBpbnQsYmlkIGludCxhaWQgYmlnaW50LGRlbHRhIGludCxtdGltZSB0aW1lc3Rh bXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJyciLAorCQkJInRpZCBpbnQsYmlkIGludCxhaWQg ICAgaW50LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQg Jz8nIiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkIGJpZ2ludCxkZWx0YSBpbnQsbXRpbWUgdGlt ZXN0YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0ICc/JyIsCiAJCQkwCiAJCX0sCiAJCXsKIAkJ CSJwZ2JlbmNoX3RlbGxlcnMiLAotCQkJInRpZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5j ZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAotCQkJInRpZCBpbnQgbm90IG51bGws YmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAorCQkJInRp ZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwKKwkJ CSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSIs CiAJCQkxCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2FjY291bnRzIiwKLQkJCSJhaWQgICAgaW50 IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZhdWx0ICcn IiwKLQkJCSJhaWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBj aGFyKDg0KSBkZWZhdWx0ICcnIiwKKwkJCSJhaWQgICAgaW50IG5vdCBudWxsLGJpZCBpbnQsYWJh bGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBkZWZhdWx0ICc/JyIsCisJCQkiYWlkIGJpZ2ludCBu b3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnPyci LAogCQkJMQogCQl9LAogCQl7CiAJCQkicGdiZW5jaF9icmFuY2hlcyIsCi0JCQkiYmlkIGludCBu b3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRlZmF1bHQgJyciLAotCQkJImJp ZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSBkZWZhdWx0ICcnIiwK KwkJCSJiaWQgaW50IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkiLAorCQkJ ImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSIsCiAJCQkxCiAJ CX0KIAl9OwpAQCAtNzgzNyw2ICs3ODM3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCQl9CiAJCX0KIAorCQljaGVja0luaXRTdGVwcyhpbml0aWFsaXplX3N0ZXBzKTsKIAkJcnVu SW5pdFN0ZXBzKGluaXRpYWxpemVfc3RlcHMpOwogCQlleGl0KDApOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIGIvc3JjL2Jpbi9w Z2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKaW5kZXggNTgxZTlhZjc5MDcuLmEz NzcwNDhlYWQxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRo X3NlcnZlci5wbAorKysgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZl ci5wbApAQCAtMTYsMjUgKzE2LDMwIEBAIHN1YiBjaGVja19kYXRhX3N0YXRlCiAJbG9jYWwgJFRl c3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsKIAlteSAkbm9k ZSA9IHNoaWZ0OwogCW15ICR0eXBlID0gc2hpZnQ7CisJbXkgJHNxbF9yZXN1bHQ7CiAKLQlteSAk c3FsX3Jlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkJJ1NFTEVDVCBjb3Vu dCgqKSBBUyBudWxsX2NvdW50IEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBmaWxsZXIgSVMg TlVMTCBMSU1JVCAxMDsnCi0JKTsKLQlpcygkc3FsX3Jlc3VsdCwgJzAnLAotCQkiJHR5cGU6IGZp bGxlciBjb2x1bW4gb2YgcGdiZW5jaF9hY2NvdW50cyBoYXMgbm8gTlVMTCBkYXRhIik7CiAJJHNx bF9yZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSdTRUxFQ1QgY291bnQo KikgQVMgbnVsbF9jb3VudCBGUk9NIHBnYmVuY2hfYnJhbmNoZXMgV0hFUkUgZmlsbGVyIElTIE5V TEw7JwogCSk7CiAJaXMoJHNxbF9yZXN1bHQsICcxJywKIAkJIiR0eXBlOiBmaWxsZXIgY29sdW1u IG9mIHBnYmVuY2hfYnJhbmNoZXMgaGFzIG9ubHkgTlVMTCBkYXRhIik7CisKIAkkc3FsX3Jlc3Vs dCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NFTEVDVCBjb3VudCgqKSBBUyBu dWxsX2NvdW50IEZST00gcGdiZW5jaF90ZWxsZXJzIFdIRVJFIGZpbGxlciBJUyBOVUxMOycKIAkp OwogCWlzKCRzcWxfcmVzdWx0LCAnMTAnLAogCQkiJHR5cGU6IGZpbGxlciBjb2x1bW4gb2YgcGdi ZW5jaF90ZWxsZXJzIGhhcyBvbmx5IE5VTEwgZGF0YSIpOworCisJJHNxbF9yZXN1bHQgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSdTRUxFQ1QgY291bnQoKikgQVMgbnVsbF9jb3Vu dCBGUk9NIHBnYmVuY2hfYWNjb3VudHMgV0hFUkUgZmlsbGVyIElTIE5VTEwgTElNSVQgMTA7Jwor CSk7CisJaXMoJHNxbF9yZXN1bHQsICcwJywKKwkJIiR0eXBlOiBmaWxsZXIgY29sdW1uIG9mIHBn YmVuY2hfYWNjb3VudHMgaGFzIG5vIE5VTEwgZGF0YSIpOworCiAJJHNxbF9yZXN1bHQgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSdTRUxFQ1QgY291bnQoKikgQVMgZGF0YV9jb3Vu dCBGUk9NIHBnYmVuY2hfaGlzdG9yeTsnKTsKLQlpcygkc3FsX3Jlc3VsdCwgJzAnLCAiJHR5cGU6 IHBnYmVuY2hfaGlzdG9yeSBoYXMgbm8gZGF0YSIpOworCWlzKCRzcWxfcmVzdWx0LCAnMCcsCisJ CSIkdHlwZTogcGdiZW5jaF9oaXN0b3J5IGhhcyBubyBkYXRhIik7CiB9CiAKICMgc3RhcnQgYSBw Z2JlbmNoIHNwZWNpZmljIHNlcnZlcgpAQCAtMTI1LDcgKzEzMCw3IEBAICRub2RlLT5wZ2JlbmNo KAogCSdwZ2JlbmNoIHNjYWxlIDEgaW5pdGlhbGl6YXRpb24nLCk7CiAKICMgQ2hlY2sgZGF0YSBz dGF0ZSwgYWZ0ZXIgY2xpZW50LXNpZGUgZGF0YSBnZW5lcmF0aW9uLgotY2hlY2tfZGF0YV9zdGF0 ZSgkbm9kZSwgJ2NsaWVudC1zaWRlJyk7CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50 LXNpZGUgKGRlZmF1bHQgb3B0aW9ucyknKTsKIAogIyBBZ2Fpbiwgd2l0aCBhbGwgcG9zc2libGUg b3B0aW9ucwogJG5vZGUtPnBnYmVuY2goCkBAIC0xNDMsNiArMTQ4LDcgQEAgJG5vZGUtPnBnYmVu Y2goCiAJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQogCV0sCiAJJ3BnYmVuY2ggc2NhbGUgMSBp bml0aWFsaXphdGlvbicpOworY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlIChh bGwgb3B0aW9ucyknKTsKIAogIyBUZXN0IGludGVyYWN0aW9uIG9mIC0taW5pdC1zdGVwcyB3aXRo IGxlZ2FjeSBzdGVwLXNlbGVjdGlvbiBvcHRpb25zCiAkbm9kZS0+cGdiZW5jaCgKQEAgLTE2NCw2 ICsxNzAsMzggQEAgJG5vZGUtPnBnYmVuY2goCiAjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNl cnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2 ZXItc2lkZScpOwogCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRoIFVOTkVTVAor JG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRJJywKKwkwLAor CVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFye2NyZWF0aW5n IHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlXCl9LAorCQlxcntk b25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBzZXJ2ZXIt c2lkZSBVTk5FU1QnKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBk YXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnc2VydmVyLXNpZGUgKHVu bmVzdCknKTsKKworIyBUZXN0IHNlcnZlci1zaWRlIGdlbmVyYXRpb24gd2l0aCBVTk5FU1QKKyRu b2RlLT5wZ2JlbmNoKAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0QycsCisJMCwKKwlb cXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0 YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZVwpfSwKKwkJcXJ7ZG9u ZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50LXNp ZGUgQklOQVJZJyk7CisKKyMgQ2hlY2sgZGF0YSBzdGF0ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0 YSBnZW5lcmF0aW9uLgorY2hlY2tfZGF0YV9zdGF0ZSgkbm9kZSwgJ2NsaWVudC1zaWRlIChiaW5h cnkpJyk7CisKICMgUnVuIGFsbCBidWlsdGluIHNjcmlwdHMsIGZvciBhIGZldyB0cmFuc2FjdGlv bnMgZWFjaAogJG5vZGUtPnBnYmVuY2goCiAJJy0tdHJhbnNhY3Rpb25zPTUgLURmb289YmxhIC0t Y2xpZW50PTIgLS1wcm90b2NvbD1zaW1wbGUgLS1idWlsdGluPXQnCi0tIAoyLjQzLjAKCg== --_004_PH0PR08MB70201EC778A20A2BDC8A5F4A88D2APH0PR08MB7020namp_--