From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from OS8PR02CU002.outbound.protection.outlook.com (mail-japanwestazon11022083.outbound.protection.outlook.com [40.107.75.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D2E527A465; Mon, 15 Dec 2025 03:26:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.75.83 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765769193; cv=fail; b=UpPjbMXxekYfUtPlws5G+rx39H92+zbrqcj5YbO8vsUhbegcPaE6F7PvnI1oyseYdnjKOxzc9XDdnw3BsCaiwiKgSl3zrU/uD47vCH/rvf0z/vMObDCu8QA0qGh3zljr3GvJYfeb+hz5gh6MIn4g42gv+2x1jMbiKaOafVm+iDw= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765769193; c=relaxed/simple; bh=t5YN4AQMhMySqwvum3/3t1J2YtkEV89AuZvX+wUywNA=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=kMtLfBabcFAKJHFXzXSnisSkG9Ybz4fUhzRlVhCe+CgR64lWufid1R2yM4tedG25+/gKHC0RtqjWmS6oOGYbFESdq7ev5FHkIyqeKO3y3qPwQj+W7Rh7T1YaKU08xW6+q659tet7PTUGHZE0xkwEbPeZ2nZNqTzyy/FnN0vVIAM= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=cmedia.com.tw; spf=fail smtp.mailfrom=cmedia.com.tw; arc=fail smtp.client-ip=40.107.75.83 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=cmedia.com.tw Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=cmedia.com.tw ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CL+AyW51yfgOoB0tdkbw+45PIzxYNARqJTX89A7f8XBgAcxpBdwYM54VvtjaeiFN1C816ftBRv4GydruKWVoVDffReHkcUHdWnP9cp0bd85iCMH84zIPUMyT94WnI++f1cK54doR5tDaGZNArwX4XSRGws9Rz+l5VkLzoOU6fzglN1cv3WCi1QNX1kP3xBR0nFD9qjr2wJ855Q9PtfAi0OeyyBuDUUvF9GncgVVCCx1yhGNBGNTmD38nInjCG8mwSMOMm+EtkEjxCLqucPLbKYXedBTjS+TVnpcneJXHAZ0nEm0VhEd8NtR6R7Syvt04dbS/+Qwdcld+Wzc694ZmBw== 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=t5YN4AQMhMySqwvum3/3t1J2YtkEV89AuZvX+wUywNA=; b=YURQDqUVzgLyr6M6ScqztA3Wele4sA5U45STbxd6XERAENThnvkIvnnhrwsRriYvmU6wl4fok0d3FL+pXYd/upsP2yTttd0BVe+GzkcfT89iyKkqkniUwQblS5iyND7/oJCz5Xekctu5lAsRc2/yyT/oi8SvAb0c0s0dVCuQ16VrFW+DwBPuRC9YGh0S9DJMjB3gI6asgj2dCl306iF7DKFg3ISOMo2eQfzlExf64LmLXRdp7BOo735iwJZweWf4I3nOU64NrOLMRp9kjoiW9iOWP0y7ne0i1T5sz285PQGSA0NfCO/Z6BPynBib5KtmBKUZARW7wSuIXPxSMp3fhQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cmedia.com.tw; dmarc=pass action=none header.from=cmedia.com.tw; dkim=pass header.d=cmedia.com.tw; arc=none Received: from TYZPR02MB7725.apcprd02.prod.outlook.com (2603:1096:405:71::5) by SI2PR02MB6053.apcprd02.prod.outlook.com (2603:1096:4:1fc::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 03:26:26 +0000 Received: from TYZPR02MB7725.apcprd02.prod.outlook.com ([fe80::d701:27d5:a25b:43d1]) by TYZPR02MB7725.apcprd02.prod.outlook.com ([fe80::d701:27d5:a25b:43d1%7]) with mapi id 15.20.9412.011; Mon, 15 Dec 2025 03:26:25 +0000 From: =?utf-8?B?Q00tVHNhaSAgTGVvIC0g6JSh57SY57Sz?= To: Takashi Iwai , Leo Tsai CC: "perex@perex.cz" , "tiwai@suse.com" , "rf@opensource.cirrus.com" , "linux-sound@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: =?utf-8?B?5Zue6KaGOiBbUEFUQ0hdIEFMU0E6IGhkYS9jbTk4MjU6IEFkZCBuZXcgcHJv?= =?utf-8?Q?ject_GENE=5FTWL7_for_AAEON?= Thread-Topic: [PATCH] ALSA: hda/cm9825: Add new project GENE_TWL7 for AAEON Thread-Index: AQHca0o4U1RorahoC02mEua3L6uUSLUg8qUAgAD4gLI= Date: Mon, 15 Dec 2025 03:26:25 +0000 Message-ID: References: <20251212093157.5618-1-antivirus621@gmail.com> <87345d8ifl.wl-tiwai@suse.de> In-Reply-To: <87345d8ifl.wl-tiwai@suse.de> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cmedia.com.tw; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR02MB7725:EE_|SI2PR02MB6053:EE_ x-ms-office365-filtering-correlation-id: 980c872c-18b6-41d5-f7c7-08de3b89ba74 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?RnAvc3E2RGF3MXNlcXh6T3pRTW02SHZqMlZGRWs5WUpmd1NPS2FiTHlXZWYw?= =?utf-8?B?OHN1aWhzUEEycnRjWTB1L0F3SjNhL0dCUi9raS92RUEwejZhM1VOd2RXeE1u?= =?utf-8?B?RU5vanVmOGROd0ttM1VCYzluQzZ0OWN3RkdnRHNKT1l0RmJvV0lMdmk5M2Jk?= =?utf-8?B?YnJYQVorR044OTZ1TDJWa0RhQW9yclB4eGMyUFJmTHFHKzB0QWdnMFpkdmRy?= =?utf-8?B?eE9OUkJBcERHSlN1aGlrTEJpVkpMYVJWZ2doTGhobEU0eVVUZU9HSm14cDhv?= =?utf-8?B?SHdieE14ZjFML0dEYmlwZmQ0QXZnQXlmeG9iUHkrRE52eXZQRUdJb1EzTXpr?= =?utf-8?B?V3lXVjYxMkx4Nnc3VGMyMWVnZFNGQzgyaHROUVF4MVBDbHYrQ3hwbHNNdVJr?= =?utf-8?B?Z0tvL0JVZ1o4UmE1QkdUR1JTU09VYkVZaGhBTW9SOXdwSFQ0WEpudWVCOWYy?= =?utf-8?B?S1FsYS9ScFltd0xBL2xacHBzN3YrbmVXazFSTFJkZVh5ZGxuUjFuMlRMUllW?= =?utf-8?B?WTRDZHBQWFJtUTVrZnRSaVRpbzFHd2ZMbFFPM1RUK25jZlc3eDczc1B6SHBQ?= =?utf-8?B?d0NvK1B4QkF5ZFlhcFAzV2F2V0JoLzZqYmRhaXVlditpVmY3WDYxS1NzWnpz?= =?utf-8?B?UUhFNkR6ekw2RmgwakwvUVIxbURmR05UdWZoL1h3cDFEYjVldHAzcURKVHJB?= =?utf-8?B?SmJBNTdnaFl6dXpCNEhxU3BiZWY1bzNuSGI3TDRSQjBNYytUMTFHeXlRODZU?= =?utf-8?B?RmhhYkxORUJKbXlXUE5xQTUzcUpvL29mckY5b1dKcC84anUzYmt4Q1RSdUI2?= =?utf-8?B?ME0yWWMwMHdtdjRCcVVBVjdEdlhmTXQweHRmMnp1QzMva1BnWUZHUzRMUllw?= =?utf-8?B?QmNVVFBxb1lRV3g0aTRPNjlOcFRGcXp4RFlKeEtJVFl6UUhPM1Z1L1dIL3NP?= =?utf-8?B?MkNTNzN4cjIwejJYTldhSUllcmJXazh1YzFXeEMrWWhvM2JVRm1mQnpvSmtC?= =?utf-8?B?YXNET25RZ0xqRUJPakNOanJpcTRYeWpINUc4RHM5ek44cHZLWFZhVlFadnNQ?= =?utf-8?B?djF3czlDWmN1bWQxOE4vNlZjNnpTRmVrb1lXOTlva3dNQlVCbTdBL0hjUTU5?= =?utf-8?B?QmYrQnlkeENQUytST2MzTmhzK1M4RWVOUm5YWUVwQ0g0Nlg0UlFJdnBTRGJH?= =?utf-8?B?dE1Ua3ZqaDR5b0JVenBrK013ZkxsV1dhaEVZaHV2Ymg4bzFSUERsRXZrYzVW?= =?utf-8?B?UTRXNXlYUlFKY05nMDBSUFRnUExDajVuSkpZTFNwK3lXTks3RTc4dGhmOFp3?= =?utf-8?B?QXE5U3VualVZRFExaktmeHNIdHVjTjFrTEdxQWNvTVNkRlpNT21MVDdQaHEz?= =?utf-8?B?SU5xeUVQWmNBSlVrSml6VXhWSytlTER4eDlqY1NnQmRlU0w4WUFDNUExVjFh?= =?utf-8?B?RGdvUXhzYVdBWVZpSEJUWFlodnBIWVpRRGI4aWcxNVp5WWJPUnk3Nk44OVdl?= =?utf-8?B?MHdVdVI0RHBSekRhR3ZZQ3VHSTFuSkFLdFdWclBYTFpvbEJ2ZzI2VEtiYnY5?= =?utf-8?B?WUNwQUxZenlKTWFkQVNIT0xBSnhqWGErNEh2aGxPaUUwTXBhc0xDZkcwRUhD?= =?utf-8?B?L3h4T0FpVHZUaTJRRHFYNEFTWHZaU1Jsd21sZXF1MUYydWNvRGpwWERtTTdm?= =?utf-8?B?clFXNkMzd1dhN2ordS9NZTdIOUtsb1o5MXd4emxVK3Nya2cyYWpaV1J1MFkz?= =?utf-8?B?dzVJTFR2ajJDMEphTFVIRnlDSEh2UGgvekZLTkdZckpYSVZUSC9reXFJSUJW?= =?utf-8?B?aTZJUlhBVUdDcHhGMytHOGtBV25uLzduTEpqeG1kWlBCSDJIUGhqaWFBblZQ?= =?utf-8?B?b3NDR3N3eEJTUldEN3BQUG44Tkx1elNvU09IcGJ3TUtmZ0xJZW1yVGVZRm1J?= =?utf-8?B?QldmNzNQVWpFS1E1N3kzeGxwdGMwVXJValRmMmhTQmhLV3M3aTJ3ekgvMFNZ?= =?utf-8?B?YTZ3aUo3azR6Y3RGRXRNeDRydWJDU3lYVUw5d0NRN3M5R0padFlrZ2RTOTlF?= =?utf-8?Q?0juVW9?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:zh-tw;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR02MB7725.apcprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Sk1jNHk2aWp4QjZWdzFZbUp5OWxoVGUxY1hHMU9NRlgxWTc0MG14aGpHU1lq?= =?utf-8?B?U3ZXUnhETE9MaDd5MkMvSFBmdHJoejRPY1pKZDhkK3p0U1FReUNWODVMSEx0?= =?utf-8?B?ZGNVRmUwYXRyU0UvSzVyY09iR1l5M1JFS3ZITm5zbFlBbEJ0U25CNkc3ZDNp?= =?utf-8?B?MjdtRFF1UTdBSVZKWmhLWXl0NDZSemtWVTRxeDZoK2tBRkcwUUMwKzdMTHZ1?= =?utf-8?B?NGRJdk1ITGdzZzFOcm9lTkF6RkRaY3M0NDNjVHlrWGF4VmVobXNjSEFsTGFq?= =?utf-8?B?dE91M2tyOWQ4Zk9QZWdLTUFBakpLSXdWZG1nMzBpNXlTRFk5bmJkSXVsdjlx?= =?utf-8?B?Y2xrMXkxVXZPMzBSUTZvTGdwMEx4aHBRTDlTR1M5TGlzZzVtcHBoamZrZ2hx?= =?utf-8?B?ZVhKYm54RzJVNHI3VjFBM3RiQmRyOE8rNEMwbWJCM1NoUG52djhrQ3dRZFJu?= =?utf-8?B?dytWdXM4M3RxaU5jWHprZktwZWNSRGhKVXF3N0o0YW1VdkJHbEJwVWsyV1VN?= =?utf-8?B?YkdhbFVMN2ZzTjBxNmZZMUtIczVCdXUvNEd5UVFZU3FBVGllbHp6eldqaWJQ?= =?utf-8?B?VERtVHRTbTFHWjlHMVIva1Y5UG5BaFN2ME1JWWxYdXh4SWtycFJUb3RWaldk?= =?utf-8?B?VkN6TzM5L201c3ROY29LZ0ZMUWdNaUtmVGNlZmRicmVaVUhzM2NXL0hlR2Rz?= =?utf-8?B?RFdBOUcydE1LV2pOTk1ySmE2aGVPTkhZRGZaaldicDErWWttMlFZRUJ4Mk9y?= =?utf-8?B?SmlBYlFFVEJ1RExEeXJ3WUNnN3ltcHVJMGdtS1hjWWxwRHZTNmVYc0JVQW1J?= =?utf-8?B?ZEZJQmJxV3g3OVVydy8vRitSRlZIWXJjREc4bFdVZm5TWDhHSnVFS1RlVmp3?= =?utf-8?B?emlkeVNNTHBnckhUMzVuL2JIdnVkTk4zVmxFdmVuMnpQYmkzcTZmZXE2VGc1?= =?utf-8?B?Ti8wL0J0RXFyTHN5azgzUzBZS25yN2N4d200bisxRjNDUG9EUW4vZzhqUENC?= =?utf-8?B?SllveVN4ZXJDb2llVE9QeVFMREU4NUJDWWhIK0VCZnBsWlphVUc3U0VSVjY0?= =?utf-8?B?Y0ZXZmdrR0ltMUV0VjJ3ejFYUTYyQ09SS0ptdnNxUUpoM3JFRnJwYUJvSU1y?= =?utf-8?B?c3VlOU9XU1VGVmYzQVBGMVRacFVFZ2h0bVp3d0ZkbllaTXowS0Q5akdYOWhN?= =?utf-8?B?QlFjSlI2aXlkSkYwQlkvR3V6RU02ZldMWkl3eXVETE43R0tUdDBtV0xPWG5h?= =?utf-8?B?N1dNdXdpbzlZdFZVVDBOU1FwRHp6SGF5V1Z4V08rQmxZaksvaThGbnUyOEJZ?= =?utf-8?B?VlpDaXlzSzJnbGVSM0N1MWRlNnh2OHpubGxYNkE0ODNQR1pZOUFxNVpJWTZn?= =?utf-8?B?VjZia2pHNXpOVnoyU0F0bTZidGt5SHpoL0JiZ2F5TUxrdGpjSFE2UGdxOGlL?= =?utf-8?B?OHJlZXlac3h3OVBqcnFHYnhKVXBOenlmTDAxYUJzWTdjL0Z6UEtFY2ZoMWNo?= =?utf-8?B?SEI0OHNnYzNRSVBscDYraGE4ZWxqTUF5cnA5RnpSQ1cxcXU4c3NZd2NhT0Fq?= =?utf-8?B?TGFpaGRBUWEzalBYb0o5UDRxR0wvdlBUTGlQMmdiUFlBVFo1bDVXN2kyQTVn?= =?utf-8?B?SW5KSGcxcVdnVVdyS0VmOEhndkNpdnBRRE5XcUl1TDd1K2JJYkxKdDM5VHBP?= =?utf-8?B?d252TnE0Rm1YWWtnVk5NdFpTK3hmVXRpZkFGNHc3dEcrdGc2M20xM0FnL1Az?= =?utf-8?B?aDU4dVlMQTZQTEdheFpzb0h3c3pBckYyWHllMGFkNTJmVXJuREJhRDY3aTBJ?= =?utf-8?B?NUlPbStETkJkT2hzVit3TXFjNy9ZTVJQenB1eVJTbW9ySDhEZWNQQ2RNcE83?= =?utf-8?B?R1ozNjc1aWs3M1FpeWxSUDNUbDVjc3FPNjZYWStYWnRmcUlUdHhVOVJRdVd4?= =?utf-8?B?RG9pNG9HTjdFUWZZZnpvRWZwSDQvUzZZdTFuRlBvcUQ5aHAyVnJWNE80Vks4?= =?utf-8?B?Y1ltM0dXQlU3eDBQd0Nob29Mdk45ZTg5UFR0Vzh2d3l2MnBuaGdXcWpZTnNj?= =?utf-8?B?enEzSmFTdHVPU29IajRhTFM3OHByMHVlWmltY20rR1lwMlZtNEY3RkdrVWhS?= =?utf-8?Q?7LUjA6f3Bzy/qbQpQxHMItmmI?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: cmedia.com.tw X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR02MB7725.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 980c872c-18b6-41d5-f7c7-08de3b89ba74 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Dec 2025 03:26:25.7670 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5e183422-4dd8-4a5b-9825-25b3cfe7c2d7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NIFRCfQ9AQQtlJ9KiksbrLR+HLz7esyjr2fJ4Rd2Cd0VIGnBgQQ3KCzRuX5H+PwzjGBFhexhJ/GwKUp7HSdByw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR02MB6053 RGVhciBUYWthc2hpLA0KDQpTb3JyeSBmb3IgdGhlIHBhdGNoIHdlIHNlbnQgeW91IHdhcyB1bmNs ZWFyLg0KDQpBQUVPTiBpcyBvbmUgb2Ygb3VyIGN1c3RvbWVycywgYW5kIEdFTkVfVFdMNyBpcyBh IHByb2plY3Qgb2YgdGhlaXIgdGVhbS4NCldlIGNvbmZpcm1lZCB3aXRoIG90aGVyIGN1c3RvbWVy cyBhIGZldyBkYXlzIGFnbyB0aGF0IG9ubHkgQUFFT04gd2lsbCBub3QgcmVxdWlyZSBmdXJ0aGVy IGNoYW5nZXMsIHNvIHdlIGRlY2lkZWQgdG8gcHJvY2VlZCB3aXRoIEFBRU9O4oCZcyBwYXRjaCBm aXJzdC4NCg0KDQoNCj4gQEAgLTgwLDEwICs4Nyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGRh X3ZlcmIgY205ODI1X3N0ZF9kMF92ZXJic1tdID0gew0KPiAgICAgICAgezB4NDMsIENNOTgyNV9W RVJCX1NFVF9PQ1AsIDB4MzN9LCAgICAgIC8qIE9UUCBzZXQgKi8NCj4gICAgICAgIHsweDQzLCBD TTk4MjVfVkVSQl9TRVRfR0FELCAweDA3fSwgICAgICAvKiBBREMgLTNkYiAqLw0KPiAgICAgICAg ezB4NDMsIENNOTgyNV9WRVJCX1NFVF9UTU9ELCAweDI2fSwgICAgIC8qIENsYXNzIEQgY2xrICov DQo+IC0gICAgIHsweDNDLCBBQ19WRVJCX1NFVF9BTVBfR0FJTl9NVVRFIHwNCj4gLSAgICAgICAg ICAgICBBQ19BTVBfU0VUX09VVFBVVCB8IEFDX0FNUF9TRVRfUklHSFQsIDB4MmR9LCAgICAvKiBH YWluIHNldCAqLw0KPiAtICAgICB7MHgzQywgQUNfVkVSQl9TRVRfQU1QX0dBSU5fTVVURSB8DQo+ IC0gICAgICAgICAgICAgQUNfQU1QX1NFVF9PVVRQVVQgfCBBQ19BTVBfU0VUX0xFRlQsIDB4MmR9 LCAgICAgLyogR2FpbiBzZXQgKi8NCj4gKyAgICAgezB4M2MsIEFDX1ZFUkJfU0VUX0FNUF9HQUlO X01VVEUgfCAweGEwLCAweDJkfSwgLyogR2FpbiBzZXQgKi8NCj4gKyAgICAgezB4M2MsIEFDX1ZF UkJfU0VUX0FNUF9HQUlOX01VVEUgfCAweDkwLCAweDJkfSwgLyogR2FpbiBzZXQgKi8NCg0KV2Ug Zm91bmQgQUNfQU1QX1NFVF9PVVRQVVQgfCBBQ19BTVBfU0VUX1JJR0hUIGlzIG5vdCAweGEwIGFu ZCBBQ19BTVBfU0VUX09VVFBVVCB8IEFDX0FNUF9TRVRfTEVGVCBpcyBub3QgMHg5MCwgc28gcmVw bGFjZWQgdGhlIHN5bWJvbHMgd2l0aCBudW1iZXJzLg0KUGxlYXNlIGxldCBtZSBrbm93IGlmIHRo ZXJlIGlzIGEgYmV0dGVyIHdheSB0byBleHByZXNzIHRoaXMuDQoNCg0KDQoNCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaGRhX3ZlcmIgY205ODI1X2dlbmVfdHdsN19kM192ZXJic1tdID0gew0KPiAr ICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0QyUywgMHg2Mn0sDQo+ICsgICAgIHsweDQzLCBD TTk4MjVfVkVSQl9TRVRfUExMLCAweDAxfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NF VF9ORUcsIDB4YzJ9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0FEQ0wsIDB4MDB9 LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0RBQ0wsIDB4MDJ9LA0KPiArICAgICB7 MHg0MywgQ005ODI1X1ZFUkJfU0VUX01CSUFTLCAweDAwfSwNCj4gKyAgICAgezB4NDMsIENNOTgy NV9WRVJCX1NFVF9WTkVHLCAweDUwfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9Q RE5FRywgMHgwNH0sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfQ0RBTFIsIDB4ZjZ9 LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX09UUCwgMHhjZH0sDQo+ICsgICAgIHt9 DQo+ICt9Ow0KDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGhkYV92ZXJiIGNtOTgyNV9nZW5lX3R3 bDdfZDBfdmVyYnNbXSA9IHsNCj4gKyAgICAgezB4MzQsIEFDX1ZFUkJfU0VUX0VBUERfQlRMRU5B QkxFLCAweDAyfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9TTlIsIDB4Mzh9LA0K PiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX1BMTCwgMHgwMH0sDQo+ICsgICAgIHsweDQz LCBDTTk4MjVfVkVSQl9TRVRfQURDTCwgMHhjZn0sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVS Ql9TRVRfREFDTCwgMHhhYX0sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfTUJJQVMs IDB4MWN9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX1ZORUcsIDB4NTZ9LA0KPiAr ICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0QyUywgMHg2Mn0sDQo+ICsgICAgIHsweDQzLCBD TTk4MjVfVkVSQl9TRVRfREFDVFJMLCAweDAwfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJC X1NFVF9QRE5FRywgMHgwY30sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfQ0RBTFIs IDB4ZjR9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX09UUCwgMHhjZH0sDQo+ICsg ICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfTVRDQkEsIDB4NjF9LA0KPiArICAgICB7MHg0Mywg Q005ODI1X1ZFUkJfU0VUX09DUCwgMHgzM30sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9T RVRfR0FELCAweDA3fSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9UTU9ELCAweDI2 fSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9IUEZfMSwgMHg0MH0sDQo+ICsgICAg IHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfSFBGXzIsIDB4NDB9LA0KPiArICAgICB7MHg0MCwgQUNf VkVSQl9TRVRfQ09OTkVDVF9TRUwsIDB4MDB9LA0KPiArICAgICB7MHgzZCwgQUNfVkVSQl9TRVRf Q09OTkVDVF9TRUwsIDB4MDF9LA0KPiArICAgICB7MHg0NiwgQ005ODI1X1ZFUkJfU0VUX1AzQkNQ LCAweDIwfSwNCj4gKyAgICAge30NCj4gK307DQoNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGRh X3ZlcmIgY205ODI1X2dlbmVfdHdsN19wbGF5YmFja19zdGFydF92ZXJic1tdID0gew0KPiArICAg ICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0QyUywgMHhmMn0sDQo+ICsgICAgIHsweDQzLCBDTTk4 MjVfVkVSQl9TRVRfVkRPLCAweGQ0fSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9T TlIsIDB4MzB9LA0KPiArICAgICB7fQ0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVj dCBoZGFfdmVyYiBjbTk4MjVfZ2VuZV90d2w3X3BsYXliYWNrX3N0b3BfdmVyYnNbXSA9IHsNCj4g KyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9WRE8sIDB4YzB9LA0KPiArICAgICB7MHg0Mywg Q005ODI1X1ZFUkJfU0VUX0QyUywgMHg2Mn0sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9T RVRfVkRPLCAweGQwfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9TTlIsIDB4Mzh9 LA0KPiArICAgICB7fQ0KPiArfTsNCg0KVGhlIElDIGRlc2lnbiB0ZWFtIHRvbGQgdXMgdGhhdCB0 aGVzZSBzZXR0aW5ncyBhcmUgcmVsYXRlZCB0byB0aGUgaW50ZXJuYWwgb3BlcmF0aW9uIG9mIHRo ZSBJQyBhbmQgYXJlIHNvbWV3aGF0IGNvbXBsZXgsIHNvIHRoZXkgb25seSBwcm92aWRlZCB1cyB3 aXRoIHRoZSBpbnRlbmRlZCBwdXJwb3NlLg0KDQovKg0KICogVG8gc2F2ZSBwb3dlciwgQUQvQ0xL IGlzIHR1cm5lZCBvZmYuDQogKi8NCnN0YXRpYyBjb25zdCBzdHJ1Y3QgaGRhX3ZlcmIgY205ODI1 X2dlbmVfdHdsN19kM192ZXJic1tdID0gew0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0Qy UywgMHg2Mn0sDQogICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfUExMLCAweDAxfSwNCiAgICAg ezB4NDMsIENNOTgyNV9WRVJCX1NFVF9ORUcsIDB4YzJ9LA0KICAgICB7MHg0MywgQ005ODI1X1ZF UkJfU0VUX0FEQ0wsIDB4MDB9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0RBQ0wsIDB4 MDJ9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX01CSUFTLCAweDAwfSwNCiAgICAgezB4 NDMsIENNOTgyNV9WRVJCX1NFVF9WTkVHLCAweDUwfSwNCiAgICAgezB4NDMsIENNOTgyNV9WRVJC X1NFVF9QRE5FRywgMHgwNH0sDQogICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfQ0RBTFIsIDB4 ZjZ9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX09UUCwgMHhjZH0sDQogICAgIHt9DQp9 Ow0KDQovKg0KICogRW5hYmxlIENMSy9BREMgdG8gc3RhcnQgcmVjb3JkaW5nLg0KICovDQpzdGF0 aWMgY29uc3Qgc3RydWN0IGhkYV92ZXJiIGNtOTgyNV9nZW5lX3R3bDdfZDBfdmVyYnNbXSA9IHsN CiAgICAgezB4MzQsIEFDX1ZFUkJfU0VUX0VBUERfQlRMRU5BQkxFLCAweDAyfSwNCiAgICAgezB4 NDMsIENNOTgyNV9WRVJCX1NFVF9TTlIsIDB4Mzh9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJf U0VUX1BMTCwgMHgwMH0sDQogICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfQURDTCwgMHhjZn0s DQogICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfREFDTCwgMHhhYX0sDQogICAgIHsweDQzLCBD TTk4MjVfVkVSQl9TRVRfTUJJQVMsIDB4MWN9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VU X1ZORUcsIDB4NTZ9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0QyUywgMHg2Mn0sDQog ICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfREFDVFJMLCAweDAwfSwNCiAgICAgezB4NDMsIENN OTgyNV9WRVJCX1NFVF9QRE5FRywgMHgwY30sDQogICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRf Q0RBTFIsIDB4ZjR9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX09UUCwgMHhjZH0sDQog ICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfTVRDQkEsIDB4NjF9LA0KICAgICB7MHg0MywgQ005 ODI1X1ZFUkJfU0VUX09DUCwgMHgzM30sDQogICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfR0FE LCAweDA3fSwNCiAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9UTU9ELCAweDI2fSwNCiAgICAg ezB4NDMsIENNOTgyNV9WRVJCX1NFVF9IUEZfMSwgMHg0MH0sDQogICAgIHsweDQzLCBDTTk4MjVf VkVSQl9TRVRfSFBGXzIsIDB4NDB9LA0KICAgICB7MHg0MCwgQUNfVkVSQl9TRVRfQ09OTkVDVF9T RUwsIDB4MDB9LA0KICAgICB7MHgzZCwgQUNfVkVSQl9TRVRfQ09OTkVDVF9TRUwsIDB4MDF9LA0K ICAgICB7MHg0NiwgQ005ODI1X1ZFUkJfU0VUX1AzQkNQLCAweDIwfSwNCiAgICAge30NCn07DQoN Ci8qDQogKiBFbmFibGUgREFDIHRvIHN0YXJ0IHBsYXliYWNrLg0KICovDQpzdGF0aWMgY29uc3Qg c3RydWN0IGhkYV92ZXJiIGNtOTgyNV9nZW5lX3R3bDdfcGxheWJhY2tfc3RhcnRfdmVyYnNbXSA9 IHsNCiAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9EMlMsIDB4ZjJ9LA0KICAgICB7MHg0Mywg Q005ODI1X1ZFUkJfU0VUX1ZETywgMHhkNH0sDQogICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRf U05SLCAweDMwfSwNCiAgICAge30NCn07DQoNCi8qDQogKiBEaXNhYmxlIERBQyBhbmQgZW5hYmxl IGRlLXBvcCBub2lzZSBtZWNoYW5pc20uDQogKi8NCnN0YXRpYyBjb25zdCBzdHJ1Y3QgaGRhX3Zl cmIgY205ODI1X2dlbmVfdHdsN19wbGF5YmFja19zdG9wX3ZlcmJzW10gPSB7DQogICAgIHsweDQz LCBDTTk4MjVfVkVSQl9TRVRfVkRPLCAweGMwfSwNCiAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NF VF9EMlMsIDB4NjJ9LA0KICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX1ZETywgMHhkMH0sDQog ICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfU05SLCAweDM4fSwNCiAgICAge30NCn07DQoNCkFi b3ZlIGFyZSB0aGUgYWRkZWQgY29tbWVudHMuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB0aGlzIGlz IGFjY2VwdGFibGUgb3Igbm90Lg0KDQoNCg0KDQoNCj4gIHN0YXRpYyB2b2lkIGNtOTgyNV91bnNv bF9ocF9kZWxheWVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gIHsNCj4gICAgICAgIHN0 cnVjdCBjbWlfc3BlYyAqc3BlYyA9DQo+IEBAIC0xMjAsNiArMTc5LDkgQEAgc3RhdGljIHZvaWQg Y205ODI1X3Vuc29sX2hwX2RlbGF5ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiAgICAg ICAgYm9vbCBocF9qYWNrX3BsdWdpbiA9IGZhbHNlOw0KPiAgICAgICAgaW50IGVyciA9IDA7DQo+ DQo+ICsgICAgIGlmIChzcGVjLT5jb2RlYy0+Y29yZS5zdWJzeXN0ZW1faWQgPT0gUVVJUktfR0VO RV9UV0w3X1NTSUQpDQo+ICsgICAgICAgICAgICAgaHBfcGluID0gMHgzNjsNCg0KDQpJbiB0aGUg R0VORV9UV0w3IHByb2plY3QsIDB4MzYgcGluIHdpZGdldCBpcyB1c2VkIGFzIHRoZSBsaW5lLW91 dCBwaW4gd2lkZ2V0LiBXZSB3aWxsIGFkZCBhbm90aGVyIHBpbiB3aWRnZXQgc3BlY2lmaWNhbGx5 IGZvciBsaW5lLW91dCB3aXRoIGEgZGlzdGluY3QgbmFtZSB0byBhdm9pZCBjb25mdXNpb24gd2l0 aCB0aGUgaGVhZHBob25lIChIUCkgcGluLg0KDQoNCg0KPiAgICAgICAgaHBfamFja19wbHVnaW4g PSBzbmRfaGRhX2phY2tfZGV0ZWN0KHNwZWMtPmNvZGVjLCBocF9waW4pOw0KPg0KPiAgICAgICAg Y29kZWNfZGJnKHNwZWMtPmNvZGVjLCAiaHBfamFja19wbHVnaW4gJWQsIGhwX3BpbiAweCVYXG4i LA0KPiBAQCAtMTMyLDEwICsxOTQsMTMgQEAgc3RhdGljIHZvaWQgY205ODI1X3Vuc29sX2hwX2Rl bGF5ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiAgICAgICAgICAgICAgICBpZiAoZXJy KQ0KPiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjX2RiZyhzcGVjLT5jb2RlYywgImNvZGVj X3dyaXRlIGVyciAlZFxuIiwgZXJyKTsNCj4NCj4gLSAgICAgICAgICAgICBzbmRfaGRhX3NlcXVl bmNlX3dyaXRlKHNwZWMtPmNvZGVjLCBzcGVjLT5jaGlwX2hwX3JlbW92ZV92ZXJicyk7DQo+ICsg ICAgICAgICAgICAgaWYgKHNwZWMtPmNvZGVjLT5jb3JlLnN1YnN5c3RlbV9pZCA9PSBRVUlSS19D TV9TVEQpDQo+ICsgICAgICAgICAgICAgICAgICAgICBzbmRfaGRhX3NlcXVlbmNlX3dyaXRlKHNw ZWMtPmNvZGVjLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcGVjLT5jaGlwX2hwX3JlbW92ZV92ZXJicyk7DQo+ICAgICAgICB9IGVsc2Ugew0KPiAtICAg ICAgICAgICAgIHNuZF9oZGFfc2VxdWVuY2Vfd3JpdGUoc3BlYy0+Y29kZWMsDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5jaGlwX2hwX3ByZXNlbnRfdmVyYnMp Ow0KPiArICAgICAgICAgICAgIGlmIChzcGVjLT5jb2RlYy0+Y29yZS5zdWJzeXN0ZW1faWQgPT0g UVVJUktfQ01fU1REKQ0KPiArICAgICAgICAgICAgICAgICAgICAgc25kX2hkYV9zZXF1ZW5jZV93 cml0ZShzcGVjLT5jb2RlYywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3BlYy0+Y2hpcF9ocF9wcmVzZW50X3ZlcmJzKTsNCg0KR290IGl0LiBXZSB3aWxs IGRpc3Rpbmd1aXNoIHRoZW0gYnkgdXNpbmcgbnVsbCBhbmQgbm90LW51bGwgdmFsdWVzIGFuZCB3 ZSB3aWxsIGZpZ3VyZSBvdXQgYSBiZXR0ZXIgd2F5IHRvIGluc3RlYWQgb2YgY2hlY2sgc3NpZCBh dCBlYWNoIHBsYWNlLg0KDQoNCj4gK3N0YXRpYyB2b2lkIGNtOTgyNV9pbml0X2hvb2soc3RydWN0 IGhkYV9jb2RlYyAqY29kZWMpDQo+ICt7DQo+ICsgICAgIHVuc2lnbmVkIGludCB2YWw7DQo+ICsN Cj4gKyAgICAgY29kZWNfZGJnKGNvZGVjLCAiaW5pdCBob29rXG4iKTsNCj4gKw0KPiArICAgICAv KiBPTVRQICovDQo+ICsgICAgIHZhbCA9IHNuZF9oZGFfY29kZWNfcmVhZChjb2RlYywgMHg0Niwg MCwgMHhmZWMsIDB4MCk7DQo+ICsgICAgIHNuZF9oZGFfY29kZWNfd3JpdGUoY29kZWMsIDB4NDYs IDAsIDB4N2VmLCAodmFsID4+IDI0KSAmIDB4N2YpOw0KDQpUaGlzIHNldHRpbmcgaXMgdXNlZCB0 byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIENUSUEvT01UUCBpbnRlcmZhY2UsIHdoaWNoIHdhcyBt aXNzaW5nIGluIHRoZSBwcmV2aW91cyBwYXRjaC4NCldlIHdpbGwgYWRkIHRoaXMgc2V0dGluZyBk aXJlY3RseSBpbiB0aGUgcHJvYmUuDQoNCg0KPiArc3RhdGljIHZvaWQgY205ODI1X3BsYXliYWNr X3BjbV9ob29rKHN0cnVjdCBoZGFfcGNtX3N0cmVhbSAqaGluZm8sDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFjdGlvbikN Cj4gK3sNCj4gKyAgICAgc3RydWN0IGNtaV9zcGVjICpzcGVjID0gY29kZWMtPnNwZWM7DQo+ICsN Cj4gKyAgICAgc3dpdGNoIChhY3Rpb24pIHsNCj4gKyAgICAgY2FzZSBIREFfR0VOX1BDTV9BQ1Rf UFJFUEFSRToNCj4gKyAgICAgICAgICAgICBpZiAoY29kZWMtPmNvcmUuc3Vic3lzdGVtX2lkID09 IFFVSVJLX0dFTkVfVFdMN19TU0lEKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBzbmRfaGRh X3NlcXVlbmNlX3dyaXRlKHNwZWMtPmNvZGVjLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjbTk4MjVfZ2VuZV90d2w3X3BsYXliYWNrX3N0YXJ0X3ZlcmJz KTsNCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgIGNh c2UgSERBX0dFTl9QQ01fQUNUX0NMRUFOVVA6DQo+ICsgICAgICAgICAgICAgaWYgKGNvZGVjLT5j b3JlLnN1YnN5c3RlbV9pZCA9PSBRVUlSS19HRU5FX1RXTDdfU1NJRCkgew0KPiArICAgICAgICAg ICAgICAgICAgICAgc25kX2hkYV9zZXF1ZW5jZV93cml0ZShzcGVjLT5jb2RlYywNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY205ODI1X2dlbmVfdHdsN19w bGF5YmFja19zdG9wX3ZlcmJzKTsNCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAg YnJlYWs7DQo+ICsgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPiArICAg ICB9DQoNCkdvdCBpdC4gV2Ugd2lsbCBzZXQgdXAgdGhlIGhvb2sgY29uZGl0aW9uYWxseS4NCg0K DQo+ICBzdGF0aWMgaW50IGNtOTgyNV9pbml0KHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQ0KPiBA QCAtMTg0LDYgKzM0MCw3IEBAIHN0YXRpYyB2b2lkIGNtOTgyNV9yZW1vdmUoc3RydWN0IGhkYV9j b2RlYyAqY29kZWMpDQo+ICAgICAgICBzdHJ1Y3QgY21pX3NwZWMgKnNwZWMgPSBjb2RlYy0+c3Bl YzsNCj4NCj4gICAgICAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmc3BlYy0+dW5zb2xfaHBf d29yayk7DQo+ICsgICAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmc3BlYy0+dW5zb2xfbGlu ZV93b3JrKTsNCg0KPiAgICAgICAgc25kX2hkYV9nZW5fcmVtb3ZlKGNvZGVjKTsNCj4gIH0NCj4N Cj4gQEAgLTE5NSw2ICszNTIsOSBAQCBzdGF0aWMgaW50IGNtOTgyNV9zdXNwZW5kKHN0cnVjdCBo ZGFfY29kZWMgKmNvZGVjKQ0KPg0KPiAgICAgICAgc25kX2hkYV9zZXF1ZW5jZV93cml0ZShjb2Rl Yywgc3BlYy0+Y2hpcF9kM192ZXJicyk7DQo+DQo+ICsgICAgIGlmIChjb2RlYy0+Y29yZS5zdWJz eXN0ZW1faWQgPT0gUVVJUktfR0VORV9UV0w3X1NTSUQpDQo+ICsgICAgICAgICAgICAgY2FuY2Vs X2RlbGF5ZWRfd29ya19zeW5jKCZzcGVjLT51bnNvbF9saW5lX3dvcmspOw0KDQpHb3QgaXQsIFdl IHdpbGwgaW1wcm92ZSBpdC4NCg0KDQoNCj4gICAgICAgIH0NCj4NCj4gICAgICAgIHNuZF9oZGFf cmVnbWFwX3N5bmMoY29kZWMpOw0KPiBAQCAtMjQ4LDkgKzQxMCwxMyBAQCBzdGF0aWMgaW50IGNt OTgyNV9wcm9iZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywgY29uc3Qgc3RydWN0IGhkYV9kZXZp Y2VfaWQgKmlkKQ0KPiAgICAgICAgaWYgKHNwZWMgPT0gTlVMTCkNCj4gICAgICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07DQo+DQo+ICsgICAgIGNvZGVjX2RiZyhjb2RlYywgImNoaXBfbmFtZTog JXMsIHNzaWQ6IDB4JVhcbiIsDQo+ICsgICAgICAgICAgICAgICAgY29kZWMtPmNvcmUuY2hpcF9u YW1lLCBjb2RlYy0+Y29yZS5zdWJzeXN0ZW1faWQpOw0KPiArDQo+ICAgICAgICBJTklUX0RFTEFZ RURfV09SSygmc3BlYy0+dW5zb2xfaHBfd29yaywgY205ODI1X3Vuc29sX2hwX2RlbGF5ZWQpOw0K PiAgICAgICAgY29kZWMtPnNwZWMgPSBzcGVjOw0KPiAgICAgICAgc3BlYy0+Y29kZWMgPSBjb2Rl YzsNCj4gKyAgICAgc3BlYy0+Z2VuLmluaXRfaG9vayA9IGNtOTgyNV9pbml0X2hvb2s7DQo+ICAg ICAgICBjZmcgPSAmc3BlYy0+Z2VuLmF1dG9jZmc7DQo+ICAgICAgICBzbmRfaGRhX2dlbl9zcGVj X2luaXQoJnNwZWMtPmdlbik7DQo+ICAgICAgICBzcGVjLT5jaGlwX2QwX3ZlcmJzID0gY205ODI1 X3N0ZF9kMF92ZXJiczsNCj4gQEAgLTI1OCw2ICs0MjQsNDEgQEAgc3RhdGljIGludCBjbTk4MjVf cHJvYmUoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsIGNvbnN0IHN0cnVjdCBoZGFfZGV2aWNlX2lk ICppZCkNCj4gICAgICAgIHNwZWMtPmNoaXBfaHBfcHJlc2VudF92ZXJicyA9IGNtOTgyNV9ocF9w cmVzZW50X3ZlcmJzOw0KPiAgICAgICAgc3BlYy0+Y2hpcF9ocF9yZW1vdmVfdmVyYnMgPSBjbTk4 MjVfaHBfcmVtb3ZlX3ZlcmJzOw0KPg0KPiArICAgICBzd2l0Y2ggKGNvZGVjLT5jb3JlLnN1YnN5 c3RlbV9pZCkgew0KPiArICAgICBjYXNlIFFVSVJLX0NNX1NURDoNCj4gKyAgICAgICAgICAgICBz bmRfaGRhX2NvZGVjX3NldF9uYW1lKGNvZGVjLCAiQ005ODI1IFNURCIpOw0KPiArICAgICAgICAg ICAgIHNwZWMtPmNoaXBfZDBfdmVyYnMgPSBjbTk4MjVfc3RkX2QwX3ZlcmJzOw0KPiArICAgICAg ICAgICAgIHNwZWMtPmNoaXBfZDNfdmVyYnMgPSBjbTk4MjVfc3RkX2QzX3ZlcmJzOw0KPiArICAg ICAgICAgICAgIHNwZWMtPmNoaXBfaHBfcHJlc2VudF92ZXJicyA9IGNtOTgyNV9ocF9wcmVzZW50 X3ZlcmJzOw0KPiArICAgICAgICAgICAgIHNwZWMtPmNoaXBfaHBfcmVtb3ZlX3ZlcmJzID0gY205 ODI1X2hwX3JlbW92ZV92ZXJiczsNCj4gKyAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgY2Fz ZSBRVUlSS19HRU5FX1RXTDdfU1NJRDoNCj4gKyAgICAgICAgICAgICBzbmRfaGRhX2NvZGVjX3Nl dF9uYW1lKGNvZGVjLCAiQ005ODI1IEdFTkVfVFdMNyIpOw0KPiArICAgICAgICAgICAgIElOSVRf REVMQVlFRF9XT1JLKCZzcGVjLT51bnNvbF9saW5lX3dvcmssDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY205ODI1X3Vuc29sX2xpbmVfZGVsYXllZCk7DQo+ICsgICAgICAgICAg ICAgc3BlYy0+Z2VuLmhwX21pYyA9IDA7DQo+ICsgICAgICAgICAgICAgY2ZnLT5saW5lX291dHMg PSAxOw0KPiArICAgICAgICAgICAgIGNmZy0+bGluZV9vdXRfcGluc1swXSA9IDB4MzY7DQo+ICsg ICAgICAgICAgICAgY2ZnLT5saW5lX291dF90eXBlID0gQVVUT19QSU5fTElORV9PVVQ7DQo+ICsg ICAgICAgICAgICAgY2ZnLT5udW1faW5wdXRzID0gMjsNCj4gKyAgICAgICAgICAgICBjZmctPmlu cHV0c1swXS5waW4gPSAweDNiOw0KPiArICAgICAgICAgICAgIGNmZy0+aW5wdXRzWzBdLnR5cGUg PSBBVVRPX1BJTl9MSU5FX0lOOw0KPiArICAgICAgICAgICAgIGNmZy0+aW5wdXRzWzFdLnBpbiA9 IDB4Mzc7DQo+ICsgICAgICAgICAgICAgY2ZnLT5pbnB1dHNbMV0udHlwZSA9IEFVVE9fUElOX01J QzsNCj4gKyAgICAgICAgICAgICBjZmctPmlucHV0c1sxXS5pc19oZWFkcGhvbmVfbWljID0gMTsN Cj4gKyAgICAgICAgICAgICBzcGVjLT5jaGlwX2QwX3ZlcmJzID0gY205ODI1X2dlbmVfdHdsN19k MF92ZXJiczsNCj4gKyAgICAgICAgICAgICBzcGVjLT5jaGlwX2QzX3ZlcmJzID0gY205ODI1X2dl bmVfdHdsN19kM192ZXJiczsNCj4gKyAgICAgICAgICAgICBzcGVjLT5nZW4ucGNtX3BsYXliYWNr X2hvb2sgPSBjbTk4MjVfcGxheWJhY2tfcGNtX2hvb2s7DQo+ICsgICAgICAgICAgICAgc25kX2hk YV9jb2RlY19zZXRfcGluY2ZnKGNvZGVjLCAweDM3LCAweDI0QTcwMTAwKTsNCj4gKyAgICAgICAg ICAgICBicmVhazsNCj4gKyAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICBzcGVjLT5jaGlw X2QwX3ZlcmJzID0gY205ODI1X3N0ZF9kMF92ZXJiczsNCj4gKyAgICAgICAgICAgICBzcGVjLT5j aGlwX2QzX3ZlcmJzID0gY205ODI1X3N0ZF9kM192ZXJiczsNCj4gKyAgICAgICAgICAgICBzcGVj LT5jaGlwX2hwX3ByZXNlbnRfdmVyYnMgPSBjbTk4MjVfaHBfcHJlc2VudF92ZXJiczsNCj4gKyAg ICAgICAgICAgICBzcGVjLT5jaGlwX2hwX3JlbW92ZV92ZXJicyA9IGNtOTgyNV9ocF9yZW1vdmVf dmVyYnM7DQo+ICsgICAgICAgICAgICAgYnJlYWs7DQoNCkdvdCBpdC4gV2Ugd2lsbCBtb2RpZnkg aXQgdG8gcmV0dXJuIGVycm9yLg0KDQoNClRoYW5rcywNCkxlbyBUc2FpICM4NTMNCg0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K5a+E5Lu26ICFOiBUYWthc2hpIEl3 YWkgPHRpd2FpQHN1c2UuZGU+DQrlr4Tku7bml6XmnJ86IDIwMjXlubQxMuaciDE05pelIOS4i+WN iCAwNjozMA0K5pS25Lu26ICFOiBMZW8gVHNhaSA8YW50aXZpcnVzNjIxQGdtYWlsLmNvbT4NCuWJ r+acrDogcGVyZXhAcGVyZXguY3ogPHBlcmV4QHBlcmV4LmN6PjsgdGl3YWlAc3VzZS5jb20gPHRp d2FpQHN1c2UuY29tPjsgcmZAb3BlbnNvdXJjZS5jaXJydXMuY29tIDxyZkBvcGVuc291cmNlLmNp cnJ1cy5jb20+OyBDTS1Uc2FpIExlbyAtIOiUoee0mOe0syA8bGVvLnRzYWlAY21lZGlhLmNvbS50 dz47IGxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZyA8bGludXgtc291bmRAdmdlci5rZXJuZWwu b3JnPjsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyA8bGludXgta2VybmVsQHZnZXIua2Vy bmVsLm9yZz4NCuS4u+aXqDogUmU6IFtQQVRDSF0gQUxTQTogaGRhL2NtOTgyNTogQWRkIG5ldyBw cm9qZWN0IEdFTkVfVFdMNyBmb3IgQUFFT04NCg0KT24gRnJpLCAxMiBEZWMgMjAyNSAxMDozMTo1 NyArMDEwMCwNCkxlbyBUc2FpIHdyb3RlOg0KPg0KPiBVcGRhdGUgQ005ODI1IHRvIHN1cHBvcnQg R0VORV9UV0w3IHdoaWNoIHN1cHBvcnRzIExpbmUtb3V0LCBMaW5lLWluLCBhbmQgTWljLWluLg0K Pg0KPiBTaWduZWQtb2ZmLWJ5OiBMZW8gVHNhaSA8YW50aXZpcnVzNjIxQGdtYWlsLmNvbT4NCg0K VGhhbmtzIGZvciB0aGUgdXBkYXRlLiAgQnV0IGl0IHN0aWxsIGRvZXNuJ3QgbG9vayBnb29kIGVu b3VnaC4NCg0KRmlyc3Qgb2ZmLCB5b3UgZ2F2ZSBzdGlsbCB0b28gZmV3IGRlc2NyaXB0aW9ucy4g IFdoYXQgaXMgR0VORV9UV0w3IGF0DQphbGw/ICBBbmQsIHdoeSB0aGVyZSBhcmUgdG9ucyBvZiBj b2RlIGNoYW5nZXMganVzdCBmb3IgYWRkIHRoZSBzdXBwb3J0DQpsaW5lLW91dCwgbGluZS1pbiBh bmQgbWljLWluPyAgVGhvc2UgbmVlZCBtb3JlIGNsYXJpZmljYXRpb25zLg0KDQpBbmQsIGp1ZGdp bmcgZnJvbSB0aGUgcHJldmlvdXMgcGF0Y2gsIEkgZ3Vlc3MgdGhpcyBpcyBvbmx5IGEgcGFydCBv Zg0KdGhlIHdob2xlIGNoYW5nZXMuICBJZiBtb3JlIGNoYW5nZXMgYXJlIHBsYW5uZWQsIGl0J3Mg b2Z0ZW4gd29ydGggdG8NCm1lbnRpb24gaXQuDQoNCk1vcmUgYWJvdXQgdGhlIGNvZGUgY2hhbmdl czoNCg0KPiBAQCAtODAsMTAgKzg3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBoZGFfdmVyYiBj bTk4MjVfc3RkX2QwX3ZlcmJzW10gPSB7DQo+ICAgICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VU X09DUCwgMHgzM30sICAgICAgLyogT1RQIHNldCAqLw0KPiAgICAgICAgezB4NDMsIENNOTgyNV9W RVJCX1NFVF9HQUQsIDB4MDd9LCAgICAgIC8qIEFEQyAtM2RiICovDQo+ICAgICAgICB7MHg0Mywg Q005ODI1X1ZFUkJfU0VUX1RNT0QsIDB4MjZ9LCAgICAgLyogQ2xhc3MgRCBjbGsgKi8NCj4gLSAg ICAgezB4M0MsIEFDX1ZFUkJfU0VUX0FNUF9HQUlOX01VVEUgfA0KPiAtICAgICAgICAgICAgIEFD X0FNUF9TRVRfT1VUUFVUIHwgQUNfQU1QX1NFVF9SSUdIVCwgMHgyZH0sICAgIC8qIEdhaW4gc2V0 ICovDQo+IC0gICAgIHsweDNDLCBBQ19WRVJCX1NFVF9BTVBfR0FJTl9NVVRFIHwNCj4gLSAgICAg ICAgICAgICBBQ19BTVBfU0VUX09VVFBVVCB8IEFDX0FNUF9TRVRfTEVGVCwgMHgyZH0sICAgICAv KiBHYWluIHNldCAqLw0KPiArICAgICB7MHgzYywgQUNfVkVSQl9TRVRfQU1QX0dBSU5fTVVURSB8 IDB4YTAsIDB4MmR9LCAvKiBHYWluIHNldCAqLw0KPiArICAgICB7MHgzYywgQUNfVkVSQl9TRVRf QU1QX0dBSU5fTVVURSB8IDB4OTAsIDB4MmR9LCAvKiBHYWluIHNldCAqLw0KDQpXaHkgeW91IHJl cGxhY2VkIHRoZSBzeW1ib2xzIHdpdGggbnVtYmVycz8gIFRoYXQgd29yc2VucyB0aGUgY29kZQ0K cmVhZGFiaWxpdHkuDQoNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGRhX3ZlcmIgY205ODI1X2dl bmVfdHdsN19kM192ZXJic1tdID0gew0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0Qy UywgMHg2Mn0sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfUExMLCAweDAxfSwNCj4g KyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9ORUcsIDB4YzJ9LA0KPiArICAgICB7MHg0Mywg Q005ODI1X1ZFUkJfU0VUX0FEQ0wsIDB4MDB9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJf U0VUX0RBQ0wsIDB4MDJ9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX01CSUFTLCAw eDAwfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9WTkVHLCAweDUwfSwNCj4gKyAg ICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9QRE5FRywgMHgwNH0sDQo+ICsgICAgIHsweDQzLCBD TTk4MjVfVkVSQl9TRVRfQ0RBTFIsIDB4ZjZ9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJf U0VUX09UUCwgMHhjZH0sDQo+ICsgICAgIHt9DQo+ICt9Ow0KDQpXaGF0IGRvZXMgdGhvc2UgdmVy YnMgZG8/DQoNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGRhX3ZlcmIgY205ODI1X2dlbmVfdHds N19kMF92ZXJic1tdID0gew0KPiArICAgICB7MHgzNCwgQUNfVkVSQl9TRVRfRUFQRF9CVExFTkFC TEUsIDB4MDJ9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX1NOUiwgMHgzOH0sDQo+ ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfUExMLCAweDAwfSwNCj4gKyAgICAgezB4NDMs IENNOTgyNV9WRVJCX1NFVF9BRENMLCAweGNmfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJC X1NFVF9EQUNMLCAweGFhfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9NQklBUywg MHgxY30sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfVk5FRywgMHg1Nn0sDQo+ICsg ICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfRDJTLCAweDYyfSwNCj4gKyAgICAgezB4NDMsIENN OTgyNV9WRVJCX1NFVF9EQUNUUkwsIDB4MDB9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJf U0VUX1BETkVHLCAweDBjfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9DREFMUiwg MHhmNH0sDQo+ICsgICAgIHsweDQzLCBDTTk4MjVfVkVSQl9TRVRfT1RQLCAweGNkfSwNCj4gKyAg ICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9NVENCQSwgMHg2MX0sDQo+ICsgICAgIHsweDQzLCBD TTk4MjVfVkVSQl9TRVRfT0NQLCAweDMzfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NF VF9HQUQsIDB4MDd9LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX1RNT0QsIDB4MjZ9 LA0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0hQRl8xLCAweDQwfSwNCj4gKyAgICAg ezB4NDMsIENNOTgyNV9WRVJCX1NFVF9IUEZfMiwgMHg0MH0sDQo+ICsgICAgIHsweDQwLCBBQ19W RVJCX1NFVF9DT05ORUNUX1NFTCwgMHgwMH0sDQo+ICsgICAgIHsweDNkLCBBQ19WRVJCX1NFVF9D T05ORUNUX1NFTCwgMHgwMX0sDQo+ICsgICAgIHsweDQ2LCBDTTk4MjVfVkVSQl9TRVRfUDNCQ1As IDB4MjB9LA0KPiArICAgICB7fQ0KPiArfTsNCg0KRGl0dG8uDQoNCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaGRhX3ZlcmIgY205ODI1X2dlbmVfdHdsN19wbGF5YmFja19zdGFydF92ZXJic1tdID0g ew0KPiArICAgICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0QyUywgMHhmMn0sDQo+ICsgICAgIHsw eDQzLCBDTTk4MjVfVkVSQl9TRVRfVkRPLCAweGQ0fSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9W RVJCX1NFVF9TTlIsIDB4MzB9LA0KPiArICAgICB7fQ0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBoZGFfdmVyYiBjbTk4MjVfZ2VuZV90d2w3X3BsYXliYWNrX3N0b3BfdmVyYnNb XSA9IHsNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9WRE8sIDB4YzB9LA0KPiArICAg ICB7MHg0MywgQ005ODI1X1ZFUkJfU0VUX0QyUywgMHg2Mn0sDQo+ICsgICAgIHsweDQzLCBDTTk4 MjVfVkVSQl9TRVRfVkRPLCAweGQwfSwNCj4gKyAgICAgezB4NDMsIENNOTgyNV9WRVJCX1NFVF9T TlIsIDB4Mzh9LA0KPiArICAgICB7fQ0KPiArfTsNCg0KLi4uIGFuZCB0aG9zZSwgdG9vLiAgUGxl YXNlIGdpdmUgY29tbWVudHMgd2hhdCB0aG9zZSB2ZXJicyBkbyBhbmQgd2h5DQp0aGV5IGFyZSBu ZWVkZWQgZXhwbGljaXRseS4NCg0KPiAgc3RhdGljIHZvaWQgY205ODI1X3Vuc29sX2hwX2RlbGF5 ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiAgew0KPiAgICAgICAgc3RydWN0IGNtaV9z cGVjICpzcGVjID0NCj4gQEAgLTEyMCw2ICsxNzksOSBAQCBzdGF0aWMgdm9pZCBjbTk4MjVfdW5z b2xfaHBfZGVsYXllZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICAgICAgICBib29sIGhw X2phY2tfcGx1Z2luID0gZmFsc2U7DQo+ICAgICAgICBpbnQgZXJyID0gMDsNCj4NCj4gKyAgICAg aWYgKHNwZWMtPmNvZGVjLT5jb3JlLnN1YnN5c3RlbV9pZCA9PSBRVUlSS19HRU5FX1RXTDdfU1NJ RCkNCj4gKyAgICAgICAgICAgICBocF9waW4gPSAweDM2Ow0KDQpJcyBpdCAxMDAlIHN1cmUgdGhh dCB0aGUgaGVhZHBob25lIHBpbiBpcyBmaXhlZCBvbmx5IHRvIHRoaXMgbm9kZT8NCkFuZCB3aHkg dGhpcyBwaW4gaXNuJ3QgYXNzaWduZWQgdG8gdGhlIGF1dG9jZmcuaHBfcGluc1swXSBhdCB0aGUg Zmlyc3QNCnBsYWNlPyAgSXMgQklPUyBicm9rZW4/DQoNCj4gICAgICAgIGhwX2phY2tfcGx1Z2lu ID0gc25kX2hkYV9qYWNrX2RldGVjdChzcGVjLT5jb2RlYywgaHBfcGluKTsNCj4NCj4gICAgICAg IGNvZGVjX2RiZyhzcGVjLT5jb2RlYywgImhwX2phY2tfcGx1Z2luICVkLCBocF9waW4gMHglWFxu IiwNCj4gQEAgLTEzMiwxMCArMTk0LDEzIEBAIHN0YXRpYyB2b2lkIGNtOTgyNV91bnNvbF9ocF9k ZWxheWVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gICAgICAgICAgICAgICAgaWYgKGVy cikNCj4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlY19kYmcoc3BlYy0+Y29kZWMsICJjb2Rl Y193cml0ZSBlcnIgJWRcbiIsIGVycik7DQo+DQo+IC0gICAgICAgICAgICAgc25kX2hkYV9zZXF1 ZW5jZV93cml0ZShzcGVjLT5jb2RlYywgc3BlYy0+Y2hpcF9ocF9yZW1vdmVfdmVyYnMpOw0KPiAr ICAgICAgICAgICAgIGlmIChzcGVjLT5jb2RlYy0+Y29yZS5zdWJzeXN0ZW1faWQgPT0gUVVJUktf Q01fU1REKQ0KPiArICAgICAgICAgICAgICAgICAgICAgc25kX2hkYV9zZXF1ZW5jZV93cml0ZShz cGVjLT5jb2RlYywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3BlYy0+Y2hpcF9ocF9yZW1vdmVfdmVyYnMpOw0KPiAgICAgICAgfSBlbHNlIHsNCj4gLSAg ICAgICAgICAgICBzbmRfaGRhX3NlcXVlbmNlX3dyaXRlKHNwZWMtPmNvZGVjLA0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+Y2hpcF9ocF9wcmVzZW50X3ZlcmJz KTsNCj4gKyAgICAgICAgICAgICBpZiAoc3BlYy0+Y29kZWMtPmNvcmUuc3Vic3lzdGVtX2lkID09 IFFVSVJLX0NNX1NURCkNCj4gKyAgICAgICAgICAgICAgICAgICAgIHNuZF9oZGFfc2VxdWVuY2Vf d3JpdGUoc3BlYy0+Y29kZWMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNwZWMtPmNoaXBfaHBfcHJlc2VudF92ZXJicyk7DQoNClRoZSBjaGVjayBvZiBz dWJzeXN0ZW1faWQgaXMgdG9vIHVnbHkgaGVyZSBhbmQgdGhlcmUuDQpJZiB0aGlzIGlzIGEgY29u ZGl0aW9uYWwgc2V0dXAsIHNldCBzcGVjLT5jaGlwX2hwX3ByZXNlbnRfdmVyYnMgdG8NCm5vbi1O VUxMIG9ubHkgZm9yIHRoZSByZXF1aXJlZCBtb2RlbCwgYW5kIGp1c3QgY2hlY2sgTlVMTCBpbnN0 ZWFkIG9mDQpzdWJzeXN0ZW1faWQuDQoNCj4gK3N0YXRpYyB2b2lkIGNtOTgyNV91bnNvbF9saW5l X2RlbGF5ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiArew0KPiArICAgICBzdHJ1Y3Qg Y21pX3NwZWMgKnNwZWMgPQ0KPiArICAgICAgICAgY29udGFpbmVyX29mKHRvX2RlbGF5ZWRfd29y ayh3b3JrKSwgc3RydWN0IGNtaV9zcGVjLA0KPiArICAgICAgICAgICAgICAgICAgICAgIHVuc29s X2xpbmVfd29yayk7DQo+ICsgICAgIHN0cnVjdCBoZGFfamFja190YmwgKmphY2s7DQo+ICsgICAg IGhkYV9uaWRfdCBsaW5lb3V0X3BpbiA9IDB4M2I7DQoNCkFnYWluLCBhIGZpeGVkIG5vZGUgSUQu ICBUaGF0J3MgYSB2ZXJ5IGJhZCB3YXkuDQoNCj4gIHN0YXRpYyB2b2lkIGNtOTgyNV9zZXR1cF91 bnNvbChzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykNCj4gIHsNCj4gICAgICAgIHN0cnVjdCBjbWlf c3BlYyAqc3BlYyA9IGNvZGVjLT5zcGVjOw0KPg0KPiAgICAgICAgaGRhX25pZF90IGhwX3BpbiA9 IHNwZWMtPmdlbi5hdXRvY2ZnLmhwX3BpbnNbMF07DQo+DQo+ICsgICAgIGlmIChjb2RlYy0+Y29y ZS5zdWJzeXN0ZW1faWQgPT0gUVVJUktfR0VORV9UV0w3X1NTSUQpDQo+ICsgICAgICAgICAgICAg aHBfcGluID0gMHgzNjsNCg0KSGVyZSBhZ2Fpbi4uLi4NCg0KPiAgICAgICAgc25kX2hkYV9qYWNr X2RldGVjdF9lbmFibGVfY2FsbGJhY2soY29kZWMsIGhwX3BpbiwgaHBfY2FsbGJhY2spOw0KPiAr DQo+ICsgICAgIGlmIChjb2RlYy0+Y29yZS5zdWJzeXN0ZW1faWQgPT0gUVVJUktfR0VORV9UV0w3 X1NTSUQpIHsNCg0KVGhpcyBjb3VsZCBiZSBpbiBiZXR0ZXIgd2F5IGluc3RlYWQgb2YgY2hlY2tp bmcgc3Vic3lzdGVtX2lkIGF0IGVhY2gNCnBsYWNlLiAgSXQncyBlcnJvci1wcm9uZS4NCg0KPiAr ICAgICAgICAgICAgIGhkYV9uaWRfdCBsaW5laW5fcGluID0gMHgzYjsNCg0KSGVyZS4uLg0KDQo+ ICtzdGF0aWMgdm9pZCBjbTk4MjVfaW5pdF9ob29rKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQ0K PiArew0KPiArICAgICB1bnNpZ25lZCBpbnQgdmFsOw0KPiArDQo+ICsgICAgIGNvZGVjX2RiZyhj b2RlYywgImluaXQgaG9va1xuIik7DQo+ICsNCj4gKyAgICAgLyogT01UUCAqLw0KPiArICAgICB2 YWwgPSBzbmRfaGRhX2NvZGVjX3JlYWQoY29kZWMsIDB4NDYsIDAsIDB4ZmVjLCAweDApOw0KPiAr ICAgICBzbmRfaGRhX2NvZGVjX3dyaXRlKGNvZGVjLCAweDQ2LCAwLCAweDdlZiwgKHZhbCA+PiAy NCkgJiAweDdmKTsNCg0KV2hhdCBkb2VzIHRoaXMgbW9yZSBleGFjdGx5Pw0KQW5kIHRoaXMgc2Vx dWVuY2Ugd2Fzbid0IHByZXNlbnQgZm9yIFNURCBtb2RlbCBiZWZvcmUgdGhlIHBhdGNoLg0KSXMg aXQgc2FmZSB0byBhcHBseSB1bmNvbmRpdGlvbmFsbHk/DQoNCj4gKyAgICAgLy8gbGluayByZXNl dA0KPiArICAgICBpZiAoY29kZWMtPmNvcmUuc3Vic3lzdGVtX2lkID09IFFVSVJLX0dFTkVfVFdM N19TU0lEKQ0KPiArICAgICAgICAgICAgIHNuZF9oZGFfc2VxdWVuY2Vfd3JpdGUoY29kZWMsIGNt OTgyNV9nZW5lX3R3bDdfZDBfdmVyYnMpOw0KDQpOZWVkIG1vcmUgY29tbWVudC4gIEFsc28sIHlv dSBzaG91bGQgcmVjb25zaWRlciB3aGV0aGVyIHN1YnN5c3RlbV9pZA0KY2hlY2sgaXMgdGhlIGJl c3Qgd2F5IGhlcmUsIHRvby4NCg0KDQo+ICtzdGF0aWMgdm9pZCBjbTk4MjVfcGxheWJhY2tfcGNt X2hvb2soc3RydWN0IGhkYV9wY21fc3RyZWFtICpoaW5mbywNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWN0aW9uKQ0KPiAr ew0KPiArICAgICBzdHJ1Y3QgY21pX3NwZWMgKnNwZWMgPSBjb2RlYy0+c3BlYzsNCj4gKw0KPiAr ICAgICBzd2l0Y2ggKGFjdGlvbikgew0KPiArICAgICBjYXNlIEhEQV9HRU5fUENNX0FDVF9QUkVQ QVJFOg0KPiArICAgICAgICAgICAgIGlmIChjb2RlYy0+Y29yZS5zdWJzeXN0ZW1faWQgPT0gUVVJ UktfR0VORV9UV0w3X1NTSUQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHNuZF9oZGFfc2Vx dWVuY2Vfd3JpdGUoc3BlYy0+Y29kZWMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNtOTgyNV9nZW5lX3R3bDdfcGxheWJhY2tfc3RhcnRfdmVyYnMpOw0K PiArICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgY2FzZSBI REFfR0VOX1BDTV9BQ1RfQ0xFQU5VUDoNCj4gKyAgICAgICAgICAgICBpZiAoY29kZWMtPmNvcmUu c3Vic3lzdGVtX2lkID09IFFVSVJLX0dFTkVfVFdMN19TU0lEKSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICBzbmRfaGRhX3NlcXVlbmNlX3dyaXRlKHNwZWMtPmNvZGVjLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbTk4MjVfZ2VuZV90d2w3X3BsYXli YWNrX3N0b3BfdmVyYnMpOw0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICBicmVh azsNCj4gKyAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICByZXR1cm47DQo+ICsgICAgIH0N Cg0KSWYgaXQncyBtb2RlbC1zcGVjaWZpYywgcmF0aGVyIHNldCB1cCB0aGUgaG9vayBjb25kaXRp b25hbGx5LCBpbnN0ZWFkDQpvZiBjaGVja2luZyBzdWJzeXN0ZW1faWQgaW4gdGhlIGNhbGxiYWNr Lg0KDQo+ICBzdGF0aWMgaW50IGNtOTgyNV9pbml0KHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQ0K PiBAQCAtMTg0LDYgKzM0MCw3IEBAIHN0YXRpYyB2b2lkIGNtOTgyNV9yZW1vdmUoc3RydWN0IGhk YV9jb2RlYyAqY29kZWMpDQo+ICAgICAgICBzdHJ1Y3QgY21pX3NwZWMgKnNwZWMgPSBjb2RlYy0+ c3BlYzsNCj4NCj4gICAgICAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmc3BlYy0+dW5zb2xf aHBfd29yayk7DQo+ICsgICAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmc3BlYy0+dW5zb2xf bGluZV93b3JrKTsNCg0KWW91J3JlIGNhbGxpbmcgaGVyZSB1bmNvbmRpdGlvbmFsbHksIHdoaWxl Li4uDQoNCj4gICAgICAgIHNuZF9oZGFfZ2VuX3JlbW92ZShjb2RlYyk7DQo+ICB9DQo+DQo+IEBA IC0xOTUsNiArMzUyLDkgQEAgc3RhdGljIGludCBjbTk4MjVfc3VzcGVuZChzdHJ1Y3QgaGRhX2Nv ZGVjICpjb2RlYykNCj4NCj4gICAgICAgIHNuZF9oZGFfc2VxdWVuY2Vfd3JpdGUoY29kZWMsIHNw ZWMtPmNoaXBfZDNfdmVyYnMpOw0KPg0KPiArICAgICBpZiAoY29kZWMtPmNvcmUuc3Vic3lzdGVt X2lkID09IFFVSVJLX0dFTkVfVFdMN19TU0lEKQ0KPiArICAgICAgICAgICAgIGNhbmNlbF9kZWxh eWVkX3dvcmtfc3luYygmc3BlYy0+dW5zb2xfbGluZV93b3JrKTsNCg0KLi4uIGhlcmUgY29uZGl0 aW9uYWxseS4gIEFuZCBJIGJlbGlldmUgeW91ciBwYXRjaCBicmVha3MgU1REIG1vZGVsDQp3aGVu IHRoZSBtb2R1bGUgaXMgdW5sb2FkZWQsIGJlY2F1c2UgdGhlIHdvcmsgaXNuJ3QgaW5pdGlhbGl6 ZWQgYnV0DQpjYWxsaW5nIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpIGluIHRoZSBhYm92ZS4N Cg0KQW5kLCBhZ2FpbiwgdGhlIGNvbmRpdGlvbmFsIGNhbGwgd2l0aCB0aGUgc3Vic3lzdGVtX2lk IGNoZWNrIGlzDQplcnJvci1wcm9uZS4NCj4gQEAgLTIxMyw3ICszNzMsNyBAQCBzdGF0aWMgaW50 IGNtOTgyNV9yZXN1bWUoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpDQo+DQo+ICAgICAgICBtc2xl ZXAoMTUwKTsgICAgICAgICAgICAvKiBmb3IgZGVwb3Agbm9pc2UgKi8NCj4NCj4gLSAgICAgc25k X2hkYV9jb2RlY19pbml0KGNvZGVjKTsNCj4gKyAgICAgc25kX2hkYV9zZXF1ZW5jZV93cml0ZShj b2RlYywgc3BlYy0+Y2hpcF9kMF92ZXJicyk7DQoNCldoeSBpcyB0aGlzIGNoYW5nZS4uLj8gIEl0 J2xsIGNlcnRhaW5seSBicmVhayBvdGhlciB0aGluZ3MuDQoNCg0KPiAgICAgICAgaHBfcGluID0g c3BlYy0+Z2VuLmF1dG9jZmcuaHBfcGluc1swXTsNCj4gICAgICAgIGhwX2phY2tfcGx1Z2luID0g c25kX2hkYV9qYWNrX2RldGVjdChzcGVjLT5jb2RlYywgaHBfcGluKTsNCj4gQEAgLTIyOSw3ICsz ODksOSBAQCBzdGF0aWMgaW50IGNtOTgyNV9yZXN1bWUoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMp DQo+ICAgICAgICAgICAgICAgIGlmIChlcnIpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgY29k ZWNfZGJnKGNvZGVjLCAiY29kZWNfd3JpdGUgZXJyICVkXG4iLCBlcnIpOw0KPg0KPiAtICAgICAg ICAgICAgIHNuZF9oZGFfc2VxdWVuY2Vfd3JpdGUoY29kZWMsIGNtOTgyNV9ocF9yZW1vdmVfdmVy YnMpOw0KPiArICAgICAgICAgICAgIGlmIChjb2RlYy0+Y29yZS5zdWJzeXN0ZW1faWQgPT0gUVVJ UktfQ01fU1REKQ0KPiArICAgICAgICAgICAgICAgICAgICAgc25kX2hkYV9zZXF1ZW5jZV93cml0 ZShjb2RlYywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3BlYy0+Y2hpcF9ocF9yZW1vdmVfdmVyYnMpOw0KDQpIZXJlIGFnYWluIHVnbHkgc3VieXN0ZW1f aWQgY29uZGl0aW9uYWwuLi4NCg0KPiAgICAgICAgfQ0KPg0KPiAgICAgICAgc25kX2hkYV9yZWdt YXBfc3luYyhjb2RlYyk7DQo+IEBAIC0yNDgsOSArNDEwLDEzIEBAIHN0YXRpYyBpbnQgY205ODI1 X3Byb2JlKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLCBjb25zdCBzdHJ1Y3QgaGRhX2RldmljZV9p ZCAqaWQpDQo+ICAgICAgICBpZiAoc3BlYyA9PSBOVUxMKQ0KPiAgICAgICAgICAgICAgICByZXR1 cm4gLUVOT01FTTsNCj4NCj4gKyAgICAgY29kZWNfZGJnKGNvZGVjLCAiY2hpcF9uYW1lOiAlcywg c3NpZDogMHglWFxuIiwNCj4gKyAgICAgICAgICAgICAgICBjb2RlYy0+Y29yZS5jaGlwX25hbWUs IGNvZGVjLT5jb3JlLnN1YnN5c3RlbV9pZCk7DQo+ICsNCj4gICAgICAgIElOSVRfREVMQVlFRF9X T1JLKCZzcGVjLT51bnNvbF9ocF93b3JrLCBjbTk4MjVfdW5zb2xfaHBfZGVsYXllZCk7DQo+ICAg ICAgICBjb2RlYy0+c3BlYyA9IHNwZWM7DQo+ICAgICAgICBzcGVjLT5jb2RlYyA9IGNvZGVjOw0K PiArICAgICBzcGVjLT5nZW4uaW5pdF9ob29rID0gY205ODI1X2luaXRfaG9vazsNCj4gICAgICAg IGNmZyA9ICZzcGVjLT5nZW4uYXV0b2NmZzsNCj4gICAgICAgIHNuZF9oZGFfZ2VuX3NwZWNfaW5p dCgmc3BlYy0+Z2VuKTsNCj4gICAgICAgIHNwZWMtPmNoaXBfZDBfdmVyYnMgPSBjbTk4MjVfc3Rk X2QwX3ZlcmJzOw0KPiBAQCAtMjU4LDYgKzQyNCw0MSBAQCBzdGF0aWMgaW50IGNtOTgyNV9wcm9i ZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywgY29uc3Qgc3RydWN0IGhkYV9kZXZpY2VfaWQgKmlk KQ0KPiAgICAgICAgc3BlYy0+Y2hpcF9ocF9wcmVzZW50X3ZlcmJzID0gY205ODI1X2hwX3ByZXNl bnRfdmVyYnM7DQo+ICAgICAgICBzcGVjLT5jaGlwX2hwX3JlbW92ZV92ZXJicyA9IGNtOTgyNV9o cF9yZW1vdmVfdmVyYnM7DQo+DQo+ICsgICAgIHN3aXRjaCAoY29kZWMtPmNvcmUuc3Vic3lzdGVt X2lkKSB7DQo+ICsgICAgIGNhc2UgUVVJUktfQ01fU1REOg0KPiArICAgICAgICAgICAgIHNuZF9o ZGFfY29kZWNfc2V0X25hbWUoY29kZWMsICJDTTk4MjUgU1REIik7DQo+ICsgICAgICAgICAgICAg c3BlYy0+Y2hpcF9kMF92ZXJicyA9IGNtOTgyNV9zdGRfZDBfdmVyYnM7DQo+ICsgICAgICAgICAg ICAgc3BlYy0+Y2hpcF9kM192ZXJicyA9IGNtOTgyNV9zdGRfZDNfdmVyYnM7DQo+ICsgICAgICAg ICAgICAgc3BlYy0+Y2hpcF9ocF9wcmVzZW50X3ZlcmJzID0gY205ODI1X2hwX3ByZXNlbnRfdmVy YnM7DQo+ICsgICAgICAgICAgICAgc3BlYy0+Y2hpcF9ocF9yZW1vdmVfdmVyYnMgPSBjbTk4MjVf aHBfcmVtb3ZlX3ZlcmJzOw0KPiArICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICBjYXNlIFFV SVJLX0dFTkVfVFdMN19TU0lEOg0KPiArICAgICAgICAgICAgIHNuZF9oZGFfY29kZWNfc2V0X25h bWUoY29kZWMsICJDTTk4MjUgR0VORV9UV0w3Iik7DQo+ICsgICAgICAgICAgICAgSU5JVF9ERUxB WUVEX1dPUksoJnNwZWMtPnVuc29sX2xpbmVfd29yaywNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjbTk4MjVfdW5zb2xfbGluZV9kZWxheWVkKTsNCj4gKyAgICAgICAgICAgICBz cGVjLT5nZW4uaHBfbWljID0gMDsNCj4gKyAgICAgICAgICAgICBjZmctPmxpbmVfb3V0cyA9IDE7 DQo+ICsgICAgICAgICAgICAgY2ZnLT5saW5lX291dF9waW5zWzBdID0gMHgzNjsNCj4gKyAgICAg ICAgICAgICBjZmctPmxpbmVfb3V0X3R5cGUgPSBBVVRPX1BJTl9MSU5FX09VVDsNCj4gKyAgICAg ICAgICAgICBjZmctPm51bV9pbnB1dHMgPSAyOw0KPiArICAgICAgICAgICAgIGNmZy0+aW5wdXRz WzBdLnBpbiA9IDB4M2I7DQo+ICsgICAgICAgICAgICAgY2ZnLT5pbnB1dHNbMF0udHlwZSA9IEFV VE9fUElOX0xJTkVfSU47DQo+ICsgICAgICAgICAgICAgY2ZnLT5pbnB1dHNbMV0ucGluID0gMHgz NzsNCj4gKyAgICAgICAgICAgICBjZmctPmlucHV0c1sxXS50eXBlID0gQVVUT19QSU5fTUlDOw0K PiArICAgICAgICAgICAgIGNmZy0+aW5wdXRzWzFdLmlzX2hlYWRwaG9uZV9taWMgPSAxOw0KPiAr ICAgICAgICAgICAgIHNwZWMtPmNoaXBfZDBfdmVyYnMgPSBjbTk4MjVfZ2VuZV90d2w3X2QwX3Zl cmJzOw0KPiArICAgICAgICAgICAgIHNwZWMtPmNoaXBfZDNfdmVyYnMgPSBjbTk4MjVfZ2VuZV90 d2w3X2QzX3ZlcmJzOw0KPiArICAgICAgICAgICAgIHNwZWMtPmdlbi5wY21fcGxheWJhY2tfaG9v ayA9IGNtOTgyNV9wbGF5YmFja19wY21faG9vazsNCj4gKyAgICAgICAgICAgICBzbmRfaGRhX2Nv ZGVjX3NldF9waW5jZmcoY29kZWMsIDB4MzcsIDB4MjRBNzAxMDApOw0KPiArICAgICAgICAgICAg IGJyZWFrOw0KPiArICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgIHNwZWMtPmNoaXBfZDBf dmVyYnMgPSBjbTk4MjVfc3RkX2QwX3ZlcmJzOw0KPiArICAgICAgICAgICAgIHNwZWMtPmNoaXBf ZDNfdmVyYnMgPSBjbTk4MjVfc3RkX2QzX3ZlcmJzOw0KPiArICAgICAgICAgICAgIHNwZWMtPmNo aXBfaHBfcHJlc2VudF92ZXJicyA9IGNtOTgyNV9ocF9wcmVzZW50X3ZlcmJzOw0KPiArICAgICAg ICAgICAgIHNwZWMtPmNoaXBfaHBfcmVtb3ZlX3ZlcmJzID0gY205ODI1X2hwX3JlbW92ZV92ZXJi czsNCj4gKyAgICAgICAgICAgICBicmVhazsNCg0KVGhlIGRlZmF1bHQgc2hvdWxkIGJlIFFVSVJL X0NNX1NURCwgb3IgaGFuZGxlIGl0IGFzIGFuIGVycm9yLiAgVGhlcmUNCmlzIG5vIHJlYXNvbiB0 byBkZWZpbmUgZGlmZmVyZW50bHkgZm9yIGRlZmF1bHQuDQoNCg0KdGhhbmtzLA0KDQpUYWthc2hp DQrjgI5UaGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgZW1haWwgYW5kIGF0dGFjaG1l bnQgaXMgY29uZmlkZW50aWFsIGFuZCBpcyBmb3IgdGhlIHVzZSBvZiB0aGUgaW50ZW5kZWQgcmVj aXBpZW50IG9ubHkuIEFueSBkaXNjbG9zdXJlLCBjb3B5aW5nIG9yIGRpc3RyaWJ1dGlvbiBvZiB0 aGlzIGVtYWlsIGFuZCBhdHRhY2htZW50IHdpdGhvdXQgdGhlIHNlbmRlcidzIGNvbnNlbnQgaXMg c3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVu dCwgcGxlYXNlIHByb21wdGx5IG5vdGlmeSB0aGUgc2VuZGVyIGFuZCBkZWxldGUgdGhpcyBlbWFp bCBhbmQgYXR0YWNobWVudCBlbnRpcmVseSB3aXRob3V0IHVzaW5nLCByZXRhaW5pbmcsIG9yIGRp c2Nsb3NpbmcgYW55IG9mIGl0cyBjb250ZW50cy4gVGhlIHJlY2lwaWVudCBpcyByZXNwb25zaWJs ZSBmb3IgZW5zdXJpbmcgdGhhdCB0aGlzIGVtYWlsIGlzIHZpcnVzIGZyZWUgYW5kIHRoZSBzZW5k ZXIgYWNjZXB0cyBubyBsaWFiaWxpdHkgZm9yIGFueSBkYW1hZ2VzIGNhdXNlZCBieSB2aXJ1cyB0 cmFuc21pdHRlZCBieSB0aGlzIGVtYWlsLuOAjw0K