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 A975E109E527 for ; Wed, 25 Mar 2026 22:25:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6761D10E8D2; Wed, 25 Mar 2026 22:25:30 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="G9rcKNuJ"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by gabe.freedesktop.org (Postfix) with ESMTPS id 40FFC10E899 for ; Wed, 25 Mar 2026 22:25:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774477528; x=1806013528; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=B5Ve+cWh7BcxBtpRi73XmIGAg8KrPp0CwleCa0H/z2A=; b=G9rcKNuJnoi7Q7WM/8xbL7ma+by1WK91ZPqrjDzu4BlNo3Li1y4liudQ DaLTEZ0pcjvsXQL9snWbz5dD9sWJAuc7W3HTL49lUAjUo9nFfhgf5w87m xDjrHR6Tr0nrQYPEFc1Bdd38e9CGaMm0SrwwOQZzx0NSWYtPsNnMggXq2 tX0I/x4dIz/4KUPgfmMeT18eaGr6YDSzwxlf7Iqs1n/ajyhfSTOzfac8/ Wj2ptpJrJ9aOagQRupym8GESJog+7TonUBXTQziDmNMZ1meFzIVuFC6Nl kpSwrNUIia3nOC512R2b5vdVwtQYAoDUN2+5xhpYNUvUXY2PJ3/h+KmuN Q==; X-CSE-ConnectionGUID: GE+3anBASzCivYik5hg4VA== X-CSE-MsgGUID: Vu6/gXahRD6aUL5DQleokw== X-IronPort-AV: E=McAfee;i="6800,10657,11740"; a="75490132" X-IronPort-AV: E=Sophos;i="6.23,140,1770624000"; d="scan'208";a="75490132" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2026 15:25:27 -0700 X-CSE-ConnectionGUID: xcBVTwafSYW8hB/IbSMRpQ== X-CSE-MsgGUID: kKm487Y6R+2Xync51vf/Cg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,140,1770624000"; d="scan'208";a="224832103" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa008.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2026 15:25:28 -0700 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 25 Mar 2026 15:25:27 -0700 Received: from fmsedg903.ED.cps.intel.com (10.1.192.145) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Wed, 25 Mar 2026 15:25:27 -0700 Received: from SA9PR02CU001.outbound.protection.outlook.com (40.93.196.1) by edgegateway.intel.com (192.55.55.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 25 Mar 2026 15:25:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=U91SiLV9Z1nw0RIgesoD608VqmybPhB5OGmsi3ObJ2VPhSutQSr8+Y35C77E3gnxMkpGrUQBBa98nVJHj/fwqsw06OMUKhkNIHT6AS8NaR6uAdzuORVxh+okneu1VRM9RsBhLgImrpY6VEHTzIxYqOi6bQ/gatMDEq4KaSR0gvMPDrOO8o6xAdVs9E061t6Sm6Xrv55Ym0Xg7SZRkp8Qiw9ljm5HkpQvPvWz05J3d1Z0nCm18+tb6nS9n6Cb4D0XLFwWQr4O8h2mdkT67qV/XeuZnQsnjqEVwdDh00tHBQIQhrDDNIOPRLuVWwiqjjlOu2DsYdYzakS12QljfWHQLA== 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=B5Ve+cWh7BcxBtpRi73XmIGAg8KrPp0CwleCa0H/z2A=; b=B8vbkt/xTQnwdGJvP/+bBMlQ/wqP6byMVbftGeoX1fIzYm9mMDOgxZityYy9Nf364QPA+Abr+0Z6uPVkXiJ9yNWQ3ITAiK1/JoUfJSvo3hYrcLs4QDhdGlcmUcYunWgC7nZSv1Ok8zUICkI6G3ckAgxFsar1VB8F3ceTYFg9djVKlOBFw0RoHXi0Idax2rvPKxM9X8zzTdNRFVo7xVuWtjptmSsK7Bc7JcJMhtKST42GrUo/5ECeVjBx30SiX/tgIuY3+IoqBEANQUhL5BKsA15Kr79Rple8St0ph+wVTpo+r19kiqCHhQzQW+E5t4veSXgKtvLgNuP44pWZm+wfLw== 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 DM8PR11MB5573.namprd11.prod.outlook.com (2603:10b6:8:3b::7) by SN7PR11MB7996.namprd11.prod.outlook.com (2603:10b6:806:2e3::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 22:25:22 +0000 Received: from DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::6a14:6aa3:4339:4415]) by DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::6a14:6aa3:4339:4415%5]) with mapi id 15.20.9769.004; Wed, 25 Mar 2026 22:25:22 +0000 From: "Summers, Stuart" To: "Brost, Matthew" CC: "intel-xe@lists.freedesktop.org" , "Yang, Fei" Subject: Re: [PATCH] drm/xe: Wait for HW clearance before issuing the next TLB inval. Thread-Topic: [PATCH] drm/xe: Wait for HW clearance before issuing the next TLB inval. Thread-Index: AQHctmSEO5zpufOzFUqgugTO0yAsGLWzXqSAgAav+ICABCFYAIAAA8mAgAABh4CAAANHgIAAKLOAgAE+xwCAADjEAIAABvaA Date: Wed, 25 Mar 2026 22:25:22 +0000 Message-ID: References: <20260317232133.4106716-1-fei.yang@intel.com> <6a481f4d814c4247dcb62929b72e153ab7905cc7.camel@intel.com> <702f79d4601bcf9dce128fe47422f24d830ffe6f.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8PR11MB5573:EE_|SN7PR11MB7996:EE_ x-ms-office365-filtering-correlation-id: 44525c64-dd8c-495b-456a-08de8abd67c3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|18002099003|56012099003|22082099003|38070700021; x-microsoft-antispam-message-info: mruy72Us+cnoQylhmpGlRgdjVXICoUtyVKEeDbSEjoEDGjsBI5rsNKfhFxBt7CaTZ6fu+ZAwd4oOdZitaSt6kDZRrRAu418SsrxVT953Eo5jYgyamXQy5fvv0e2Tz8yl1fA4/8W9Tm20i1VZ2tkkPM/07lA1lAHHFh/gtDhJ5PNGV3Ze0qAd+dTWsbG/zZeivvIUBYQ4cKcOZwiZUeB+FPUy8+SobAA1AyUKF+kuaXJOk5nLl2udFLh54AjEJeLWPp/KrtG8sFAfMK2lcL/gGYWsmZnQj/Dv9PuGS9JcxACGci8vV7C3WLBFNLqEcPQ+nsTb6HX9C2kYsvVSBYm5qjeyGL2MPsmkLCEN2Ip0eZe1pVVV8s6uDjaOcOqita+wUPeqO0oPTi1SPEfnW5oPp4FSta52LqOR28pyKXbDrxJf9Pc3Izxp6amxNSp30xUOMuVYvg/DA8V3EV4hd3VTftszTsjnG8lQd8HtrZZ1fAFAgjND2kapJH3oV8XsG8m1Z8k3m3KzmS8TwqNT1GdxFp8JmypBai46B8TzwmnYGPldXAq+Mw1YinWY9hMXVdWzsi264TpYgPNIrP2qR0or2SvRmiYyxQz5JOx1ObumJcHoNypQ8Vpys2itp/CgbkTmNm26LaFHqfaJ7udMzLZqQ/WJeBDjAQUZszyZYah0ZSJ2RyOD3k8yk7FQ20ElM1xAj7CQTlRdvIrkvryH0Wscf6wYRwtSfFD8zA6lH/FFdwLBbEPCp1gUhGHz6OKCKgDD x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5573.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(56012099003)(22082099003)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S3ZGL0RyMk9wTDhuVEdyWlFKbEpFQ1E1U2lIV2FMdFRNYW5RSUFWNVFZcHMw?= =?utf-8?B?RkNTTGNqdklwbEZCcGpFTEdFRzRwYlVkaEo2dEVQQjVqOVZVVHNRa2tpYmp3?= =?utf-8?B?VEJkSVd6RFJzdVdxUWw0ZWZQTXdIWUxwVlV5Y2YvTFhlY2dRY2xmb3hneXhX?= =?utf-8?B?WDB1SlpUd1d1d0R4RGJYb0djeEprOXRiL1FKUGZEcVhVSVNUcm0rV2xjQ0l0?= =?utf-8?B?OTJMRW1NVjNqWVZ0Ym96TGJOVmdEWGRueEwvU0hUWERrVEU2SFlmRDVjUTBY?= =?utf-8?B?WENiVlhWaXhMS01udXNnU0lNeDcrQk1oNTdYR29IZVRJU29xb1FLSS9vSUx3?= =?utf-8?B?aU5kT1lFNWVGSFlvakxLZkpIamlJUGQ2UnJIb2hOQU1tYmF1YkpIOXNjajFt?= =?utf-8?B?a3NjYTJqdTMxSXoxb01ndzR0emdrR0xZVDRtcW0wZS9xRTZ6S2NGZDNHVFd4?= =?utf-8?B?MTJKb1NvVXZTd2RNRjJpYnpsWEJoS2t4d2ZwRFgyYlk0aERvT2RoYkRWNW1T?= =?utf-8?B?Tks4Z1JLVHZwck03WXlhSGRGVFFSODU2eVM4OUFrbUd5aCs2NjNSbFFPNEtq?= =?utf-8?B?dUhMcW1YTkZpSTlCR3g3YitGSkF1eTdSTU54L0Zac1BHMjhlZjh4L1M5K2hk?= =?utf-8?B?VTRKajlLdE5VZVBncUNreXIza0VuYzl1K0pSVzl2c0hsR1Y2SXowc1BRN3k0?= =?utf-8?B?Qmpud2dIZGJ5WHlJVEZjUE5RdVhkSXRDc0tkME9pUk1RaFA5VHJWeWJoWW5k?= =?utf-8?B?OTc1cVZ0c0tkY20xMjhhQTlka1RFTUZxalMzeW9Ga3pQUTJzVlQycHV1d3Zq?= =?utf-8?B?UUs1V0FSQXNTOHVsNmFYdG1idlBtS1Jjd3lhbVNEMTBiNWhoOU53dC9QUXp6?= =?utf-8?B?L0hhZC80aStyNE1OemtaUkRJWVFERjJsVE1qdWVMano0L0dmZzRtQ1BubGZN?= =?utf-8?B?U21jckFobU9uaWhBVEhFa1ZMRnJkMmxQRld4T0g5MVZRQk1UUFJGZmpZYkNa?= =?utf-8?B?V2VWZitZTU9wdUJzVjFGZkhCTXZkeVgzRWVzL0xyZ2szWTc5RlEraDNOYkUv?= =?utf-8?B?cjFrT3ZCOGhuOFlhSllRM0hzei93Y1FySjExcU9wWDd4Mld1aEhRNHpKQTM2?= =?utf-8?B?byt1VHp4RkR2aU1MK0oycmlhdXYvNmlQclVmWWoyQjdWaFBIVldOQzRiZFpw?= =?utf-8?B?VzJNMVlaSzRUM3YwaXpiamtwSDBUeko4elFaSGVPWEM3c1dRRDJrR0loL09S?= =?utf-8?B?ZnVnZ2Q0STFCRy85S2tVOHJlZUMrbDV4UXpYTGYwSnIzOXdoYm9MM2xRSHE2?= =?utf-8?B?RStsTld0V1UyUU12U0pRTHRlNk5HbnpkWk0xeVNlQ1dZV1pQVi9iOTFSU1hB?= =?utf-8?B?L0hjRm5VbnJ3OUVKcFViQTNWdjhoMnkvQTRLZTNiSkRxUVRaRU82djdvWmQw?= =?utf-8?B?ZmV4bEFIdGp4YXVJWFBMZFJXUG14R0JkRkhzbldNSVlPRUtrQ3Y4NDVtcW5r?= =?utf-8?B?SmQvRnp6QXB0L1c3QTByVDEvVkRQd0hvWE5BYlZxWk92OGJMVk5SakJNcVJo?= =?utf-8?B?RlZlbVFuVkdLRHl5TW92OFZIdTVEU2MraSswNG9BSG5aWkgrZlNtaDQybmFx?= =?utf-8?B?SkppSUhaUFFrNTcwMUpQSGVCUnFkM0NHNERORzUyYklNSGxIMW9nT2grVHdO?= =?utf-8?B?RGRQS3RVV1BJQUdhSDZXaDJwbnh6WWtMSlI2bjdYbU1zN1l2ekRNTXdhR3VJ?= =?utf-8?B?RzZ5T2txNlN6UHFYQmJkSjR2RHBoL0laazdrL3FESHRRdzhrRlBKL0VGaXEr?= =?utf-8?B?UHFqUjI5dzdmemwybCtrLzk5MTdIQUpKZjB6dGRuOSt6eWhib3BGeVBJY1Ji?= =?utf-8?B?UFdCd21ZU1FpNEsvREw3NTlTZysxb3lZZkFPek5ranc0cnBPdGVJQ090RWtS?= =?utf-8?B?STZycHE1YmNJRG9QaFl5ZCtVMWxmdW1mb0pCR0NBc09EZXlKMlVNNW00bjc0?= =?utf-8?B?NEw3cUUzVHE5VlRHRmlaZStLcUV3Rm5IWlhGTHg2Y1lBZkFhMmxQVnhvL0dR?= =?utf-8?B?aFQ2Zk9WSnU3MGZ5K1BKU05mRFdvWkQ1S2x2N0F6OURGRmtMK3BieEozTWcr?= =?utf-8?B?KzhqeldPQldvMVQwSkxtL0NEY2FYbzlmdXIzMkovY3BaekpOT3ZKL0cvc3dW?= =?utf-8?B?QVVKTTNyOStGd3l0Tk5ManNUY0pzYkVBd3l2NStRbS9CS2VtNmVkS2N0Sitm?= =?utf-8?B?eWRjUnpRR0ZGbm5aN0RmL0g4VFRMdXFkY2VlMzdvRHBhUEdMc1lidFZzZkty?= =?utf-8?B?OTAxMDRzSXdKOXFxN3BTN1NOV2FBclNoNzhjbXlSS3JGUlB5TTZFeHRoekYw?= =?utf-8?Q?7BWnPpt7i+CK2I80=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <04D943D1FCCA74418A4A1658B4BDEBEE@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: D3+evShvg2q/sCZv3utWby65ktMeiXOhjheZKB2VdKCi7PZpMIGjmw5t5drwXLxLONrfwclo7kIWaZr33QwAXpd/PsFFMRuksClxR4PGfiA6TVghniwOynw7Y0nt5XopqBmttvMxgqQEfCoqBT/y9XsIzs1MloDAzqLBm7mv8b6FWGY0/FQb0AWiNwE9FpzXUUCUI5JiOGQ23/SM27gzKJAg7W+7GMPrRW3BjyM5ixkgWViESJUzYEawg1RtVoqENkh0U4IYCrSmLZA51K0VX5rCyGOgPcMiTSMCH4EN0eAFnZBa7cwPHvbUvirN/5UCdW+HklM2rpdH3xYMUjN/3A== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5573.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44525c64-dd8c-495b-456a-08de8abd67c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Mar 2026 22:25:22.6933 (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: 6UsoS21qyd0oGSn06uyTOdPGFuH5aVGUqReQpIdy/Dc/IsR3U4JGpQLeirvAcm0k5+ywlU13Qbh7NVk8AoexZ/RILLKug4da2lnHfYUvKfA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB7996 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gV2VkLCAyMDI2LTAzLTI1IGF0IDE1OjAwIC0wNzAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOg0K PiBPbiBXZWQsIE1hciAyNSwgMjAyNiBhdCAxMjozNzoxOFBNIC0wNjAwLCBTdW1tZXJzLCBTdHVh cnQgd3JvdGU6DQo+ID4gT24gVHVlLCAyMDI2LTAzLTI0IGF0IDE2OjM2IC0wNzAwLCBNYXR0aGV3 IEJyb3N0IHdyb3RlOg0KPiA+ID4gT24gVHVlLCBNYXIgMjQsIDIwMjYgYXQgMDM6MTA6NDFQTSAt MDYwMCwgU3VtbWVycywgU3R1YXJ0IHdyb3RlOg0KPiA+ID4gPiBPbiBUdWUsIDIwMjYtMDMtMjQg YXQgMTM6NTggLTA3MDAsIE1hdHRoZXcgQnJvc3Qgd3JvdGU6DQo+ID4gPiA+ID4gT24gVHVlLCBN YXIgMjQsIDIwMjYgYXQgMDE6NTM6MjdQTSAtMDcwMCwgTWF0dGhldyBCcm9zdA0KPiA+ID4gPiA+ IHdyb3RlOg0KPiA+ID4gPiA+ID4gT24gVHVlLCBNYXIgMjQsIDIwMjYgYXQgMDI6Mzk6NTRQTSAt MDYwMCwgWWFuZywgRmVpIHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+IE9uIFR1ZSwgTWFyIDE3LCAy MDI2IGF0IDA1OjI4OjE0UE0gLTA2MDAsIFN1bW1lcnMsDQo+ID4gPiA+ID4gPiA+ID4gU3R1YXJ0 DQo+ID4gPiA+ID4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiBPbiBUdWUsIDIwMjYt MDMtMTcgYXQgMTY6MjEgLTA3MDAsDQo+ID4gPiA+ID4gPiA+ID4gPiBmZWkueWFuZ0BpbnRlbC5j b23CoHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBGcm9tOiBGZWkgWWFuZyA8ZmVpLnlhbmdA aW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gSGFy ZHdhcmUgcmVxdWlyZXMgdGhlIHNvZnR3YXJlIHRvIHBvbGwgdGhlIHZhbGlkDQo+ID4gPiA+ID4g PiA+ID4gPiA+IGJpdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBhbmQNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gbWFrZSBzdXJlDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGl0J3MgY2xlYXJlZCBiZWZvcmUgaXNz dWluZyBhIG5ldyBUTEIgaW52YWxpZGF0aW9uDQo+ID4gPiA+ID4gPiA+ID4gPiA+IHJlcXVlc3Qu DQo+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBGZWkgWWFuZyA8ZmVpLnlhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiAtLS0N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3RsYl9pbnZh bC5jIHwgMTUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4g PiA+ID4gPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0veGUveGVfZ3VjX3RsYl9pbnZhbC5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2d1Y190bGJfaW52YWwuYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBpbmRleCBj ZWQ1OGY0NmY4NDYuLjRjMmY4N2RiMzE2NyAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y190bGJfaW52YWwuYw0KPiA+ID4gPiA+ID4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3RsYl9pbnZhbC5jDQo+ID4gPiA+ ID4gPiA+ID4gPiA+IEBAIC02Myw2ICs2Myw3IEBAIHN0YXRpYyBpbnQNCj4gPiA+ID4gPiA+ID4g PiA+ID4gc2VuZF90bGJfaW52YWxfZ2d0dChzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4gPiA+ID4geGVf dGxiX2ludmFsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICp0bGJfaW52YWwsIHUzMiBzZXFubykNCj4g PiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhlX2d1YyAqZ3VjID0gdGxi X2ludmFsLT5wcml2YXRlOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgeGVfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgIHN0cnVjdCB4ZV9kZXZpY2UgKnhlID0gZ3VjX3RvX3hlKGd1Yyk7DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqAgaW50IHJldDsNCj4gPiA+ID4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgIC8qDQo+ID4gPiA+ID4gPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBSZXR1cm5pbmcgLUVDQU5DRUxFRCBpbiB0aGlzIGZ1bmN0 aW9uIGlzDQo+ID4gPiA+ID4gPiA+ID4gPiA+IHNxdWFzaGVkIGF0IHRoZQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiBjYWxsZXIgYW5kIEBAIC04NSwxMSArODYsMjUgQEAgc3RhdGljIGludA0KPiA+ID4g PiA+ID4gPiA+ID4gPiBzZW5kX3RsYl9pbnZhbF9nZ3R0KHN0cnVjdA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiB4ZV90bGJfaW52YWwgKnRsYl9pbnZhbCwgdTMyIHNlcW5vKQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IENMQVNTKHhlX2ZvcmNlX3dha2UsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGZ3X3JlZikoZ3RfdG9f ZncoZ3QpLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBYRV9GV19HVCk7DQo+ID4gPiA+ID4gPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoeGUtPmluZm8ucGxhdGZvcm0g PT0gWEVfUFZDIHx8DQo+ID4gPiA+ID4gPiA+ID4gPiA+IEdSQVBISUNTX1ZFUih4ZSkNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA9IDIwKSB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBXYWl0IDEtc2Vjb25kIGZvciB0 aGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gdmFsaWQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gYml0DQo+ ID4gPiA+ID4gPiA+ID4gPiA+IHRvIGJlDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGNsZWFyZWQgKi8N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldCA9IHhlX21taW9fd2FpdDMyKG1taW8sDQo+ID4gPiA+ID4gPiA+ID4gPiA+ IFBWQ19HVUNfVExCX0lOVl9ERVNDMCwgUFZDX0dVQ19UTEJfSU5WX0RFU0MwX1ZBTElELA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gMTAwMCAqDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICtVU0VDX1BFUl9NU0VD LA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBOVUxMLCBmYWxzZSk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KSB7 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfaW5mbygiVExCIElOVkFMDQo+ID4gPiA+ID4g PiA+ID4gPiA+IGNhbmNlbGxlZCBkdWUgdG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gdW5jbGVhcmVk IHZhbGlkIGJpdFxuIik7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FQ0FOQ0VM RUQ7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB9DQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IElz IHRoZXJlIGEgcmVhc29uIHdlIGFyZW4ndCB3YWl0aW5nIGFmdGVyIHRoZSB3cml0ZQ0KPiA+ID4g PiA+ID4gPiA+ID4gdG8NCj4gPiA+ID4gPiA+ID4gPiA+IG1ha2UNCj4gPiA+ID4gPiA+ID4gPiA+ IHN1cmUgdGhlDQo+ID4gPiA+ID4gPiA+ID4gPiBpbnZhbGlkYXRpb24gY29tcGxldGVkPyBJdCBz ZWVtcyBsaWtlIHdlIHNob3VsZCBiZQ0KPiA+ID4gPiA+ID4gPiA+ID4gc2VyaWFsaXppbmcgdGhl c2UNCj4gPiA+ID4gPiA+ID4gPiA+IGFuZCBhdCBsZWFzdCBtYWtpbmcgc3VyZSBoYXJkd2FyZSBj b21wbGV0ZXMgdGhlDQo+ID4gPiA+ID4gPiA+ID4gPiByZXF1ZXN0DQo+ID4gPiA+ID4gPiA+ID4g PiByYXRoZXIgdGhhbg0KPiA+ID4gPiA+ID4gPiA+ID4ganVzdCBzZW5kaW5nIGFuZCBob3Bpbmcg Zm9yIHRoZSBiZXN0Lg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IFllcywgdGhp cyBpcyBjb3JyZWN04oCUd2Ugc2hvdWxkIGFmdGVyIHdhaXQgaXNzdWUgKmlmKg0KPiA+ID4gPiA+ ID4gPiA+IHRoaXMNCj4gPiA+ID4gPiA+ID4gPiBjb2RlDQo+ID4gPiA+ID4gPiA+ID4gaXMgYWN0 dWFsbHkgbmVlZGVkLg0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gTm8sIHRoZSBpc3N1 ZSBpcyB0aGF0IHNvZnR3YXJlIGNhbm5vdCBpc3N1ZSBhbm90aGVyIFRMQg0KPiA+ID4gPiA+ID4g PiBpbnZhbGlkYXRpb24gcmVxdWVzdCB3aGlsZSB0aGUgb25nb2luZw0KPiA+ID4gPiA+ID4gPiBv bmUgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZCB5ZXQuIE90aGVyd2lzZSB0aGUgaGFyZHdhcmUNCj4g PiA+ID4gPiA+ID4gY291bGQNCj4gPiA+ID4gPiA+ID4gcG90ZW50aWFsbHkgbG9ja3VwLg0KPiA+ ID4gPiA+ID4gPiBTbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgdmFsaWQgYml0IGlzIGNsZWFy ZWQgYmVmb3JlDQo+ID4gPiA+ID4gPiA+IGlzc3VpbmcNCj4gPiA+ID4gPiA+ID4gYW5vdGhlciBU TEIgaW52YWxpZGF0aW9uIHJlcXVlc3QuDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiBZZXMsIGJ1dCB3ZSBzaWduYWwgdGhlIFRMQiBpbnZhbGlkYXRpb24gZmVuY2Ug YXMgY29tcGxldGUNCj4gPiA+ID4gPiA+IHdpdGhvdXQNCj4gPiA+ID4gPiA+IHdhaXRpbmcgZm9y IHRoZSBoYXJkd2FyZSB0byBhY3R1YWxseSBmaW5pc2guIFRoZSBsb2NraW5nDQo+ID4gPiA+ID4g PiBoZXJlDQo+ID4gPiA+ID4gPiBpcw0KPiA+ID4gPiA+ID4gYWxzbw0KPiA+ID4gPiA+ID4gaW5j b3JyZWN0IGZvciBNTUlPLWJhc2VkIGludmFsaWRhdGlvbnMsIG5vdyB0aGF0IEkgdGhpbmsNCj4g PiA+ID4gPiA+IGFib3V0DQo+ID4gPiA+ID4gPiBpdC4NCj4gPiA+ID4gPiA+IFdoYXQNCj4gPiA+ ID4gPiA+IHJlYWxseSBuZWVkcyB0byBoYXBwZW4gaXM6DQo+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiANCj4gPiA+ID4gPiBBaCwgdGhpcyBhY3R1YWxseSBhbm90aGVyIHdlaXJkIGNvcm5lciB3aGVy ZSB3ZSB0YWtlIGRvd24gdGhlDQo+ID4gPiA+ID4gQ1RzDQo+ID4gPiA+ID4gYnV0DQo+ID4gPiA+ ID4gR3VDIGlzIHN0aWxsIHVzaW5nIHRoZSBHQU0gcG9ydC4uLg0KPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gLSBJbiBzZW5kX3RsYl9pbnZhbF9nZ3R0KCksIGlmIHRoZSBNTUlPIHBhdGggaXMgdGFr ZW4sDQo+ID4gPiA+ID4gPiBhY3F1aXJlDQo+ID4gPiA+ID4gPiBhDQo+ID4gPiA+ID4gPiBwZXIt R1QNCj4gPiA+ID4gPiA+IMKgIE1NSU8gVExCIGludmFsaWRhdGlvbiBsb2NrIGFmdGVyIG9idGFp bmluZyB0aGUgRlcNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBTbyBtYXliZSAnV2FpdCBmb3IgdGhl IHZhbGlkIGJpdCB0byBjbGVhcicgaGVyZSB0b28gYnV0IHRoaXMNCj4gPiA+ID4gPiBzdGlsbA0K PiA+ID4gPiA+IGlzbid0DQo+ID4gPiA+ID4gZnVsbHkgaGFyZGVuZCBhcyB0aGUgR3VDIGNvdWxk IGltbWVkaWF0ZWx5IHVzZSB0aGUgR0FNIHBvcnQNCj4gPiA+ID4gPiBhZ2Fpbi4uLg0KPiA+ID4g PiA+IA0KPiA+ID4gPiA+IE9yIHBlcmhhcHMgd2UgZ28gc3RyYWlnaHQgdG8gbXkgc3VnZ2VzdGlv biBiZWxvdyAtIHdoZW4NCj4gPiA+ID4gPiByZWxvYWRpbmcNCj4gPiA+ID4gPiB0aGUNCj4gPiA+ ID4gPiBHdUMgaXNzdWUgTU1JTyBHVCBpbnZhbGlkYXRpb24uLi4NCj4gPiA+ID4gDQo+ID4gPiA+ IEkgZmVlbCBsaWtlIHdlIHJlYWxseSBzaG91bGQgYmUgYXZvaWRpbmcgdGhlc2UgTU1JTyBiYXNl ZA0KPiA+ID4gPiBpbnZhbGlkYXRpb25zDQo+ID4gPiA+IHdoZXJldmVyIHBvc3NpYmxlLiBJdCBj cmVhdGVzIGEgbG90IG9mIHJhY2UgY29uZGl0aW9ucyBsaWtlDQo+ID4gPiA+IHdoYXQNCj4gPiA+ ID4geW91DQo+ID4gPiA+IHN1Z2dlc3RlZCBvciBldmVuIHBhcmFsbGVsIGludmFsaWRhdGlvbiBi ZXR3ZWVuIHRoZSBHdUMgYW5kIEtNRA0KPiA+ID4gPiB3aGlsZQ0KPiA+ID4gPiB3ZSdyZSB0ZWFy aW5nIGRvd24gKEtNRCBsb2NrIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGd1YXJhbnRlZSB0aGUNCj4g PiA+ID4gR3VDDQo+ID4gPiA+IGlzbid0IHN0aWxsIGludmFsaWRhdGluZykuDQo+ID4gPiA+IA0K PiA+ID4gDQo+ID4gPiBNeSBndWVzcyBpcyB0aGUgaXNzdWUgY2FsbGluZyB4ZV9tYW5hZ2VkX2Jv X3JlaW5pdF9pbl92cmFtIG9uDQo+ID4gPiBzb21lDQo+ID4gPiBCT3MgLQ0KPiA+ID4gdGhlIEdH VFQgZG9uJ3QgZ2V0IGludmFsaWRhdGVkIEd1QyBzaWRlIGFuZCBpdCByZWxvYWRzIHdpdGggc3Rh bGUNCj4gPiA+IEdHVFRzLg0KPiA+ID4gDQo+ID4gPiA+IENhbiB3ZSBpbnN0ZWFkIHJlbHkgbW9y ZSBoZWF2aWx5IG9uIHRoZSBHVCByZXNldCB0byBmbHVzaCB0aGUNCj4gPiA+ID4gVExCcw0KPiA+ ID4gPiBmb3INCj4gPiA+IA0KPiA+ID4gV2UgbGlrZWx5IG5lZWQgYSBNTUlPIGludmFsaWRhdGUg d2hlbmV2ZXIgZG9pbmcgUE0gcmVzdW1lIGV2ZW50cw0KPiA+ID4gdG9vDQo+ID4gPiBhcyBtZW1v cnkgY2FuIG1vdmUgd2l0aG91dCBQTSByZWZzIChDVHMgZ28gZG93biB3aGVuIFBNIHJlZiA9PSAw KQ0KPiA+ID4gaWYNCj4gPiA+IEknbQ0KPiA+ID4gbm90IG1pc3Rha2VuLi4uDQo+ID4gDQo+ID4g QnV0IHdlIGFscmVhZHkgZG8gYSBHVCByZXNldCBpbiB0aGF0IGNhc2UgcmlnaHQ/IFNvIHRoaXMg c2hvdWxkIGJlDQo+ID4gY292ZXJlZD8NCj4gPiANCj4gDQo+IEQzaG90IGRvZXNuJ3QgcGVyZm9y bSBhIEdUIHJlc2V0IG9yIGVudGVyIEQzY29sZC4gSG93ZXZlciwgbG9va2luZyBhdA0KPiB4ZV9n Z3R0LmMsIEdHVFQgaW52YWxpZGF0aW9ucyBhbHdheXMgaG9sZCBhIFBNIHJlZmVyZW5jZSwgc28g dGhlIENUDQo+IHNob3VsZCByZW1haW4gbGl2ZSB1bmxlc3MgYSBHVCByZXNldCBpcyBpbiBwcm9n cmVzcy4NCj4gDQo+IFRoZXJlZm9yZSwgdGhlIG9ubHkgdHdvIGNhc2VzIHdoZXJlIHdlIG1pZ2h0 IG5lZWQgTU1JTyBpbnZhbGlkYXRpb25zDQo+IGFyZToNCj4gDQo+IC0gRHVyaW5nIGluaXRpYWwg ZHJpdmVyIGxvYWQsIGFmdGVyIHdlIGNhbGwNCj4geGVfbWFuYWdlZF9ib19yZWluaXRfaW5fdnJh bQ0KPiDCoCBvbiBzb21lIGJ1ZmZlcnMgdXNlZCBkdXJpbmcgdGhlIGh3Y29uZmlnIEd1QyBsb2Fk IHBoYXNlLCBhbmQgdGhlbg0KPiBtb3ZlDQo+IMKgIHRoZSBtZW1vcnkgd2hpbGUgcmV0YWluaW5n IHRoZSBzYW1lIEdHVFQgYWRkcmVzc2VzLg0KPiANCj4gLSBEdXJpbmcgYSBHVCByZXNldCwgd2hl cmUgbWVtb3J5IGlzIGFsbG93ZWQgdG8gbW92ZSBhcm91bmQuIExpa2VseQ0KPiBkbw0KPiDCoCB0 aGlzIHN0ZXAgYmVmb3JlIHJlbG9hZGluZyB0aGUgR3VDLg0KDQpCdXQgZm9yIGJvdGggb2YgdGhl c2UgY2FzZXMsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRvOg0KZm9yX2VhY2hfZ3Rfb25fdGlsZSgp DQogICAgeGVfdGxiX2ludmFsX2ZlbmNlX2luaXQoKQ0KICAgIHhlX3RsYl9pbnZhbF9hbGwoKQ0K Zm9yX2VhY2hfZ3Rfb25fdGlsZSgpDQogICAgeGVfdGxiX2ludmFsX2FsbCgpDQoNClJpZ2h0IGJl Zm9yZSBHdUMgY29tbXVuaWNhdGlvbiBnb2VzIGRvd24gcmlnaHQ/IFRoZW4gd2Ugd291bGRuJ3Qg bmVlZA0KYW55IE1NSU8gY29tbXVuaWNhdGlvbiBzaW5jZSB0aGUgVExCcyBhcmUgZmx1c2hlZCBh dCB0aGF0IHBvaW50Lg0KDQpUaGFua3MsDQpTdHVhcnQNCg0KPiANCj4gPiA+IA0KPiA+ID4gSSdk IGFsc28gbGlrZSB0aGUgR0FNIHBvcnQgaW50ZXJhY3Rpb24gYnJva2VuIG91dCBpbiBjb21wb25l bnQNCj4gPiA+IGxpa2UNCj4gPiA+IHhlX2dhbV9wb3J0LmMgKHdpdGggYSBkZWRpY2F0ZWQgbG9j aykgaW4gdGhpcyBzZWlyZXMgWzFdIGFsYmlldA0KPiA+ID4gd2F5DQo+ID4gPiBzaW1wbGllciBh cyB3ZSBvbmx5IG5lZWQgR0dUVCBpbnZhbGlkYXRlcyBhdCB0aGlzIHRpbWUuDQo+ID4gDQo+ID4g SSdkIHN0aWxsIGxpa2UgdG8gcHVzaCB3ZSBmaW5kIGEgd2F5IHRvIGNvbXBsZXRlbHkgcmVtb3Zl IHRoZSBNTUlPDQo+ID4gaW52YWxpZGF0aW9uIGZyb20gdGhlIGRyaXZlciBhbmQgcmVseSBvbiBl aXRoZXIgdGhlIHJlc2V0cyBvciBHdUMNCj4gPiBiYXNlZA0KPiA+IGludmFsaWRhdGlvbiBwcmlv ciB0byB0ZWFyZG93bnMgaWYgYXQgYWxsIHBvc3NpYmxlLg0KPiA+IA0KPiANCj4gSSBhZ3JlZSBN TUlPIFRMQiBpbnZhbGlkYXRpb25zIGhhdmUgbm8gcGxhY2UgeGVfZ3VjX3RsYl9pbnZhbC5jLg0K PiANCj4gTWF0dA0KPiANCj4gPiBJIGhhZG4ndCBzZWVuIHlvdXIgb3RoZXIgcGF0Y2ggeWV0IHRo b3VnaC4gSSdsbCB0YWtlIGEgbG9vayBhcyBzb29uDQo+ID4gYXMNCj4gPiBJIGhhdmUgdGltZS4N Cj4gPiANCj4gPiBUaGFua3MsDQo+ID4gU3R1YXJ0DQo+ID4gDQo+ID4gPiANCj4gPiA+IE1hdHQN Cj4gPiA+IA0KPiA+ID4gWzFdDQo+ID4gPiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5v cmcvcGF0Y2gvNzA3MjM3Lz9zZXJpZXM9MTYyMTcxJnJldj0xDQo+ID4gPiANCj4gPiA+ID4gdXM/ IEFuZCBmb3IgdGhlIEd1QyBtZW1vcnkgc3BlY2lmaWNhbGx5LCBtYXliZSB3ZSBkbyBhIGZ1bGwN Cj4gPiA+ID4gaW52YWxpZGF0aW9uIGFmdGVyIHF1aWVzY2luZyB0aGUgR3VDIGR1cmluZyBod2Nv bmZpZyBsb2FkICh0aGUNCj4gPiA+ID4gZmlyc3QNCj4gPiA+ID4gdGltZSB3ZSBsb2FkIHRoZSBH dUMgZHVyaW5nIGRyaXZlciBsb2FkKSBhbmQgYmVmb3JlIGFueSBraW5kIG9mDQo+ID4gPiA+IHJl bG9hZC9yZXNldD8NCj4gPiA+ID4gDQo+ID4gPiA+IFdlJ2Qgc3RpbGwgbmVlZCB0byBjb3ZlciB0 aGUgY2FzZSB3aGVyZSBoYXJkd2FyZSBpcyBmdWxseSBodW5nDQo+ID4gPiA+IHVwDQo+ID4gPiA+ IGFuZA0KPiA+ID4gPiBHdUMgaXNuJ3QgcmVzcG9uZGluZywgYnV0IHRoZW4gSSBkb24ndCBrbm93 IHRoYXQgd2UgcmVhbGx5IGNhcmUNCj4gPiA+ID4gYWJvdXQNCj4gPiA+ID4gTU1JTyBiYXNlZCBp bnZhbGlkYXRpb25zIHNpbmNlIHdlJ2xsIHdhbnQgdG8gZnVsbHkgcmVzZXQgdGhlIEdUDQo+ID4g PiA+IHRoZXJlDQo+ID4gPiA+IHRvby4NCj4gPiA+ID4gDQo+ID4gPiA+IFRoYW5rcywNCj4gPiA+ ID4gU3R1YXJ0DQo+ID4gPiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IE1hdHQNCj4gPiA+ID4g PiANCj4gPiA+ID4gPiA+IC0gSXNzdWUgdGhlIFRMQiBpbnZhbGlkYXRpb24NCj4gPiA+ID4gPiA+ IC0gV2FpdCBmb3IgdGhlIHZhbGlkIGJpdCB0byBjbGVhcg0KPiA+ID4gPiA+ID4gLSBSZWxlYXNl IHRoZSBHVCBNTUlPIFRMQiBpbnZhbGlkYXRpb24gbG9jaw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiBXaXRob3V0IHRoaXMgbG9jaywgdHdvIHRocmVhZHMgY291bGQgYm90aCBvYnNlcnZlIHRo ZSB2YWxpZA0KPiA+ID4gPiA+ID4gYml0DQo+ID4gPiA+ID4gPiBjbGVhcmluZw0KPiA+ID4gPiA+ ID4gYW5kIHRoZW4gYm90aCBhdHRlbXB0IHRvIGlzc3VlIGludmFsaWRhdGlvbnMsIGNsb2JiZXJp bmcNCj4gPiA+ID4gPiA+IGVhY2gNCj4gPiA+ID4gPiA+IG90aGVyLg0KPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiA+ID4gVGhpcyBpcyBlYXJseSBYZSBjb2RlIGZyb20gbWUsIGFuZCBpdOKAmXMg cXVlc3Rpb25hYmxlDQo+ID4gPiA+ID4gPiA+ID4gd2hldGhlcg0KPiA+ID4gPiA+ID4gPiA+IGl0 4oCZcyBldmVuIHJlcXVpcmVkLg0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gVGhpcyBz ZWVtcyB0byBiZSByZXF1aXJlZCwgb3RoZXJ3aXNlIG1vZHByb2JlIHdvdWxkIGZhaWwNCj4gPiA+ ID4gPiA+ID4gYXQNCj4gPiA+ID4gPiA+ID4gZ29sZGVuIGNvbnRleHQgc3VibWlzc2lvbiwNCj4g PiA+ID4gPiA+ID4gW8KgIDQ4MC4yMzczODJdIHhlIDAwMDA6MDE6MDAuMDogW2RybV0gKkVSUk9S KiBUaWxlMDogR1QwOg0KPiA+ID4gPiA+ID4gPiBod2UNCj4gPiA+ID4gPiA+ID4gY2NzMDogbm9w IGVtaXRfbm9wX2pvYiBmYWlsZWQgKC1FVElNRSkgZ3VjX2lkPTQNCj4gPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IEnigJltIHNvbWV3aGF0IHN1cnByaXNlZCBieSB0aGlz LiBBIGJldHRlciBzb2x1dGlvbiBtaWdodCBiZQ0KPiA+ID4gPiA+ID4gdG8NCj4gPiA+ID4gPiA+ IGRyb3ANCj4gPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gTU1JTyBHVCBpbnZhbGlkYXRpb24g Y29kZSBpbiB4ZV9ndWNfdGxiX2ludmFsLmMgYW5kIGluc3RlYWQNCj4gPiA+ID4gPiA+IGlzc3Vl DQo+ID4gPiA+ID4gPiBhbg0KPiA+ID4gPiA+ID4gTU1JTyBHR1RUIGludmFsaWRhdGlvbiB3aGVu ZXZlciB3ZSByZWxvYWQgdGhlIEd1Qy4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gV2UgY2Fu IGRlZmVyIHRyeWluZyB0aGlzIHVudGlsIGxhdGVyLCBhcyBpdCBpcyBhIHJpc2tpZXINCj4gPiA+ ID4gPiA+IGNoYW5nZS4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gTWF0dA0KPiA+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiA+ID4gVHlwaWNhbGx5LCBpZiB0aGUgQ1RzIGFyZSBub3QgbGl2ZSwg dGhlIEd1QyBpc27igJl0IGRvaW5nDQo+ID4gPiA+ID4gPiA+ID4gYW55dGhpbmcgbWVhbmluZ2Z1 bCBpbiB0ZXJtcyBvZg0KPiA+ID4gPiA+ID4gPiA+IHJlZmVyZW5jaW5nIG1lbW9yeSB0aGF0IHRo ZSBLTUQgaXMgbW92aW5nIGFyb3VuZCAod2hpY2gNCj4gPiA+ID4gPiA+ID4gPiB3b3VsZA0KPiA+ ID4gPiA+ID4gPiA+IHJlcXVpcmUgYW4gaW52YWxpZGF0aW9uKS4NCj4gPiA+ID4gPiA+ID4gPiBT byB0aGlzIGVudGlyZSBmbG93IG9mIGlzc3VpbmcgYSBHQU0gcG9ydCBUTEINCj4gPiA+ID4gPiA+ ID4gPiBpbnZhbGlkYXRpb24NCj4gPiA+ID4gPiA+ID4gPiBpcywNCj4gPiA+ID4gPiA+ID4gPiBh Z2FpbiwgcXVlc3Rpb25hYmxlLg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IFNv IEknZCBzdWdnZXN0IG1vdmUgdGhlIHdhaXQgYWZ0ZXIgaXNzdWUsIHBsdXMgdGhyb3cNCj4gPiA+ ID4gPiA+ID4gPiBpbjoNCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiDigJxYWFg6 IFdoeSBkbyB3ZSBuZWVkIHRvIGludmFsaWRhdGUgR0dUVCBtZW1vcnkgd2hlbiB0aGUNCj4gPiA+ ID4gPiA+ID4gPiBDVHMNCj4gPiA+ID4gPiA+ID4gPiBhcmUNCj4gPiA+ID4gPiA+ID4gPiBub3Qg bGl2ZT8gVGhpcyBzdWdnZXN0cw0KPiA+ID4gPiA+ID4gPiA+IHRoZSBHdUMgaXMgc3RpbGwgaW4g dGhlIGxvYWQgcGhhc2UuIEludmVzdGlnYXRlIGFuZA0KPiA+ID4gPiA+ID4gPiA+IHJlbW92ZQ0K PiA+ID4gPiA+ID4gPiA+IHRoaXMNCj4gPiA+ID4gPiA+ID4gPiBjb2RlIG9uY2UgY29uZmlybWVk LicNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IFRoZSBpc3N1ZSBpcyBhIGNvbnNlcXVl bmNlIG9mIGFuIGVhcmxpZXIgZmFpbHVyZSB3aGljaA0KPiA+ID4gPiA+ID4gPiBjYXVzZWQNCj4g PiA+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiA+IENUIHRvIGJlIGRpc2FibGVkLiBBbmQgdGhl IEtNRA0KPiA+ID4gPiA+ID4gPiBzZWVzIGEgYnVuY2ggb2YgVExCIGludmFsaWRhdGlvbiB0aW1l b3V0cy4NCj4gPiA+ID4gPiA+ID4gQXQgdGhpcyB0aW1lIEkgd291bGQgZXhwZWN0IGEgR1QgcmVz ZXQsIGJ1dCB0aGF0IGlzIG5vdA0KPiA+ID4gPiA+ID4gPiBob3cNCj4gPiA+ID4gPiA+ID4gWGUN Cj4gPiA+ID4gPiA+ID4gYmVoYXZlcyAodGhlIG9sZSBpOTE1IGRyaXZlciB0cmlnZ2Vycw0KPiA+ ID4gPiA+ID4gPiBhIEdUIHJlc2V0IG9uIFRMQiBpbnZhbGlkYXRpb24gdGltZW91dCBpZiBJIHJl bWVtYmVyDQo+ID4gPiA+ID4gPiA+IGNvcnJlY3RseSkNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+IC1GZWkNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gTWF0dA0KPiA+ID4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiBUaGFua3Ms DQo+ID4gPiA+ID4gPiA+ID4gPiBTdHVhcnQNCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHhlX21taW9fd3JpdGUzMihtbWlvLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBQVkNfR1VDX1RMQl9J TlZfREVTQzEsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBQVkNf R1VDX1RMQl9JTlZfREVTQzFfSU5WQUxJRCBBVEUpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlX21taW9fd3JpdGUz MihtbWlvLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBQVkNfR1VDX1RMQl9JTlZfREVTQzAsDQo+ID4g PiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBQVkNfR1VDX1RMQl9JTlZfREVT QzBfVkFMSUQpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfSBlbHNlIHsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFdhaXQgMS1zZWNvbmQgZm9yIHRoZQ0KPiA+ID4g PiA+ID4gPiA+ID4gPiB2YWxpZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBiaXQNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gdG8gYmUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gY2xlYXJlZCAqLw0KPiA+ID4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0ID0geGVfbW1pb193YWl0MzIobW1pbywNCj4gPiA+ID4gPiA+ID4gPiA+ID4gR1VDX1RMQl9J TlZfQ1IsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEdVQ19UTEJfSU5WX0NSX0lOVkFMSURBVEUsDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwLA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiAxMDAwICoNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK1VTRUNfUEVSX01T RUMsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IE5VTEwsIGZhbHNlKTsNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQp IHsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9pbmZvKCJUTEIgSU5WQUwNCj4gPiA+ID4g PiA+ID4gPiA+ID4gY2FuY2VsbGVkIGR1ZSB0bw0KPiA+ID4gPiA+ID4gPiA+ID4gPiB1bmNsZWFy ZWQgdmFsaWQgYml0XG4iKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVDQU5D RUxFRDsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZV9tbWlvX3dyaXRlMzIobW1pbywNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gR1VDX1RMQl9JTlZfQ1IsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBHVUNfVExCX0lOVl9DUl9JTlZB TElEQVRFKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIH0NCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiANCj4gPiANCg0K