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 B52B9C55ABF for ; Wed, 5 Aug 2026 22:47:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D22610E244; Wed, 5 Aug 2026 22:47:55 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="DnDt2L+h"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id B8F0410E244 for ; Wed, 5 Aug 2026 22:47:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1785970073; x=1817506073; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=68iVnfAtzYNyaTi8MG6m241lr+gr3Fiiyi6QgjkLf8A=; b=DnDt2L+h3PpfhngQj+Asl9Omzxe1+OqMLXeOjN5rZhc513NYgP2hWJDi G1iN72ZeuIswp03JWQk8OAIgeFJVQljVM1djxwUzuimFdctaFRfkO60sY OO07bG0TxEl6/g9FSPQURqJdjYNxRE9JH5SYVM4chcYl/G/eFtBEAPNFI CjIQJj9FBPGSFIKfSokc4q26KOrzi7WTiXKlrZFORp5j2KRjEkpFum+yP cC8vBzrHWmCr9dW56xvxmlXKjaD6TxmCEHNZ0oVvZanwfFpIZGqiLDJep QlcU1JnCXpCF7G2vqACI4Wt7nhA4mv4r7E1Xxm/k+ZLkD1hCnPdjUdYAV Q==; X-CSE-ConnectionGUID: D02xrze0RSCpeHThAZoyIA== X-CSE-MsgGUID: JcIOgSAITUeqGmwfwwPCnw== X-IronPort-AV: E=McAfee;i="6800,10657,11866"; a="86759819" X-IronPort-AV: E=Sophos;i="6.25,207,1779174000"; d="scan'208";a="86759819" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 15:47:53 -0700 X-CSE-ConnectionGUID: Q/PzV4h8TXaaxjtxRj7Zjw== X-CSE-MsgGUID: KA3VSjc5Sd+2d636cbL35w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,207,1779174000"; d="scan'208";a="267070437" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa005.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 15:24:12 -0700 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Wed, 5 Aug 2026 15:24:11 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 15:24:11 -0700 Received: from CY3PR05CU001.outbound.protection.outlook.com (40.93.201.63) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Wed, 5 Aug 2026 15:24:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZaI8pS7+CRj3UxYREUicOUAg+BaOkW+v0FkOjQJhc6V8hpt+vvzRdFgQYLR2BLH5kpiEkPqgz8RkHhDz13LpdpUY9uwUSLuS+mFkeK3koF0FEjYGahmS70ArWKe1Ie9ouwlBUw2EjxA4GZUs31CX19PNUf8sdgBITFLqEAsIDOZ+7QiRAZTq6ydbdU8jAGpx+ct2VfrnytFcV6GM9OPkE+CaNmFcG2ARsQXUk6gJf87CasTLinuT/Pl9ZSUUAnr+gZePD1+eZLqhpdQIObxFerU0T5OpxpTlUc+VUAF/I4FdQNlKd+RoWzjk2lK7TinZo7oj6ZlPzZeAnVJRu7ulHQ== 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=68iVnfAtzYNyaTi8MG6m241lr+gr3Fiiyi6QgjkLf8A=; b=mtsJxgHIOQir3wpvAgllkVh/YYyGbcjBq4bQSVX5Gmd9zd+HBgO/QM4qfo9qB88ecIXculZwceMqhleQd8/Q5bDFiSpJrHR+Oxj2QwcKBpoGapP4xg84q5XLtlUaROMBTRsplGEnQ9TBrDTXw3/5Q7poblyEu2kHKIPOyfC7xSfxheJVwVSdD47Y9ttZ/nKniEEf+wRSifE0jitD1qhBXXaeYXC+P5Smtz5HrDvAsFLpb+xPObRM+4OP16pgueHL5EXZR75E5rzzqNdS2Dn896NB2r8c05qvCSI/NzWlyJVFa40oRVDvL8gcAZ5av1VAcvgflPduyec+HurbUiGr4w== 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 BL3PR11MB6314.namprd11.prod.outlook.com (2603:10b6:208:3b1::13) by DSVPR11MB9768.namprd11.prod.outlook.com (2603:10b6:8:352::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 22:24:09 +0000 Received: from BL3PR11MB6314.namprd11.prod.outlook.com ([fe80::2fa8:f753:ee68:e2]) by BL3PR11MB6314.namprd11.prod.outlook.com ([fe80::2fa8:f753:ee68:e2%3]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 22:24:09 +0000 From: "Summers, Stuart" To: "Vivi, Rodrigo" CC: "intel-xe@lists.freedesktop.org" , "Tauro, Riana" , "Koujalagi, Mallesh" , "Jadav, Raag" , "Wajdeczko, Michal" , "Levitt, Yoni" , "Iddamsetty, Aravind" Subject: Re: [PATCH v3 02/23] drm/xe/log: Add structured SIGID error logging infrastructure Thread-Topic: [PATCH v3 02/23] drm/xe/log: Add structured SIGID error logging infrastructure Thread-Index: AQHdIDjILDIeDNDrYUim4paglyUtS7aObdyAgABHTwCAAVykAA== Date: Wed, 5 Aug 2026 22:24:09 +0000 Message-ID: References: <20260730152121.576-1-michal.wajdeczko@intel.com> <20260730152121.576-3-michal.wajdeczko@intel.com> <522ab2835b03dcd101d52fb752b3fb839ed0c15c.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: BL3PR11MB6314:EE_|DSVPR11MB9768:EE_ x-ms-office365-filtering-correlation-id: bc013e88-4f19-49e9-b31e-08def3404511 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|23010399003|1800799024|4143699003|56012099006|11063799006|5023799004|10067099003|6133799003|22082099003|3023799007|18002099003|38070700021; x-microsoft-antispam-message-info: fzJu+ImOgT71v2S8Y0+S4RZwbK2ToPpuAWDGLlArzUVIGk7Zfl9Qw1WubLoFSF7jCqMn3QOq+7YiTiVM9S/PnqB4B5EzgAYTmdUh+pPkQIENrfFBb2N1RwE6TQ6pIzv9289gxBPU3C4VRxiDfkbCQg1xX8QNx5xmimeIIUl2iwD92kWYAB9QNB7T9/4YFcXwmqGpoBfLTVuMaLkVJi6LyoGrVgiyoaSVc2xrWmdfBoSesIjPibDk8lvD9Zfwd97lyEYICT1OgQ3DWpjV5nfPHosNKo/9JWrpmgsbBFakyrTIu2MWwD1p07y+R5/8Nhn7+8Ol776rKOdoZSVwon0CMiZo2Hl4dT62r5nk1tbEjlbiUdKOJBRh+00p9mxelaTwWTaHec5ameLn3MWYgblfvHrr82RxE8ci1jGNJBPJ722aTs6BQhDg+HD8otd6h/qRoRJ6T9c7l/fiUpIouIwh7daZOO3tI7W3s1Vd14hoUTXV4T7Q3mQpJi+pPPGRSnPlvE+hqBTX/tqPihWr0L8rOhSPNr7DkQDgWiNJq9/qZnkBmBwERSqGiM+t4oVbyAWzFPxuXndqtHtfMSTy3THXh73vRDfBXtleWX45GjwSs93ho729gsuG8DH2XtMTcf6im2wjeqQXtL+KISoKmX+FPsZg0EtOYt6seW9JuiXqd+RJwd3qZSga3oPtOzghLC/JZEl2E6uqLFC53ZFuZ6/L9nNpat5PqMpSPfFeHC5Bvyk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL3PR11MB6314.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(23010399003)(1800799024)(4143699003)(56012099006)(11063799006)(5023799004)(10067099003)(6133799003)(22082099003)(3023799007)(18002099003)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YmlWbmpJNWFYejl6NmNlY216dlB3S1pSN0xKSkZSQ1VSSjlSNjBRMmtFamVj?= =?utf-8?B?RXh1VVJaTzVLRGk5OE9rcjhDQWl3RVlGbVZMa0FCY1VzMStNNkNuYW1LSytB?= =?utf-8?B?V09KOTRFbjRWSG1EWmgrM1RaSEpLaFhzeVZGL0l6T2doanF0bXpkVGcvMDY2?= =?utf-8?B?MjJoaDhkTWRmT2tWdEwycHF0UFN2ZG9wQ0lwcExLZVlFdHcwb245ZEppVWRv?= =?utf-8?B?VSs3ZjVQNTNTN280OWZCRUYzS1BDbFZPY3YreEsyT3lpNHVoTEIvcVd2K052?= =?utf-8?B?RlpLUUpBVEE0UGYySndGVDJHZHZKSGFGV2NoVWNWc09oY2lpM291Mm1JRGdJ?= =?utf-8?B?ODE0ejdtUElqRTZRL3JucktxSzZweEh4ei9kNzB2VERDczVaS2Z1VWJhTWF2?= =?utf-8?B?aHY4TUJEeUwxZ2dxQzFkUUVXN3JXS2VlSElRSjdqWGZsRDY0NGYwYTJhMUJj?= =?utf-8?B?YjByZUkrcnVRd21QRkZXOSs0dUNzR3FreGNEYVg2dVpTbDNaREdxUkduMTcy?= =?utf-8?B?RlhSMFJDOTJiTU9lb0ZoamVOR3VVVGlETFJGbHBBa1BQQXozbWgvbmdpMTVO?= =?utf-8?B?M0Z6WktKMEM0ZlZhNlJCQVgzd0xsY0hPcW1WcERGWTZwRkphWEVZOUhwNmhz?= =?utf-8?B?ZHNGRDAzd1BiSHdKcUk1OXZPcnRoUno4aVRTTjdFRmRoOGZrL215d1lGdUo1?= =?utf-8?B?TzNjVTBMWE9ndnpXQmxmWHR3UTdMeU1HcFRodE1lM2Fod0owVit3Y1F6SEh6?= =?utf-8?B?TFBScHJ5UnR5V1VINzJ4VlE4cC9KK2c1VVJoclROL3VXVUFZZnBNSFIyZTFN?= =?utf-8?B?RkJUMEl6QXh5dk5wWjFabENQb0ZkSERJYUxjVzJZSnEyeFJZR3ZMUDE3QkFL?= =?utf-8?B?ZkpLYzlCVXBQdCt1WWYxTEFJeTMyTHhGc01VSThpTVlrak90N3Y0QjFLc1dS?= =?utf-8?B?eTZCSDFheUZCRmFDRTkwYWgxVmZnVmwremJxNU9rcHRXc1V3U3ZUODRiV2Zo?= =?utf-8?B?cW45YkluTjhwcnNHU1Z1OE1uY2FweFoxVDF2QW5VRkNYZWI4WHNWNWt3NWZL?= =?utf-8?B?eFRsUEJPeENBdW1BcTRzaElyZzVRekplbUtObTZORWlBSFAyY2J3bERaTlNl?= =?utf-8?B?S0h6V2N4cUJwaVM5bEl4WWF2UWYzZGwxUzlId2dJR3c3TkFRZ0Q4VTFDL1NR?= =?utf-8?B?VU1BTVB3Ri9JVlJndVJvZHl5TVR4OGFaOVQyYVl6ZlNLWlJhUXhIeFFYUUcz?= =?utf-8?B?TW9lOTRxUEVMMTF5Y3NlRTJxQkoyU2tVRU5zVElUUTJKSVdkYnRaOFB1dFFx?= =?utf-8?B?aE9ZTWJ1ZXBXQkl4am5STnFwNzhUTmxBMk5rYk1PUVVMOFRwMEpXRVMwTHc1?= =?utf-8?B?S3MxYXAwRVJZdmFsTVFuN0tOWTdYenRpdXc2emJYVVVjZ3NLRXFKcFhTa3dx?= =?utf-8?B?clVjN3FJWUl3RWo5dFRNM1I5Mk5rMHR2Q1hOWlBYbG5MNlpQV2liK3pUL2FJ?= =?utf-8?B?anJQdFRELzVBTFFEakdPZ0J2YW5aWU1DSFhSQitlZXZpbEhldDI4SmdVU2M4?= =?utf-8?B?WGJraVcrM20vMXBBWnU2YnNxUTVsNjEwNkQ5NGxYTm1IQUpFbzlsRWxOQUda?= =?utf-8?B?b1RuendkMkZXaktwMEYrOUh6RnM2aUhGNEJPOHp5R2M3WHJkTnBUQlU0MFRZ?= =?utf-8?B?UzlYRFVaSXArMjhRaXJwdG5RTnhzTisrb25nSVYwVWpIdHpBR1F1MFlmZGcr?= =?utf-8?B?dERTMTNzYlUxSW5ibXdWWWxUVkc2TVhLTm1RSFI2QmErOVh0NXVLd3VuQXV5?= =?utf-8?B?ZXBQVmVvY3p4MjFQMHFTZmQzWXQxL2EvLzRteEkzTzZOY0NIQ2Q0K3N1TDJ2?= =?utf-8?B?dmsxUC9DZ3FEZCtST3BMN2hVbktCN0FyaGp2UVM3QjhWUTdSY2VXK0E5RUE2?= =?utf-8?B?dnFWYlE3ODFVSDZEM2NTcnJDcnNreHRjeXRnNERqMkVqTkFOODdVazNRUUh6?= =?utf-8?B?OE12K2x4Tk92RjJITkhsQlVUZ3lBamIxWXB2ZnJKdk1PWUFvWTd2VHpHK3hW?= =?utf-8?B?Z0hoYUgyL3lWTWs2WEdiTW5aZ21BVjZ4RklLcWJNakhWYmNPTHYycXcvQTB2?= =?utf-8?B?TFZVNlZxYXJzQUV0cWVvMVBxOWNOWFZFcEo1YzBLakNiRFkvQzJDVjRiTis0?= =?utf-8?B?cGFGaGlYUUtFYVZ3bHlJdUMzWlFmTU84MThjRTd2MTdTMlI5QWtJaHRtUmpt?= =?utf-8?B?WEtzV2RIcTBnNklBNkF5SGI0UUMrYVprRzFQTVlteS9FNktHRXMzVzNsTjVK?= =?utf-8?B?dlV2UTJSckFSeUFaMWZsbWI1NUI5RE5CaU5DMHpUQXBXT3JWRXBDUjFLbjBK?= =?utf-8?Q?Wen653e36BnVTXxA=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: YWrVmOD/jThXRc9U+e8Ot7XgwDcI8RnRj17qn60sgld0GrDItozx1+QyrTxZUli0F5ak0eeO5nlOi798p/X0WrI7Sb3UZ0iNns48xDfyMTZl5VtTyT6xl+P4LUVY2R6OobpJ7VPZA1Nwj8wfCa+ioPfwNNqDVKnxkSf3119Ag8ClmyePBvaGzXANUg2R6zpNOayhIu/t1JQUHF0I97zsxoewHIEi1eGAULmYEV8gu2tCIIZJ1+aFsKCvQVf6IK415uHXwtLIf0aWzUmy7feP8lXEoFvlfPUGilVYbWRRfyta6TUXJuXOGY+Mk7Triah5ITXeyhGn3izsQOIsQENWAA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL3PR11MB6314.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc013e88-4f19-49e9-b31e-08def3404511 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 22:24:09.5332 (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: /bBMrU5tt5AA8EkYFebdrLLtf9ghFYbBMenRoymO4WDVMAJG3WIY0uLjefUymK/rJKVDwYVbhHApH3zd0YEaQzqHAYLazRFZEcUQVGueHkg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DSVPR11MB9768 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" T24gVHVlLCAyMDI2LTA4LTA0IGF0IDIxOjM2IC0wNDAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6DQo+ IE9uIFR1ZSwgQXVnIDA0LCAyMDI2IGF0IDA1OjIxOjA1UE0gLTA0MDAsIFN1bW1lcnMsIFN0dWFy dCB3cm90ZToNCj4gPiBPbiBUaHUsIDIwMjYtMDctMzAgYXQgMTc6MjAgKzAyMDAsIE1pY2hhbCBX YWpkZWN6a28gd3JvdGU6DQo+ID4gPiBGcm9tOiBNYWxsZXNoIEtvdWphbGFnaSA8bWFsbGVzaC5r b3VqYWxhZ2lAaW50ZWwuY29tPg0KPiA+ID4gDQo+ID4gPiBUb2RheSB0aGUgZHJpdmVyIHJlcG9y dHMgZmF1bHRzIHdpdGggYWQtaG9jIGRybV9lcnIoKS94ZV9ndF9lcnIoKQ0KPiA+ID4gc3RyaW5n cyB0aGF0IGhhdmUgbm8gc3RhYmxlIHNoYXBlLiBUaGF0IGlzIHJlYWRhYmxlIGZvciBhIGh1bWFu LA0KPiA+ID4gYnV0DQo+ID4gPiBpdA0KPiA+ID4gZ2l2ZXMgZmxlZXQgdG9vbGluZyBub3RoaW5n IGR1cmFibGUgdG8gbWF0Y2ggb246IHRoZSB3b3JkaW5nDQo+ID4gPiBjaGFuZ2VzDQo+ID4gPiBi ZXR3ZWVuIHJlbGVhc2VzLCBsaW5lcyBjYW4gYmUgcmF0ZS1saW1pdGVkIG9yIGRyb3BwZWQgdW5k ZXIgYW4NCj4gPiA+IGVycm9yDQo+ID4gPiBzdG9ybSwgYW5kIHRoZXJlIGlzIG5vIGNvbnNpc3Rl bnQgd2F5IHRvIGFzayAid2hpY2ggcmVjb2duaXNlZA0KPiA+ID4gZmF1bHQNCj4gPiA+IGp1c3Qg aGFwcGVuZWQ/Ii4NCj4gPiA+IA0KPiA+ID4gSW50cm9kdWNlIGEgc2lnbmF0dXJlIGlkZW50aWZp ZXIgKFNJR0lEKTogYSBzbWFsbCwgc3RhYmxlIGludGVnZXINCj4gPiA+IHRoYXQNCj4gPiA+IG5h bWVzIG9uZSByZWNvZ25pc2VkIFhlIGZhdWx0IHNpdHVhdGlvbiBhbmQgc2VydmVzIGFzIHRoZSBw cmltYXJ5DQo+ID4gPiBoYW5kbGUNCj4gPiA+IGZvciB0cmlhZ2UuIEEgU0lHSUQgbWFwcywgdGhy b3VnaCBwdWJsaXNoZWQgZW5kLXVzZXINCj4gPiA+IGRvY3VtZW50YXRpb24sDQo+ID4gPiB0byBh DQo+ID4gPiBkZXNjcmlwdGlvbiBhbmQgYSByZWNvbW1lbmRlZCBhY3Rpb247IHRoZSBkcml2ZXIg b25seSBoYXMgdG8gZW1pdA0KPiA+ID4gdGhlDQo+ID4gPiByaWdodCBTSUdJRCBuZXh0IHRvIHRo ZSB1c3VhbCBodW1hbi1yZWFkYWJsZSB0ZXh0Lg0KPiA+IA0KPiA+IEknbSBhIGxpdHRsZSB3b3Jy aWVkDQo+IA0KPiBJIHVuZGVyc3RhbmQgeW91ciBmZWVsaW5nLiBXZSd2ZSBiZWVuIGFsbCB0aHJv dWdoIHRoYXQ6DQo+IA0KPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9pbnRlbC14ZS9hbXFob0Z6 UWFmMUhzdUZxQGludGVsLmNvbS8NCj4gDQo+ID4gd2UncmUgaW50cm9kdWNpbmcgc29tZSBBQkkg d2l0aCB0aGlzIHRoYXQgaXNuJ3QNCj4gPiByZWFsbHkgbWFpbnRhaW5hYmxlIGluIHRoZSBsb25n IHRlcm06DQo+IA0KPiBJIHVuZGVyc3RhbmQgdGhlIGZlYXIgYW5kIGluZGVlZCB0aGUgZmlyc3Qg cHJvcG9zYWxzIEkgZ290IHdhcw0KPiB1bm1haW50YWluYWJsZS4gTXkgZmlyc3QgcmVjb3JkIG9m IHB1c2hpbmcgYmFjayBvbiBoYXZpbmcgc29tZXRoaW5nDQo+IGxpa2UgdGhpcyB3YXMgTm92ZW1i ZXIgbGFzdCB5ZWFyLg0KPiANCj4gQnV0IEkgcmVzcGVjdGZ1bGx5IGRpc2FncmVlIGhlcmUuIFRo aXMgbGF0ZXN0IHZlcnNpb24gaXMgaW1obw0KPiBvcmdhbml6ZWQgYW5kIGNvbmNpc2UuDQo+IA0K PiA+IHdlIG1pZ2h0IGRlY2lkZSB0byBjaGFuZ2UgdGhlDQo+ID4gZmxvdyBvciBjaGFuZ2UgdGhl IHdheSBhbiBlcnJvciBpcyByZXBvcnRlZCBvciB0aGUgc2l0dWF0aW9uIHRoYXQNCj4gPiB0cmln Z2VycyB0aGlzIGVycm9yIGZyb20gZmlybXdhcmUgb3IgaGFyZHdhcmUgbWlnaHQgY2hhbmdlIGZv ciBzb21lDQo+ID4gcmVhc29uLg0KPiANCj4gWW91IGFyZSByaWdodCwgZG1lc2cgaXMgbm90IEFC SSBhbmQgaXQgd2lsbCBuZXZlciBiZS4gdGhlc2UgbG9ncw0KPiBhcmUgYWltZWQgZm9yIGRldmVs b3BlcnMgYW5kIGRldmVsb3BlcnMgYXJlIGZyZWUgdG8gY2hhbmdlIHRoZW0gYXMNCj4gbmVlZGVk LiBUaGlzIHdhcyBhIGJpZyBjb3VudGVyLXJlcXVpcmVtZW50IEkgZ2F2ZSB0byB0aGUgb3JpZ2lu YWwNCj4gaWRlYS4NCj4gDQo+IFdlIGFyZSBub3QgbW92aW5nIGFsbCB0aGUgbG9ncyB0byB0aGlz IGZvcm1hdCB3ZSBhcmUgbm90IHByb21pc2luZw0KPiBkbWVzZyBzdGFiaWxpdHkuDQo+IA0KPiBU aGUgbnVtYmVyaW5nIHN0YWJpbGl0eSBob3dldmVyIG5lZWRzIHRvIGJlIHNvbWV3aGF0IHN0YWJs ZSBmb3INCj4gdGhlIENQRVIgbG9nIGluIHRyYWNlZnMsIHRoYXQncyB0aGUgQUJJLiBCdXQgdGhl biB0aGF0IG1lYW5pbmcNCj4gc2hvdWxkbid0IGNoYW5nZSBpZiB0aGUgY29kZSBoYXMgdG8gY2hh bmdlLiBBIG5ldyBudW1iZXIgc2hvdWxkDQo+IGJlIG5lZWRlZCBpZiB0aGUgY29tcG9uZW50L2xv Y2F0aW9uL3NldmVyaXR5IG9yIHJlY29tbWVuZGVkDQo+IHJlY292ZXJ5IG5lZWRzIHRvIGJlIGRp ZmZlcmVudC4NCj4gDQo+IEJ1dCBsaWtlIEkgdG9sZCBSYWFnIGFzIHdlbGwsIG5vIGRldmVsb3Bl ciBuZWVkcyB0byBpbnZlbnQgYW55DQo+IG51bWJlciwgaWYgdGhleSBkb24ndCBrbm93IGp1c3Qg dXNlIHJlZ3VsYXIgbG9nIG1lc3NhZ2VzLg0KPiBXZSBhcmUgbm90IGdvaW5nIHRvIG1vdmUgYWxs IHRoZSBsb2dzIHRvd2FyZHMgdGhpcyB0aGluZy4NCj4gQWxzbywgdGhlIGxvY2F0aW9uIG9mIHRo ZSBpc3N1ZSBpcyB3aGF0IHRyaWdnZXJzIHRoZSBJRC4uLg0KPiBpdCBpcyB2ZXJ5IHNpbXBsZSBi eSBuYXR1cmUuIEFuZCB3ZSBuZWVkIHRvIGtlZXAgaXQgc2ltcGxlLg0KPiANCj4gPiBEb2VzIHRo aXMgbG9jayB1cyBpbnRvIGEgc29sdXRpb24gZm9yIGFsbCBvZiB0aGlzPyBJIHN0aWxsIG5lZWQN Cj4gPiB0byBnbyB0aHJvdWdoIHRoZSBmdWxsIHBhdGNoIHNlcmllcy4uLg0KPiANCj4gWWVzLCBw bGVhc2UgdGFrZSBhIGxvb2sgdG8gdGhlIHNlcmllcy4gQWxsIHJldmlld3MgYXJlIHdlbGNvbWVk Lg0KPiANCj4gPiANCj4gPiBUaGUgZG1lc2cgZW50cmllcyBhcmUgZ2VuZXJhbGx5IGZvciBodW1h biBkZWJ1Z2dhYmlsaXR5LiBJIGdldCB0aGUNCj4gPiBkZXNpcmUgdG8gbWFrZSB0aGVzZSBlYXNp ZXIgdG8gcGFyc2UgZm9yIGFuIEFJIHRvb2wgb3IgZ2VuZXJhdGVkDQo+ID4gc2NyaXB0LCBidXQg d2UgYWxzbyBkb24ndCB3YW50IHRvIHByZXZlbnQgZGVidWcgcmVsYXRlZCBjaGFuZ2VzIGZvcg0K PiA+IGVycm9yIGhhbmRsaW5nIGFuZCByZXBvcnRpbmcuDQo+IA0KPiBXZSBhcmUgbm90IHByb21p c2luZyB0aGlzLiBUaGUgc3RhYmxlIEFCSSBpcyBvbmx5IHRoZSBDUEVSIG9uDQo+IHRyYWNlZnMu DQo+IA0KPiBXZSBuZWVkIHRvIGFsd2F5cyBrZWVwIHRoaXMgaW4gbWluZCBhcyBzdGF0ZWQgaW4N Cj4gRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9wcmludGstaW5kZXgucnN0Og0KPiANCj4gIiIiDQo+ IFRoZSBrZXJuZWwgbWVzc2FnZXMgYXJlIGV2b2x2aW5nIHRvZ2V0aGVyIHdpdGggdGhlIGNvZGUu IEFzIGEgcmVzdWx0LA0KPiBwYXJ0aWN1bGFyIGtlcm5lbCBtZXNzYWdlcyBhcmUgbm90IEtBQkkg YW5kIG5ldmVyIHdpbGwgYmUhDQo+ICIiIg0KPiANCj4gVGhhbmtzLA0KPiBSb2RyaWdvLg0KPiAN Cj4gPiANCj4gPiBUaGFua3MsDQo+ID4gU3R1YXJ0DQo+ID4gDQo+ID4gPiANCj4gPiA+IFNpZ25l ZC1vZmYtYnk6IE1hbGxlc2ggS291amFsYWdpIDxtYWxsZXNoLmtvdWphbGFnaUBpbnRlbC5jb20+ DQo+ID4gPiBBc3Npc3RlZC1ieTogQ29waWxvdDpPcHVzLTQuOA0KPiA+ID4gU2lnbmVkLW9mZi1i eTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPg0KPiA+ID4gQ28tZGV2ZWxv cGVkLWJ5OiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4NCj4g PiA+IFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50 ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiBDYzogWW9uaSBMZXZpdHQgPHlvbmkubGV2aXR0QGlu dGVsLmNvbT4NCj4gPiA+IENjOiBBcmF2aW5kIElkZGFtc2V0dHkgPGFyYXZpbmQuaWRkYW1zZXR0 eUBpbnRlbC5jb20+DQo+ID4gPiBDYzogUmFhZyBKYWRhdiA8cmFhZy5qYWRhdkBpbnRlbC5jb20+ DQo+ID4gPiBDYzogUmlhbmEgVGF1cm8gPHJpYW5hLnRhdXJvQGludGVsLmNvbT4NCj4gPiA+IC0t LQ0KPiA+ID4gdjI6IENPUlJFQ1RFRCBpcyBzdGlsbCBhbiBlcnJvciAoTWljaGFsKQ0KPiA+ID4g wqDCoMKgIHByZXBhcmUgdG8gZGVjb3JhdGUgZG1lc2cgd2l0aCBjb21wL2xvYyAoTWljaGFsKQ0K PiA+ID4gLS0tDQo+ID4gPiDCoERvY3VtZW50YXRpb24vZ3B1L3hlL2luZGV4LnJzdMKgwqDCoMKg wqDCoMKgIHzCoMKgIDEgKw0KPiA+ID4gwqBEb2N1bWVudGF0aW9uL2dwdS94ZS94ZV9zaWdpZC5y c3TCoMKgwqDCoCB8wqAgMTQgKysNCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxl wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArDQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS94 ZS9hYmkveGVfc2lnaWRfYWJpLmggfCAxODMNCj4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysr KysrDQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9sb2cuY8KgwqDCoMKgwqDCoMKgwqDC oMKgIHwgMTM1ICsrKysrKysrKysrKysrKysrKysNCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hl L3hlX2xvZy5owqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIwICsrKw0KPiA+ID4gwqA2IGZpbGVz IGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspDQo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBE b2N1bWVudGF0aW9uL2dwdS94ZS94ZV9zaWdpZC5yc3QNCj4gPiA+IMKgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS9hYmkveGVfc2lnaWRfYWJpLmgNCj4gPiA+IMKgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9sb2cuYw0KPiA+ID4gwqBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2xvZy5oDQo+ID4gPiANCj4gPiA+IGRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS94ZS9pbmRleC5yc3QNCj4gPiA+IGIvRG9jdW1l bnRhdGlvbi9ncHUveGUvaW5kZXgucnN0DQo+ID4gPiBpbmRleCA2NjVjMGU5MzYwMWMuLjAyNDdh MjU1ZjdlNiAxMDA2NDQNCj4gPiA+IC0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L3hlL2luZGV4LnJz dA0KPiA+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUveGUvaW5kZXgucnN0DQo+ID4gPiBAQCAt MzUsMyArMzUsNCBAQCBUaGUgZGlzcGxheSwgb3IgOnJlZjpgZHJtLWttc2AsIHN1cHBvcnQgZm9y DQo+ID4gPiBkcm0veGUNCj4gPiA+IGlzIHByb3ZpZGVkIGJ5DQo+ID4gPiDCoMKgwqAgeGUtZHJt LXVzYWdlLXN0YXRzLnJzdA0KPiA+ID4gwqDCoMKgIHhlX2NvbmZpZ2ZzDQo+ID4gPiDCoMKgwqAg eGVfZ3Rfc3RhdHMNCj4gPiA+ICvCoMKgIHhlX3NpZ2lkDQo+ID4gPiBkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9ncHUveGUveGVfc2lnaWQucnN0DQo+ID4gPiBiL0RvY3VtZW50YXRpb24vZ3B1 L3hlL3hlX3NpZ2lkLnJzdA0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4 IDAwMDAwMDAwMDAwMC4uNDVkODRhNjJmMTg1DQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiAr KysgYi9Eb2N1bWVudGF0aW9uL2dwdS94ZS94ZV9zaWdpZC5yc3QNCj4gPiA+IEBAIC0wLDAgKzEs MTQgQEANCj4gPiA+ICsuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIE1J VCkNCj4gPiA+ICsNCj4gPiA+ICs9PT09PT09PQ0KPiA+ID4gK1hlIFNJR0lEDQo+ID4gPiArPT09 PT09PT0NCj4gPiA+ICsNCj4gPiA+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL3hl L2FiaS94ZV9zaWdpZF9hYmkuaA0KPiA+ID4gK8KgwqAgOmRvYzogWGUgRXJyb3IgU2lnbmF0dXJl cyAoU0lHSUQpDQo+ID4gPiArDQo+ID4gPiArU2lnbmF0dXJlIElkZW50aWZpZXJzDQo+ID4gPiAr PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiArDQo+ID4gPiArLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS94ZS9hYmkveGVfc2lnaWRfYWJpLmgNCj4gPiA+ICvCoMKgIDppbnRlcm5h bDoNCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUvTWFrZWZpbGUNCj4gPiA+ IGIvZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlDQo+ID4gPiBpbmRleCA2N2FkYTFkNmMyZmIu LjdhYzM5NTQ3MzdmOSAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtl ZmlsZQ0KPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlDQo+ID4gPiBAQCAt ODcsNiArODcsNyBAQCB4ZS15ICs9IHhlX2JiLm8gXA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHhl X2h3X2ZlbmNlLm8gXA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHhlX2lycS5vIFwNCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqB4ZV9sYXRlX2JpbmRfZncubyBcDQo+ID4gPiArwqDCoMKgwqDCoMKgwqB4 ZV9sb2cubyBcDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgeGVfbHJjLm8gXA0KPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHhlX21lbV9wb29sLm8gXA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHhlX21pZ3Jh dGUubyBcDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL2FiaS94ZV9zaWdp ZF9hYmkuaA0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUvYWJpL3hlX3NpZ2lkX2FiaS5oDQo+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi45OTcx N2ZkZjc0YTYNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS94ZS9hYmkveGVfc2lnaWRfYWJpLmgNCj4gPiA+IEBAIC0wLDAgKzEsMTgzIEBADQo+ID4gPiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLw0KPiA+ID4gKy8qDQo+ID4gPiArICog Q29weXJpZ2h0IMKpIDIwMjYgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ICsgKi8NCj4gPiA+ICsN Cj4gPiA+ICsjaWZuZGVmIF9BQklfWEVfU0lHSURfQUJJX0hfDQo+ID4gPiArI2RlZmluZSBfQUJJ X1hFX1NJR0lEX0FCSV9IXw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIERPQzogWGUg RXJyb3IgU2lnbmF0dXJlcyAoU0lHSUQpDQo+ID4gPiArICoNCj4gPiA+ICsgKiBXaGF0IFNJR0lE IHN0YW5kcyBmb3INCj4gPiA+ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ICsgKg0K PiA+ID4gKyAqIFNJR0lEIGlzIHNob3J0IGZvciAqU2lnbmF0dXJlIElkZW50aWZpZXIqLiBBIFNJ R0lEIGlzIGENCj4gPiA+IHNtYWxsLA0KPiA+ID4gc3RhYmxlIGludGVnZXINCj4gPiA+ICsgKiB0 aGF0IG5hbWVzIG9uZSAqcmVjb2duaXNlZCBYZSBmYXVsdCBzaXR1YXRpb24qIC0tIG5vdGhpbmcN Cj4gPiA+IG1vcmUuDQo+ID4gPiBJdCBpcyB0aGUNCj4gPiA+ICsgKiBwcmltYXJ5IGhhbmRsZSB1 c2VkIGZvciB0cmlhZ2U6IGEgU0lHSUQgbWFwcyB0byBhIGh1bWFuDQo+ID4gPiBkZXNjcmlwdGlv biBhbmQgYQ0KPiA+ID4gKyAqIHJlY29tbWVuZGVkIGZpcnN0IGFjdGlvbi4gQSBjb2Fyc2UgZmly c3Qtb3JkZXIgYWN0aW9uIGlzDQo+ID4gPiBkb2N1bWVudGVkIGluLXRyZWUNCj4gPiA+ICsgKiBw ZXIgU0lHSUQgKHNlZSAiRmlyc3Qtb3JkZXIgYWN0aW9uIiBiZWxvdykgc28gdGhlIGlkIGlzDQo+ ID4gPiBhY3Rpb25hYmxlIG9uIGl0cw0KPiA+ID4gKyAqIG93bjsgcHVibGlzaGVkIGVuZC11c2Vy IGRvY3VtZW50YXRpb24gcmVmaW5lcyBpdCB3aXRoIGZpbmVyLA0KPiA+ID4gY3Jvc3MtcHJvZHVj dA0KPiA+ID4gKyAqIGRldGFpbC4gVGhlIGRyaXZlcidzIG9ubHkgam9iIGlzIHRvIGVtaXQgdGhl IHJpZ2h0IFNJR0lEIG5leHQNCj4gPiA+IHRvDQo+ID4gPiB0aGUgdXN1YWwNCj4gPiA+ICsgKiBo dW1hbi1yZWFkYWJsZSB0ZXh0Lg0KPiA+ID4gKyAqDQo+ID4gPiArICogV2h5IHRoaXMgZXhpc3Rz DQo+ID4gPiArICogLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiArICoNCj4gPiA+ICsgKiBUb2RheSB0 aGUgZHJpdmVyIHJlcG9ydHMgZmF1bHRzIHdpdGggYWQtaG9jIGBgZHJtX2VycigpYGAgLw0KPiA+ ID4gYGB4ZV9ndF9lcnIoKWBgDQo+ID4gPiArICogc3RyaW5ncyB0aGF0IGhhdmUgbm8gc3RhYmxl IHNoYXBlLiBUaGF0IGlzIGZpbmUgZm9yIGEgaHVtYW4NCj4gPiA+IHJlYWRpbmcgZG1lc2csDQo+ ID4gPiArICogYnV0IGl0IGdpdmVzIGZsZWV0IHRvb2xpbmcgbm90aGluZyBkdXJhYmxlIHRvIG1h dGNoIG9uOiB0aGUNCj4gPiA+IHdvcmRpbmcgY2hhbmdlcw0KPiA+ID4gKyAqIGJldHdlZW4gcmVs ZWFzZXMsIGxpbmVzIGNhbiBiZSByYXRlLWxpbWl0ZWQgb3IgZHJvcHBlZCB1bmRlcg0KPiA+ID4g YW4NCj4gPiA+IGVycm9yIHN0b3JtLA0KPiA+ID4gKyAqIGFuZCB0aGVyZSBpcyBubyBjb25zaXN0 ZW50IHdheSB0byBhc2sgIndoaWNoIHJlY29nbmlzZWQgZmF1bHQNCj4gPiA+IGp1c3QgaGFwcGVu ZWQ/Ig0KPiA+ID4gKyAqIEEgU0lHSUQgYW5zd2VycyBleGFjdGx5IHRoYXQgb25lIHF1ZXN0aW9u LCBpZGVudGljYWxseSBhY3Jvc3MNCj4gPiA+IGRyaXZlciBhbmQNCj4gPiA+ICsgKiBmaXJtd2Fy ZSB2ZXJzaW9ucywgYW5kIChldmVudHVhbGx5KSBhY3Jvc3Mgb3RoZXIgSW50ZWwNCj4gPiA+IGRl dmljZXMgaW4NCj4gPiA+IGEgbm9kZS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFdoYXQgYSBTSUdJ RCBpcyAoYW5kIGlzIG5vdCkNCj4gPiA+ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4gPiArICoNCj4gPiA+ICsgKiBBIFNJR0lEIG5hbWVzICp3aGljaCBzaXR1YXRpb24qIGlz IGJlaW5nIHJlcG9ydGVkLiBJdA0KPiA+ID4gZGVsaWJlcmF0ZWx5IGRvZXMgbm90DQo+ID4gPiAr ICogZW5jb2RlIHRoZSBkZXRhaWxlZCByZWFzb24gb3IgdGhlIG91dGNvbWUuIFRob3NlIGFyZSBj YXJyaWVkDQo+ID4gPiBhbG9uZ3NpZGUgaXQ6Og0KPiA+ID4gKyAqDQo+ID4gPiArICrCoMKgIFNJ R0lEwqDCoMKgIC0+IHdoaWNoIHJlY29nbmlzZWQgc2l0dWF0aW9uIGlzIGJlaW5nIHJlcG9ydGVk DQo+ID4gPiArICrCoMKgIHNldmVyaXR5IC0+IGhvdyBzZXJpb3VzIHRoaXMgaW5zdGFuY2UgaXMg KHNlZSBiZWxvdyAtLSBub3QNCj4gPiA+IGZpeGVkIHBlciBTSUdJRCkNCj4gPiA+ICsgKsKgwqAg ZXJybm/CoMKgwqAgLT4gdGhlIGZhaWxpbmcgb3BlcmF0aW9uJ3MgZXJyb3IsIHNob3duIHdpdGgg JXBlDQo+ID4gPiArICrCoMKgIG1lc3NhZ2XCoCAtPiBmcmVlLWZvcm0gaHVtYW4tcmVhZGFibGUg Y29udGV4dA0KPiA+ID4gKyAqDQo+ID4gPiArICogU2V2ZXJpdHkgaXMgaW5kZXBlbmRlbnQgb2Yg dGhlIFNJR0lELiBUaGUgc2FtZSBzaXR1YXRpb24gY2FuDQo+ID4gPiBiZQ0KPiA+ID4gcmVwb3J0 ZWQgYXQNCj4gPiA+ICsgKiBkaWZmZXJlbnQgc2V2ZXJpdGllcyBkZXBlbmRpbmcgb24gdGhlIGlu c3RhbmNlIGFuZCB0aGUNCj4gPiA+IHJlY292ZXJ5DQo+ID4gPiB0YWtlbiwgc28gYQ0KPiA+ID4g KyAqIFNJR0lEIGlzIG5ldmVyIHRpZWQgdG8gb25lIHNldmVyaXR5OyB0aGUgcmVwb3J0aW5nIHNp dGUNCj4gPiA+IGNob29zZXMNCj4gPiA+IGl0IGJ5IGNhbGxpbmcNCj4gPiA+ICsgKiB0aGUgbWF0 Y2hpbmcgeGVfbG9nXyooKSBoZWxwZXIgKHNlZSB4ZV9sb2cuaCkuDQo+ID4gPiArICoNCj4gPiA+ ICsgKiBIb3cgdG8gcGljayBhIFNJR0lEICh0aGUgdW5pcXVlbmVzcyBydWxlKQ0KPiA+ID4gKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiArICoNCj4g PiA+ICsgKiBQaWNrIHBlciAqcmVwb3J0IHNpdGUqLCBub3QgcGVyIGluY2lkZW50LiBFYWNoIHNp dGUgZW1pdHMgdGhlDQo+ID4gPiBzaW5nbGUgbW9zdA0KPiA+ID4gKyAqIHNwZWNpZmljIHJlY29n bmlzZWQgc2l0dWF0aW9uICpmb3IgdGhhdCBzaXRlKiAtLSBzbyB0aGUNCj4gPiA+IHF1ZXN0aW9u DQo+ID4gPiBpcyBuZXZlcg0KPiA+ID4gKyAqICJjbGFzc2lmeSB0aGlzIHdob2xlIGZhaWx1cmUi LCBpdCBpcyAid2hhdCBkb2VzIHRoaXMgc2l0ZQ0KPiA+ID4gZGV0ZWN0PyIsIHdoaWNoIGhhcw0K PiA+ID4gKyAqIG9uZSBhbnN3ZXIuIEEgc2luZ2xlIHVuZGVybHlpbmcgZmFpbHVyZSB0aGVyZWZv cmUNCj4gPiA+IGxlZ2l0aW1hdGVseQ0KPiA+ID4gcHJvZHVjZXMgYQ0KPiA+ID4gKyAqICpjaGFp biogb2YgcmVwb3J0cyBmcm9tIGRpZmZlcmVudCBsYXllcnMsIGVhY2ggd2l0aCBpdHMgb3duDQo+ ID4gPiBTSUdJRA0KPiA+ID4gLS0gZS5nLiBhDQo+ID4gPiArICogR3VDIGNvbW11bmljYXRpb24g ZmFpbHVyZSBpcyByZXBvcnRlZCBhcyAlWEVfU0lHSURfUlVOVElNRV9GVw0KPiA+ID4gYnkNCj4g PiA+IHRoZSBmaXJtd2FyZQ0KPiA+ID4gKyAqIHBhdGgsIHRoZSBmYWlsZWQgcmVjb3ZlcnkgYXMg JVhFX1NJR0lEX0dUX1REUiBieSB0aGUgcmVzZXQNCj4gPiA+IHBhdGgsDQo+ID4gPiBhbmQgYW4N Cj4gPiA+ICsgKiBhYm9ydGVkIGJpbmQgYXMgJVhFX1NJR0lEX1BST0JFIGJ5IHRoZSBwcm9iZSBw YXRoLiBUaGF0IGNoYWluDQo+ID4gPiBsZXRzIHRyaWFnZQ0KPiA+ID4gKyAqIGZvbGxvdyBhIGZh dWx0IGZyb20gb3JpZ2luIHRvIGZpbmFsIGVmZmVjdDsgaXQgaXMgbm90IGENCj4gPiA+IGR1cGxp Y2F0ZS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIElmIGEgc2l0ZSBkb2VzIG5vdCBtYXRjaCBhbnkg ZGVmaW5lZCBzaXR1YXRpb24sIGtlZXAgdXNpbmcNCj4gPiA+IHRoZQ0KPiA+ID4gb3JkaW5hcnkN Cj4gPiA+ICsgKiBgYHhlX2VycigpYGAgLyBgYHhlX2d0X2VycigpYGAgbG9nZ2luZyByYXRoZXIg dGhhbiBmb3JjaW5nIGENCj4gPiA+IFNJR0lEOiBhIHdyb25nDQo+ID4gPiArICogb3Igb3Zlci1i cm9hZCBjbGFzc2lmaWNhdGlvbiBpcyBoYXJkZXIgdG8gcmV0aXJlIHRoYW4gYQ0KPiA+ID4gbWlz c2luZw0KPiA+ID4gb25lLiBXaGVuIGENCj4gPiA+ICsgKiBuZXcgc2l0dWF0aW9uIGlzIGdlbnVp bmVseSB3b3J0aCB0cmlhZ2luZywgYWRkIGl0IHRvIHRoZSBsaXN0DQo+ID4gPiBiZWxvdy4NCj4g PiA+ICsgKg0KPiA+ID4gKyAqIFNjb3BlOiBzb2Z0d2FyZS1lbWl0dGVkIHNpZ25hdHVyZXMgb25s eQ0KPiA+ID4gKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ ID4gKyAqDQo+ID4gPiArICogVGhpcyBoZWFkZXIgZW51bWVyYXRlcyBvbmx5IHRoZSBzaXR1YXRp b25zIHRoYXQgdGhlICpkcml2ZXINCj4gPiA+IGl0c2VsZiogZGV0ZWN0cw0KPiA+ID4gKyAqIGFu ZCByZXBvcnRzIGZyb20gc29mdHdhcmU6IHByb2JlIGFib3J0LCB3ZWRnZWQsDQo+ID4gPiBzdXJ2 aXZhYmlsaXR5LA0KPiA+ID4gZHJpdmVyLQ0KPiA+ID4gKyAqIGRldGVjdGVkIGZpcm13YXJlIGZh aWx1cmVzLCBlbmdpbmUgVERSLCBtZW1vcnkgZmF1bHRzIGFuZA0KPiA+ID4gSU8vYnVzDQo+ID4g PiBmYXVsdHMuDQo+ID4gPiArICogVGhlc2UgYXJlIHRoZSBvbmx5IHZhbHVlcyB0aGUgZHJpdmVy IGFzc2lnbnMuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBTaWduYXR1cmVzIHRoYXQgKm9yaWdpbmF0 ZSogaW4gZmlybXdhcmUgb3IgaGFyZHdhcmUgYXJlIGENCj4gPiA+IGRpZmZlcmVudCB0aGluZzoN Cj4gPiA+ICsgKiB0aGV5IGFyZSBwcm9kdWNlZCBhbmQgaWRlbnRpZmllZCBieSB0aGUgZmlybXdh cmUgb3IgdGhlDQo+ID4gPiBoYXJkd2FyZQ0KPiA+ID4gaXRzZWxmDQo+ID4gPiArICogKGUuZy4g dmlhIHRoZWlyIG93biByZWNvcmRzIG9yIGVycm9yIGNvdW50ZXJzKSwgYW5kIHRoZQ0KPiA+ID4g ZHJpdmVyDQo+ID4gPiBtZXJlbHkgbG9ncw0KPiA+ID4gKyAqIHRoZW0gYXMgdGhleSBhcmUgZ2l2 ZW4gdG8gdXMuIFRoZXkgYXJlIGRlbGliZXJhdGVseSAqbm90Kg0KPiA+ID4gZW51bWVyYXRlZCBo ZXJlIC0tDQo+ID4gPiArICogbWludGluZyBhIGRyaXZlci1zaWRlIGlkIGZvciBhIGZpcm13YXJl L2hhcmR3YXJlLXJlcG9ydGVkDQo+ID4gPiBlcnJvcg0KPiA+ID4gd291bGQgb25seQ0KPiA+ID4g KyAqIGR1cGxpY2F0ZSBhbiBpZGVudGlmaWVyIHRoZSByZXBvcnRpbmcgbGF5ZXIgYWxyZWFkeSBv d25zLiBUaGUNCj4gPiA+IHR3bw0KPiA+ID4gKyAqIGRyaXZlci1kZXRlY3RlZCBmaXJtd2FyZSBz aXR1YXRpb25zIGJlbG93DQo+ID4gPiAoJVhFX1NJR0lEX1JVTlRJTUVfRlcsDQo+ID4gPiArICog JVhFX1NJR0lEX0RFVklDRV9GVykgYXJlIHNvZnR3YXJlIHNpZ25hdHVyZXM6IHRoZXkgbWFyayB0 aGF0DQo+ID4gPiAqdGhlDQo+ID4gPiBkcml2ZXIqDQo+ID4gPiArICogb2JzZXJ2ZWQgYSBmaXJt d2FyZSBwcm9ibGVtLCBub3QgYSBzaWduYXR1cmUgcmVwb3J0ZWQgYnkgdGhlDQo+ID4gPiBmaXJt d2FyZS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIE51bWJlcmluZw0KPiA+ID4gKyAqIC0tLS0tLS0t LQ0KPiA+ID4gKyAqDQo+ID4gPiArICogU0lHSURzIGFyZSBhIHNpbmdsZSBmbGF0IGxpc3QgbnVt YmVyZWQgc2VxdWVudGlhbGx5IHdpdGhpbg0KPiA+ID4gdGhlDQo+ID4gPiBhc3NpZ25lZCByYW5n ZSwNCj4gPiA+ICsgKiBpbiB0aGUgb3JkZXIgdGhlIHNpdHVhdGlvbnMgd2VyZSBpbnRyb2R1Y2Vk LiBWYWx1ZXMgYXJlDQo+ID4gPiBzdGFibGU6DQo+ID4gPiBvbmNlIGFzc2lnbmVkDQo+ID4gPiAr ICogdGhleSBhcmUgb25seSBldmVyIGFwcGVuZGVkLCBuZXZlciByZW51bWJlcmVkIG9yIHJldXNl ZC4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIEEgcmV0aXJlZCBzaXR1YXRpb24gaXMgZGVwcmVjYXRl ZCBpbiBwbGFjZSwgbmV2ZXIgcmUtDQo+ID4gPiBwdXJwb3NlZC4NCj4gPiA+ICsgKg0KPiA+ID4g KyAqIEZpcnN0LW9yZGVyIGFjdGlvbiAocmVzb2x1dGlvbiBidWNrZXRzKQ0KPiA+ID4gKyAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gKyAqDQo+ID4gPiAr ICogU28gdGhhdCBhIFNJR0lEIGlzIGFjdGlvbmFibGUgb24gaXRzIG93biwgZWFjaCBvbmUgaXMg dGFnZ2VkDQo+ID4gPiB3aXRoDQo+ID4gPiBhIGNvYXJzZQ0KPiA+ID4gKyAqICpyZXNvbHV0aW9u IGJ1Y2tldCo6IHRoZSBmaXJzdCB0aGluZyBhbiBvcGVyYXRvciBzaG91bGQgZG8gb24NCj4gPiA+ IHNlZWluZyBpdC4gVGhlDQo+ID4gPiArICogYnVja2V0IGlzIGEgc3RhYmxlLCBkcml2ZXItb3du ZWQgaGludDsgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbg0KPiA+ID4gbWF5DQo+ID4gPiByZWZpbmUg aXQsDQo+ID4gPiArICogYnV0IHRoZSBpbi10cmVlIHZhbHVlIGFsd2F5cyBzdGFuZHMgb24gaXRz IG93bi4gRXZlcnkgbmV3DQo+ID4gPiBTSUdJRA0KPiA+ID4gbXVzdCBwaWNrIGENCj4gPiA+ICsg KiBidWNrZXQsIHdoaWNoIGZvcmNlcyB0aGUgcXVlc3Rpb24gIndoYXQgc2hvdWxkIHNvbWVvbmUg ZG8NCj4gPiA+IGFib3V0DQo+ID4gPiB0aGlzPyIgdG8gYmUNCj4gPiA+ICsgKiBhbnN3ZXJlZCB1 cCBmcm9udC4gVGhlIGJ1Y2tldHMgYXJlOjoNCj4gPiA+ICsgKg0KPiA+ID4gKyAqwqDCoCBDT0xM RUNUwqAgLS0gY2FwdHVyZSBsb2dzIGFuZCBvcGVuIGEgYnVnIHJlcG9ydA0KPiA+ID4gKyAqwqDC oCBSRVRSWcKgwqDCoCAtLSB0cmFuc2llbnQgb3IgYWxyZWFkeSByZWNvdmVyZWQ7IHdhdGNoIGZv cg0KPiA+ID4gcmVjdXJyZW5jZQ0KPiA+ID4gKyAqwqDCoCBVUERBVEXCoMKgIC0tIGEgZmlybXdh cmUgdXBkYXRlIC8gZmxhc2ggaXMgcmVxdWlyZWQNCj4gPiA+ICsgKsKgwqAgUkVDT1ZFUsKgIC0t IGFuIGV4cGxpY2l0IHJlY292ZXJ5IHN0ZXAgaXMgbmVlZGVkIChyZWJpbmQsDQo+ID4gPiBidXMN Cj4gPiA+IHJlc2V0KQ0KPiA+ID4gKyAqwqDCoCBJR05PUkXCoMKgIC0tIGlnbm9yZSBpZiB0aGUg U0lHSUQgc2V2ZXJpdHkgaXMgSU5GT1JNQVRJT05BTA0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhl IGJ1Y2tldCBpcyBkb2N1bWVudGF0aW9uIG9ubHkgLS0gaXQgaXMgcmVjb3JkZWQgcGVyIFNJR0lE DQo+ID4gPiBpbg0KPiA+ID4gdGhlIGVudW0NCj4gPiA+ICsgKiBrZXJuZWwtZG9jIGJlbG93IGFu ZCBpcyBub3QgcHJpbnRlZCBvbiB0aGUgKGRlbGliZXJhdGVseQ0KPiA+ID4gbGVhbikNCj4gPiA+ IGRtZXNnIGxpbmUuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBXaGVuIHRvIHVzZSBTSUdJRCBsb2dn aW5nDQo+ID4gPiArICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gKyAqDQo+ID4g PiArICogVGhlIHhlX2xvZ18qKCkgaGVscGVycyBhcmUgZm9yIHRoZXNlIHJlY29nbmlzZWQgZmF1 bHQNCj4gPiA+IHNpdHVhdGlvbnMNCj4gPiA+IG9ubHkgLS0NCj4gPiA+ICsgKiBpbXBvcnRhbnQs IG9wZXJhdG9yLXJlbGV2YW50IGZhdWx0cyBhbmQgZXZlbnRzLiBUaGV5IGFyZSBub3QNCj4gPiA+ IGENCj4gPiA+IHJlcGxhY2VtZW50DQo+ID4gPiArICogZm9yIGBgeGVfaW5mbygpYGAgLyBgYHhl X2RiZygpYGAgLyB0cmFjaW5nLCBub3IgZm9yIG9uZS1vZmYNCj4gPiA+IGRpYWdub3N0aWNzOw0K PiA+ID4gKyAqIHVzaW5nIHRoZW0gZm9yIG9yZGluYXJ5IGxvZ2dpbmcgd291bGQgZGlsdXRlIHRo ZSBmYXVsdA0KPiA+ID4gc3RyZWFtLg0KPiA+ID4gTm90IGV2ZXJ5DQo+ID4gPiArICogYGB4ZV9l cnIoKWBgIG5lZWRzIHRvIGJlY29tZSBhIFNJR0lEIHJlcG9ydCAtLSBvbmx5IHRob3NlDQo+ID4g PiB0aGF0DQo+ID4gPiBjb3JyZXNwb25kIHRvDQo+ID4gPiArICogYSBwdWJsaXNoZWQgc2l0dWF0 aW9uLg0KPiA+ID4gKyAqDQo+ID4gPiArICogZG1lc2cgdnMuIHRoZSBtYWNoaW5lIHJlY29yZA0K PiA+ID4gKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ICsgKg0KPiA+ID4g KyAqIFRoZSBkbWVzZyBsaW5lIHN0YXlzIGNsb3NlIHRvIGEgbm9ybWFsIHhlIGVycm9yIG1lc3Nh Z2Ugc28gaXQNCj4gPiA+IHJlbWFpbnMNCj4gPiA+ICsgKiByZWFkYWJsZSBmb3IgYWRtaW5zOyB0 aGUgb25seSBzdGFibGUsIG1hY2hpbmUtbWF0Y2hhYmxlIHRva2VuDQo+ID4gPiBvbg0KPiA+ID4g aXQgaXMNCj4gPiA+ICsgKiBgYFNJR0lEPTxuPmBgIChgYGRtZXNnIHwgZ3JlcCBTSUdJRD1gYCku IGRtZXNnIGlzIG5vdCBhbiBBQkk6DQo+ID4gPiB0aGUNCj4gPiA+IHN1cnJvdW5kaW5nDQo+ID4g PiArICogdGV4dCBtYXkgY2hhbmdlIGZyZWVseSwgYW5kIGxpbmVzIG1heSBiZSBkcm9wcGVkLiBU aGUgZHVyYWJsZQ0KPiA+ID4gcmVjb3JkIGZvcg0KPiA+ID4gKyAqIHRvb2xpbmcgaXMgdGhlIENQ RVIgcmVjb3JkIGNhcnJ5aW5nIHRoZSBzYW1lIFNJR0lEDQo+ID4gPiAoZ2VuZXJhdGlvbiBpcw0K PiA+ID4gYSBwbGFubmVkDQo+ID4gPiArICogZm9sbG93LXVwKS4NCg0KT2sgSSByZWFsaXplIEkn bSBjb21pbmcgbGF0ZSB0byB0aGUgcGFydHkgaGVyZSAtIEkganVzdCBoYXZlbid0IGhhZCB0aGUN CnRpbWUgdG8gcmV2aWV3IHRoaXMgaW4gZGV0YWlsLiBJIHJlYWxseSBkb24ndCBsaWtlIGhhdmlu ZyB0aGlzIEFCSS0NCmFkamFjZW50IGltcGxlbWVudGF0aW9uLiBJdCBmZWVscyBsaWtlIHdlIHdp bGwgYmUgb24gdGhlIGhvb2sgZm9yDQptYWludGFpbmluZyB0aGluZ3MgaW4gdGhlIGZ1dHVyZSB0 aGF0IHdpbGwgbGltaXQgb3VyIGFiaWxpdHkgdG8NCmltcGxlbWVudCBjaGFuZ2VzIGFuZCBkZWJ1 Zy4gSSBnZXQgdGhlIG5vdGVzIHRoYXQgUm9kcmlnbyBoYXMgYWJvdmUsDQpidXQgdGhpcyBqdXN0 IGZlZWxzIGxpa2UgdGhlIHdyb25nIGFwcHJvYWNoIHRvIG1lLg0KDQpUaGF0IHNhaWQsIEkgZG9u J3Qgd2FudCB0byBibG9jayB0aGUgd29yayBoZXJlLiBJIGtub3cgd2UgaGF2ZSBzb21lDQp1c2Vy cyBsb29raW5nIGZvciB0aGlzIGZvciB0aGVpciBvd24gZGVidWcuDQoNCllvdSBoYXZlICJkbWVz ZyBpcyBub3QgQUJJIiBoZXJlIHdoaWNoIGlzIGEgc3RhcnQuIFdoYXQgaGFwcGVucyBpZiB3ZQ0K ZGVjaWRlIHRvIGRyb3Agb25lIG9mIHRoZXNlIG1lc3NhZ2VzPyBJcyBpdCBvbmx5IHRoZSBJRCBp dHNlbGYgdGhhdCB3ZQ0Kd2FudCB0byBiZSBzdGFibGUgYW5kIG1vbm90b25pY2FsbHkgaW5jcmVt ZW50aW5nPyBPciBpcyB0aGUgbWVzc2FnZQ0KaXRzZWxmIHN1cHBvc2VkIHRvIGJlIHN0YWJsZT8g SWYgd2UgZHJvcCBhbGwgcmVmZXJlbmNlcyB0byBhIHBhcnRpY3VsYXINCklEIGlzIHRoYXQgb2s/ IFdoYXQgaWYgd2UgaGF2ZSAxMHMgb2YgSURzIG9yIG1vcmUgdGhhdCBoYXZlIG5vIHVzZSBpbg0K dGhlIGZ1dHVyZSBhbmQgd2UgbW92ZSBvbiB0byB0aGUgbmV4dCBzZWN0aW9uPyBXZSBkb24ndCBj YXJlIGFib3V0DQpjbGVhbnVwIG9mIHRoaXMga2luZCBvZiB0aGluZz8gT3IgdGhlIGxpbmUgYWJv dmUgYWJvdXQgImRtZXNnIGlzIG5vdA0KQUJJIiBtZWFucyB3ZSBjYW4gcmVhbGx5IGRvIHdoYXRl dmVyIHdlIHdhbnQgd2l0aCBpdD8NCg0KVGhhbmtzLA0KU3R1YXJ0DQoNCj4gPiA+ICsgKi8NCj4g PiA+ICsNCj4gPiA+ICsvKg0KPiA+ID4gKyAqIFRvcCBsZXZlbCBJbnRlbCBFcnJvciBTaWduYXR1 cmUgSWRlbnRpZmllcnMuDQo+ID4gPiArICovDQo+ID4gPiArI2RlZmluZSBJTlRFTF9TSUdJRF9J TlZBTElEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDANCj4gPiA+ICsj ZGVmaW5lIElOVEVMX1NJR0lEX0dQVV9TVEFSVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoDEwMA0KPiA+ID4gKyNkZWZpbmUgSU5URUxfU0lHSURfR1BVX0VORMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA5OTkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5l IElOVEVMX1NJR0lEX0dQVV9YRV9TVEFSVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDEw MA0KPiA+ID4gKyNkZWZpbmUgSU5URUxfU0lHSURfR1BVX1hFX0VORMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAyOTkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIElOVEVMX1NJR0lE X0dQVV9YRV9TT0ZUV0FSRV9TVEFSVMKgwqDCoMKgwqDCoDEwMA0KPiA+ID4gKyNkZWZpbmUgSU5U RUxfU0lHSURfR1BVX1hFX1NPRlRXQVJFX0VORMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgMTk5DQo+ID4gPiArI2RlZmluZSBJTlRFTF9TSUdJRF9HUFVfWEVfSEFSRFdBUkVfU1RBUlTC oMKgwqDCoMKgwqAyMDANCj4gPiA+ICsjZGVmaW5lIElOVEVMX1NJR0lEX0dQVV9YRV9IQVJEV0FS RV9FTkTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDI5OQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAqIGVudW0geGVfc2lnaWQgLSBTdGFibGUgWGUgRXJyb3IgU2lnbmF0dXJl IElkZW50aWZpZXJzDQo+ID4gPiAoU0lHSUQpLg0KPiA+ID4gKyAqIEBYRV9TSUdJRF9TVzogU29m dHdhcmUgY29tcG9uZW50IGZhaWx1cmUuIFtDT0xMRUNUXQ0KPiA+ID4gKyAqIEBYRV9TSUdJRF9Q Uk9CRTogRGV2aWNlIHByb2JlL2JpbmQgd2FzIGFib3J0ZWQuIFtDT0xMRUNUXQ0KPiA+ID4gKyAq IEBYRV9TSUdJRF9XRURHRUQ6IERldmljZSB3YXMgZGVjbGFyZWQgd2VkZ2VkIGFuZCBpcyBubyBs b25nZXINCj4gPiA+IHVzYWJsZS4gW1JFQ09WRVJdDQo+ID4gPiArICogQFhFX1NJR0lEX1NVUlZJ VkFCSUxJVFk6IERldmljZSBlbnRlcmVkIHN1cnZpdmFiaWxpdHkgbW9kZS4NCj4gPiA+IFtVUERB VEVdDQo+ID4gPiArICogQFhFX1NJR0lEX1JVTlRJTUVfRlc6IERyaXZlci1kZXRlY3RlZCBydW50 aW1lIGZpcm13YXJlDQo+ID4gPiBmYWlsdXJlLA0KPiA+ID4gR3VDL0h1Qy9HU0MuIFtSRVRSWV0N Cj4gPiA+ICsgKiBAWEVfU0lHSURfREVWSUNFX0ZXOiBEcml2ZXItZGV0ZWN0ZWQgZGV2aWNlIGZp cm13YXJlIGZhaWx1cmUsDQo+ID4gPiBQQ09ERS9zeXNjdHJsLiBbUkVUUlldDQo+ID4gPiArICog QFhFX1NJR0lEX0dUX1REUjogRW5naW5lIGhhbmcgLyB0aW1lb3V0IGRldGVjdGlvbiBhbmQNCj4g PiA+IHJlY292ZXJ5DQo+ID4gPiAocmVzZXQpLiBbUkVUUlldDQo+ID4gPiArICogQFhFX1NJR0lE X01FTV9GQVVMVDogVk0gYmluZCwgcGFnZSBmYXVsdCBvciBHVFQgZmF1bHQuDQo+ID4gPiBbQ09M TEVDVF0NCj4gPiA+ICsgKiBAWEVfU0lHSURfSU9fQlVTOiBSdW50aW1lIFBDSWUgLyBJT01NVSAv IE1NSU8gYWNjZXNzIGZhdWx0Lg0KPiA+ID4gW1JFQ09WRVJdDQo+ID4gPiArICoNCj4gPiA+ICsg KiBUaGUgc2l0dWF0aW9ucyB0aGUgZHJpdmVyIGRldGVjdHMgYW5kIHJlcG9ydHMgaW4gc29mdHdh cmUuDQo+ID4gPiBWYWx1ZXMNCj4gPiA+IGFyZQ0KPiA+ID4gKyAqIG51bWJlcmVkIHNlcXVlbnRp YWxseSwgYXJlIG9ubHkgZXZlciBhcHBlbmRlZCwgYW5kIGFyZSBuZXZlcg0KPiA+ID4gcmVudW1i ZXJlZCBvcg0KPiA+ID4gKyAqIHJldXNlZC4gVGhlIHRhZyBpbiBicmFja2V0cyBpcyB0aGUgZGVm YXVsdCByZXNvbHV0aW9uIGJ1Y2tldA0KPiA+ID4gKHNlZQ0KPiA+ID4gdGhlIGBYZQ0KPiA+ID4g KyAqIEVycm9yIFNpZ25hdHVyZXMgKFNJR0lEKWBfIHNlY3Rpb24pLg0KPiA+ID4gKyAqDQo+ID4g PiArICogRmlybXdhcmUtIGFuZCBoYXJkd2FyZS1vcmlnaW5hdGVkIHNpZ25hdHVyZXMgYXJlIG5v dCBsaXN0ZWQNCj4gPiA+IGhlcmU7DQo+ID4gPiB0aGV5IGFyZQ0KPiA+ID4gKyAqIGxvZ2dlZCBh cyByZXBvcnRlZCBieSB0aG9zZSBsYXllcnMuDQo+ID4gPiArICovDQo+ID4gPiArZW51bSB4ZV9z aWdpZCB7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqBYRV9TSUdJRF9TV8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0NCj4gPiA+IElOVEVMX1NJR0lEX0dQVV9YRV9TT0ZU V0FSRV9TVEFSVCwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoFhFX1NJR0lEX1BST0JFwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPQ0KPiA+ID4gSU5URUxfU0lHSURfR1BVX1hFX1NP RlRXQVJFX1NUQVJUICsgMSwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoFhFX1NJR0lEX1dFREdFRMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9DQo+ID4gPiBJTlRFTF9TSUdJRF9HUFVf WEVfU09GVFdBUkVfU1RBUlQgKyAyLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgWEVfU0lHSURfU1VS VklWQUJJTElUWcKgwqDCoMKgwqDCoMKgwqDCoMKgPQ0KPiA+ID4gSU5URUxfU0lHSURfR1BVX1hF X1NPRlRXQVJFX1NUQVJUICsgMywNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoFhFX1NJR0lEX1JVTlRJ TUVfRlfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0NCj4gPiA+IElOVEVMX1NJR0lEX0dQVV9Y RV9TT0ZUV0FSRV9TVEFSVCArIDQsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqBYRV9TSUdJRF9ERVZJ Q0VfRlfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPQ0KPiA+ID4gSU5URUxfU0lHSURfR1BV X1hFX1NPRlRXQVJFX1NUQVJUICsgNSwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoFhFX1NJR0lEX0dU X1REUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9DQo+ID4gPiBJTlRFTF9TSUdJ RF9HUFVfWEVfU09GVFdBUkVfU1RBUlQgKyA2LA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgWEVfU0lH SURfTUVNX0ZBVUxUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0NCj4gPiA+IElOVEVMX1NJ R0lEX0dQVV9YRV9TT0ZUV0FSRV9TVEFSVCArIDcsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqBYRV9T SUdJRF9JT19CVVPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPQ0KPiA+ID4gSU5U RUxfU0lHSURfR1BVX1hFX1NPRlRXQVJFX1NUQVJUICsgOCwNCj4gPiA+ICt9Ow0KPiA+ID4gKw0K PiA+ID4gKyNlbmRpZg0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9s b2cuYw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbG9nLmMNCj4gPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjcwYTQxYmRmMWEwMQ0KPiA+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2xvZy5j DQo+ID4gPiBAQCAtMCwwICsxLDEzNSBAQA0KPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBNSVQNCj4gPiA+ICsvKg0KPiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDI2IEludGVsIENv cnBvcmF0aW9uDQo+ID4gPiArICovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgInhlX2xvZy5o Ig0KPiA+ID4gKyNpbmNsdWRlICJ4ZV9wcmludGsuaCINCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMg dm9pZCBsb2dfZW1pdF9jcGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgY3Blcl9zZXYsDQo+ ID4gPiBlbnVtDQo+ID4gPiB4ZV9zaWdpZCBzaWdpZCwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvbXBvbmVudCwgdTMyIGxvY2F0 aW9uLCBjb25zdCB2b2lkDQo+ID4gPiAqZGF0YSwgc2l6ZV90IGxlbiwNCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZhX2Zvcm1h dCAqdmFmKQ0KPiA+ID4gK3sNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC8qIFRPRE8gKi8NCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGJvb2wgaXNfaHdfc2lnaWQoZW51bSB4ZV9zaWdp ZCBzaWdpZCkNCj4gPiA+ICt7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gKGludClzaWdp ZCA+PSBJTlRFTF9TSUdJRF9HUFVfWEVfSEFSRFdBUkVfU1RBUlQ7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gK3N0YXRpYyBib29sIGlzX3Nldl9lcnJvcihpbnQgY3Blcl9zZXYpDQo+ID4gPiAr ew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGNwZXJfc2V2ICE9IENQRVJfU0VWX0lORk9S TUFUSU9OQUw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBjaGFyICps b2dfaHdlX3ByZWZpeChpbnQgY3Blcl9zZXYsIGVudW0geGVfc2lnaWQNCj4gPiA+IHNpZ2lkKQ0K PiA+ID4gK3sNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBpc19zZXZfZXJyb3IoY3Blcl9z ZXYpICYmIGlzX2h3X3NpZ2lkKHNpZ2lkKSA/DQo+ID4gPiBIV19FUlINCj4gPiA+IDogIiI7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBjaGFyICpsb2dfc2V2X3ByZWZp eChpbnQgY3Blcl9zZXYpDQo+ID4gPiArew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3dpdGNoIChj cGVyX3Nldikgew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgY2FzZSBDUEVSX1NFVl9GQVRBTDoNCj4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gIkZBVEFMICI7DQo+ID4g PiArwqDCoMKgwqDCoMKgwqBjYXNlIENQRVJfU0VWX1JFQ09WRVJBQkxFOg0KPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAiIjsNCj4gPiA+ICvCoMKgwqDCoMKgwqDC oGNhc2UgQ1BFUl9TRVZfQ09SUkVDVEVEOg0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAiQ09SUkVDVEVEICI7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqBkZWZhdWx0 Og0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAiIjsNCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoH0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBfX0xP R19EUk1fUFJJTlRLX0ZNVChmbXQsIGFyZ3MuLi4pwqDCoMKgwqDCoCJbZHJtXSAiIGZtdCwNCj4g PiA+ICMjYXJncw0KPiA+ID4gKyNkZWZpbmUgX19MT0dfRFJNX1BSSU5US19FUlJfRk1UKGZtdCwN Cj4gPiA+IGFyZ3MuLi4pwqBfX0xPR19EUk1fUFJJTlRLX0ZNVCgiKkVSUk9SKiAiIGZtdCwgYXJn cykNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZCBsb2dfZG1lc2dfdnByaW50ayhzdHJ1Y3Qg cGNpX2RldiAqcGRldiwgaW50DQo+ID4gPiBjcGVyX3NldiwNCj4gPiA+IHN0cnVjdCB2YV9mb3Jt YXQgKnZhZikNCj4gPiA+ICt7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoY3Blcl9zZXYgPT0g Q1BFUl9TRVZfSU5GT1JNQVRJT05BTCkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBwY2lfaW5mbyhwZGV2LCBfX0xPR19EUk1fUFJJTlRLX0ZNVCgiJXBWIiwgdmFmKSk7DQo+ ID4gPiArwqDCoMKgwqDCoMKgwqBlbHNlDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcGNpX2VycihwZGV2LCBfX0xPR19EUk1fUFJJTlRLX0VSUl9GTVQoIiVwViIsDQo+ID4g PiB2YWYpKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgbG9nX2RtZXNn X3ByaW50ZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGNwZXJfc2V2LA0KPiA+ID4gY29uc3Qg Y2hhciAqZm10LCAuLi4pDQo+ID4gPiArew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHZh X2Zvcm1hdCB2YWY7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqB2YV9saXN0IGFyZ3M7DQo+ID4gPiAr DQo+ID4gPiArwqDCoMKgwqDCoMKgwqB2YV9zdGFydChhcmdzLCBmbXQpOw0KPiA+ID4gK8KgwqDC oMKgwqDCoMKgdmFmLmZtdCA9IGZtdDsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHZhZi52YSA9ICZh cmdzOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgbG9nX2RtZXNnX3ZwcmludGsocGRl diwgY3Blcl9zZXYsICZ2YWYpOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgdmFfZW5k KGFyZ3MpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZCBsb2dfZW1pdF9k bWVzZyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGNwZXJfc2V2LA0KPiA+ID4gZW51bQ0KPiA+ ID4geGVfc2lnaWQgc2lnaWQsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvbXBvbmVudCwgdTMyIGxvY2F0aW9uLCBjb25zdA0K PiA+ID4gdm9pZA0KPiA+ID4gKmRhdGEsIHNpemVfdCBsZW4sDQo+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZhX2Zvcm1hdCAq dmFmKQ0KPiA+ID4gK3sNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKmh3ZV9wcmVm aXggPSBsb2dfaHdlX3ByZWZpeChjcGVyX3Nldiwgc2lnaWQpOw0KPiA+ID4gK8KgwqDCoMKgwqDC oMKgY29uc3QgY2hhciAqc2V2X3ByZWZpeCA9IGxvZ19zZXZfcHJlZml4KGNwZXJfc2V2KTsNCj4g PiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC8qIFRPRE86IGFkZCBjb21wb25lbnQvbG9jYXRp b24gZGV0YWlscyAqLw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihk YXRhKSkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb2dfZG1lc2dfcHJp bnRmKHBkZXYsIGNwZXJfc2V2LCAiU0lHSUQ9JXUNCj4gPiA+ICVzKCVwZSkNCj4gPiA+ICVzJXBW IiwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzaWdpZCwgc2V2X3ByZWZpeCwgZGF0YSwNCj4gPiA+IGh3ZV9wcmVm aXgsDQo+ID4gPiB2YWYpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgZWxzZSBpZiAoZGF0YSAmJiBs ZW4pDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbG9nX2RtZXNnX3ByaW50 ZihwZGV2LCBjcGVyX3NldiwgIlNJR0lEPSV1DQo+ID4gPiAlcyglKnBoTikNCj4gPiA+ICVzJXBW IiwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzaWdpZCwgc2V2X3ByZWZpeCwgKGludClsZW4sDQo+ID4gPiBkYXRh LA0KPiA+ID4gaHdlX3ByZWZpeCwgdmFmKTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGVsc2UNCj4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb2dfZG1lc2dfcHJpbnRmKHBkZXYs IGNwZXJfc2V2LCAiU0lHSUQ9JXUNCj4gPiA+ICVzJXMlcFYiLA0KPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ2lk LCBzZXZfcHJlZml4LCBod2VfcHJlZml4LA0KPiA+ID4gdmFmKTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICogeGVfbG9nX2VtaXQoKSAtIEVtaXQgYSBzdHJ1Y3R1cmVk IFNJR0lEIGxvZyBlbnRyeQ0KPiA+ID4gKyAqIEBwZGV2OiB0aGUgJnBjaV9kZXYgZGV2aWNlDQo+ ID4gPiArICogQGNwZXJfc2V2OiBDUEVSIHNldmVyaXR5IChDUEVSX1NFVl9GQVRBTCwNCj4gPiA+ IENQRVJfU0VWX1JFQ09WRVJBQkxFLA0KPiA+ID4gLi4uKQ0KPiA+ID4gKyAqIEBzaWdpZDogc2ln bmF0dXJlIGlkZW50aWZpZXIsIHNlZSAmZW51bSB4ZV9zaWdpZA0KPiA+ID4gKyAqIEBjb21wb25l bnQ6IGNvbXBvbmVudCBpZGVudGlmZXINCj4gPiA+ICsgKiBAbG9jYXRpb246IGxvY2F0aW9uIGRl dGFpbHMgb2YgdGhlIEBjb21wb25lbnQNCj4gPiA+ICsgKiBAZGF0YTogcG9pbnRlciB0byB0aGUg YWRkaXRpb25hbCBkZXRhaWxzLCBvciBFUlJfUFRSLCBvciBOVUxMDQo+ID4gPiBpZg0KPiA+ID4g bm90IGFwcGxpY2FibGUNCj4gPiA+ICsgKiBAbGVuOiBsZW5ndGggb2YgdGhlIEBkYXRhIGluIGJ5 dGVzLCBvciAwIGlmIG5vdCBhcHBsaWNhYmxlDQo+ID4gPiArICogQGZtdDogcHJpbnRmLXN0eWxl IGZvcm1hdCBzdHJpbmcNCj4gPiA+ICsgKiBALi4uOiBmb3JtYXQgYXJndW1lbnRzDQo+ID4gPiAr ICoNCj4gPiA+ICsgKiBFbWl0cyBhIGRtZXNnIGxpbmUgdGhhdCBpbmNsdWRlcyBhIHNpbmdsZSBz dGFibGUsIG1hY2hpbmUtDQo+ID4gPiBtYXRjaGFibGUgdG9rZW4NCj4gPiA+ICsgKiBgYFNJR0lE PTxuPmBgIGZvbGxvd2VkIGJ5IHRoZSBvcHRpb25hbCBzZXZlcml0eSB0b2tlbiAobGlrZQ0KPiA+ ID4gYGBGQVRBTGBgKSBhbmQsDQo+ID4gPiArICogd2hlbiBAZGF0YSBwb2ludGVyIGlzIHNldCwg ZWl0aGVyIHRoZSBlcnJvciBwcmludGVkIHdpdGggJXBlDQo+ID4gPiBvciBhDQo+ID4gPiBwYWNr ZWQgaGV4DQo+ID4gPiArICogZHVtcCBvZiB0aGUgQGRhdGEgYmluYXJ5IGJsb2IuIFRoZSBkbWVz ZyBsaW5lIHdpbGwgYWxzbw0KPiA+ID4gaW5jbHVkZQ0KPiA+ID4gcHJpbnRmLXN0eWxlDQo+ID4g PiArICogdGV4dCBtZXNzYWdlLg0KPiA+ID4gKyAqDQo+ID4gPiArICogTm90ZSB0aGF0IHRoZSBm dWxsIGRtZXNnIGxpbmUsIHdpdGggdGhlIGZyZWUgdGV4dCBtZXNzYWdlLCBpcw0KPiA+ID4gb25s eSBhIGRlYnVnZ2luZw0KPiA+ID4gKyAqIGFpZCwgbm90IGFuIGludGVyZmFjZSEgT25seSB0aGUg YGBTSUdJRD08bj5gYCB0b2tlbiBpcyBzdGFibGUNCj4gPiA+IHRoZXJlLg0KPiA+ID4gKyAqIFRo ZSBkdXJhYmxlIG1hY2hpbmUgcmVjb3JkIGlzIHRoZSBDUEVSIGNhcnJ5aW5nIHRoZSBzYW1lDQo+ ID4gPiBTSUdJRC4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIE5vdGU6IGdlbmVyYXRpb24gb2YgdGhl IENQRVIgcmVjb3JkIGlzIGEgcGxhbm5lZCBmb2xsb3ctdXAuDQo+ID4gPiArICoNCj4gPiA+ICsg KiBFeGFtcGxlczo6DQo+ID4gPiArICoNCj4gPiA+ICsgKsKgwqAgPDM+IHhlIDAwMDA6MDM6MDAu MDogW2RybV0gKkVSUk9SKiBTSUdJRD0xMDQgRkFUQUwgKC0NCj4gPiA+IEVQUk9UTykNCj4gPiA+ IEludmFsaWQgR3VDIHJlcGx5DQo+ID4gPiArICrCoMKgIDwzPiB4ZSAwMDAwOjAzOjAwLjA6IFtk cm1dICpFUlJPUiogU0lHSUQ9MTA2ICgtRVRJTUVET1VUKQ0KPiA+ID4gRW5naW5lICdyY3MwJyBo dW5nDQo+ID4gPiArICrCoMKgIDw2PiB4ZSAwMDAwOjAzOjAwLjA6IFtkcm1dICpFUlJPUiogU0lH SUQ9MTAzIEluDQo+ID4gPiBzdXJ2aXZhYmlsaXR5DQo+ID4gPiBtb2RlDQo+ID4gPiArICovDQo+ ID4gPiArdm9pZCB4ZV9sb2dfZW1pdChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGNwZXJfc2V2 LCBlbnVtDQo+ID4gPiB4ZV9zaWdpZA0KPiA+ID4gc2lnaWQsDQo+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBjb21wb25lbnQsIHUzMiBsb2NhdGlvbiwgY29uc3Qgdm9p ZCAqZGF0YSwNCj4gPiA+IHNpemVfdCBsZW4sDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQ0KPiA+ID4gK3sNCj4gPiA+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCB2YV9mb3JtYXQgdmFmOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgdmFfbGlz dCBhcmdzOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgdmFfc3RhcnQoYXJncywgZm10 KTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHZhZi5mbXQgPSBmbXQ7DQo+ID4gPiArwqDCoMKgwqDC oMKgwqB2YWYudmEgPSAmYXJnczsNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGxvZ19l bWl0X2RtZXNnKHBkZXYsIGNwZXJfc2V2LCBzaWdpZCwgY29tcG9uZW50LA0KPiA+ID4gbG9jYXRp b24sDQo+ID4gPiBkYXRhLCBsZW4sICZ2YWYpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgbG9nX2Vt aXRfY3BlcihwZGV2LCBjcGVyX3Nldiwgc2lnaWQsIGNvbXBvbmVudCwgbG9jYXRpb24sDQo+ID4g PiBkYXRhLCBsZW4sICZ2YWYpOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgdmFfZW5k KGFyZ3MpOw0KPiA+ID4gK30NCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfbG9nLmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2xvZy5oDQo+ID4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5kNDc1ZTgxNmVlMGIN Cj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9s b2cuaA0KPiA+ID4gQEAgLTAsMCArMSwyMCBAQA0KPiA+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBNSVQgKi8NCj4gPiA+ICsvKg0KPiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDI2IElu dGVsIENvcnBvcmF0aW9uDQo+ID4gPiArICovDQo+ID4gPiArDQo+ID4gPiArI2lmbmRlZiBfWEVf TE9HX0hfDQo+ID4gPiArI2RlZmluZSBfWEVfTE9HX0hfDQo+ID4gPiArDQo+ID4gPiArI2luY2x1 ZGUgPGxpbnV4L2NwZXIuaD4NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSAiYWJpL3hlX3NpZ2lk X2FiaS5oIg0KPiA+ID4gKw0KPiA+ID4gK3N0cnVjdCBwY2lfZGV2Ow0KPiA+ID4gKw0KPiA+ID4g K19fcHJpbnRmKDgsIDkpDQo+ID4gPiArdm9pZCB4ZV9sb2dfZW1pdChzdHJ1Y3QgcGNpX2RldiAq cGRldiwgaW50IGNwZXJfc2V2LCBlbnVtDQo+ID4gPiB4ZV9zaWdpZA0KPiA+ID4gc2lnaWQsDQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBjb21wb25lbnQsIHUzMiBs b2NhdGlvbiwgY29uc3Qgdm9pZCAqZGF0YSwNCj4gPiA+IHNpemVfdCBsZW4sDQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsNCj4gPiA+ ICsNCj4gPiA+ICsjZW5kaWYNCj4gPiANCg0K