From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 96AF3CCF2E3 for ; Mon, 19 Oct 2026 12:30:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 28B0510EC79; Mon, 19 Oct 2026 12:30:25 +0000 (UTC) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2331610EC6F; Mon, 19 Oct 2026 12:30:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1792413010; x=1823949010; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=kENsBxdvh5wpQAutHmw1VmUXIWQ2enD7JHeIbSiPckg=; b=KnDFblW/yANoCVIzHw/Fr1xv96vgAz1PCW/qSTNo7WMx6oqKKoLUU5Bb jSjm8WvcKwq9dPqNk9RVBwQeoKpSlMsJNUbkdnllSWGLHjTeS7bq3gL7y lXJ/oe2Ss6NW6Fi8hUqVbrNxc9mSww0N+1r2zRSkrfGkufZKSyTAjhdqK o7Q+PQqGLFKLZtG2AHbI9BUAb3QZLvpayWHBxJSlXm5+Hocv6cFgkGkTB FEtAnEYjNqY25JtwMmhMLUI88tBLjCU8GXBjMcRJHYuHAySGwFhACQYNr 9N9Brlc2FfVpmm7YbEpLDDyAFAO7YvFMs41X7xXASjXxF5sSn3Z7adxf2 Q==; X-CSE-ConnectionGUID: agrt1zecQdOpLEFkFippkw== X-CSE-MsgGUID: 6Zv/SnyQRnO/ZKUgBOIIJg== X-IronPort-AV: E=McAfee;i="6800,10657,11939"; a="1113817" X-IronPort-AV: E=Sophos;i="6.27,167,1787036400"; d="scan'208";a="1113817" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Oct 2026 05:30:10 -0700 X-CSE-ConnectionGUID: ZmZ18DHnSyOjPGvgZNZ8bA== X-CSE-MsgGUID: XQh381x4R2Ca+p2AkhbTtA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,167,1787036400"; d="scan'208";a="2991171" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by fmviesa010.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Oct 2026 05:30:10 -0700 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Mon, 19 Oct 2026 05:30:09 -0700 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49 via Frontend Transport; Mon, 19 Oct 2026 05:30:09 -0700 Received: from CY3PR05CU001.outbound.protection.outlook.com (40.93.201.0) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Mon, 19 Oct 2026 05:30:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xnqBNNOtjiGhA5M06rnYeMcpdEgNPqV/oGVNhpbHeeOGvh6S/abq0M+ChVO2tzBrLDojsz6aMCZOWZK6QaX8P3veMaX03eQhJSfeFlHY6q//Wn4SBRB6iwEY5RygOw6yShuiNsElmy0IrQ1srdNuFQlZuL+SUlaOjThk+0kjWw9nFQvGsWCqQ5z22b3yd/ze/rwd6F1qh7vBKFkAYJFP7K9mOAdQlVHQOg86Yr4lvJmgTC/Lu7x4Zuh4UYlJCy27GvxIeokVav5U8x79hFauBa1B9+1i2plEr6Hwj1jtBkJ2vSTwVz+8YpuyM1R6JXXaIc0SoIW5whFljyP6mIalOQ== 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=kENsBxdvh5wpQAutHmw1VmUXIWQ2enD7JHeIbSiPckg=; b=BT/f8Rf9xc/TBqfl6+GFOKiSH+q5tVa+slBPoeZcMtjEAbuPtwT+rbPvEviV83i81/ZKwoNPYxVW192HGWXVGnrQHZ55Ge269SvQiBG5f/DWcuQdc9tnMGJfkRtUToir/hlB54fh8sqpCW+JVhhavE7llFWne7Qb2xtubz4WpzpM9LbJ2YGCjKkkTQ4R1xJnLYIl/U5KlmQBuEGpAf5dWMs7F3Mlgn8ZQlYS0thJvFCH7zJoCXYF8j+OznP/z3NGMeApUY6zJF5lQuSI/2835OKkJ+mdwJc5S20OPqW6qDAfaNax8ff8ut6lxyKbYkkRyKP5XR7pUGEB5UhioXte3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM4PR11MB6019.namprd11.prod.outlook.com (2603:10b6:8:60::5) by DS0PR11MB7649.namprd11.prod.outlook.com (2603:10b6:8:146::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.522.19; Mon, 19 Oct 2026 12:29:59 +0000 Received: from DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::9086:5e0b:ad24:762]) by DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::9086:5e0b:ad24:762%6]) with mapi id 15.21.0522.016; Mon, 19 Oct 2026 12:29:59 +0000 From: "Hogander, Jouni" To: "intel-xe@lists.freedesktop.org" , "Kahola, Mika" , "intel-gfx@lists.freedesktop.org" Subject: Re: [PATCH v2 4/6] drm/i915/psr: Merge the selective fetch area across joined pipes Thread-Topic: [PATCH v2 4/6] drm/i915/psr: Merge the selective fetch area across joined pipes Thread-Index: AQHdWkcWPCF7Vk4gHUO7eLqPkw0tU7cEr6CAgAAlCQCAAAHigA== Date: Mon, 19 Oct 2026 12:29:58 +0000 Message-ID: <0701f4321a34f36c8b044f6338acf2d4dff3c8ef.camel@intel.com> References: <20261012124145.1960050-1-mika.kahola@intel.com> <20261012124145.1960050-5-mika.kahola@intel.com> <3df3fac6e83fff3a3d2f311498ff01c86f6a8c5f.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB6019:EE_|DS0PR11MB7649:EE_ x-ms-office365-filtering-correlation-id: 383837a5-28c0-489f-744d-08df2ddcb0af x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|23010399003|1800799024|261009223027099003|10067099003|5023799004|56012099006|3023799007|6133799003|22082099003|18002099003|38070700021|4143699003|11063799006; x-microsoft-antispam-message-info: RcyhNFPwSvMcBksD/rR5jU/FYv2cvYceNeGly/wt34qv5mW5f07bemT6zwWMR1meBlh83wIzkPz3E7oseuIc9icRf50o+H8SXqE3e1cpNCsmCcAPy09bmxVXE2M+NF/1p9uvjk2d3QKLybJ1zmnXlNWuy8fC7+Hk0wPgCVOB1DSiIRAo50FUYBRFjAU68ioy3y4xZHgwkzEBrkW5Xdf9o9CNHyia5XScYoBoG0Y7uPflcL3SywiEPjMgevyBODQHj+ZeRGN2GsPInlAiqIw8Vy/U8HDFuJsOAOsj8urLrzrHM+Jw4l4xkHCpUJfZ8p/jWSoSMeQp4uZ6uJjbVxIrHPop2G20Y+cx2r2Nvl+PcuwfTZr0OHUiDnd3o/IQa0EY4+DMmMFXHj/y9ojhggYspEQa6rruV/ePtnMxyGIRs8fyJwDPTFyZQE3c2B4+lTnvMkfV+zN2NLvFdJSttKb6s5h7p0ezbMQOJRlxVoIj/Ott0Ex+rmy9m+pyNIZXgI735dRe+BxVMrsSwKsRkZ6CdYzAFBxBQptKehDm2lZtD7YC8wN4FqS4Uy7vTRwtPfq5hCByeG7OE+Hr6hNPIkSyxpX/F1frFQ8UPwslurSzLYs0PqWplSt8zDobg8NTCeys4w/JTQnBHR7+pYrdcXWinFrg2jU1U8CqOsQsadJW+8w= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB6019.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(23010399003)(1800799024)(261009223027099003)(10067099003)(5023799004)(56012099006)(3023799007)(6133799003)(22082099003)(18002099003)(38070700021)(4143699003)(11063799006); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?a3IvLzJ4WFNVMXpHMFFMVlBDdFNTUFlEV3JVek5Fem5wejNhdS81alVLbHRN?= =?utf-8?B?TytsNVVQYWl1cHBJb3dHRjQrNFVVd3N1YUxFVXBJNG1POXlWRmNXVjJSUFY1?= =?utf-8?B?WlVZeWN6VTdJTVNsSWUrQ2ZtWUFpZ3h1cWtHSm9tbWt0SzR1UkxLZzI1Njhs?= =?utf-8?B?M2kwTWE0YnZubkVLM1B4VXN2MVYybitaT3JoTXovWTBLbjhTcGRxS3BIMWNv?= =?utf-8?B?cENHMEk5SVRHMnU1S2VEMDBLRERrbUJuQjNPVFdZOVhxU09EMEc2MksvUi9h?= =?utf-8?B?cldDbmdMR1lDc0JXRlFMeU5HSG9ONTdZd3hteUpQemRrblFMTmowOE5qc3Yz?= =?utf-8?B?bTBEL0p4MzFHR1hFWEVQZEpFNWRRRGZKbDl3M2FZTUlYd3ZWYU9DTEFQRmNR?= =?utf-8?B?WGRCbXVoRXY2KzhFZkZOOVRoNGpaY3BTdmJGT0R0RURldVFuSThMcFZXZElw?= =?utf-8?B?TnovcllwNEtOdkdQUW9KQkFOMnJ4dTNPL0NteEl4dm16dllXLzFac0pCWEx2?= =?utf-8?B?c2d0VklZWkhVYllmNXQ5SStBbUZzYTBUKy9KQnNYeHN3WjlvckZnd0xJQWdX?= =?utf-8?B?ZVJuYnJjQy9abm1ZV3FxL2VCYnZ1bGtpNWRLejJleGJnSUpST2x3NE1hT0RU?= =?utf-8?B?SWFEcEd5VDNTZi9EMTFhY1pKbEVhalJWKzA1K3NaVExEazhrcHloRmJvSTlt?= =?utf-8?B?YXVyY09EMncvWVZ0bHNNalpGdEg1SmZoWGp4RE1EZEplRU5tbS9qOEswUEZa?= =?utf-8?B?d0lXWmZMQ2l4cU9HbG5VZG1sM0p5aWh5amRodGJrZC9pelBGVDg5dCtNa29p?= =?utf-8?B?bi9RQkRyWVRmR3VLY1NsRjhRNlRtaXFEOHNPNUF4NGFCWlk4OHkrMEVlb0NL?= =?utf-8?B?VGZ4WDBIS2R0TUp6TXlCZWhQT09KWnNPZmZ1VDJacFBnNTZnTTN3ak5QNWRK?= =?utf-8?B?bk83SitMSm5ad1VpS2MwcGhyUGorTVhpMEFpUlk1VldkMzNTRnY2YWc1NzFo?= =?utf-8?B?ZHRXcXVoTU9uSUdaeldkMEdlTFJ4ZGVjTUpKc1RwWkxBZXlOMDcyS3dyRjVP?= =?utf-8?B?aWY0ZWQ3WlF0eU5ZVFVTbGtGUXNaQ0tJam4xa3lEZUlVYytHRUg5T0IyTDNh?= =?utf-8?B?MlJUSmdTNm1XS1dBUWF4NWhwbndESEVmT3Q2TXRnNElzVUdCSWtmQlR0aXdL?= =?utf-8?B?Zm41OW9DQjZKWklQYjBLRUNpWWtTZ2NBMUFzUm1leUFVOWlUcE55ZUYxVVkw?= =?utf-8?B?V0QyVmlzL0dlcjF4N2VJaWNZeEVpZlFLR0g1VEJNeE1nYk1WNXlXUXJkdTB1?= =?utf-8?B?YzRDdUxlUHpmSDQ5OUN4VENRV3ZqMEwveVltMVVkQ0RveGhrRklvZUpoNEx5?= =?utf-8?B?d2VNcjRaQVhnS0xMeDRYSVNRMkdCSkU3YUFVSWdUaExEdjBzU0FlK0ZZd0Vp?= =?utf-8?B?d1o2WW5CNEpHMVhNekU5UXVYVExwMjEyWGlrbHh0QVJBMVorYTdqVDNHK2lI?= =?utf-8?B?ZTFHb0o2WmJxVEQ2TStQRkIyYlJBQy81YnlMVU1GeHd2STZ4aU41Zjhicndm?= =?utf-8?B?SUNpOHo1QnBSdWhSTC9uNU03STI1bW1lK1pPdldqZzBBR09aR3FxYmVDM2pN?= =?utf-8?B?WjFDdU51R1grZW9UaGRaZEVIQmxjOGwzTG5MVTlkTU95L21DVk43OEU3TGIv?= =?utf-8?B?eFZZc2dPZllpZm1YVXdlUjdNVDhnWm8vcUpscEg0eFpOai9LZ282OS9nMU96?= =?utf-8?B?K3FlZWNVSUxOY2UwUnFZSjJMZkkrdXRNdXFzVEl3dDQzaW1xaS9YcHN2TUZP?= =?utf-8?B?dS9qTHVNMU1PWTJ2WUg5NDBQdlJNTXJockZteTJOdFltMFh3QjZQVUJIWFA4?= =?utf-8?B?MnlmUUdWcUhRaHk5NDNHRERwSEtkOEo0dnM2a3BhWUVVdnhXeUpWOHQ4emsx?= =?utf-8?B?OGdKS3hWUXZSL2paMi9QcFlzMDVoQThZME0zMGhmOE1zMGRQQ0xwYm9XTml5?= =?utf-8?B?MEEvYjY5Zm5EajNTbFZpRVMrV2RkUVRlSW1aeE5hdlJ6clM0OGV4elF6bVc0?= =?utf-8?B?dUNaZVBwSTlJSmM1VzVMZUd2S2t2RDhTNEFyYlRJR1duVFlpLzh1ZEd6YXlO?= =?utf-8?B?bkVSL2l1WnhaZDZNSWw4UGtZY1ZhVTRwT21EcDZtUWJtZjdESFk3dkN2MjFs?= =?utf-8?B?d25yRDJqQjlVOWx0UDdzdGJiQ2ZFU2oyQmxSWHhteDFkd09CMit0aDFQdWVY?= =?utf-8?B?VEN2OXRFREZVSHFTeDZsQlIrZXRrYWRRb1A1QmpnR3gxVFBtMFFldkwycmd0?= =?utf-8?B?ZjgyY29VczVqcFlINUVMU0I3dUsvekNCZWkvWnBLQnIvalR0UzR4c0lWbzZ3?= =?utf-8?Q?tJ7jHB3HuY89U2oo=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: e+9CCjkWt+BtdliGIg3d+Yh5KMV7U1MytpdebMdsocc7sB6dvmWQNLg/t0Q7PmgueCY0G86NJ3jCxLhcaRswiOIJjW3dkVKDA4jo3KT5IK3WxZcqhQE9v/8u1ALjDYOzKraTbOWw8tr74mFSx6DA2IDFSdMK5sX+lK01o6KTbIVKDkJyXfaozFL230tui8P6/4iBIlmVTRSIHmszmd+C8FI3OVrFYuAvXdv88TKD47qg5yBTruVUvRNElnWlhLkRKVBxe2K2/qfukcG4sawBkObMBeoUHv17sSpvu3kCJOUZ6zE1Covdd/ZtsUrmZR+hUpGYtTxQLN2frLVj0fzBeg== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB6019.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 383837a5-28c0-489f-744d-08df2ddcb0af X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2026 12:29:58.9843 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YGdL0CNF2dsGeCERnOIaEizzx6cnTg1sz8nxYXdxIA3ii+dpvhqbo8VcLEtmrS4gr5sgGWUjzhJ+diUIx8bcvGcfUGyQ0qQgxPt4N5GEiQ4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7649 X-OriginatorOrg: intel.com X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gTW9uLCAyMDI2LTEwLTE5IGF0IDEyOjIzICswMDAwLCBLYWhvbGEsIE1pa2Egd3JvdGU6DQo+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBIb2dhbmRlciwgSm91bmkg PGpvdW5pLmhvZ2FuZGVyQGludGVsLmNvbT4NCj4gPiBTZW50OiBNb25kYXksIDE5IE9jdG9iZXIg MjAyNiAxMy4xMQ0KPiA+IFRvOiBpbnRlbC14ZUBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IEthaG9s YSwgTWlrYQ0KPiA+IDxtaWthLmthaG9sYUBpbnRlbC5jb20+OyBpbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnDQo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiA0LzZdIGRybS9pOTE1L3Bz cjogTWVyZ2UgdGhlIHNlbGVjdGl2ZSBmZXRjaA0KPiA+IGFyZWEgYWNyb3NzIGpvaW5lZCBwaXBl cw0KPiA+IA0KPiA+IE9uIE1vbiwgMjAyNi0xMC0xMiBhdCAxMjo0MSArMDAwMCwgTWlrYSBLYWhv bGEgd3JvdGU6DQo+ID4gPiBQU1IyX01BTl9UUktfQ1RMIGlzIHBlciB0cmFuc2NvZGVyIGFuZCBh IGpvaW5lZCBjb25maWcgaGFzIG9ubHkNCj4gPiA+IG9uZQ0KPiA+ID4gdHJhbnNjb2Rlciwgc28g Ym90aCBqb2luZWQgcGlwZXMgd291bGQgcHJvZ3JhbSBpdCBhbmQgdGhlIHByaW1hcnkNCj4gPiA+ IHdvdWxkIHdpbi4gTWVyZ2UgdGhlIHBlci1waXBlIGFyZWFzLCBoYW5kIHRoZSByZXN1bHQgYmFj ayB0bw0KPiA+ID4gZXZlcnkNCj4gPiA+IGpvaW5lZCBwaXBlIGJlZm9yZSB0aGUgcGxhbmUgYXJl YXMgYXJlIHNldCBhbmQgd3JpdGUgdGhlDQo+ID4gPiB0cmFuc2NvZGVyDQo+ID4gPiByZWdpc3Rl ciBmcm9tIHRoZSBwcmltYXJ5IG9ubHkuIFRoZSBqb2luZXIgc3BsaXRzIHRoZSBpbWFnZQ0KPiA+ ID4gaG9yaXpvbnRhbGx5LCBzbyB0aGUgcGlwZXMgc2hhcmUgdGhlIFkgY29vcmRpbmF0ZSBzcGFj ZSBhbmQgYWxsDQo+ID4gPiBvZg0KPiA+ID4gdGhlbSBoYXZlIHRvIGZldGNoIHRoZSBtZXJnZWQg cmFuZ2UuDQo+ID4gPiANCj4gPiA+IEEgam9pbmVkIHBpcGUgY2FuIGxlZ2l0aW1hdGVseSBoYXZl IG5vIGRhbWFnZSBvZiBpdHMgb3duLCBwbGFuZQ0KPiA+ID4gdmlzaWJpbGl0eSBpcyBjb21wdXRl ZCBwZXIgcGlwZSBhZ2FpbnN0IHRoZSB0cmFuc2xhdGVkIHBpcGVfc3JjLA0KPiA+ID4gc28gYQ0K PiA+ID4gcGxhbmUgY29uZmluZWQgdG8gb25lIGhhbGYgaXMgbm90IHZpc2libGUgb24gdGhlIG90 aGVyIHBpcGUuIEtlZXANCj4gPiA+IHN1Y2gNCj4gPiA+IGEgcGlwZSBvdXQgb2YgdGhlIG1lcmdl IGluc3RlYWQgb2YgdHJlYXRpbmcgaXQgYXMgYSBmYWlsZWQgYXJlYQ0KPiA+ID4gY2FsY3VsYXRp b24sIGFuZCBvbmx5IGZhbGwgYmFjayB0byBhIGZ1bGwgdXBkYXRlIHdoZW4gbm8gam9pbmVkDQo+ ID4gPiBwaXBlDQo+ID4gPiBoYXMgYW55IGRhbWFnZS4NCj4gPiA+IA0KPiA+ID4gTWVyZ2luZyBv bmx5IGV2ZXIgZ3Jvd3MgdGhlIGFyZWEsIHNvIGEgY3Vyc29yIHRoYXQgZGlkIG5vdA0KPiA+ID4g aW50ZXJzZWN0DQo+ID4gPiB0aGUgYXJlYSBvZiBpdHMgb3duIHBpcGUgY2FuIGVuZCB1cCBwYXJ0 aWFsbHkgY292ZXJlZCBieSB0aGUNCj4gPiA+IG1lcmdlZA0KPiA+ID4gb25lLiBSdW4gdGhlIGVh cmx5IHRyYW5zcG9ydCBhbmQgZ3JhbnVsYXJpdHkgYWxpZ25tZW50IG9uIHRoZQ0KPiA+ID4gbWVy Z2VkDQo+ID4gPiBhcmVhIGFuZCBtZXJnZSBhZ2FpbiBhcyBsb25nIGFzIHRoYXQga2VlcHMgZ3Jv d2luZyBpdC4NCj4gPiA+IA0KPiA+ID4gVGhlIHBsYW5lIHN1cHBvcnQgY2hlY2sgaGFzIHRvIHJ1 biBiZWZvcmUgdGhlIG1lcmdlLCBzbyBpdCBub3cNCj4gPiA+IGNvdmVycw0KPiA+ID4gZXZlcnkg dmlzaWJsZSBwbGFuZSBpbnN0ZWFkIG9mIG9ubHkgdGhlIG9uZXMgaW50ZXJzZWN0aW5nIHRoZQ0K PiA+ID4gYXJlYS4NCj4gPiANCj4gPiBPbmUgbW9yZSB0aGluZyBpbiB0aGlzIHBhdGNoIGdlbmVy YWxseS4NCj4gPiBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFuZXMNCj4gPiBkb2Vzbid0IHdv cmsgZm9yIHNlY29uZGFyeSBwaXBlLg0KPiA+IA0KPiA+IFRoZXJlIGlzIGEgc29sdXRpb24gZm9y IHRoaXMgaW4gbXkgcGF0Y2ggc2V0IGFsdGhvdWdodCBub3QNCj4gPiBvcmlnaW5hbGx5DQo+ID4g dGFyZ2V0ZWQgZm9yIHRoZSBwdXJwb3NlOg0KPiA+IA0KPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmZy ZWVkZXNrdG9wLm9yZy9wYXRjaC83NTcwMDIvP3Nlcmllcz0xNzUxODEmcmV2PTENCj4gPiANCj4g PiBJZiB3ZSBhcmUgdGFyZ2V0aW5nIHRvIG1lcmdlIHlvdXIgc2V0IGZpcnN0OiBtYXliZSB5b3Ug Y291bGQgdGFrZQ0KPiA+IHRoZQ0KPiA+IHBhdGNoIGFzIGEgcGFydCBvZiB5b3VyIHNldD8NCj4g DQo+IENvdWxkIHRoaXMgcGF0Y2ggYmUgbWVyZ2VkIGFzIHN0YW5kYWxvbmUgYmVmb3JlIHRoaXMg c2VyaWVzPyBJIGNvdWxkDQo+IHJlYmFzZSB0aGlzIHNlcmllcyBvbiB0b3Agb2YgaXQuDQoNCkkg dGhpbmsgd2UgY2FuIGRvIHRoYXQgYXMgd2VsbC4gSSB3aWxsIHNlbmQgaXQgc2VwYXJhdGVseSBz byB3ZSBnZXQNCnJlc3VsdHMgZm9yIHRoYXQgcGF0Y2ggYWxvbmUuDQoNCkJSLA0KSm91bmkgSMO2 Z2FuZGVyDQoNCj4gDQo+ID4gDQo+ID4gQlIsDQo+ID4gSm91bmkgSMO2Z2FuZGVyDQo+ID4gPiAN Cj4gPiA+IHYyOiBEbyBub3QgZm9yY2UgYSBmdWxsIHVwZGF0ZSB3aGVuIGEgam9pbmVkIHBpcGUg aGFzIG5vIGRhbWFnZQ0KPiA+ID4gb2YNCj4gPiA+IGl0cw0KPiA+ID4gwqDCoMKgIG93biwgc2tp cCB0aGUgZW1wdHkgcGlwZXMgaW4gdGhlIG1lcmdlIChKb3VuaSkNCj4gPiA+IMKgwqDCoCBSZWRv IHRoZSBlYXJseSB0cmFuc3BvcnQgYWxpZ25tZW50IG9uIHRoZSBtZXJnZWQgYXJlYSwgYQ0KPiA+ ID4gY3Vyc29yDQo+ID4gPiBjYW4NCj4gPiA+IMKgwqDCoCBlbmQgdXAgcGFydGlhbGx5IGNvdmVy ZWQgb25jZSB0aGUgYXJlYSBncm93cyAoSm91bmkpDQo+ID4gPiDCoMKgwqAgQnJlYWsgb3V0IG9m IHRoZSBjb21wdXRlIGxvb3Agb24gdGhlIGZpcnN0IGZ1bGwgdXBkYXRlDQo+ID4gPiAoSm91bmkp DQo+ID4gPiANCj4gPiA+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBp bnRlbC5jb20+DQo+ID4gPiAtLS0NCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9wc3IuY8KgIHwgMjc0DQo+ID4gPiArKysrKysrKysrKysrKysrLS0tLQ0KPiA+ID4g LS0NCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmMgfMKg wqAgMiArLQ0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2Mu aCB8wqDCoCAyICstDQo+ID4gPiDCoDMgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyks IDgwIGRlbGV0aW9ucygtKQ0KPiA+ID4gDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ID4gPiBpbmRleCA2ZWMxMzczN2UyNDguLmMyNTZkM2M4 NzYyNiAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfcHNyLmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf cHNyLmMNCj4gPiA+IEBAIC0yNjU3LDkgKzI2NTcsMTEgQEAgdm9pZA0KPiA+ID4gaW50ZWxfcHNy Ml9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKHN0cnVjdCBpbnRlbF9kc2IgKmRzYiwNCj4gPiA+ IMKgCQlicmVhazsNCj4gPiA+IMKgCX0NCj4gPiA+IA0KPiA+ID4gLQlpbnRlbF9kZV93cml0ZV9k c2IoZGlzcGxheSwgZHNiLA0KPiA+ID4gLQkJCcKgwqAgUFNSMl9NQU5fVFJLX0NUTChkaXNwbGF5 LA0KPiA+ID4gY3B1X3RyYW5zY29kZXIpLA0KPiA+ID4gLQkJCcKgwqAgY3J0Y19zdGF0ZS0+cHNy Ml9tYW5fdHJhY2tfY3RsKTsNCj4gPiA+ICsJLyogVGhlIGpvaW5lZCBwaXBlcyBkcml2ZSBvbmUg dHJhbnNjb2Rlciwgc28gcHJvZ3JhbSBpdA0KPiA+ID4gb25jZS4gKi8NCj4gPiA+ICsJaWYgKCFp bnRlbF9jcnRjX2lzX2pvaW5lcl9zZWNvbmRhcnkoY3J0Y19zdGF0ZSkpDQo+ID4gPiArCQlpbnRl bF9kZV93cml0ZV9kc2IoZGlzcGxheSwgZHNiLA0KPiA+ID4gKwkJCQnCoMKgIFBTUjJfTUFOX1RS S19DVEwoZGlzcGxheSwNCj4gPiA+IGNwdV90cmFuc2NvZGVyKSwNCj4gPiA+ICsJCQkJwqDCoCBj cnRjX3N0YXRlLQ0KPiA+ID4gPnBzcjJfbWFuX3RyYWNrX2N0bCk7DQo+ID4gPiANCj4gPiA+IMKg CWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJfc3VfcmVnaW9uX2V0KQ0KPiA+ID4gwqAJCXJl dHVybjsNCj4gPiA+IEBAIC0yNjcwLDcgKzI2NzIsNyBAQCB2b2lkDQo+ID4gPiBpbnRlbF9wc3Iy X3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoc3RydWN0IGludGVsX2RzYiAqZHNiLA0KPiA+ID4g wqAJaWYgKCFjcnRjX3N0YXRlLT5kc2MuY29tcHJlc3Npb25fZW5hYmxlKQ0KPiA+ID4gwqAJCXJl dHVybjsNCj4gPiA+IA0KPiA+ID4gLQlpbnRlbF9kc2Nfc3VfZXRfcGFyYW1ldGVyc19jb25maWd1 cmUoZHNiLCBlbmNvZGVyLA0KPiA+ID4gY3J0Y19zdGF0ZSwNCj4gPiA+ICsJaW50ZWxfZHNjX3N1 X2V0X3BhcmFtZXRlcnNfY29uZmlndXJlKGRzYiwgY3J0Y19zdGF0ZSwNCj4gPiA+IA0KPiA+ID4g ZHJtX3JlY3RfaGVpZ2h0KCZjcnRjX3N0YXRlLT5wc3IyX3N1X2FyZWEpKTsNCj4gPiA+IMKgfQ0K PiA+ID4gDQo+ID4gPiBAQCAtMjkwMCwxMiArMjkwMiwxMCBAQA0KPiA+ID4gaW50ZWxfcHNyX2Fw cGx5X3N1X2FyZWFfd29ya2Fyb3VuZHMoc3RydWN0DQo+ID4gPiBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQ0KPiA+ID4gwqAJCWludGVsX3Bzcl9hcHBseV9wcl9saW5rX29uX3N1X3dhKGNy dGNfc3RhdGUpOw0KPiA+ID4gwqB9DQo+ID4gPiANCj4gPiA+IC1pbnQgaW50ZWxfcHNyMl9zZWxf ZmV0Y2hfdXBkYXRlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUNCj4gPiA+ICpzdGF0ZSwNCj4g PiA+IC0JCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpDQo+ID4gPiArc3RhdGljIGludCBwc3Iy X3NlbF9mZXRjaF9jb21wdXRlX3N1X2FyZWEoc3RydWN0DQo+ID4gPiBpbnRlbF9hdG9taWNfc3Rh dGUNCj4gPiA+ICpzdGF0ZSwNCj4gPiA+ICsJCQkJCcKgIHN0cnVjdCBpbnRlbF9jcnRjDQo+ID4g PiAqY3J0YywNCj4gPiA+ICsJCQkJCcKgIGJvb2wgKmZ1bGxfdXBkYXRlKQ0KPiA+ID4gwqB7DQo+ ID4gPiAtCXN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5ID0gdG9faW50ZWxfZGlzcGxheShz dGF0ZSk7DQo+ID4gPiAtCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZSA9DQo+ID4gPiAtCQlpbnRlbF9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRlLCBj cnVhcGkNCj4gPiA+IHBsYW5lDQo+ID4gPiBtYXNrdWFwaSBwbGFuZSBtYXNrdGMpOw0KPiA+ID4g wqAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQ0KPiA+ID4gaW50ZWxfYXRv bWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7DQo+ID4gPiDCoAlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSwNCj4gPiA+ICpvbGRfcGxhbmVfc3RhdGU7 DQo+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOw0KPiA+ID4gQEAgLTI5MTUsMjgg KzI5MTUsMTMgQEAgaW50IGludGVsX3BzcjJfc2VsX2ZldGNoX3VwZGF0ZShzdHJ1Y3QNCj4gPiA+ IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gPiDCoAkJLngyID0gY3J0Y19zdGF0ZS0+ aHcucGlwZV9tb2RlLmNydGNfaGRpc3BsYXksDQo+ID4gPiDCoAkJLnkyID0gY3J0Y19zdGF0ZS0+ aHcucGlwZV9tb2RlLmNydGNfdmRpc3BsYXksDQo+ID4gPiDCoAl9Ow0KPiA+ID4gLQlib29sIGZ1 bGxfdXBkYXRlID0gZmFsc2UsIHN1X2FyZWFfY2hhbmdlZDsNCj4gPiA+IMKgCWludCBpLCByZXQ7 DQo+ID4gPiANCj4gPiA+IC0JLyoNCj4gPiA+IC0JICogU2VsZWN0aXZlIGZldGNoIGlzIG5vdCBh bHdheXMgdXNhYmxlLCBmb3IgaW5zdGFuY2UgaXQNCj4gPiA+IGlzDQo+ID4gPiBkcm9wcGVkDQo+ ID4gPiAtCSAqIHdoaWxlIHBpcGUgQ1JDIGlzIGFjdGl2ZS4gVGhlIHBsYW5lcyBrZWVwIHRoZWly DQo+ID4gPiBzZWxlY3RpdmUNCj4gPiA+IGZldGNoDQo+ID4gPiAtCSAqIGVuYWJsZSBiaXQgc2V0 IGluIGhhcmR3YXJlIG92ZXIgdGhhdCwgYW5kIGEgcGxhbmUNCj4gPiA+IGRpc2FibGVkIHdoaWxl DQo+ID4gPiAtCSAqIHNlbGVjdGl2ZSBmZXRjaCBpcyBvZmYgbmV2ZXIgZ2V0cyB0aGUgYml0IGNs ZWFyZWQuDQo+ID4gPiBPbmNlDQo+ID4gPiBzZWxlY3RpdmUNCj4gPiA+IC0JICogZmV0Y2ggY29t ZXMgYmFjayB0aGUgaGFyZHdhcmUgd291bGQgcmVzdW1lIGZldGNoaW5nDQo+ID4gPiBmb3IgYQ0K PiA+ID4gcGxhbmUgdGhhdA0KPiA+ID4gLQkgKiBpcyBubyBsb25nZXIgZW5hYmxlZCBhbmQga2Vl cCBpdHMgRERCIHJhbmdlIHJlc2VydmVkLA0KPiA+ID4gc28NCj4gPiA+IGhhdmUgdGhlDQo+ID4g PiAtCSAqIHBsYW5lIHVwZGF0ZSBkcm9wIHRoZSBiaXQgZm9yIGV2ZXJ5IHBsYW5lIG9mIHRoZSBw aXBlDQo+ID4gPiBhcw0KPiA+ID4gc2VsZWN0aXZlDQo+ID4gPiAtCSAqIGZldGNoIGlzIHR1cm5l ZCBvZmYuDQo+ID4gPiAtCSAqLw0KPiA+ID4gLQljcnRjX3N0YXRlLT5jbGVhcl9wc3IyX3NlbF9m ZXRjaCA9IG9sZF9jcnRjX3N0YXRlLQ0KPiA+ID4gPiBlbmFibGVfcHNyMl9zZWxfZmV0Y2ggJiYN Cj4gPiA+IC0JCSFjcnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2g7DQo+ID4gPiAtDQo+ ID4gPiAtCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoKQ0KPiA+ID4gLQkJ cmV0dXJuIDA7DQo+ID4gPiArCSpmdWxsX3VwZGF0ZSA9IGZhbHNlOw0KPiA+ID4gDQo+ID4gPiDC oAlpZiAoIXBzcjJfc2VsX2ZldGNoX3BpcGVfc3RhdGVfc3VwcG9ydGVkKGNydGNfc3RhdGUpKSB7 DQo+ID4gPiAtCQlmdWxsX3VwZGF0ZSA9IHRydWU7DQo+ID4gPiAtCQlnb3RvIHNraXBfc2VsX2Zl dGNoX3NldF9sb29wOw0KPiA+ID4gKwkJKmZ1bGxfdXBkYXRlID0gdHJ1ZTsNCj4gPiA+ICsJCXJl dHVybiAwOw0KPiA+ID4gwqAJfQ0KPiA+ID4gDQo+ID4gPiDCoAljcnRjX3N0YXRlLT5wc3IyX3N1 X2FyZWEueDEgPSAwOw0KPiA+ID4gQEAgLTI5NjMsNyArMjk0OCw3IEBAIGludCBpbnRlbF9wc3Iy X3NlbF9mZXRjaF91cGRhdGUoc3RydWN0DQo+ID4gPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl LA0KPiA+ID4gwqAJCQljb250aW51ZTsNCj4gPiA+IA0KPiA+ID4gwqAJCWlmDQo+ID4gPiAoIXBz cjJfc2VsX2ZldGNoX3BsYW5lX3N0YXRlX3N1cHBvcnRlZChuZXdfcGxhbmVfc3RhdGUpKSB7DQo+ ID4gPiAtCQkJZnVsbF91cGRhdGUgPSB0cnVlOw0KPiA+ID4gKwkJCSpmdWxsX3VwZGF0ZSA9IHRy dWU7DQo+ID4gPiDCoAkJCWJyZWFrOw0KPiA+ID4gwqAJCX0NCj4gPiA+IA0KPiA+ID4gQEAgLTMw MTMsNTUgKzI5OTgsMTI4IEBAIGludCBpbnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUoc3RydWN0 DQo+ID4gPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiA+ID4gwqAJCWNsaXBfYXJlYV91 cGRhdGUoJmNydGNfc3RhdGUtPnBzcjJfc3VfYXJlYSwNCj4gPiA+ICZkYW1hZ2VkX2FyZWEsICZk aXNwbGF5X2FyZWEpOw0KPiA+ID4gwqAJfQ0KPiA+ID4gDQo+ID4gPiAtCS8qDQo+ID4gPiAtCSAq IFRPRE86IEZvciBub3cgd2UgYXJlIGp1c3QgdXNpbmcgZnVsbCB1cGRhdGUgaW4gY2FzZQ0KPiA+ ID4gLQkgKiBzZWxlY3RpdmUgZmV0Y2ggYXJlYSBjYWxjdWxhdGlvbiBmYWlscy4gVG8gb3B0aW1p emUNCj4gPiA+IHRoaXMNCj4gPiA+IHdlDQo+ID4gPiAtCSAqIHNob3VsZCBpZGVudGlmeSBjYXNl cyB3aGVyZSB0aGlzIGhhcHBlbnMgYW5kIGZpeCB0aGUNCj4gPiA+IGFyZWENCj4gPiA+IC0JICog Y2FsY3VsYXRpb24gZm9yIHRob3NlLg0KPiA+ID4gLQkgKi8NCj4gPiA+IC0JaWYgKGNydGNfc3Rh dGUtPnBzcjJfc3VfYXJlYS55MSA9PSAtMSkgew0KPiA+ID4gLQkJZHJtX2luZm9fb25jZShkaXNw bGF5LT5kcm0sDQo+ID4gPiAtCQkJwqDCoMKgwqDCoCAiU2VsZWN0aXZlIGZldGNoIGFyZWEgY2Fs Y3VsYXRpb24NCj4gPiA+IGZhaWxlZCBpbiBwaXBlICVjXG4iLA0KPiA+ID4gLQkJCcKgwqDCoMKg wqAgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsNCj4gPiA+IC0JCWZ1bGxfdXBkYXRlID0gdHJ1ZTsN Cj4gPiA+IC0JfQ0KPiA+ID4gLQ0KPiA+ID4gLQlpZiAoZnVsbF91cGRhdGUpDQo+ID4gPiAtCQln b3RvIHNraXBfc2VsX2ZldGNoX3NldF9sb29wOw0KPiA+ID4gKwlpZiAoKmZ1bGxfdXBkYXRlKQ0K PiA+ID4gKwkJcmV0dXJuIDA7DQo+ID4gPiANCj4gPiA+IC0JaW50ZWxfcHNyX2FwcGx5X3N1X2Fy ZWFfd29ya2Fyb3VuZHMoY3J0Y19zdGF0ZSk7DQo+ID4gPiArCS8qIFRoZSBXL0FzIGJlbG93IHdv dWxkIHR1cm4gYW4gZW1wdHkgYXJlYSBpbnRvIGEgYm9ndXMNCj4gPiA+IG9uZS4NCj4gPiA+ICov DQo+ID4gPiArCWlmIChjcnRjX3N0YXRlLT5wc3IyX3N1X2FyZWEueTEgIT0gLTEpDQo+ID4gPiAr CQlpbnRlbF9wc3JfYXBwbHlfc3VfYXJlYV93b3JrYXJvdW5kcyhjcnRjX3N0YXRlKTsNCj4gPiA+ IA0KPiA+ID4gwqAJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKCZzdGF0ZS0+ YmFzZSwNCj4gPiA+ICZjcnRjLQ0KPiA+ID4gPiBiYXNlKTsNCj4gPiA+IMKgCWlmIChyZXQpDQo+ ID4gPiDCoAkJcmV0dXJuIHJldDsNCj4gPiA+IA0KPiA+ID4gLQlkbyB7DQo+ID4gPiAtCQlib29s IGN1cnNvcl9pbl9zdV9hcmVhID0gZmFsc2U7DQo+ID4gPiArCS8qIFRoZSBsb29wIGFib3ZlIG5l dmVyIHNhdyB0aGUgcGxhbmVzIHB1bGxlZCBpbiBqdXN0DQo+ID4gPiBub3cuDQo+ID4gPiAqLw0K PiA+ID4gKwlmb3JfZWFjaF9uZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLA0K PiA+ID4gbmV3X3BsYW5lX3N0YXRlLCBpKSB7DQo+ID4gPiArCQlpZiAobmV3X3BsYW5lX3N0YXRl LT5ody5jcnRjICE9IGNydGNfc3RhdGUtDQo+ID4gPiA+IHVhcGkuY3J0YyB8fA0KPiA+ID4gKwkJ wqDCoMKgICFuZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkNCj4gPiA+ICsJCQljb250aW51 ZTsNCj4gPiA+IA0KPiA+ID4gLQkJLyoNCj4gPiA+IC0JCSAqIEFkanVzdCBzdSBhcmVhIHRvIGNv dmVyIGN1cnNvciBmdWxseSBhcw0KPiA+ID4gbmVjZXNzYXJ5DQo+ID4gPiAtCQkgKiAoZWFybHkg dHJhbnNwb3J0KS4gVGhpcyBuZWVkcyB0byBiZSBkb25lDQo+ID4gPiBhZnRlcg0KPiA+ID4gLQkJ ICogZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzIHRvIGVuc3VyZQ0KPiA+ID4gdmlzaWJs ZQ0KPiA+ID4gLQkJICogY3Vyc29yIGlzIGFkZGVkIGludG8gYWZmZWN0ZWQgcGxhbmVzIGV2ZW4N Cj4gPiA+IHdoZW4NCj4gPiA+IC0JCSAqIGN1cnNvciBpcyBub3QgdXBkYXRlZCBieSBpdHNlbGYu DQo+ID4gPiAtCQkgKi8NCj4gPiA+IC0JCWludGVsX3BzcjJfc2VsX2ZldGNoX2V0X2FsaWdubWVu dChzdGF0ZSwgY3J0YywNCj4gPiA+ICZkaXNwbGF5X2FyZWEsDQo+ID4gPiAtDQo+ID4gPiAmY3Vy c29yX2luX3N1X2FyZWEpOw0KPiA+ID4gKwkJaWYNCj4gPiA+ICghcHNyMl9zZWxfZmV0Y2hfcGxh bmVfc3RhdGVfc3VwcG9ydGVkKG5ld19wbGFuZV9zdGF0ZSkpIHsNCj4gPiA+ICsJCQkqZnVsbF91 cGRhdGUgPSB0cnVlOw0KPiA+ID4gKwkJCXJldHVybiAwOw0KPiA+ID4gKwkJfQ0KPiA+ID4gKwl9 DQo+ID4gPiANCj4gPiA+IC0JCXN1X2FyZWFfY2hhbmdlZCA9DQo+ID4gPiBpbnRlbF9wc3IyX3Nl bF9mZXRjaF9waXBlX2FsaWdubWVudChjcnRjX3N0YXRlKTsNCj4gPiA+ICsJcmV0dXJuIDA7DQo+ ID4gPiArfQ0KPiA+ID4gDQo+ID4gPiAtCQkvKg0KPiA+ID4gLQkJICogSWYgdGhlIGN1cnNvciB3 YXMgb3V0c2lkZSB0aGUgU1UgYXJlYSBiZWZvcmUNCj4gPiA+IC0JCSAqIGFsaWdubWVudCwgdGhl IGFsaWdubWVudCBzdGVwICh3aGljaCBvbmx5DQo+ID4gPiBleHBhbmRzDQo+ID4gPiAtCQkgKiBT VSkgbWF5IHB1bGwgdGhlIGN1cnNvciBwYXJ0aWFsbHkgaW5zaWRlLCBzbw0KPiA+ID4gd2UNCj4g PiA+IC0JCSAqIG11c3QgcnVuIEVUIGFsaWdubWVudCBhZ2FpbiB0byBmdWxseSBjb3Zlcg0KPiA+ ID4gaXQuDQo+ID4gPiBCdXQNCj4gPiA+IC0JCSAqIGlmIHRoZSBjdXJzb3Igd2FzIGFscmVhZHkg ZnVsbHkgaW5zaWRlIGJlZm9yZQ0KPiA+ID4gLQkJICogYWxpZ25tZW50LCBleHBhbmRpbmcgdGhl IFNVIGFyZWEgd29uJ3QgY2hhbmdlDQo+ID4gPiB0aGF0LA0KPiA+ID4gLQkJICogc28gbm8gZnVy dGhlciB3b3JrIGlzIG5lZWRlZC4NCj4gPiA+IC0JCSAqLw0KPiA+ID4gLQkJaWYgKGN1cnNvcl9p bl9zdV9hcmVhKQ0KPiA+ID4gLQkJCWJyZWFrOw0KPiA+ID4gKy8qDQo+ID4gPiArICogT25lIHRy YW5zY29kZXIgbWVhbnMgb25lIFNVIHJlZ2lvbi4gSm9pbmluZyBzcGxpdHMgdGhlIGltYWdlDQo+ ID4gPiBob3Jpem9udGFsbHksIHNvDQo+ID4gPiArICogdGhlIHBpcGVzIHNoYXJlIHRoZSBZIHJh bmdlLiBSZXR1cm5zIGZhbHNlIGlmIG5vIGpvaW5lZCBwaXBlDQo+ID4gPiBoYXMNCj4gPiA+IGFu eSBkYW1hZ2UuDQo+ID4gPiArICovDQo+ID4gPiArc3RhdGljIGJvb2wgcHNyMl9zZWxfZmV0Y2hf bWVyZ2Vfc3VfYXJlYShzdHJ1Y3QNCj4gPiA+IGludGVsX2F0b21pY19zdGF0ZQ0KPiA+ID4gKnN0 YXRlLA0KPiA+ID4gKwkJCQkJIHU4IGpvaW5lZF9waXBlcykNCj4gPiA+ICt7DQo+ID4gPiArCXN0 cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5ID0gdG9faW50ZWxfZGlzcGxheShzdGF0ZSk7DQo+ ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOw0KPiA+ID4gKwlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YzsNCj4gPiA+ICsJaW50IHkxID0gSU5UX01BWCwgeTIgPSBJTlRf TUlOOw0KPiA+ID4gKw0KPiA+ID4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjX2luX3BpcGVfbWFzayhk aXNwbGF5LCBjcnRjLA0KPiA+ID4gam9pbmVkX3BpcGVzKSB7DQo+ID4gPiArCQljcnRjX3N0YXRl ID0NCj4gPiA+IGludGVsX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsDQo+ID4gPiBj cnRjKTsNCj4gPiA+ICsNCj4gPiA+ICsJCS8qIEFuIGVtcHR5IGFyZWEgbXVzdCBub3QgZHJhZyB0 aGUgbWVyZ2VkIG9uZQ0KPiA+ID4gZG93bi4NCj4gPiA+ICovDQo+ID4gPiArCQlpZiAoY3J0Y19z dGF0ZS0+cHNyMl9zdV9hcmVhLnkxID09IC0xKQ0KPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4g Kw0KPiA+ID4gKwkJeTEgPSBtaW4oeTEsIGNydGNfc3RhdGUtPnBzcjJfc3VfYXJlYS55MSk7DQo+ ID4gPiArCQl5MiA9IG1heCh5MiwgY3J0Y19zdGF0ZS0+cHNyMl9zdV9hcmVhLnkyKTsNCj4gPiA+ ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoeTEgPT0gSU5UX01BWCkNCj4gPiA+ICsJCXJldHVy biBmYWxzZTsNCj4gPiA+ICsNCj4gPiA+ICsJZm9yX2VhY2hfaW50ZWxfY3J0Y19pbl9waXBlX21h c2soZGlzcGxheSwgY3J0YywNCj4gPiA+IGpvaW5lZF9waXBlcykgew0KPiA+ID4gKwkJY3J0Y19z dGF0ZSA9DQo+ID4gPiBpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLA0KPiA+ ID4gY3J0Yyk7DQo+ID4gPiArDQo+ID4gPiArCQljcnRjX3N0YXRlLT5wc3IyX3N1X2FyZWEueTEg PSB5MTsNCj4gPiA+ICsJCWNydGNfc3RhdGUtPnBzcjJfc3VfYXJlYS55MiA9IHkyOw0KPiA+ID4g Kwl9DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiB0cnVlOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICsvKg0KPiA+ID4gKyAqIE1lcmdpbmcgb25seSBncm93cyB0aGUgYXJlYSwgc28gYSBjdXJz b3IgdGhhdCBtaXNzZWQgaXRzIG93bg0KPiA+ID4gcGlwZSdzIGFyZWEgY2FuDQo+ID4gPiArICog ZW5kIHVwIHBhcnRpYWxseSBjb3ZlcmVkLiBSZWFsaWduIG9uIHRoZSBtZXJnZWQgYXJlYSB1bnRp bCBpdA0KPiA+ID4gc3RvcHMgZ3Jvd2luZy4NCj4gPiA+ICsgKi8NCj4gPiA+ICtzdGF0aWMgdm9p ZCBwc3IyX3NlbF9mZXRjaF9hbGlnbl9zdV9hcmVhKHN0cnVjdA0KPiA+ID4gaW50ZWxfYXRvbWlj X3N0YXRlDQo+ID4gPiAqc3RhdGUsDQo+ID4gPiArCQkJCQkgdTggam9pbmVkX3BpcGVzKQ0KPiA+ ID4gK3sNCj4gPiA+ICsJc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXkgPSB0b19pbnRlbF9k aXNwbGF5KHN0YXRlKTsNCj4gPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7DQo+ID4gPiAr CWJvb2wgc3VfYXJlYV9jaGFuZ2VkOw0KPiA+ID4gKw0KPiA+ID4gKwlkbyB7DQo+ID4gPiArCQlz dV9hcmVhX2NoYW5nZWQgPSBmYWxzZTsNCj4gPiA+ICsNCj4gPiA+ICsJCWZvcl9lYWNoX2ludGVs X2NydGNfaW5fcGlwZV9tYXNrKGRpc3BsYXksIGNydGMsDQo+ID4gPiBqb2luZWRfcGlwZXMpIHsN Cj4gPiA+ICsJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9DQo+ID4gPiAr CQkJCWludGVsX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoDQo+ID4gPiBzdGF0DQo+ID4gPiBl LCBjcnRjKTsNCj4gPiA+ICsJCQlzdHJ1Y3QgZHJtX3JlY3QgZGlzcGxheV9hcmVhID0gew0KPiA+ ID4gKwkJCQkueDEgPSAwLA0KPiA+ID4gKwkJCQkueTEgPSAwLA0KPiA+ID4gKwkJCQkueDIgPSBj cnRjX3N0YXRlLQ0KPiA+ID4gPiBody5waXBlX21vZGUuY3J0Y19oZGlzcGxheSwNCj4gPiA+ICsJ CQkJLnkyID0gY3J0Y19zdGF0ZS0NCj4gPiA+ID4gaHcucGlwZV9tb2RlLmNydGNfdmRpc3BsYXks DQo+ID4gPiArCQkJfTsNCj4gPiA+ICsJCQlzdHJ1Y3QgZHJtX3JlY3Qgb2xkX3N1X2FyZWEgPQ0K PiA+ID4gY3J0Y19zdGF0ZS0NCj4gPiA+ID4gcHNyMl9zdV9hcmVhOw0KPiA+ID4gKwkJCWJvb2wg Y3Vyc29yX2luX3N1X2FyZWEgPSBmYWxzZTsNCj4gPiA+ICsNCj4gPiA+ICsJCQkvKiBOZWVkcyB0 aGUgcGxhbmVzIGFscmVhZHkgcHVsbGVkIGludG8NCj4gPiA+IHRoZQ0KPiA+ID4gc3RhdGUuICov DQo+ID4gPiArCQkJaW50ZWxfcHNyMl9zZWxfZmV0Y2hfZXRfYWxpZ25tZW50KHN0YXRlLA0KPiA+ ID4gY3J0YywgJmRpc3BsYXlfYXJlYSwNCj4gPiA+ICsNCj4gPiA+ICZjdXJzb3JfaW5fc3VfYXJl YSk7DQo+ID4gPiArDQo+ID4gPiArCQkJaW50ZWxfcHNyMl9zZWxfZmV0Y2hfcGlwZV9hbGlnbm1l bnQoY3J0Yw0KPiA+ID4gX3N0YQ0KPiA+ID4gdGUpOw0KPiA+ID4gKw0KPiA+ID4gKwkJCXN1X2Fy ZWFfY2hhbmdlZCB8PQ0KPiA+ID4gIWRybV9yZWN0X2VxdWFscygmY3J0Y19zdGF0ZS0+cHNyMl9z dV9hcmVhLA0KPiA+ID4gKw0KPiA+ID4gJm9sZF9zdV9hcmVhKTsNCj4gPiA+ICsJCX0NCj4gPiA+ ICsNCj4gPiA+ICsJCWlmIChzdV9hcmVhX2NoYW5nZWQpDQo+ID4gPiArCQkJcHNyMl9zZWxfZmV0 Y2hfbWVyZ2Vfc3VfYXJlYShzdGF0ZSwNCj4gPiA+IGpvaW5lZF9waXBlcyk7DQo+ID4gPiDCoAl9 IHdoaWxlIChzdV9hcmVhX2NoYW5nZWQpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0 aWMgaW50IHBzcjJfc2VsX2ZldGNoX2FwcGx5X3N1X2FyZWEoc3RydWN0DQo+ID4gPiBpbnRlbF9h dG9taWNfc3RhdGUNCj4gPiA+ICpzdGF0ZSwNCj4gPiA+ICsJCQkJCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLA0KPiA+ID4gKwkJCQkJYm9vbCBmdWxsX3VwZGF0ZSkNCj4gPiA+ICt7DQo+ID4gPiAr CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0NCj4gPiA+IGludGVsX2F0b21p Y19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOw0KPiA+ID4gKwlzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSwNCj4gPiA+ICpvbGRfcGxhbmVfc3RhdGU7DQo+ ID4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7DQo+ID4gPiArCXN0cnVjdCBkcm1fcmVj dCBkaXNwbGF5X2FyZWEgPSB7DQo+ID4gPiArCQkueDEgPSAwLA0KPiA+ID4gKwkJLnkxID0gMCwN Cj4gPiA+ICsJCS54MiA9IGNydGNfc3RhdGUtPmh3LnBpcGVfbW9kZS5jcnRjX2hkaXNwbGF5LA0K PiA+ID4gKwkJLnkyID0gY3J0Y19zdGF0ZS0+aHcucGlwZV9tb2RlLmNydGNfdmRpc3BsYXksDQo+ ID4gPiArCX07DQo+ID4gPiArCWludCBpOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoZnVsbF91cGRh dGUpIHsNCj4gPiA+ICsJCWNydGNfc3RhdGUtPnBzcjJfc3VfYXJlYSA9IGRpc3BsYXlfYXJlYTsN Cj4gPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ID4gKwl9DQo+ID4gPiANCj4gPiA+IMKgCS8qDQo+ID4g PiDCoAkgKiBOb3cgdGhhdCB3ZSBoYXZlIHRoZSBwaXBlIGRhbWFnZWQgYXJlYSBjaGVjayBpZiBp dA0KPiA+ID4gaW50ZXJzZWN0IHdpdGgNCj4gPiA+IEBAIC0zMDkxLDEyICszMTQ5LDYgQEAgaW50 IGludGVsX3BzcjJfc2VsX2ZldGNoX3VwZGF0ZShzdHJ1Y3QNCj4gPiA+IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsDQo+ID4gPiDCoAkJCWNvbnRpbnVlOw0KPiA+ID4gwqAJCX0NCj4gPiA+IA0K PiA+ID4gLQkJaWYNCj4gPiA+ICghcHNyMl9zZWxfZmV0Y2hfcGxhbmVfc3RhdGVfc3VwcG9ydGVk KG5ld19wbGFuZV9zdGF0ZSkpIHsNCj4gPiA+IC0JCQlmdWxsX3VwZGF0ZSA9IHRydWU7DQo+ID4g PiAtCQkJYnJlYWs7DQo+ID4gPiAtCQl9DQo+ID4gPiAtDQo+ID4gPiAtCQlzZWxfZmV0Y2hfYXJl YSA9ICZuZXdfcGxhbmVfc3RhdGUtDQo+ID4gPiA+IHBzcjJfc2VsX2ZldGNoX2FyZWE7DQo+ID4g PiDCoAkJc2VsX2ZldGNoX2FyZWEtPnkxID0gaW50ZXIueTEgLSBuZXdfcGxhbmVfc3RhdGUtDQo+ ID4gPiA+IHVhcGkuZHN0LnkxOw0KPiA+ID4gwqAJCXNlbF9mZXRjaF9hcmVhLT55MiA9IGludGVy LnkyIC0gbmV3X3BsYW5lX3N0YXRlLQ0KPiA+ID4gPiB1YXBpLmRzdC55MTsNCj4gPiA+IMKgCQlj cnRjX3N0YXRlLT51cGRhdGVfcGxhbmVzIHw9IEJJVChwbGFuZS0+aWQpOw0KPiA+ID4gQEAgLTMx MjAsMTQgKzMxNzIsODAgQEAgaW50IGludGVsX3BzcjJfc2VsX2ZldGNoX3VwZGF0ZShzdHJ1Y3QN Cj4gPiA+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gPiDCoAkJfQ0KPiA+ID4gwqAJ fQ0KPiA+ID4gDQo+ID4gPiAtc2tpcF9zZWxfZmV0Y2hfc2V0X2xvb3A6DQo+ID4gPiAtCWlmIChm dWxsX3VwZGF0ZSkNCj4gPiA+IC0JCWNsaXBfYXJlYV91cGRhdGUoJmNydGNfc3RhdGUtPnBzcjJf c3VfYXJlYSwNCj4gPiA+ICZkaXNwbGF5X2FyZWEsDQo+ID4gPiAtCQkJCSAmZGlzcGxheV9hcmVh KTsNCj4gPiA+IC0NCj4gPiA+ICtvdXQ6DQo+ID4gPiDCoAlwc3IyX21hbl90cmtfY3RsX2NhbGMo Y3J0Y19zdGF0ZSwgZnVsbF91cGRhdGUpOw0KPiA+ID4gwqAJY3J0Y19zdGF0ZS0+cGlwZV9zcmNz el9lYXJseV90cHQgPQ0KPiA+ID4gwqAJCXBzcjJfcGlwZV9zcmNzel9lYXJseV90cHRfY2FsYyhj cnRjX3N0YXRlLA0KPiA+ID4gZnVsbF91cGRhdGUpOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4g MDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAraW50IGludGVsX3BzcjJfc2VsX2ZldGNoX3Vw ZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlDQo+ID4gPiAqc3RhdGUsDQo+ID4gPiArCQkJ CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGludGVs X2Rpc3BsYXkgKmRpc3BsYXkgPSB0b19pbnRlbF9kaXNwbGF5KHN0YXRlKTsNCj4gPiA+ICsJY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlID0NCj4gPiA+ICsJCWlu dGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOw0KPiA+ID4gKwlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9DQo+ID4gPiBpbnRlbF9hdG9taWNfZ2V0 X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsNCj4gPiA+ICsJc3RydWN0IGludGVsX2NydGMg KmpvaW5lZF9jcnRjOw0KPiA+ID4gKwlib29sIGZ1bGxfdXBkYXRlID0gZmFsc2U7DQo+ID4gPiAr CXU4IGpvaW5lZF9waXBlczsNCj4gPiA+ICsJaW50IHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJLyoN Cj4gPiA+ICsJICogU2VsZWN0aXZlIGZldGNoIGlzIG5vdCBhbHdheXMgdXNhYmxlLCBmb3IgaW5z dGFuY2UgaXQNCj4gPiA+IGlzDQo+ID4gPiBkcm9wcGVkDQo+ID4gPiArCSAqIHdoaWxlIHBpcGUg Q1JDIGlzIGFjdGl2ZS4gVGhlIHBsYW5lcyBrZWVwIHRoZWlyDQo+ID4gPiBzZWxlY3RpdmUNCj4g PiA+IGZldGNoDQo+ID4gPiArCSAqIGVuYWJsZSBiaXQgc2V0IGluIGhhcmR3YXJlIG92ZXIgdGhh dCwgYW5kIGEgcGxhbmUNCj4gPiA+IGRpc2FibGVkIHdoaWxlDQo+ID4gPiArCSAqIHNlbGVjdGl2 ZSBmZXRjaCBpcyBvZmYgbmV2ZXIgZ2V0cyB0aGUgYml0IGNsZWFyZWQuDQo+ID4gPiBPbmNlDQo+ ID4gPiBzZWxlY3RpdmUNCj4gPiA+ICsJICogZmV0Y2ggY29tZXMgYmFjayB0aGUgaGFyZHdhcmUg d291bGQgcmVzdW1lIGZldGNoaW5nDQo+ID4gPiBmb3IgYQ0KPiA+ID4gcGxhbmUgdGhhdA0KPiA+ ID4gKwkgKiBpcyBubyBsb25nZXIgZW5hYmxlZCBhbmQga2VlcCBpdHMgRERCIHJhbmdlIHJlc2Vy dmVkLA0KPiA+ID4gc28NCj4gPiA+IGhhdmUgdGhlDQo+ID4gPiArCSAqIHBsYW5lIHVwZGF0ZSBk cm9wIHRoZSBiaXQgZm9yIGV2ZXJ5IHBsYW5lIG9mIHRoZSBwaXBlDQo+ID4gPiBhcw0KPiA+ID4g c2VsZWN0aXZlDQo+ID4gPiArCSAqIGZldGNoIGlzIHR1cm5lZCBvZmYuDQo+ID4gPiArCSAqLw0K PiA+ID4gKwljcnRjX3N0YXRlLT5jbGVhcl9wc3IyX3NlbF9mZXRjaCA9IG9sZF9jcnRjX3N0YXRl LQ0KPiA+ID4gPiBlbmFibGVfcHNyMl9zZWxfZmV0Y2ggJiYNCj4gPiA+ICsJCSFjcnRjX3N0YXRl LT5lbmFibGVfcHNyMl9zZWxfZmV0Y2g7DQo+ID4gPiArDQo+ID4gPiArCWlmICghY3J0Y19zdGF0 ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoKQ0KPiA+ID4gKwkJcmV0dXJuIDA7DQo+ID4gPiArDQo+ ID4gPiArCS8qIFRoZSBqb2luZWQgcGlwZXMgYXJlIGhhbmRsZWQgaW4gb25lIGdvIGZyb20gdGhl DQo+ID4gPiBwcmltYXJ5Lg0KPiA+ID4gKi8NCj4gPiA+ICsJaWYgKGludGVsX2NydGNfaXNfam9p bmVyX3NlY29uZGFyeShjcnRjX3N0YXRlKSkNCj4gPiA+ICsJCXJldHVybiAwOw0KPiA+ID4gKw0K PiA+ID4gKwlqb2luZWRfcGlwZXMgPSBpbnRlbF9jcnRjX2pvaW5lZF9waXBlX21hc2soY3J0Y19z dGF0ZSk7DQo+ID4gPiArDQo+ID4gPiArCWZvcl9lYWNoX2ludGVsX2NydGNfaW5fcGlwZV9tYXNr KGRpc3BsYXksIGpvaW5lZF9jcnRjLA0KPiA+ID4gam9pbmVkX3BpcGVzKSB7DQo+ID4gPiArCQly ZXQgPSBwc3IyX3NlbF9mZXRjaF9jb21wdXRlX3N1X2FyZWEoc3RhdGUsDQo+ID4gPiBqb2luZWRf Y3J0YywNCj4gPiA+ICsJCQkJCQnCoMKgwqDCoA0KPiA+ID4gJmZ1bGxfdXBkYXRlKTsNCj4gPiA+ ICsJCWlmIChyZXQpDQo+ID4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJCS8q IE9uZSBwaXBlIGZhbGxpbmcgYmFjayB0YWtlcyBhbGwgb2YgdGhlbSB3aXRoDQo+ID4gPiBpdC4N Cj4gPiA+ICovDQo+ID4gPiArCQlpZiAoZnVsbF91cGRhdGUpDQo+ID4gPiArCQkJYnJlYWs7DQo+ ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJLyoNCj4gPiA+ICsJICogVE9ETzogRm9yIG5vdyB3 ZSBhcmUganVzdCB1c2luZyBmdWxsIHVwZGF0ZSBpbiBjYXNlDQo+ID4gPiBzZWxlY3RpdmUgZmV0 Y2gNCj4gPiA+ICsJICogYXJlYSBjYWxjdWxhdGlvbiBmYWlscy4gVG8gb3B0aW1pemUgdGhpcyB3 ZSBzaG91bGQNCj4gPiA+IGlkZW50aWZ5IGNhc2VzDQo+ID4gPiArCSAqIHdoZXJlIHRoaXMgaGFw cGVucyBhbmQgZml4IHRoZSBhcmVhIGNhbGN1bGF0aW9uIGZvcg0KPiA+ID4gdGhvc2UuDQo+ID4g PiArCSAqLw0KPiA+ID4gKwlpZiAoIWZ1bGxfdXBkYXRlICYmICFwc3IyX3NlbF9mZXRjaF9tZXJn ZV9zdV9hcmVhKHN0YXRlLA0KPiA+ID4gam9pbmVkX3BpcGVzKSkgew0KPiA+ID4gKwkJZHJtX2lu Zm9fb25jZShkaXNwbGF5LT5kcm0sDQo+ID4gPiArCQkJwqDCoMKgwqDCoCAiU2VsZWN0aXZlIGZl dGNoIGFyZWEgY2FsY3VsYXRpb24NCj4gPiA+IGZhaWxlZCBpbiBwaXBlICVjXG4iLA0KPiA+ID4g KwkJCcKgwqDCoMKgwqAgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsNCj4gPiA+ICsJCWZ1bGxfdXBk YXRlID0gdHJ1ZTsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIWZ1bGxfdXBkYXRl KQ0KPiA+ID4gKwkJcHNyMl9zZWxfZmV0Y2hfYWxpZ25fc3VfYXJlYShzdGF0ZSwNCj4gPiA+IGpv aW5lZF9waXBlcyk7DQo+ID4gPiArDQo+ID4gPiArCWZvcl9lYWNoX2ludGVsX2NydGNfaW5fcGlw ZV9tYXNrKGRpc3BsYXksIGpvaW5lZF9jcnRjLA0KPiA+ID4gam9pbmVkX3BpcGVzKSB7DQo+ID4g PiArCQlyZXQgPSBwc3IyX3NlbF9mZXRjaF9hcHBseV9zdV9hcmVhKHN0YXRlLA0KPiA+ID4gam9p bmVkX2NydGMsIGZ1bGxfdXBkYXRlKTsNCj4gPiA+ICsJCWlmIChyZXQpDQo+ID4gPiArCQkJcmV0 dXJuIHJldDsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gwqAJcmV0dXJuIDA7DQo+ID4gPiDC oH0NCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdmRzYy5jDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfdmRzYy5jDQo+ID4gPiBpbmRleCA4ZjA2YzNhNGQ1NmQuLjI5ZWVjNDRjYTNiMCAxMDA2NDQN Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jDQo+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYw0KPiA+ ID4gQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIGludGVsX2RzY19kcF9wcHNfd3JpdGUoc3RydWN0 DQo+ID4gPiBpbnRlbF9lbmNvZGVyDQo+ID4gPiAqZW5jb2RlciwNCj4gPiA+IMKgCQkJCcKgIHNp emVvZihkcF9kc2NfcHBzX3NkcCkpOw0KPiA+ID4gwqB9DQo+ID4gPiANCj4gPiA+IC12b2lkIGlu dGVsX2RzY19zdV9ldF9wYXJhbWV0ZXJzX2NvbmZpZ3VyZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2Is DQo+ID4gPiBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gPiA+ICt2b2lkIGludGVs X2RzY19zdV9ldF9wYXJhbWV0ZXJzX2NvbmZpZ3VyZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsDQo+ ID4gPiDCoAkJCQkJwqAgY29uc3Qgc3RydWN0DQo+ID4gPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLCBpbnQgc3VfbGluZXMpDQo+ID4gPiDCoHsNCj4gPiA+IMKgCXN0cnVjdCBpbnRlbF9k aXNwbGF5ICpkaXNwbGF5ID0NCj4gPiA+IHRvX2ludGVsX2Rpc3BsYXkoY3J0Y19zdGF0ZSk7DQo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNj LmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmgNCj4g PiA+IGluZGV4IDMzNzJmODY5NDA1NC4uMDhhM2ZmZWRiOGVjIDEwMDY0NA0KPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmgNCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5oDQo+ID4gPiBAQCAtMzgsNyAr MzgsNyBAQCB2b2lkIGludGVsX2RzY19kc2lfcHBzX3dyaXRlKHN0cnVjdA0KPiA+ID4gaW50ZWxf ZW5jb2Rlcg0KPiA+ID4gKmVuY29kZXIsDQo+ID4gPiDCoAkJCcKgwqDCoMKgIGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlDQo+ID4gPiAqY3J0Y19zdGF0ZSk7DQo+ID4gPiDCoHZvaWQgaW50 ZWxfZHNjX2RwX3Bwc193cml0ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gPiA+ IMKgCQkJwqDCoMKgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ID4gPiAqY3J0Y19z dGF0ZSk7DQo+ID4gPiAtdm9pZCBpbnRlbF9kc2Nfc3VfZXRfcGFyYW1ldGVyc19jb25maWd1cmUo c3RydWN0IGludGVsX2RzYiAqZHNiLA0KPiA+ID4gc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsDQo+ID4gPiArdm9pZCBpbnRlbF9kc2Nfc3VfZXRfcGFyYW1ldGVyc19jb25maWd1cmUoc3Ry dWN0IGludGVsX2RzYiAqZHNiLA0KPiA+ID4gwqAJCQkJCcKgIGNvbnN0IHN0cnVjdA0KPiA+ID4g aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgaW50IHN1X2xpbmVzKTsNCj4gPiA+IMKgdm9p ZCBpbnRlbF92ZHNjX3N0YXRlX2R1bXAoc3RydWN0IGRybV9wcmludGVyICpwLCBpbnQgaW5kZW50 LA0KPiA+ID4gwqAJCQnCoMKgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ID4gPiAq Y3J0Y19zdGF0ZSk7DQo+IA0KDQo=