From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011006.outbound.protection.outlook.com [40.107.208.6]) (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 BEB4931716C for ; Mon, 2 Mar 2026 05:45:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.6 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772430313; cv=fail; b=f+WAX6dFzi3xA/+pi84amtxW5qAKhfjs4Yglwq0DSanF8WFFAJRrGHpKkeqv16vxcZLsLVl/sllKJvkRlZc6eAE5L6ngC6EU2r7TIVJwRkVhuJlrwy+HqUYwLNApWl0Yl+1SLj9VDMk6b2iW4Y3sJJJHge+yUCJ60kCQBr4/mTA= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772430313; c=relaxed/simple; bh=9YwaDvrDGkcwtybxDmvhyxr/RAubwpn8sK6wja/L7/0=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=LjzvMEdOrv5FeUiUmFD4D0fRtVoRqBhtlGMW/T98ENnW2d/I9cipqo8ZhKDIdY11AqrbSWBTORjwzSXpgS5KAyer9Qbr9HEXXF9F7K5bONSXaFyvcMYbDP/a5JTtLQhZg+l4EkAR80U+UyuOsFLoEnLzsaXr4maCWGMWnnPyb6o= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=TSC6E0CL; arc=fail smtp.client-ip=40.107.208.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="TSC6E0CL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GcYz8UMeL3wOJuh5TMQ7Ijfh9BSvwOkhy8hc6fPZNe0eFMHiaTNC52vOUVEg1xH16Cs/ygU8rzRQ+45163/LIP7FtJnpZuaqh0IUDj0d0mOULL4upr4n2G1Hea9IsYO8wg6asHp5YwkPtsG1fUy+LkI+wgsz6XRysljhD5ytTAqwANmY03BexHfwG12gwZtqbHOT/D31kIBJ2m0v+S8oG6FH2yuIB9hFi0tHK3VyzKj4rjm4Lpo+NHYzNZupH8fFPl9yjsqpxb/xmCEOrLCcB8A9A7V/SzFmSHROJ2xkeaYEbEKAo8ZzIn9jkbO5oxGqB2MLDo/p8R8uxHgSKWyFnw== 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=9YwaDvrDGkcwtybxDmvhyxr/RAubwpn8sK6wja/L7/0=; b=pUZDjfnsqF/V5U4MiMo2mn7TXExNiY8DmJXSecBS4vSLWZMPEZ5tyTFeA74qMyuhlW5rF6LdDesuBK36jXNh1lgSQ2fnizfrc+3UjXGGa8cXdDlxX8XMwGzB/PgMHbIb7OS4tCKBqcDAjxeKQlPIVsAOluaJ2otR61gqOFLOrRQjfM0vcEu0Pw7oPrh8Z3YeOMiPcBuzPhf0yrShQtgPKGQmkHhgWNj9LgheeRHfAdiHzeDhT7AgkV97aT9bj6LV50InuJy2f4d+WOEe5GHt3fVy2pDz2vst006/3dWvpbv1+UQ759KYMWEQMj2SLT3W9p/6Ojoti/hVK4sMjQPFYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9YwaDvrDGkcwtybxDmvhyxr/RAubwpn8sK6wja/L7/0=; b=TSC6E0CL4v61oaLpuMUR0PDOJ/t2h/gsXnL1du/gmMtAIUzRMUlMjIyJAQjETnaMy4LoQr0r7kaDOCRWpEaGenGOGFnWhSJoIbNcD2SSSzIYyFQI5h6RR1aN38SHWgxgJ838GzRaXAkz4Y8eC3mQdXNdsYr9hNHMw/SBG57bSUmXRH9Gdl+vv7YS4TQCLgeoW7/jQHMaHpa4bLG2n5VxVnEbx3Leq0r0WAGFLL95araWQHDN3cyseJAh51oovCJu6KNbsqgsrEW2PK56HPiDVlXOVYuhBpnUptwJ/Vy3qG6GCutWDXHD6h4ZipWdxhcRj7j5wYTWc6QoG2Hv065EJA== Received: from BLAPR03MB5458.namprd03.prod.outlook.com (2603:10b6:208:29d::17) by SJ2PR03MB7355.namprd03.prod.outlook.com (2603:10b6:a03:557::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.21; Mon, 2 Mar 2026 05:45:04 +0000 Received: from BLAPR03MB5458.namprd03.prod.outlook.com ([fe80::7eda:fa34:15f9:e656]) by BLAPR03MB5458.namprd03.prod.outlook.com ([fe80::7eda:fa34:15f9:e656%5]) with mapi id 15.20.9654.020; Mon, 2 Mar 2026 05:45:03 +0000 From: "MOHAMAD JAMIAN, MUHAMMAD AMIRUL ASYRAF" To: Dinh Nguyen , Muhammad Amirul Asyraf Mohamad Jamian , "linux-kernel@vger.kernel.org" , "Ang, Tien Sung" CC: Markus Elfring Subject: Re: [v4] firmware: stratix10-svc: Add Multi SVC clients support Thread-Topic: [v4] firmware: stratix10-svc: Add Multi SVC clients support Thread-Index: AQHcpJL0WlZSyXjuHUWmw7zBvxqpILWROziAgAmLEIA= Date: Mon, 2 Mar 2026 05:45:03 +0000 Message-ID: <94c2377f-5ddd-44b5-9abe-20e9dd7ee728@altera.com> References: <20260223070530.19187-1-muhammadamirulasyraf.mohamadjamian@altera.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR03MB5458:EE_|SJ2PR03MB7355:EE_ x-ms-office365-filtering-correlation-id: da195b4c-e349-4c92-501a-08de781eda22 x-ms-exchange-atpmessageproperties: SA x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|38070700021; x-microsoft-antispam-message-info: 80U6s9/LHCsTjrBbuRKjZyz43oQNtUTBOrpZTkyy8aPK+icdIuYSlcYvZI03lO3+o/MZplJ/q2r/LWFvHOVnt5MowxcBpSTbnogsMJTCgyRNKSX1fMMTHRaLI5b30YSQXgPOpleBsLVGMVxHEi8DTj8Qskrz086Ni3Z2uiDumnWYtY+vPtkymMbRxhT8nt7m37b7uJPkA2kRp03FuZRg+nqopCt/c5MYpsE/+tfAtN4B6BDLDc6uq1O1RVNClBgKlW9HyYA96wT0bBCZh5fKDK4qRJTTsSg1nEZlE4dM3qZ7ILL9DuWkCVw7XKdMa1qGhVROuuisNAe2UYO0YytNjS7Ie2eRFkgW6jbuGJIy5xaxoHDOuZRW+boFKnimEJaKgGcmDUGOyfdTe72O4+LG8BvMDVxxyZoJRqZVT78Th/DyPZUILu4dW7/JaiQzi/JFFv9P5VMsDPEdkjlW4rjvGtrpUQh0aYufU1GoiqQ6soSHLMMdN48iLKK3QyS/jQdUyA9wZIQnPogjoWX5c2hkiipWu7fUHA4DYuG0FrFHoEls8Z1EQ+0Wj1wsd87AD8Y/EVNW2PCJwvpEviVPIEmwiPShMRqQreVGO9Q/W9IG7ErpYqlCwbrgvnWWW3KGDgdCVWfXWKhjt4fkMGkYKmzN7NfmMGyat4x9sdRBIDH0fPohnhqQLt//DNKJPuUfQMPzmXyUnZK038ubLhF9FWqf00dVMfrdH3G36QwHAyer077RCIP5POKXmEdnyRWQgRUO x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BLAPR03MB5458.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NjVyZ3FmUmVKcVR6ZFhaL1g4STNBNEI0MDBIS3pIT29Od2F3UGxNaUovbVIy?= =?utf-8?B?SlRadW9Ld1VDdGpHdmZSUkxuOW9lQXU0UmhnVzBQQysvSGtVQk9kWUlySjN4?= =?utf-8?B?azhFQXRuL3R6ZTBteCt6SGtXckZLYUIxT1NNSldtQXZNWVZnR1NJSTNYZ2t2?= =?utf-8?B?Q2tnS1FMOEZEdmdKVUNCYmNpSnZBTTVSeEVpYjAwYTIvdjJ5ZStwYUJSNUxx?= =?utf-8?B?ODIxOGpYRHlFQmlGWEFUTEY3bEVabGdkdVRtaUZFVDEra0lvakwxUzF3WEh2?= =?utf-8?B?MXZpSVl1a0YvNk8xam1BZnpkcml4T1p3UVBWTnJBa0lreGtZWGVVY2J5NXhn?= =?utf-8?B?UzRqZWZlU1JrQzdIUURYUnB0REMyWHJLMVZvenhWVVlrNjB6TDJyUjZwTys5?= =?utf-8?B?NWptZXZybVpwSHJZUlYwckF1aUU1aTNrZlV1Tkp0OFY0enNSaXBiZEtOaVF2?= =?utf-8?B?OVpCNTk1N3ZCV0FDKytmcWVPWDdYd0R0NjdTdmlzNTZhWW9IQkoyYTVTd3Ev?= =?utf-8?B?b1VseXNTVGFzclBtdHQzTzVZRVdSK1F4c21TZTVydG8zaS91ZUlnTHZoL3RD?= =?utf-8?B?TkVkbzB4Nzk4T0FYZE5DUmhvS2hhUmRZYUVpZ01veUk3RTdWcXFEdzVYdW4w?= =?utf-8?B?RDNMNEdiL1NXMWFRakNwa0wxS0dJcTZCeHZMSE9NMkE4VTBSbm9Yc3dUdzBn?= =?utf-8?B?QzRPU1d5RWh5UFNxOHhHbnpPVXIyWGtScVpPQ0lqZjliek83b0phN0NsK0JS?= =?utf-8?B?REVWb1NGOG1hUlFVUEhsVXFlN2RCMFhZNHR4eXVBWHlyQW96KzdVNERzemwy?= =?utf-8?B?NG45OGZ4YW1ZbDBsYlpHNCtxTHlXaVNwT1lvSWdpbWY5VWZYTGYzdXF3ZU9i?= =?utf-8?B?TjdKZ0xmQ1ZUWnUrWnJvMDE5MjlKbVJwWWlBVzljTGJ4TW5XZytlUzY5S3p0?= =?utf-8?B?OC9PQU1vUVoxWnZoNXk1bWZ3UGFKNlFmV2loejg4UXNLMk5FK0Fuc1d2bGpo?= =?utf-8?B?SDJkTXBGaWpiMmJPZFJUWitLSk9nc1FpUjlSemYyNmRsL2Q2OExZOWVkQmE0?= =?utf-8?B?RUNSNkpQL1FiUjlzMWRkUHlETGtFZ1RRZVl1UUxGeTJCK1FlR3NHOWFndHpE?= =?utf-8?B?ZnFlU3V6U0Q5QldYcnJYSUhoZzdHZDdrM3JiVEthVUhsUzVaY0JCTzQwdkwr?= =?utf-8?B?dE4zUERlZjN0bmMzaDdpdHV6b1o1RjJoQnpGd0haazlTV2dBdmlremhzbklk?= =?utf-8?B?dHg4YWRiaXNHV1A0VjdibjIxRkg1ZHZLRitEdWJQMmQ3VjhFKzRiQUVTMGpz?= =?utf-8?B?WnV4dk8zT1ZMb1ZuQTd0bmpzY3pNOU9uU2J5cnpYNmFpdklPcUdpbWwzYW1W?= =?utf-8?B?SFM0eFAxRHpRTDRjcWkxdDM2bU15cXByK1FPSmw2YUp1YW5rWENtTzd1ZXpj?= =?utf-8?B?UlAwUmVkRGxpRDVwTTg5Z2VPZmdwMUJCcVR6cGM0cUpHUDR5Sy82bWVqL2tE?= =?utf-8?B?TUNjVUR5SVlnVEo4WlBtWVF0d21VY3hJVld0akV6MHlKeGVqanFwYjBXeEJj?= =?utf-8?B?Z1NML2dTUzdaaFBJb3NBRGQ1aElhQkg0cEhPNitvVmFJL2tMMTlNUzRESFlG?= =?utf-8?B?dTIwNjZYbGx0RWJ2amIvb24rVjVkTWNHcTU5eUM4WFBvMlNMc3RndmUySWJs?= =?utf-8?B?Mlg3anhpTmlLSUtRU0d2eXA0VlNJL2JpTnhidWFpek9HNDJZcFdDZzZtVDBz?= =?utf-8?B?NUxqTTM4QmFocTdCRnZ6bXR1UzE4UmtvcDlWcDRNNWo3eHhabW10OTdvT3pk?= =?utf-8?B?MFlYNUlFNk9HdWJiY2h0RjRieFN2aGxoVytReThxNnhOdlpreGJEcFFYWkpN?= =?utf-8?B?a2liOTZ6TWc0elBwYUxEODhoeVBrMUNrNW9kQ1BYRWdQOFhseTRUeFRTMDll?= =?utf-8?B?TStWa0p4Q1NYRmxleFFpRHRBZ0J5VHAzMmpESEhieFBySjRTVDdaU2cvRzUr?= =?utf-8?B?bWw0VzVIVTFSQldXZHNRK1ZxTm9mM2d2b1ZJKzJ4dGdhditGblU1dkZQbGl2?= =?utf-8?B?L1hSdzc3Vm1ITlVzcWZZTlVYQXVBQXQ5OFFlTU1PQjRRRk5yOXFQd1RYWDll?= =?utf-8?B?K1FPcTVaYUNtYTFxaUZaSVF0bXdSdlN0TmdzL2tMN3lyRlN0MWoyUUNWbDZK?= =?utf-8?B?TklMWVZHZDRBU2RhUDJrU09tM09zQjZOanBxR1BlMzhPTGFmdjNtSUl5Vnkx?= =?utf-8?B?QXprbjd3c1RYSnRpSFhWZzBtdGp0U1RJRWNBR0lISlk0VUJoTlBpazlBRkdS?= =?utf-8?B?VnBYb0NRRUMxb0FERUtSci9PSFdWYVJUWUhQUHVPaVYzWXNDOVlRZkpSNDMw?= =?utf-8?Q?mn+K9bW1e8WuqCnv/zKKQJnS7TPnyNsaOpJZaw1YLoU5z?= x-ms-exchange-antispam-messagedata-1: BtwsQq3g8l8wCnWs/8L3LUi+s0vVoTuDZVI= Content-Type: text/plain; charset="utf-8" Content-ID: <7B78C37921168B4BAE1138CB9143A99E@namprd03.prod.outlook.com> 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: altera.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR03MB5458.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: da195b4c-e349-4c92-501a-08de781eda22 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Mar 2026 05:45:03.7081 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: J5TCfjScLFGVxibnb+7UGhuUe/N3slAGLY1qddwOo79OBQWtV9fQyKxxHJGD0+3umKB3lcfo4zEpwrBXgXTwqAQTqc5PVe4kBx9f++wb+X48gh1IYk+Fasl7SKecorLullW0UFWylueXZ1Hor5pkTMFB1kWxBP5s5GuB/OWz6wM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR03MB7355 T24gMjQvMi8yMDI2IDEyOjAwIHBtLCBEaW5oIE5ndXllbiB3cm90ZToNCj4gDQo+IA0KPiBPbiAy LzIzLzI2IDAxOjA1LCBNdWhhbW1hZCBBbWlydWwgQXN5cmFmIE1vaGFtYWQgSmFtaWFuIHdyb3Rl Og0KPj4gSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIFNWQyBjbGllbnQgZHJpdmVycyBz dWNoIGFzIHNvY2ZwZ2EtaHdtb24sDQo+PiBpbnRlbF9mY3MsIHN0cmF0aXgxMC1zb2MsIHN0cmF0 aXgxMC1yc3UgZWFjaCBzZW5kIGFuIFNNQyBjb21tYW5kIHRoYXQNCj4+IHRyaWdnZXJzIGEgc2lu Z2xlIHRocmVhZCBpbiB0aGUgc3RyYXRpeDEwLXN2YyBkcml2ZXIuIFVwb24gcmVjZWl2aW5nIGEN Cj4+IGNhbGxiYWNrLCB0aGUgaW5pdGlhdGluZyBjbGllbnQgZHJpdmVyIHNlbmRzIGEgc3RyYXRp eDEwLXN2Yy1kb25lIHNpZ25hbCwNCj4+IHRlcm1pbmF0aW5nIHRoZSB0aHJlYWQgd2l0aG91dCB3 YWl0aW5nIGZvciBvdGhlciBwZW5kaW5nIFNNQyBjb21tYW5kcyB0bw0KPj4gY29tcGxldGUuIFRo aXMgbGVhZHMgdG8gYSB0aW1lb3V0IGlzc3VlIGluIHRoZSBmaXJtd2FyZSBTVkMgbWFpbGJveCAN Cj4+IHNlcnZpY2UNCj4+IHdoZW4gbXVsdGlwbGUgY2xpZW50IGRyaXZlcnMgc2VuZCBTTUMgY29t bWFuZHMgY29uY3VycmVudGx5Lg0KPj4NCj4+IFRvIHJlc29sdmUgdGhpcyBpc3N1ZSwgYSBkZWRp Y2F0ZWQgdGhyZWFkIGlzIG5vdyBjcmVhdGVkIHBlciBjaGFubmVsLiBUaGUNCj4+IHN0cmF0aXgx MC1zdmMgZHJpdmVyIHdpbGwgc3VwcG9ydCB1cCB0byB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGRl ZmluZWQgYnkNCj4+IFNWQ19OVU1fQ0hBTk5FTC4gVGhyZWFkIHN5bmNocm9uaXphdGlvbiBpcyBo YW5kbGVkIHVzaW5nIGEgbXV0ZXggdG8gDQo+PiBwcmV2ZW50DQo+PiBzaW11bHRhbmVvdXMgaXNz dWFuY2Ugb2YgU01DIGNvbW1hbmRzIGJ5IG11bHRpcGxlIHRocmVhZHMuDQo+Pg0KPj4gQWRkaXRp b25hbGx5LCBhIHRocmVhZCB0YXNrIGlzIG5vdyB2YWxpZGF0ZWQgYmVmb3JlIGludm9raW5nIGt0 aHJlYWRfc3RvcA0KPj4gd2hlbiB0aGUgdXNlciBhYm9ydHMsIGVuc3VyaW5nIHNhZmUgdGVybWlu YXRpb24uDQo+Pg0KPj4gVGltZW91dCB2YWx1ZXMgaGF2ZSBhbHNvIGJlZW4gYWRqdXN0ZWQgdG8g YWNjb21tb2RhdGUgdGhlIGluY3JlYXNlZCBsb2FkDQo+PiBmcm9tIGNvbmN1cnJlbnQgY2xpZW50 IGRyaXZlciBhY3Rpdml0eS4NCj4+DQo+PiBGaXhlczogN2NhNWNlODk2NTI0ICgiZmlybXdhcmU6 IGFkZCBJbnRlbCBTdHJhdGl4MTAgc2VydmljZSBsYXllciANCj4+IGRyaXZlciIpDQo+PiBDYzog c3RhYmxlQHZnZXIua2VybmVsLm9yZw0KPj4gU2lnbmVkLW9mZi1ieTogQW5nIFRpZW4gU3VuZyA8 dGllbi5zdW5nLmFuZ0BpbnRlbC5jb20+DQo+PiBTaWduZWQtb2ZmLWJ5OiBGb25nLCBZYW4gS2Vp IDx5YW5rZWkuZm9uZ0BhbHRlcmEuY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogTXVoYW1tYWQgQW1p cnVsIEFzeXJhZiBNb2hhbWFkIEphbWlhbiANCj4+IDxtdWhhbW1hZGFtaXJ1bGFzeXJhZi5tb2hh bWFkamFtaWFuQGFsdGVyYS5jb20+DQo+PiBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3Qg PGxrcEBpbnRlbC5jb20+DQo+PiBDbG9zZXM6IGh0dHBzOi8vbmFtMTAuc2FmZWxpbmtzLnByb3Rl Y3Rpb24ub3V0bG9vay5jb20vPyANCj4+IHVybD1odHRwcyUzQSUyRiUyRmxvcmUua2VybmVsLm9y ZyUyRm9lLWtidWlsZC0gDQo+PiBhbGwlMkYyMDI2MDIwMzIzMjUuTXVnbFoxNTYtIA0KPj4gbGtw JTQwaW50ZWwuY29tJTJGJmRhdGE9MDUlN0MwMiU3Q211aGFtbWFkLmFtaXJ1bC5hc3lyYWYubW9o YW1hZC5qYW1pYW4lNDBhbHRlcmEuY29tJTdDYWJjMWY1NTA0MGZjNGJkZTViYWQwOGRlNzM1OTUz ZDglN0NmYmQ3MmUwM2Q0YTU0MTEwYWRjZTYxNGQ1MWYyMDc3YSU3QzAlN0MwJTdDNjM5MDc1MDI0 Njk2MDI5ODE5JTdDVW5rbm93biU3Q1RXRnBiR1pzYjNkOGV5SkZiWEIwZVUxaGNHa2lPblJ5ZFdV c0lsWWlPaUl3TGpBdU1EQXdNQ0lzSWxBaU9pSlhhVzR6TWlJc0lrRk9Jam9pVFdGcGJDSXNJbGRV SWpveWZRJTNEJTNEJTdDMCU3QyU3QyU3QyZzZGF0YT1XYjVsdzhWUEslMkIxcGolMkZ0VnpTRmFp eTJFQjVHWngzYm1hUnNtOHR0V0JRRSUzRCZyZXNlcnZlZD0wDQo+PiAtLS0NCj4+IENoYW5nZXMg aW4gdjQ6DQo+PiAtIFNpZ25lZC1vZmYtYnkgY2hhaW4gY2xlYW4gdXANCj4+IC0gUmVtb3ZlIGR1 cGxpY2F0ZSBpbmxpbmUgY29tbWVudCBvbiBzZG1fbG9jayBmaWVsZA0KPj4gLSBNb3ZlIHN0cnVj dHVyZSBmaWVsZCBjb21tZW50cyB0byBzdHJ1Y3R1cmUgaGVhZGVyDQo+PiAtIFJlbW92ZSB1bm5l Y2Vzc2FyeSBjaGVja3MgaW4gc3RyYXRpeDEwX3N2Y19kb25lKCkNCj4+IC0gRml4IGVycm9yIGhh bmRsaW5nIHRvIHByb3Blcmx5IGZyZWUgRklGT3Mgb24gcHJvYmUgZmFpbHVyZQ0KPj4gLSBSZW9y ZGVyIGVycm9yIGxhYmVscyBmb3IgcHJvcGVyIGNsZWFudXAgY2FzY2FkZQ0KPj4gLSBSZW1vdmUg cmVkdW5kYW50IGZpZm9fc2l6ZSBpbml0aWFsaXphdGlvbg0KPj4NCj4gDQo+IFlvdXIgY29tbWl0 IGhlYWRlciBzaG91bGQgYmUgIltQQVRDSCB2NF0iLiBBbHNvIHBsZWFzZSByZWJhc2UgdGhpcyBw YXRjaCANCj4gdG8gdjcuMC1yYzEuIFRoaXMgcGF0Y2ggbm8gbG9uZ2VyIGFwcGxpZXMgY2xlYW5s eS4NCj4gDQo+PiBDaGFuZ2VzIGluIHYzOg0KPj4gLSBGaXggZ3JhbW1hcjogIndpbGwgc3VwcG9y dHMiIC0+ICJ3aWxsIHN1cHBvcnQiDQo+PiAtIEFkZCBGaXhlcyB0YWcgYW5kIENjIHN0YWJsZSBh cyBzdWdnZXN0ZWQgYnkgcmV2aWV3ZXINCj4+DQo+PiBDaGFuZ2VzIGluIHYyOg0KPj4gLSBJbml0 aWFsaXplICdzdmMnIHRvIE5VTEwgYW5kIGFkZCBOVUxMIGNoZWNrIGluIGVycm9yIHBhdGggdG8g Zml4IA0KPj4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nDQo+PiAtLS0NCj4+IC0tLQ0K Pj4gwqAgZHJpdmVycy9maXJtd2FyZS9zdHJhdGl4MTAtc3ZjLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDIwMiArKysrKysrKysrKy0tLS0tLS0NCj4+IMKgIC4uLi9maXJtd2FyZS9pbnRl bC9zdHJhdGl4MTAtc3ZjLWNsaWVudC5owqDCoMKgwqAgfMKgwqAgOCArLQ0KPj4gwqAgMiBmaWxl cyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdhcmUvc3RyYXRpeDEwLXN2Yy5jIGIvZHJpdmVycy9maXJt d2FyZS8gDQo+PiBzdHJhdGl4MTAtc3ZjLmMNCj4+IGluZGV4IDUxNWI5NDhmZjMyMC4uNzdmYThk YTZlYTkyIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9maXJtd2FyZS9zdHJhdGl4MTAtc3ZjLmMN Cj4+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvc3RyYXRpeDEwLXN2Yy5jDQo+PiBAQCAtMzcsOSAr MzcsOSBAQA0KPj4gwqDCoCAqIHNlcnZpY2UgbGF5ZXIgd2lsbCByZXR1cm4gZXJyb3IgdG8gRlBH QSBtYW5hZ2VyIHdoZW4gdGltZW91dCBvY2N1cnMsDQo+PiDCoMKgICogdGltZW91dCBpcyBzZXQg dG8gMzAgc2Vjb25kcyAoMzAgKiAxMDAwKSBhdCBJbnRlbCBTdHJhdGl4MTAgU29DLg0KPj4gwqDC oCAqLw0KPj4gLSNkZWZpbmUgU1ZDX05VTV9EQVRBX0lOX0ZJRk/CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDMyDQo+PiArI2RlZmluZSBTVkNfTlVNX0RBVEFfSU5fRklGT8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgOA0KPj4gwqAgI2RlZmluZSBTVkNfTlVNX0NIQU5ORUzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgNA0KPj4gLSNkZWZpbmUgRlBHQV9DT05GSUdfREFUQV9DTEFJTV9USU1FT1VU X01TwqDCoMKgIDIwMA0KPj4gKyNkZWZpbmUgRlBHQV9DT05GSUdfREFUQV9DTEFJTV9USU1FT1VU X01TwqDCoMKgIDIwMDANCj4+IMKgICNkZWZpbmUgRlBHQV9DT05GSUdfU1RBVFVTX1RJTUVPVVRf U0VDwqDCoMKgwqDCoMKgwqAgMzANCj4+IMKgICNkZWZpbmUgQllURV9UT19XT1JEX1NJWkXCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA0DQo+PiBAQCAtMjUyLDExICsyNTIsMTAgQEAgc3RydWN0 IHN0cmF0aXgxMF9hc3luY19jdHJsIHsNCj4+IMKgwqAgKiBAbm9kZTogbGlzdCBtYW5hZ2VtZW50 DQo+PiDCoMKgICogQGdlbnBvb2w6IG1lbW9yeSBwb29sIHBvaW50aW5nIHRvIHRoZSBtZW1vcnkg cmVnaW9uDQo+PiDCoMKgICogQHRhc2s6IHBvaW50ZXIgdG8gdGhlIHRocmVhZCB0YXNrIHdoaWNo IGhhbmRsZXMgU01DIG9yIEhWQyBjYWxsDQo+PiAtICogQHN2Y19maWZvOiBhIHF1ZXVlIGZvciBz dG9yaW5nIHNlcnZpY2UgbWVzc2FnZSBkYXRhDQo+PiDCoMKgICogQGNvbXBsZXRlX3N0YXR1czog c3RhdGUgZm9yIGNvbXBsZXRpb24NCj4+IC0gKiBAc3ZjX2ZpZm9fbG9jazogcHJvdGVjdCBhY2Nl c3MgdG8gc2VydmljZSBtZXNzYWdlIGRhdGEgcXVldWUNCj4+IMKgwqAgKiBAaW52b2tlX2ZuOiBm dW5jdGlvbiB0byBpc3N1ZSBzZWN1cmUgbW9uaXRvciBjYWxsIG9yIGh5cGVydmlzb3IgY2FsbA0K Pj4gwqDCoCAqIEBzdmM6IG1hbmFnZXMgdGhlIGxpc3Qgb2YgY2xpZW50IHN2YyBkcml2ZXJzDQo+ PiArICogQHNkbV9sb2NrOiBvbmx5IGFsbG93cyBhIHNpbmdsZSBjb21tYW5kIHNpbmdsZSByZXNw b25zZSB0byBTRE0NCj4+IMKgwqAgKiBAYWN0cmw6IGFzeW5jIGNvbnRyb2wgc3RydWN0dXJlDQo+ PiDCoMKgICoNCj4+IMKgwqAgKiBUaGlzIHN0cnVjdCBpcyB1c2VkIHRvIGNyZWF0ZSBjb21tdW5p Y2F0aW9uIGNoYW5uZWxzIGZvciBzZXJ2aWNlIA0KPj4gY2xpZW50cywgdG8NCj4+IEBAIC0yNjks MTIgKzI2OCwxMCBAQCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2Y19jb250cm9sbGVyIHsNCj4+IMKgwqDC oMKgwqAgaW50IG51bV9hY3RpdmVfY2xpZW50Ow0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9o ZWFkIG5vZGU7DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBnZW5fcG9vbCAqZ2VucG9vbDsNCj4+IC3C oMKgwqAgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOw0KPj4gLcKgwqDCoCBzdHJ1Y3Qga2ZpZm8g c3ZjX2ZpZm87DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlX3N0YXR1 czsNCj4+IC3CoMKgwqAgc3BpbmxvY2tfdCBzdmNfZmlmb19sb2NrOw0KPj4gwqDCoMKgwqDCoCBz dmNfaW52b2tlX2ZuICppbnZva2VfZm47DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBf c3ZjICpzdmM7DQo+PiArwqDCoMKgIHN0cnVjdCBtdXRleCAqc2RtX2xvY2s7DQo+PiDCoMKgwqDC oMKgIHN0cnVjdCBzdHJhdGl4MTBfYXN5bmNfY3RybCBhY3RybDsNCj4+IMKgIH07DQo+PiBAQCAt MjgzLDYgKzI4MCw5IEBAIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NvbnRyb2xsZXIgew0KPj4gwqDC oCAqIEBjdHJsOiBwb2ludGVyIHRvIHNlcnZpY2UgY29udHJvbGxlciB3aGljaCBpcyB0aGUgcHJv dmlkZXIgb2YgDQo+PiB0aGlzIGNoYW5uZWwNCj4+IMKgwqAgKiBAc2NsOiBwb2ludGVyIHRvIHNl cnZpY2UgY2xpZW50IHdoaWNoIG93bnMgdGhlIGNoYW5uZWwNCj4+IMKgwqAgKiBAbmFtZTogc2Vy dmljZSBjbGllbnQgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYW5uZWwNCj4+ICsgKiBAdGFz azogcG9pbnRlciB0byB0aGUgdGhyZWFkIHRhc2sgd2hpY2ggaGFuZGxlcyBTTUMgb3IgSFZDIGNh bGwNCj4+ICsgKiBAc3ZjX2ZpZm86IGEgcXVldWUgZm9yIHN0b3Jpbmcgc2VydmljZSBtZXNzYWdl IGRhdGEgKHNlcGFyYXRlIGZpZm8gDQo+PiBmb3IgZXZlcnkgY2hhbm5lbCkNCj4+ICsgKiBAc3Zj X2ZpZm9fbG9jazogcHJvdGVjdCBhY2Nlc3MgdG8gc2VydmljZSBtZXNzYWdlIGRhdGEgcXVldWUg DQo+PiAobG9ja2luZyBwZW5kaW5nIGZpZm8pDQo+PiDCoMKgICogQGxvY2s6IHByb3RlY3QgYWNj ZXNzIHRvIHRoZSBjaGFubmVsDQo+PiDCoMKgICogQGFzeW5jX2NoYW46IHJlZmVyZW5jZSB0byBh c3luY2hyb25vdXMgY2hhbm5lbCBvYmplY3QgZm9yIHRoaXMgDQo+PiBjaGFubmVsDQo+PiDCoMKg ICoNCj4+IEBAIC0yOTMsNiArMjkzLDkgQEAgc3RydWN0IHN0cmF0aXgxMF9zdmNfY2hhbiB7DQo+ PiDCoMKgwqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NvbnRyb2xsZXIgKmN0cmw7DQo+PiDC oMKgwqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NsaWVudCAqc2NsOw0KPj4gwqDCoMKgwqDC oCBjaGFyICpuYW1lOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7DQo+PiAr wqDCoMKgIHN0cnVjdCBrZmlmbyBzdmNfZmlmbzsNCj4+ICvCoMKgwqAgc3BpbmxvY2tfdCBzdmNf Zmlmb19sb2NrOw0KPj4gwqDCoMKgwqDCoCBzcGlubG9ja190IGxvY2s7DQo+PiDCoMKgwqDCoMKg IHN0cnVjdCBzdHJhdGl4MTBfYXN5bmNfY2hhbiAqYXN5bmNfY2hhbjsNCj4+IMKgIH07DQo+PiBA QCAtNTI3LDEzICs1MzAsMTQgQEAgc3RhdGljIHZvaWQgc3ZjX3RocmVhZF9yZWN2X3N0YXR1c19v ayhzdHJ1Y3QgDQo+PiBzdHJhdGl4MTBfc3ZjX2RhdGEgKnBfZGF0YSwNCj4+IMKgwqAgKi8NCj4+ IMKgIHN0YXRpYyBpbnQgc3ZjX25vcm1hbF90b19zZWN1cmVfdGhyZWFkKHZvaWQgKmRhdGEpDQo+ PiDCoCB7DQo+PiAtwqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NvbnRyb2xsZXINCj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgICpjdHJsID0gKHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NvbnRy b2xsZXIgKilkYXRhOw0KPj4gLcKgwqDCoCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2Y19kYXRhICpwZGF0 YTsNCj4+IC3CoMKgwqAgc3RydWN0IHN0cmF0aXgxMF9zdmNfY2JfZGF0YSAqY2JkYXRhOw0KPj4g K8KgwqDCoCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2Y19jaGFuICpjaGFuID3CoCAoc3RydWN0IHN0cmF0 aXgxMF9zdmNfY2hhbiANCj4+ICopZGF0YTsNCj4+ICvCoMKgwqAgc3RydWN0IHN0cmF0aXgxMF9z dmNfY29udHJvbGxlcsKgwqDCoCAqY3RybCA9IGNoYW4tPmN0cmw7DQo+PiArwqDCoMKgIHN0cnVj dCBzdHJhdGl4MTBfc3ZjX2RhdGEgKnBkYXRhID0gTlVMTDsNCj4+ICvCoMKgwqAgc3RydWN0IHN0 cmF0aXgxMF9zdmNfY2JfZGF0YSAqY2JkYXRhID0gTlVMTDsNCj4+IMKgwqDCoMKgwqAgc3RydWN0 IGFybV9zbWNjY19yZXMgcmVzOw0KPj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGEwLCBhMSwg YTIsIGEzLCBhNCwgYTUsIGE2LCBhNzsNCj4+IMKgwqDCoMKgwqAgaW50IHJldF9maWZvID0gMDsN Cj4+ICvCoMKgwqAgYm9vbCBzZG1fbG9ja19vd25lZCA9IGZhbHNlOw0KPj4gwqDCoMKgwqDCoCBw ZGF0YSA9wqAga21hbGxvYyhzaXplb2YoKnBkYXRhKSwgR0ZQX0tFUk5FTCk7DQo+PiDCoMKgwqDC oMKgIGlmICghcGRhdGEpDQo+PiBAQCAtNTU1LDEyICs1NTksMTIgQEAgc3RhdGljIGludCBzdmNf bm9ybWFsX3RvX3NlY3VyZV90aHJlYWQodm9pZCAqZGF0YSkNCj4+IMKgwqDCoMKgwqAgYTYgPSAw Ow0KPj4gwqDCoMKgwqDCoCBhNyA9IDA7DQo+PiAtwqDCoMKgIHByX2RlYnVnKCJzbWNfaHZjX3No bV90aHJlYWQgaXMgcnVubmluZ1xuIik7DQo+PiArwqDCoMKgIHByX2RlYnVnKCIlczogJXM6IFRo cmVhZCBpcyBydW5uaW5nIVxuIiwgX19mdW5jX18sIGNoYW4tPm5hbWUpOw0KPj4gwqDCoMKgwqDC oCB3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkgew0KPj4gLcKgwqDCoMKgwqDCoMKgIHJl dF9maWZvID0ga2ZpZm9fb3V0X3NwaW5sb2NrZWQoJmN0cmwtPnN2Y19maWZvLA0KPj4gK8KgwqDC oMKgwqDCoMKgIHJldF9maWZvID0ga2ZpZm9fb3V0X3NwaW5sb2NrZWQoJmNoYW4tPnN2Y19maWZv LA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cGRhdGEsIHNpemVvZigqcGRhdGEpLA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgJmN0cmwtPnN2Y19maWZvX2xvY2spOw0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmNoYW4tPnN2Y19maWZvX2xvY2sp Ow0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghcmV0X2ZpZm8pDQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4+IEBAIC01NjksNiArNTczLDE2IEBAIHN0YXRpYyBp bnQgc3ZjX25vcm1hbF90b19zZWN1cmVfdGhyZWFkKHZvaWQgKmRhdGEpDQo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICh1bnNpZ25lZCBpbnQpcGRhdGEtPnBhZGRyLCBwZGF0YS0+Y29t bWFuZCwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGludClwZGF0 YS0+c2l6ZSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgLyogU0RNIGNhbiBvbmx5IHByb2Nlc3NzIG9u ZSBjb21tYW5kIGF0IGEgdGltZSAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICghc2RtX2xvY2tf b3duZWQpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE11c3Qgbm90IGRvIG11dGV4 IHJlLWxvY2sgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCIlczogJXM6 IFRocmVhZCBpcyB3YWl0aW5nIGZvciBtdXRleCFcbiIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgX19mdW5jX18sIGNoYW4tPm5hbWUpOw0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ3VhcmQobXV0ZXgpKGN0cmwtPnNkbV9sb2NrKTsNCj4+ICvCoMKgwqDCoMKgwqDC oCB9DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgc2RtX2xvY2tfb3duZWQgPSB0cnVlOw0KPj4g Kw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAocGRhdGEtPmNvbW1hbmQpIHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBjYXNlIENPTU1BTkRfUkVDT05GSUdfREFUQV9DTEFJTToNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN2Y190aHJlYWRfY21kX2RhdGFfY2xhaW0oY3RybCwg cGRhdGEsIGNiZGF0YSk7DQo+PiBAQCAtNzAyLDggKzcxNiw4IEBAIHN0YXRpYyBpbnQgc3ZjX25v cm1hbF90b19zZWN1cmVfdGhyZWFkKHZvaWQgKmRhdGEpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBwcl93YXJuKCJpdCBzaG91bGRuJ3QgaGFwcGVuXG4iKTsNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+IC3CoMKg wqDCoMKgwqDCoCBwcl9kZWJ1ZygiJXM6IGJlZm9yZSBTTUMgY2FsbCAtLSBhMD0weCUwMTZ4IGEx PTB4JTAxNngiLA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywNCj4+ICvC oMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiJXM6ICVzOiBiZWZvcmUgU01DIGNhbGwgLS0gYTA9MHgl MDE2eCBhMT0weCUwMTZ4IiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18s IGNoYW4tPm5hbWUsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1bnNpZ25lZCBp bnQpYTAsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1bnNpZ25lZCBpbnQpYTEp Ow0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCIgYTI9MHglMDE2eFxuIiwgKHVuc2ln bmVkIGludClhMik7DQo+PiBAQCAtNzEyLDggKzcyNiw4IEBAIHN0YXRpYyBpbnQgc3ZjX25vcm1h bF90b19zZWN1cmVfdGhyZWFkKHZvaWQgKmRhdGEpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcHJf ZGVidWcoIiBhNT0weCUwMTZ4XG4iLCAodW5zaWduZWQgaW50KWE1KTsNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBjdHJsLT5pbnZva2VfZm4oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCAm cmVzKTsNCj4+IC3CoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiJXM6IGFmdGVyIFNNQyBjYWxsIC0t IHJlcy5hMD0weCUwMTZ4IiwNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18s ICh1bnNpZ25lZCBpbnQpcmVzLmEwKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiJXM6 ICVzOiBhZnRlciBTTUMgY2FsbCAtLSByZXMuYTA9MHglMDE2eCIsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIF9fZnVuY19fLCBjaGFuLT5uYW1lLCAodW5zaWduZWQgaW50KXJlcy5hMCk7 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoIiByZXMuYTE9MHglMDE2eCwgcmVzLmEy PTB4JTAxNngiLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQgaW50 KXJlcy5hMSwgKHVuc2lnbmVkIGludClyZXMuYTIpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHBy X2RlYnVnKCIgcmVzLmEzPTB4JTAxNnhcbiIsICh1bnNpZ25lZCBpbnQpcmVzLmEzKTsNCj4+IEBA IC03MjgsNiArNzQyLDcgQEAgc3RhdGljIGludCBzdmNfbm9ybWFsX3RvX3NlY3VyZV90aHJlYWQo dm9pZCAqZGF0YSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNiZGF0YS0+a2FkZHIy ID0gTlVMTDsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNiZGF0YS0+a2FkZHIzID0g TlVMTDsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBkYXRhLT5jaGFuLT5zY2wtPnJl Y2VpdmVfY2IocGRhdGEtPmNoYW4tPnNjbCwgY2JkYXRhKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHNkbV9sb2NrX293bmVkID0gZmFsc2U7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb250aW51ZTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+PiBAQCAtMTY5NywyMSAr MTcxMiwyMSBAQCBpbnQgc3RyYXRpeDEwX3N2Y19zZW5kKHN0cnVjdCANCj4+IHN0cmF0aXgxMF9z dmNfY2hhbiAqY2hhbiwgdm9pZCAqbXNnKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAt RU5PTUVNOw0KPj4gwqDCoMKgwqDCoCAvKiBmaXJzdCBjbGllbnQgd2lsbCBjcmVhdGUga2VybmVs IHRocmVhZCAqLw0KPj4gLcKgwqDCoCBpZiAoIWNoYW4tPmN0cmwtPnRhc2spIHsNCj4+IC3CoMKg wqDCoMKgwqDCoCBjaGFuLT5jdHJsLT50YXNrID0NCj4+ICvCoMKgwqAgaWYgKCFjaGFuLT50YXNr KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgY2hhbi0+dGFzayA9DQo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBrdGhyZWFkX3J1bl9vbl9jcHUoc3ZjX25vcm1hbF90b19zZWN1cmVfdGhyZWFk LA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh2b2lk ICopY2hhbi0+Y3RybCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAodm9pZCAqKWNoYW4sDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY3B1LCAic3ZjX3NtY19odmNfdGhyZWFkIik7DQo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAoSVNfRVJSKGNoYW4tPmN0cmwtPnRhc2spKSB7DQo+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoY2hhbi0+Y3RybC0+ZGV2LA0KPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJmYWlsZWQgdG8gY3JlYXRl IHN2Y19zbWNfaHZjX3RocmVhZFxuIik7DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGtmcmVlKHBfZGF0YSk7DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiAtRUlOVkFMOw0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4gK8KgwqDCoMKg wqDCoMKgIGlmIChJU19FUlIoY2hhbi0+dGFzaykpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRldl9lcnIoY2hhbi0+Y3RybC0+ZGV2LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAiZmFpbGVkIHRvIGNyZWF0ZSBzdmNfc21jX2h2Y190aHJlYWRcbiIpOw0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUocF9kYXRhKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiAtRUlOVkFMOw0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKg wqAgfQ0KPj4gLcKgwqDCoCBwcl9kZWJ1ZygiJXM6IHNlbnQgUC12YT0lcCwgUC1jb209JXgsIFAt c2l6ZT0ldVxuIiwgX19mdW5jX18sDQo+PiAtwqDCoMKgwqDCoMKgwqDCoCBwX21zZy0+cGF5bG9h ZCwgcF9tc2ctPmNvbW1hbmQsDQo+PiArwqDCoMKgIHByX2RlYnVnKCIlczogJXM6IHNlbnQgUC12 YT0lcCwgUC1jb209JXgsIFAtc2l6ZT0ldVxuIiwgX19mdW5jX18sDQo+PiArwqDCoMKgwqDCoMKg wqDCoCBjaGFuLT5uYW1lLCBwX21zZy0+cGF5bG9hZCwgcF9tc2ctPmNvbW1hbmQsDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQgaW50KXBfbXNnLT5wYXlsb2FkX2xlbmd0aCk7DQo+ PiDCoMKgwqDCoMKgIGlmIChsaXN0X2VtcHR5KCZzdmNfZGF0YV9tZW0pKSB7DQo+PiBAQCAtMTc0 NywxMiArMTc2MiwxNiBAQCBpbnQgc3RyYXRpeDEwX3N2Y19zZW5kKHN0cnVjdCANCj4+IHN0cmF0 aXgxMF9zdmNfY2hhbiAqY2hhbiwgdm9pZCAqbXNnKQ0KPj4gwqDCoMKgwqDCoCBwX2RhdGEtPmFy Z1syXSA9IHBfbXNnLT5hcmdbMl07DQo+PiDCoMKgwqDCoMKgIHBfZGF0YS0+c2l6ZSA9IHBfbXNn LT5wYXlsb2FkX2xlbmd0aDsNCj4+IMKgwqDCoMKgwqAgcF9kYXRhLT5jaGFuID0gY2hhbjsNCj4+ IC3CoMKgwqAgcHJfZGVidWcoIiVzOiBwdXQgdG8gRklGTyBwYT0weCUwMTZ4LCBjbWQ9JXgsIHNp emU9JXVcbiIsIF9fZnVuY19fLA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgICh1bnNpZ25lZCBp bnQpcF9kYXRhLT5wYWRkciwgcF9kYXRhLT5jb21tYW5kLA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgICh1bnNpZ25lZCBpbnQpcF9kYXRhLT5zaXplKTsNCj4+IC3CoMKgwqAgcmV0ID0ga2ZpZm9f aW5fc3BpbmxvY2tlZCgmY2hhbi0+Y3RybC0+c3ZjX2ZpZm8sIHBfZGF0YSwNCj4+ICvCoMKgwqAg cHJfZGVidWcoIiVzOiAlczogcHV0IHRvIEZJRk8gcGE9MHglMDE2eCwgY21kPSV4LCBzaXplPSV1 XG4iLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18sDQo+PiArwqDCoMKgwqDCoMKgwqDC oCBjaGFuLT5uYW1lLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGludClwX2RhdGEt PnBhZGRyLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgcF9kYXRhLT5jb21tYW5kLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqAgKHVuc2lnbmVkIGludClwX2RhdGEtPnNpemUpOw0KPj4gKw0KPj4gK8KgwqDC oCByZXQgPSBrZmlmb19pbl9zcGlubG9ja2VkKCZjaGFuLT5zdmNfZmlmbywgcF9kYXRhLA0KPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKCpwX2RhdGEpLA0K Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmNoYW4tPmN0cmwtPnN2Y19m aWZvX2xvY2spOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmNoYW4t PnN2Y19maWZvX2xvY2spOw0KPj4gwqDCoMKgwqDCoCBrZnJlZShwX2RhdGEpOw0KPj4gQEAgLTE3 NzMsMTIgKzE3OTIsMTUgQEAgRVhQT1JUX1NZTUJPTF9HUEwoc3RyYXRpeDEwX3N2Y19zZW5kKTsN Cj4+IMKgwqAgKi8NCj4+IMKgIHZvaWQgc3RyYXRpeDEwX3N2Y19kb25lKHN0cnVjdCBzdHJhdGl4 MTBfc3ZjX2NoYW4gKmNoYW4pDQo+PiDCoCB7DQo+PiAtwqDCoMKgIC8qIHN0b3AgdGhyZWFkIHdo ZW4gdGhyZWFkIGlzIHJ1bm5pbmcgQU5EIG9ubHkgb25lIGFjdGl2ZSBjbGllbnQgKi8NCj4+IC3C oMKgwqAgaWYgKGNoYW4tPmN0cmwtPnRhc2sgJiYgY2hhbi0+Y3RybC0+bnVtX2FjdGl2ZV9jbGll bnQgPD0gMSkgew0KPj4gLcKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCJzdmNfc21jX2h2Y19zaG1f dGhyZWFkIGlzIHN0b3BwZWRcbiIpOw0KPj4gLcKgwqDCoMKgwqDCoMKgIGt0aHJlYWRfc3RvcChj aGFuLT5jdHJsLT50YXNrKTsNCj4+IC3CoMKgwqDCoMKgwqDCoCBjaGFuLT5jdHJsLT50YXNrID0g TlVMTDsNCj4+ICvCoMKgwqAgLyogc3RvcCB0aHJlYWQgd2hlbiB0aHJlYWQgaXMgcnVubmluZyAq Lw0KPj4gK8KgwqDCoCBpZiAoY2hhbi0+dGFzaykgew0KPj4gK8KgwqDCoMKgwqDCoMKgIHByX2Rl YnVnKCIlczogJXM6IHN2Y19zbWNfaHZjX3NobV90aHJlYWQgaXMgc3RvcHBpbmdcbiIsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnVuY19fLCBjaGFuLT5uYW1lKTsNCj4+ICvCoMKg wqDCoMKgwqDCoCBrdGhyZWFkX3N0b3AoY2hhbi0+dGFzayk7DQo+PiArwqDCoMKgwqDCoMKgwqAg Y2hhbi0+dGFzayA9IE5VTEw7DQo+PiDCoMKgwqDCoMKgIH0NCj4+ICvCoMKgwqAgcHJfZGVidWco IiVzOiAlczogc3ZjX3NtY19odmNfc2htX3RocmVhZCBoYXMgc3RvcHBlZFxuIiwNCj4+ICvCoMKg wqDCoMKgwqDCoMKgIF9fZnVuY19fLCBjaGFuLT5uYW1lKTsNCj4+IMKgIH0NCj4+IMKgIEVYUE9S VF9TWU1CT0xfR1BMKHN0cmF0aXgxMF9zdmNfZG9uZSk7DQo+PiBAQCAtMTgxNyw4ICsxODM5LDgg QEAgdm9pZCAqc3RyYXRpeDEwX3N2Y19hbGxvY2F0ZV9tZW1vcnkoc3RydWN0IA0KPj4gc3RyYXRp eDEwX3N2Y19jaGFuICpjaGFuLA0KPj4gwqDCoMKgwqDCoCBwbWVtLT5wYWRkciA9IHBhOw0KPj4g wqDCoMKgwqDCoCBwbWVtLT5zaXplID0gczsNCj4+IMKgwqDCoMKgwqAgbGlzdF9hZGRfdGFpbCgm cG1lbS0+bm9kZSwgJnN2Y19kYXRhX21lbSk7DQo+PiAtwqDCoMKgIHByX2RlYnVnKCIlczogdmE9 JXAsIHBhPTB4JTAxNnhcbiIsIF9fZnVuY19fLA0KPj4gLcKgwqDCoMKgwqDCoMKgwqAgcG1lbS0+ dmFkZHIsICh1bnNpZ25lZCBpbnQpcG1lbS0+cGFkZHIpOw0KPj4gK8KgwqDCoCBwcl9kZWJ1Zygi JXM6ICVzOiB2YT0lcCwgcGE9MHglMDE2eFxuIiwgX19mdW5jX18sDQo+PiArwqDCoMKgwqDCoMKg wqDCoCBjaGFuLT5uYW1lLCBwbWVtLT52YWRkciwgKHVuc2lnbmVkIGludClwbWVtLT5wYWRkcik7 DQo+PiDCoMKgwqDCoMKgIHJldHVybiAodm9pZCAqKXZhOw0KPj4gwqAgfQ0KPj4gQEAgLTE4NTUs NiArMTg3NywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCANCj4+IHN0cmF0 aXgxMF9zdmNfZHJ2X21hdGNoW10gPSB7DQo+PiDCoMKgwqDCoMKgIHt9LA0KPj4gwqAgfTsNCj4+ ICsvKioNCj4+ICsgKiBtYWlsYm94X2xvY2sgcHJvdGVjdHMgYWNjZXNzIHRvIHRoZSB0byBTRE0g aWYgdGhyZWFkIGlzIGJ1c3kNCj4+ICsgKi8NCj4+ICtzdGF0aWMgREVGSU5FX01VVEVYKG1haWxi b3hfbG9jayk7DQo+PiArDQo+PiDCoCBzdGF0aWMgaW50IHN0cmF0aXgxMF9zdmNfZHJ2X3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiDCoCB7DQo+PiDCoMKgwqDCoMKgIHN0 cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+PiBAQCAtMTg2Miw3ICsxODg5LDcgQEAg c3RhdGljIGludCBzdHJhdGl4MTBfc3ZjX2Rydl9wcm9iZShzdHJ1Y3QgDQo+PiBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NoYW4gKmNo YW5zOw0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZ2VuX3Bvb2wgKmdlbnBvb2w7DQo+PiDCoMKgwqDC oMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX3NoX21lbW9yeSAqc2hfbWVtb3J5Ow0KPj4gLcKgwqDC oCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2YyAqc3ZjOw0KPj4gK8KgwqDCoCBzdHJ1Y3Qgc3RyYXRpeDEw X3N2YyAqc3ZjID0gTlVMTDsNCj4+IMKgwqDCoMKgwqAgc3ZjX2ludm9rZV9mbiAqaW52b2tlX2Zu Ow0KPj4gwqDCoMKgwqDCoCBzaXplX3QgZmlmb19zaXplOw0KPj4gQEAgLTE5MDUsNyArMTkzMiw2 IEBAIHN0YXRpYyBpbnQgc3RyYXRpeDEwX3N2Y19kcnZfcHJvYmUoc3RydWN0IA0KPj4gcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPj4gwqDCoMKgwqDCoCBjb250cm9sbGVyLT5udW1fYWN0aXZlX2Ns aWVudCA9IDA7DQo+PiDCoMKgwqDCoMKgIGNvbnRyb2xsZXItPmNoYW5zID0gY2hhbnM7DQo+PiDC oMKgwqDCoMKgIGNvbnRyb2xsZXItPmdlbnBvb2wgPSBnZW5wb29sOw0KPj4gLcKgwqDCoCBjb250 cm9sbGVyLT50YXNrID0gTlVMTDsNCj4+IMKgwqDCoMKgwqAgY29udHJvbGxlci0+aW52b2tlX2Zu ID0gaW52b2tlX2ZuOw0KPj4gwqDCoMKgwqDCoCBpbml0X2NvbXBsZXRpb24oJmNvbnRyb2xsZXIt PmNvbXBsZXRlX3N0YXR1cyk7DQo+PiBAQCAtMTkxNywzMiArMTk0Myw2MSBAQCBzdGF0aWMgaW50 IHN0cmF0aXgxMF9zdmNfZHJ2X3Byb2JlKHN0cnVjdCANCj4+IHBsYXRmb3JtX2RldmljZSAqcGRl dikNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDCoCBmaWZvX3NpemUgPSBzaXplb2Yoc3Ry dWN0IHN0cmF0aXgxMF9zdmNfZGF0YSkgKiANCj4+IFNWQ19OVU1fREFUQV9JTl9GSUZPOw0KPj4g LcKgwqDCoCByZXQgPSBrZmlmb19hbGxvYygmY29udHJvbGxlci0+c3ZjX2ZpZm8sIGZpZm9fc2l6 ZSwgR0ZQX0tFUk5FTCk7DQo+PiArwqDCoMKgIHJldCA9IGtmaWZvX2FsbG9jKCZjaGFucy0+c3Zj X2ZpZm8sIGZpZm9fc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+IA0KPiBZb3UgYXJlIGFsbG9jYXRpbmcg YSBzdmNfZmlmbyBmb3IgY2hhbiAwIGhlcmUsDQo+IA0KPj4gwqDCoMKgwqDCoCBpZiAocmV0KSB7 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUg RklGT1xuIik7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfYXN5bmNfZXhpdDsNCj4+ IMKgwqDCoMKgwqAgfQ0KPj4gLcKgwqDCoCBzcGluX2xvY2tfaW5pdCgmY29udHJvbGxlci0+c3Zj X2ZpZm9fbG9jayk7DQo+PiArwqDCoMKgIHNwaW5fbG9ja19pbml0KCZjaGFucy0+c3ZjX2ZpZm9f bG9jayk7DQo+PiArwqDCoMKgIC8qDQo+PiArwqDCoMKgwqAgKiBUaGlzIG11dGV4IGlzIHVzZWQg dG8gYmxvY2sgdGhyZWFkcyBmcm9tIHV0aWxpemluZw0KPj4gK8KgwqDCoMKgICogU0RNIHRvIHBy ZXZlbnQgb3V0IG9mIG9yZGVyIGNvbW1hbmQgdHgNCj4+ICvCoMKgwqDCoCAqLw0KPj4gK8KgwqDC oCBjb250cm9sbGVyLT5zZG1fbG9jayA9ICZtYWlsYm94X2xvY2s7DQo+PiDCoMKgwqDCoMKgIGNo YW5zWzBdLnNjbCA9IE5VTEw7DQo+PiDCoMKgwqDCoMKgIGNoYW5zWzBdLmN0cmwgPSBjb250cm9s bGVyOw0KPj4gwqDCoMKgwqDCoCBjaGFuc1swXS5uYW1lID0gU1ZDX0NMSUVOVF9GUEdBOw0KPj4g wqDCoMKgwqDCoCBzcGluX2xvY2tfaW5pdCgmY2hhbnNbMF0ubG9jayk7DQo+PiArwqDCoMKgIHJl dCA9IGtmaWZvX2FsbG9jKCZjaGFuc1swXS5zdmNfZmlmbywgZmlmb19zaXplLCBHRlBfS0VSTkVM KTsNCj4gDQo+IHRoZW4geW91J3JlIHJlLWFsbG9jYXRpbmcgYW5vdGhlciBzdmNfZmlmbyBjaGFu WzBdIGhlcmU/DQo+IA0KPj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAg ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgRklGTyAwXG4iKTsNCj4+ICvCoMKgwqDC oMKgwqDCoCBnb3RvIGVycl9mcmVlX2NoYW5zX2ZpZm87DQo+PiArwqDCoMKgIH0NCj4+ICvCoMKg wqAgc3Bpbl9sb2NrX2luaXQoJmNoYW5zWzBdLnN2Y19maWZvX2xvY2spOw0KPj4gwqDCoMKgwqDC oCBjaGFuc1sxXS5zY2wgPSBOVUxMOw0KPj4gwqDCoMKgwqDCoCBjaGFuc1sxXS5jdHJsID0gY29u dHJvbGxlcjsNCj4+IMKgwqDCoMKgwqAgY2hhbnNbMV0ubmFtZSA9IFNWQ19DTElFTlRfUlNVOw0K Pj4gwqDCoMKgwqDCoCBzcGluX2xvY2tfaW5pdCgmY2hhbnNbMV0ubG9jayk7DQo+PiArwqDCoMKg IHJldCA9IGtmaWZvX2FsbG9jKCZjaGFuc1sxXS5zdmNfZmlmbywgZmlmb19zaXplLCBHRlBfS0VS TkVMKTsNCj4+ICvCoMKgwqAgaWYgKHJldCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIo ZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIEZJRk8gMVxuIik7DQo+PiArwqDCoMKgwqDCoMKgwqAg Z290byBlcnJfZnJlZV9maWZvX2ZwZ2E7DQo+PiArwqDCoMKgIH0NCj4+ICvCoMKgwqAgc3Bpbl9s b2NrX2luaXQoJmNoYW5zWzFdLnN2Y19maWZvX2xvY2spOw0KPj4gwqDCoMKgwqDCoCBjaGFuc1sy XS5zY2wgPSBOVUxMOw0KPj4gwqDCoMKgwqDCoCBjaGFuc1syXS5jdHJsID0gY29udHJvbGxlcjsN Cj4+IMKgwqDCoMKgwqAgY2hhbnNbMl0ubmFtZSA9IFNWQ19DTElFTlRfRkNTOw0KPj4gwqDCoMKg wqDCoCBzcGluX2xvY2tfaW5pdCgmY2hhbnNbMl0ubG9jayk7DQo+PiArwqDCoMKgIHJldCA9IGtm aWZvX2FsbG9jKCZjaGFuc1syXS5zdmNfZmlmbywgZmlmb19zaXplLCBHRlBfS0VSTkVMKTsNCj4+ ICvCoMKgwqAgaWYgKHJldCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoZGV2LCAiZmFp bGVkIHRvIGFsbG9jYXRlIEZJRk8gMlxuIik7DQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnJf ZnJlZV9maWZvX3JzdTsNCj4+ICvCoMKgwqAgfQ0KPj4gK8KgwqDCoCBzcGluX2xvY2tfaW5pdCgm Y2hhbnNbMl0uc3ZjX2ZpZm9fbG9jayk7DQo+PiDCoMKgwqDCoMKgIGNoYW5zWzNdLnNjbCA9IE5V TEw7DQo+PiDCoMKgwqDCoMKgIGNoYW5zWzNdLmN0cmwgPSBjb250cm9sbGVyOw0KPj4gwqDCoMKg wqDCoCBjaGFuc1szXS5uYW1lID0gU1ZDX0NMSUVOVF9IV01PTjsNCj4+IMKgwqDCoMKgwqAgc3Bp bl9sb2NrX2luaXQoJmNoYW5zWzNdLmxvY2spOw0KPj4gK8KgwqDCoCByZXQgPSBrZmlmb19hbGxv YygmY2hhbnNbM10uc3ZjX2ZpZm8sIGZpZm9fc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+PiArwqDCoMKg IGlmIChyZXQpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBh bGxvY2F0ZSBGSUZPIDNcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2ZyZWVfZmlm b19mY3M7DQo+PiArwqDCoMKgIH0NCj4+ICvCoMKgwqAgc3Bpbl9sb2NrX2luaXQoJmNoYW5zWzNd LnN2Y19maWZvX2xvY2spOw0KPiANCj4gSSB0aGluayBhbGxvY2F0aW5nIHRoZSBjaGFubmVsIHN2 Y19maWZvJ3Mgd291bGQgYmUgY2xlYW5lciBhbmQgbW9yZSANCj4gbWFpbnRhaW5hYmxlIGlmIHlv dSB1c2UgYSBmb3IgbG9vcC4NCj4gDQo+PiDCoMKgwqDCoMKgIGxpc3RfYWRkX3RhaWwoJmNvbnRy b2xsZXItPm5vZGUsICZzdmNfY3RybCk7DQo+PiDCoMKgwqDCoMKgIHBsYXRmb3JtX3NldF9kcnZk YXRhKHBkZXYsIGNvbnRyb2xsZXIpOw0KPj4gQEAgLTE5NTEsNyArMjAwNiw3IEBAIHN0YXRpYyBp bnQgc3RyYXRpeDEwX3N2Y19kcnZfcHJvYmUoc3RydWN0IA0KPj4gcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KPj4gwqDCoMKgwqDCoCBzdmMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnN2Yyks IEdGUF9LRVJORUwpOw0KPj4gwqDCoMKgwqDCoCBpZiAoIXN2Yykgew0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIHJldCA9IC1FTk9NRU07DQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZnJlZV9r ZmlmbzsNCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9mcmVlX2ZpZm9faHdtb247DQo+PiDC oMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAgY29udHJvbGxlci0+c3ZjID0gc3ZjOw0KPj4gQEAg LTE5NTksNTEgKzIwMTQsNDUgQEAgc3RhdGljIGludCBzdHJhdGl4MTBfc3ZjX2Rydl9wcm9iZShz dHJ1Y3QgDQo+PiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiDCoMKgwqDCoMKgIGlmICghc3Zj LT5zdHJhdGl4MTBfc3ZjX3JzdSkgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoZGV2 LCAiZmFpbGVkIHRvIGFsbG9jYXRlICVzIGRldmljZVxuIiwgU1RSQVRJWDEwX1JTVSk7DQo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVOT01FTTsNCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3Rv IGVycl9mcmVlX2tmaWZvOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2ZyZWVfZmlmb19o d21vbjsNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDCoCByZXQgPSBwbGF0Zm9ybV9kZXZp Y2VfYWRkKHN2Yy0+c3RyYXRpeDEwX3N2Y19yc3UpOw0KPj4gLcKgwqDCoCBpZiAocmV0KSB7DQo+ PiAtwqDCoMKgwqDCoMKgwqAgcGxhdGZvcm1fZGV2aWNlX3B1dChzdmMtPnN0cmF0aXgxMF9zdmNf cnN1KTsNCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9mcmVlX2tmaWZvOw0KPj4gLcKgwqDC oCB9DQo+PiAtDQo+PiAtwqDCoMKgIHN2Yy0+aW50ZWxfc3ZjX2ZjcyA9IHBsYXRmb3JtX2Rldmlj ZV9hbGxvYyhJTlRFTF9GQ1MsIDEpOw0KPj4gLcKgwqDCoCBpZiAoIXN2Yy0+aW50ZWxfc3ZjX2Zj cykgew0KPj4gLcKgwqDCoMKgwqDCoMKgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRl ICVzIGRldmljZVxuIiwgSU5URUxfRkNTKTsNCj4+IC3CoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5P TUVNOw0KPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX3VucmVnaXN0ZXJfcnN1X2RldjsNCj4+ IC3CoMKgwqAgfQ0KPj4gLQ0KPj4gLcKgwqDCoCByZXQgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkKHN2 Yy0+aW50ZWxfc3ZjX2Zjcyk7DQo+PiAtwqDCoMKgIGlmIChyZXQpIHsNCj4+IC3CoMKgwqDCoMKg wqDCoCBwbGF0Zm9ybV9kZXZpY2VfcHV0KHN2Yy0+aW50ZWxfc3ZjX2Zjcyk7DQo+PiAtwqDCoMKg wqDCoMKgwqAgZ290byBlcnJfdW5yZWdpc3Rlcl9yc3VfZGV2Ow0KPj4gLcKgwqDCoCB9DQo+PiAr wqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfcHV0X2RldmljZTsN Cj4+IMKgwqDCoMKgwqAgcmV0ID0gb2ZfcGxhdGZvcm1fZGVmYXVsdF9wb3B1bGF0ZShkZXZfb2Zf bm9kZShkZXYpLCBOVUxMLCBkZXYpOw0KPj4gwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gLcKgwqDC oMKgwqDCoMKgIGdvdG8gZXJyX3VucmVnaXN0ZXJfZmNzX2RldjsNCj4+ICvCoMKgwqDCoMKgwqDC oCBnb3RvIGVycl9wdXRfZGV2aWNlOw0KPj4gwqDCoMKgwqDCoCBwcl9pbmZvKCJJbnRlbCBTZXJ2 aWNlIExheWVyIERyaXZlciBJbml0aWFsaXplZFxuIik7DQo+PiDCoMKgwqDCoMKgIHJldHVybiAw Ow0KPj4gLWVycl91bnJlZ2lzdGVyX2Zjc19kZXY6DQo+PiAtwqDCoMKgIHBsYXRmb3JtX2Rldmlj ZV91bnJlZ2lzdGVyKHN2Yy0+aW50ZWxfc3ZjX2Zjcyk7DQo+PiAtZXJyX3VucmVnaXN0ZXJfcnN1 X2RldjoNCj4+IC3CoMKgwqAgcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoc3ZjLT5zdHJhdGl4 MTBfc3ZjX3JzdSk7DQo+PiAtZXJyX2ZyZWVfa2ZpZm86DQo+PiAtwqDCoMKgIGtmaWZvX2ZyZWUo JmNvbnRyb2xsZXItPnN2Y19maWZvKTsNCj4+ICtlcnJfcHV0X2RldmljZToNCj4+ICvCoMKgwqAg aWYgKHN2YykNCj4+ICvCoMKgwqDCoMKgwqDCoCBwbGF0Zm9ybV9kZXZpY2VfcHV0KHN2Yy0+c3Ry YXRpeDEwX3N2Y19yc3UpOw0KPiANCj4gV2h5IHRoZSBuZWVkIHRvIGNoZWNrIGlmIHN2YyBpcyB2 YWxpZCBoZXJlPw0KPiANCj4gRGluaA0KQWxsIGNvbW1lbnRzIGRkcmVzc2VkIGluIHBhdGNoIHY1 IA0KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjYwMzAyMDUzOTQ0LjE0MzAwLTEtbXVo YW1tYWQuYW1pcnVsLmFzeXJhZi5tb2hhbWFkLmphbWlhbkBhbHRlcmEuY29tLw0KDQpSZWdhcmRz LA0KQW1pcnVsDQo=