From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A6A18A0553; Fri, 10 Jun 2022 17:04:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4BBB54069C; Fri, 10 Jun 2022 17:04:49 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 1A76B40689 for ; Fri, 10 Jun 2022 17:04:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654873487; x=1686409487; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Q9TQUQojop8EvofhYMczLNhK7UNyZ82YJ0NUMYQ3WL8=; b=AiG7nhkbnqI4SUwTbcZ/QlVzWd4pcfnZ3nIVM5ZkQBPHzqdQkgwHbYA8 prp1WP0CIsCygWx9XnPOjb1OmqZLXCYSLJK2al4GRh/Aepm6C0k26xQAA VcKyKqpZnPkXzSLE7tr44k1DLGv1xR6cR2c+4m/IJ/Q4EgvZGm+x8E5i1 2+ppEL8X2vETILwYLowgEE4kvO2eOWmQFaTJNhfekiQInWHEV4Y+48DOi J6IFnzed5wsuRW23LAs1h5Vt/av3O1+UNFfqCTRv2L2g7zdls1QIk1rPQ mNPwrGT89ASq8oc8SZ4aCa0OvPqDhqUpR/NkFWCyd8ixGs3DiJVPX41bZ A==; X-IronPort-AV: E=McAfee;i="6400,9594,10374"; a="339405219" X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="339405219" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 08:04:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="581105533" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP; 10 Jun 2022 08:04:45 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Fri, 10 Jun 2022 08:04:45 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Fri, 10 Jun 2022 08:04:45 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.170) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Fri, 10 Jun 2022 08:04:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e6+1zNfJtJEQ5plFyqt4vrr9THFoEDab3wau4DPxTUAytOFBqu2K+HvQtLPjxi4gcslgSkvQCbqpXfaflJowzSmzlMcjT2zv9m68DuHPLuZibYGTRaTp7x3Bfvz0Yt8snw7TdKBDejYVhSR6Ysw1WiX5uhYD0DGzKqxiVUiD+0YUdsMQVng0suqZC4oeCOzGp6fms4azk8H7SX8cEpwht1id6ihal0OfSLMrriypsh+H+XI/czrHbL162EMUslpCucQWJWGfztHlTWbYoAk69NJ5j+OzRk2edv9jMcB4tog8mMQ/K0Jq9DAbopnxhvIHOUM6YPnE269nilGkGBE4Yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=Q9TQUQojop8EvofhYMczLNhK7UNyZ82YJ0NUMYQ3WL8=; b=obBgtPmIQupHo/qqUmUu1D0oBtzBqsHJci6ZA5ajx6KpCXPq6gqjBbIz8NSPkkBiPIR6zmNn5/aXgoB+vLBfIJBxXKcUANispp/X+WI6Dkz24fjfafnQagk2DxddmFhiH8TBifA0IFd/KX1lm6QtP8oG8oUoAbsOCUp6c34pr6BKVqeLXyAqmcROb2Ie+9TS8iXQ+sQhsJip5OEs2pPb8X0BacfO51ndEnP3fCaurOCTOliZj+2BKA97Bb3aMDu/TBgtFr1tUBqIdYlAGraBIdoq9aMB1Oy3YI/O3AzQx1IoNW+lxOhWKJC+lGc5vq4pAyZT710f1DG4KANcShcFRQ== 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 BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by DM4PR11MB5407.namprd11.prod.outlook.com (2603:10b6:5:396::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.14; Fri, 10 Jun 2022 15:04:43 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::31c6:2ec8:2f71:42da]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::31c6:2ec8:2f71:42da%2]) with mapi id 15.20.5332.012; Fri, 10 Jun 2022 15:04:43 +0000 From: "Ding, Xuan" To: Andrew Rybchenko , "Wu, WenxuanX" , "thomas@monjalon.net" , "Li, Xiaoyun" , "ferruh.yigit@xilinx.com" , "Singh, Aman Deep" , "dev@dpdk.org" , "Zhang, Yuying" , "Zhang, Qi Z" , "jerinjacobk@gmail.com" CC: "stephen@networkplumber.org" , "Wang, YuanX" , Ray Kinsella Subject: RE: [PATCH v8 1/3] ethdev: introduce protocol hdr based buffer split Thread-Topic: [PATCH v8 1/3] ethdev: introduce protocol hdr based buffer split Thread-Index: AQHYdcH3HFAmhGXUVUOOiSLRt5Q8gK08G4+AgAGzACCAAYPsAIAEY9eQgAAWdgCABOkt8A== Date: Fri, 10 Jun 2022 15:04:43 +0000 Message-ID: References: <20220303060136.36427-1-xuan.ding@intel.com> <20220601135059.958882-1-wenxuanx.wu@intel.com> <20220601135059.958882-2-wenxuanx.wu@intel.com> <3d246777-a86b-ebc5-8288-86de89568536@oktetlabs.ru> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 70bb14da-8d44-4055-0749-08da4af28cd6 x-ms-traffictypediagnostic: DM4PR11MB5407:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JS/CwozoOTmS8IxIuHd9NikY3Nn0iOLWGsTuImxmwOqcHNVPc80it+Wd/fZPxRnk1fzSsl06DzDkAfdODOHsecfNG90nDE67VoFqJVPDNTGC2DJCXPpGwWKkXpo072CYMoTBggECc/I7m1KxrFeOeod0h8LyExiFddopsyxTXkdw3negQ9Qt6xmhEJ5WLLwQfYVExniRrLn3VQgqLOUU/RYw28/ADkTkxgR5NUFIG6EfRRaBCtmXj7+k0Sj/90bxMzdvCUXrQdm9maH2PTNO0Zyxoa/I3kjRv1doWbqov0CM+S7d34XwRpXYaKTYaS0Wltw510c+LdBJ0W1baJw8eK82Cc/9f0K0kUeDmgNm6N4Miqs0xP9vHZ3t1MJrL6Th+yK3Bc+2/xxlrtv7d4KArn0CpX7UTiwGDaWaaMcTAq0q6zGJyJe1NY5+M4lnnU9FAO0igxDLFZREpfFGZYLaDSvgnVef8VgEiIIQB/R9WWcUJxtPiSBhX9l1JSeqEFD4ML2fLNNL2LEq5AREnkldduKEN0qf8QplpukpqDORjamGctNeDNrGxT/y1hO8pjrew5URhFtFHOxO6I/v9l9kxrcWV4a5nqIK1eWHfDMYIn4nrhklyKzLdspeWneL/MafWvFqrT+r+1wvfANQJPjyx/QQfxpRjHOLw4UgR+O63gLNEPNZaWFnUd20yWHstUszzfSYQ5+u99SLD31CaAAmQGuZdGWodSaJreWNnbTqhXFWoZlKPAkC7F+Hp9riT168d5eNWQMRYddD1iGvxbs8gsrftJaktS/44VzJdG4c/Xr9FT1NaKUFQeGRIWSLcuiI x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38070700005)(38100700002)(110136005)(71200400001)(54906003)(83380400001)(2906002)(26005)(30864003)(316002)(4326008)(8676002)(82960400001)(86362001)(66446008)(66476007)(66556008)(186003)(64756008)(5660300002)(53546011)(33656002)(122000001)(52536014)(76116006)(66946007)(7696005)(9686003)(6506007)(921005)(966005)(8936002)(55016003)(508600001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dnFQZGtwK0ZHd2wyUG1scFQySVFFL3Y1cnBUd1l5d3l2dE8rM2toRGV4dG1W?= =?utf-8?B?YkVRbVA4U2QzL2pQbjljRzY4dkZ4ZTlCcS9sM2RvUUFKZkYrWFJEb2ZWMGw1?= =?utf-8?B?d3JZMzlnMUw1RzUrTXFWT1BiY2pDUExQQ2dmbWE2VVdvVVg1dVJOVUtXci9D?= =?utf-8?B?U0szTmFHbUlMOUwrNVpNcHZoWUx1T2kxTXJIT2VmR2tWUkZpQ0U1RkU3VWNv?= =?utf-8?B?aGIvdEttbmlnWlBTYnhUSkM3ZjdQWnJOZ0xabjh0Mnd1QkR6eDZMaUdZZEhz?= =?utf-8?B?TURUSkFRVGJXMUMzUFYyZWV4WjhqWHRvWlMvSEZvOCtYVkZtaDlpd1E0MGFk?= =?utf-8?B?bUJSQ0FKUEIzZ1QybkpzZlhURGhJdEZLZEtRdW8xNU5QdWtVdHJUSi8zL2JU?= =?utf-8?B?UWZOTHE5dHZVcGZkejZROWFDb29Pbkx0WFI2d0VqeWYva3h0aWs0MlAxMWJk?= =?utf-8?B?ZEdYNU5PNW5BbkpSRUpNcGlaTjVqeXVNbmdoVW5CUkFzQ3ZKSDJ4K0FhY3J1?= =?utf-8?B?d3ZtL0QzRmlkUzdheFV6UW80Q1JqeHFJejA3M1hPc3BFWjYvYng1VUNQeHpw?= =?utf-8?B?eXZ1NXR1K2YxMWZtUXVIQnFJMlhMT05RMDl2S0hHVkV1dEgrUEkrbXhyeGp1?= =?utf-8?B?UkkxU2FjVXdIU3Z4YjZzcnFUS2c0M0puRGdIejM3emlESTdMWWJ2ZGpWQ1Zr?= =?utf-8?B?ZjlaVkZtdnNZYzlpaFQxdElObi9qcDJIcjNFdzA0L28yVktIMUhkNndvNUdJ?= =?utf-8?B?ZEowSW54cElMdW5BVHVPNzJ6YkIwRm4wQkZ2eS9jOEFxbW9nb2JrVnJaWEZE?= =?utf-8?B?aTJIR1VUcjdGZmdrejA1NUErRjVYbXdIVzNDQkpuMGdwWkxPRVNBV20zdEhs?= =?utf-8?B?eFhZcDMzSDdTRjhydXFOUzc4ei9aSng4YzlDbEtkeEJ5c2pQcm5VUzlFckxG?= =?utf-8?B?WWlySUl3cDVzdzllMEsvWUFGazJEMUZwWll0ZnV3eWk3ZjZpYUt0SlN2VFJh?= =?utf-8?B?dE00TU5jNDBHSFJ4Q3Rnd2JLSS9xSDE4TWpJWUdvYzlMWEZlbVovYzZGWW9J?= =?utf-8?B?NWRoU21uOFNvL1VpdzZLUmFMR0pZblczZmx6emNueWR5bjBQYmhyc2xRMGNk?= =?utf-8?B?YUYzdWpqcXJsbEJjWFdrTXpLazNRWm54NkJlU3pIVHZDdlcyVytkOE5tTzVW?= =?utf-8?B?WGpiVjQ2Y1c1WW8zNVdvc1g0enZNYmE2dkRyNDFKbWtFanFoOWhSUzdZU0lj?= =?utf-8?B?Z0ZXcmw4dUIzMnRXekVnYkRnRmZLOUR5UHUrOUdaMVN1dzAvSHI3bit5d3ht?= =?utf-8?B?Z0pVK0lIbXRxVkZPL3hHUVRHa3QvdnJnZGU2VUVoMlZkc2g0U1dhb09WK2Jn?= =?utf-8?B?UDNCNVRsVmZ3cWpLNGk3WDEwWkx2eFlxNlJVcHBYMmo4U3AzK05lckxUeWtN?= =?utf-8?B?QTVnWXVoZmk1ZXVPS2p0bVdQNC9GeTZFQ1lJOXZodk13bGxDeHhmaTdtaFdS?= =?utf-8?B?WlFGTHBJa1BwYzNMUWhZOVZrbXZVK1FIdnlvQkFxR05iTmdZeWZJSmk0RjJI?= =?utf-8?B?ckdhc1hzTE9lS2YrTzJZMldSSUNXWTZJV2JIY2ViQ3ovTjByc0pyMTFGUDI3?= =?utf-8?B?QjRpQm13dGJmeUhxWUNVak5HR0VSc0Nmc3plaDJYQi9pNldnUUJjbjRJTWRT?= =?utf-8?B?dGtWWnp2THZ3Lzd2K3pFU1VzUEVPVkVmbWRycW9TWUxBZjdHRFJ5ZXlEOCty?= =?utf-8?B?MDJ2NFduL1gwUVIyK0ZOYk9JK2ZTZUExRG1BVytoZE5hZlFuUS9LUFBWaDRI?= =?utf-8?B?MTQ1NWlWcTl5SDY0MHB2OXBLRC9XbkM4TDVZaXpjd1JXKzBzQ1pDcWsyVU04?= =?utf-8?B?VTFXM3dHc3I1RCt6RFNtSTZ6YmdOZC9lU2F0ZS9rNFNVVE5WZlhIaXlENnVW?= =?utf-8?B?SndXWlNtYkRkLzZSMzdUSnZVK0RyeFVtUEtKa0EzUkt3VHhOZzVITTJkRlRF?= =?utf-8?B?aURqWTcwMEdnUXhiQmpGRTJQMFNFcW0wTjFJL2FDbHdIL0Qxb2k5S0xzU3Qz?= =?utf-8?B?Y3dXeFVQUkhScHB0QndxTjFXOVFaQnZKUlVITWlPNlN6M0V2NFJ2ZmJSdHo2?= =?utf-8?B?NG92NFZVZTI1SjJkWVB1WmJTTEREMWNNZGx4NUhYTTBudHV3RHk1WHMyN1d4?= =?utf-8?B?aXF4eW1RbExmZ3BWUGR5a2VpdWpXeCtLSkttK1o0MkFhdk95ZU94SlZxS0h1?= =?utf-8?B?SStGNm0vZk9nNGhzWmpDTmJyckxORFdBR2pEeDE0cmpialZuYURUYTlEL1JO?= =?utf-8?B?ZXI4a3lLRE9ZcDZUaG15Ry92ekNUVE5NUkw2UkRURlplNFRNWEVMdz09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 70bb14da-8d44-4055-0749-08da4af28cd6 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2022 15:04:43.1099 (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: alRuTlxuMZ7tJls6B7EFdVpFs4WA3uKq/VqPsAFeNBHStKcbosgDdlreb72d/LV6vAljKFtaoITxu3c71UCaGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5407 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgQW5kcmV3LA0KDQpTb3JyeSBmb3IgdGhlIGxhdGUgcmVzcG9uc2UsIHBsZWFzZSBzZWUgcmVw bGllcyBpbmxpbmUuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5k cmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IFNlbnQ6IFR1 ZXNkYXksIEp1bmUgNywgMjAyMiA2OjQ5IFBNDQo+IFRvOiBEaW5nLCBYdWFuIDx4dWFuLmRpbmdA aW50ZWwuY29tPjsgV3UsIFdlbnh1YW5YDQo+IDx3ZW54dWFueC53dUBpbnRlbC5jb20+OyB0aG9t YXNAbW9uamFsb24ubmV0OyBMaSwgWGlhb3l1bg0KPiA8eGlhb3l1bi5saUBpbnRlbC5jb20+OyBm ZXJydWgueWlnaXRAeGlsaW54LmNvbTsgU2luZ2gsIEFtYW4gRGVlcA0KPiA8YW1hbi5kZWVwLnNp bmdoQGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsgWmhhbmcsIFl1eWluZw0KPiA8eXV5aW5nLnpo YW5nQGludGVsLmNvbT47IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47DQo+IGpl cmluamFjb2JrQGdtYWlsLmNvbQ0KPiBDYzogc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc7IFdh bmcsIFl1YW5YIDx5dWFueC53YW5nQGludGVsLmNvbT47DQo+IFJheSBLaW5zZWxsYSA8bWRyQGFz aHJvZS5ldT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2OCAxLzNdIGV0aGRldjogaW50cm9kdWNl IHByb3RvY29sIGhkciBiYXNlZCBidWZmZXIgc3BsaXQNCj4gDQo+IE9uIDYvNy8yMiAxMzoxMywg RGluZywgWHVhbiB3cm90ZToNCj4gPiBIaSBBbmRyZXcsDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNo ZW5rb0Bva3RldGxhYnMucnU+DQo+ID4+IFNlbnQ6IFNhdHVyZGF5LCBKdW5lIDQsIDIwMjIgMTA6 MjYgUE0NCj4gPj4gVG86IERpbmcsIFh1YW4gPHh1YW4uZGluZ0BpbnRlbC5jb20+OyBXdSwgV2Vu eHVhblgNCj4gPj4gPHdlbnh1YW54Lnd1QGludGVsLmNvbT47IHRob21hc0Btb25qYWxvbi5uZXQ7 IExpLCBYaWFveXVuDQo+ID4+IDx4aWFveXVuLmxpQGludGVsLmNvbT47IGZlcnJ1aC55aWdpdEB4 aWxpbnguY29tOyBTaW5naCwgQW1hbiBEZWVwDQo+ID4+IDxhbWFuLmRlZXAuc2luZ2hAaW50ZWwu Y29tPjsgZGV2QGRwZGsub3JnOyBaaGFuZywgWXV5aW5nDQo+ID4+IDx5dXlpbmcuemhhbmdAaW50 ZWwuY29tPjsgWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPjsNCj4gPj4gamVyaW5q YWNvYmtAZ21haWwuY29tDQo+ID4+IENjOiBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgV2Fu ZywgWXVhblgNCj4gPHl1YW54LndhbmdAaW50ZWwuY29tPjsNCj4gPj4gUmF5IEtpbnNlbGxhIDxt ZHJAYXNocm9lLmV1Pg0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIHY4IDEvM10gZXRoZGV2OiBp bnRyb2R1Y2UgcHJvdG9jb2wgaGRyIGJhc2VkDQo+ID4+IGJ1ZmZlciBzcGxpdA0KPiA+Pg0KPiA+ PiBPbiA2LzMvMjIgMTk6MzAsIERpbmcsIFh1YW4gd3JvdGU6DQo+ID4+PiBIaSBBbmRyZXcsDQo+ ID4+Pg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4gRnJvbTogQW5k cmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+ID4+Pj4gU2Vu dDogVGh1cnNkYXksIEp1bmUgMiwgMjAyMiA5OjIxIFBNDQo+ID4+Pj4gVG86IFd1LCBXZW54dWFu WCA8d2VueHVhbngud3VAaW50ZWwuY29tPjsNCj4gdGhvbWFzQG1vbmphbG9uLm5ldDsNCj4gPj4g TGksDQo+ID4+Pj4gWGlhb3l1biA8eGlhb3l1bi5saUBpbnRlbC5jb20+OyBmZXJydWgueWlnaXRA eGlsaW54LmNvbTsgU2luZ2gsDQo+ID4+Pj4gQW1hbiBEZWVwIDxhbWFuLmRlZXAuc2luZ2hAaW50 ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBaaGFuZywNCj4gWXV5aW5nDQo+ID4+Pj4gPHl1eWluZy56 aGFuZ0BpbnRlbC5jb20+OyBaaGFuZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+Ow0KPiA+ Pj4+IGplcmluamFjb2JrQGdtYWlsLmNvbQ0KPiA+Pj4+IENjOiBzdGVwaGVuQG5ldHdvcmtwbHVt YmVyLm9yZzsgRGluZywgWHVhbiA8eHVhbi5kaW5nQGludGVsLmNvbT47DQo+ID4+Pj4gV2FuZywg WXVhblggPHl1YW54LndhbmdAaW50ZWwuY29tPjsgUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1 Pg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjggMS8zXSBldGhkZXY6IGludHJvZHVjZSBw cm90b2NvbCBoZHIgYmFzZWQNCj4gPj4+PiBidWZmZXIgc3BsaXQNCj4gPj4+Pg0KPiA+Pj4+IElz IGl0IHRoZSByaWdodCBvbmUgc2luY2UgaXQgaXMgbGlzdGVkIGluIHBhdGNod29yaz8NCj4gPj4+ DQo+ID4+PiBZZXMsIGl0IGlzLg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+IE9uIDYvMS8yMiAxNjo1 MCwgd2VueHVhbngud3VAaW50ZWwuY29tIHdyb3RlOg0KPiA+Pj4+PiBGcm9tOiBXZW54dWFuIFd1 IDx3ZW54dWFueC53dUBpbnRlbC5jb20+DQo+ID4+Pj4+DQo+ID4+Pj4+IEN1cnJlbnRseSwgUngg YnVmZmVyIHNwbGl0IHN1cHBvcnRzIGxlbmd0aCBiYXNlZCBzcGxpdC4gV2l0aCBSeA0KPiA+Pj4+ PiBxdWV1ZSBvZmZsb2FkIFJURV9FVEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BMSVQgZW5hYmxlZCBh bmQgUngNCj4gPj4gcGFja2V0DQo+ID4+Pj4gc2VnbWVudA0KPiA+Pj4+PiBjb25maWd1cmVkLCBQ TUQgd2lsbCBiZSBhYmxlIHRvIHNwbGl0IHRoZSByZWNlaXZlZCBwYWNrZXRzIGludG8NCj4gPj4+ Pj4gbXVsdGlwbGUgc2VnbWVudHMuDQo+ID4+Pj4+DQo+ID4+Pj4+IEhvd2V2ZXIsIGxlbmd0aCBi YXNlZCBidWZmZXIgc3BsaXQgaXMgbm90IHN1aXRhYmxlIGZvciBOSUNzIHRoYXQNCj4gPj4+Pj4g ZG8gc3BsaXQgYmFzZWQgb24gcHJvdG9jb2wgaGVhZGVycy4gR2l2ZW4gYSBhcmJpdHJhcmlseSB2 YXJpYWJsZQ0KPiA+Pj4+PiBsZW5ndGggaW4gUnggcGFja2V0DQo+ID4+Pj4NCj4gPj4+PiBhIC0+ IGFuDQo+ID4+Pg0KPiA+Pj4gVGhhbmtzIGZvciB5b3VyIGNhdGNoLCB3aWxsIGZpeCBpdCBpbiBu ZXh0IHZlcnNpb24uDQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4+IHNlZ21lbnQsIGl0IGlzIGFsbW9z dCBpbXBvc3NpYmxlIHRvIHBhc3MgYSBmaXhlZCBwcm90b2NvbCBoZWFkZXIgdG8NCj4gUE1ELg0K PiA+Pj4+PiBCZXNpZGVzLCB0aGUgZXhpc3RlbmNlIG9mIHR1bm5lbGluZyByZXN1bHRzIGluIHRo ZSBjb21wb3NpdGlvbiBvZg0KPiA+Pj4+PiBhIHBhY2tldCBpcyB2YXJpb3VzLCB3aGljaCBtYWtl cyB0aGUgc2l0dWF0aW9uIGV2ZW4gd29yc2UuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoaXMgcGF0Y2gg ZXh0ZW5kcyBjdXJyZW50IGJ1ZmZlciBzcGxpdCB0byBzdXBwb3J0IHByb3RvY29sIGhlYWRlcg0K PiA+Pj4+PiBiYXNlZCBidWZmZXIgc3BsaXQuIEEgbmV3IHByb3RvX2hkciBmaWVsZCBpcyBpbnRy b2R1Y2VkIGluIHRoZQ0KPiA+Pj4+PiByZXNlcnZlZCBmaWVsZCBvZiBydGVfZXRoX3J4c2VnX3Nw bGl0IHN0cnVjdHVyZSB0byBzcGVjaWZ5DQo+ID4+Pj4+IHByb3RvY29sIGhlYWRlci4gVGhlIHBy b3RvX2hkciBmaWVsZCBkZWZpbmVzIHRoZSBzcGxpdCBwb3NpdGlvbiBvZg0KPiA+Pj4+PiBwYWNr ZXQsIHNwbGl0dGluZyB3aWxsIGFsd2F5cyBoYXBwZW5zIGFmdGVyIHRoZSBwcm90b2NvbCBoZWFk ZXINCj4gPj4+Pj4gZGVmaW5lZCBpbiB0aGUgUnggcGFja2V0IHNlZ21lbnQuIFdoZW4gUnggcXVl dWUgb2ZmbG9hZA0KPiA+Pj4+PiBSVEVfRVRIX1JYX09GRkxPQURfQlVGRkVSX1NQTElUIGlzIGVu YWJsZWQgYW5kIGNvcnJlc3BvbmRpbmcNCj4gPj4+PiBwcm90b2NvbA0KPiA+Pj4+PiBoZWFkZXIg aXMgY29uZmlndXJlZCwgUE1EIHdpbGwgc3BsaXQgdGhlIGluZ3Jlc3MgcGFja2V0cyBpbnRvDQo+ ID4+Pj4+IG11bHRpcGxlDQo+ID4+Pj4gc2VnbWVudHMuDQo+ID4+Pj4+DQo+ID4+Pj4+IHN0cnVj dCBydGVfZXRoX3J4c2VnX3NwbGl0IHsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgICAgICAgICBzdHJ1 Y3QgcnRlX21lbXBvb2wgKm1wOyAvKiBtZW1vcnkgcG9vbHMgdG8gYWxsb2NhdGUNCj4gPj4+Pj4g c2VnbWVudCBmcm9tDQo+ID4+Pj4gKi8NCj4gPj4+Pj4gICAgICAgICAgICB1aW50MTZfdCBsZW5n dGg7IC8qIHNlZ21lbnQgbWF4aW1hbCBkYXRhIGxlbmd0aCwNCj4gPj4+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgInNwbGl0IHBvaW50IiAqLw0KPiA+Pj4+PiAg ICAgICAgICAgIHVpbnQxNl90IG9mZnNldDsgLyogZGF0YSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcN Cj4gPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1idWYgZGF0YSBidWZm ZXIgKi8NCj4gPj4+Pj4gICAgICAgICAgICB1aW50MzJfdCBwcm90b19oZHI7IC8qIGlubmVyL291 dGVyIEwyL0wzL0w0IHByb3RvY29sIGhlYWRlciwNCj4gPj4+Pj4gCQkJICAgICAgIGNvbmZpZ3Vy ZXMgInNwbGl0IHBvaW50IiAqLw0KPiA+Pj4+PiAgICAgICAgfTsNCj4gPj4+Pj4NCj4gPj4+Pj4g Qm90aCBpbm5lciBhbmQgb3V0ZXIgTDIvTDMvTDQgbGV2ZWwgcHJvdG9jb2wgaGVhZGVyIHNwbGl0 IGNhbiBiZQ0KPiA+PiBzdXBwb3J0ZWQuDQo+ID4+Pj4+IENvcnJlc3BvbmRpbmcgcHJvdG9jb2wg aGVhZGVyIGNhcGFiaWxpdHkgaXMgUlRFX1BUWVBFX0wyX0VUSEVSLA0KPiA+Pj4+PiBSVEVfUFRZ UEVfTDNfSVBWNCwgUlRFX1BUWVBFX0wzX0lQVjYsIFJURV9QVFlQRV9MNF9UQ1AsDQo+ID4+Pj4+ IFJURV9QVFlQRV9MNF9VRFAsIFJURV9QVFlQRV9MNF9TQ1RQLA0KPiBSVEVfUFRZUEVfSU5ORVJf TDJfRVRIRVIsDQo+ID4+Pj4+IFJURV9QVFlQRV9JTk5FUl9MM19JUFY0LCBSVEVfUFRZUEVfSU5O RVJfTDNfSVBWNiwNCj4gPj4+Pj4gUlRFX1BUWVBFX0lOTkVSX0w0X1RDUCwgUlRFX1BUWVBFX0lO TkVSX0w0X1VEUCwNCj4gPj4+PiBSVEVfUFRZUEVfSU5ORVJfTDRfU0NUUC4NCj4gPj4+Pj4NCj4g Pj4+Pj4gRm9yIGV4YW1wbGUsIGxldCdzIHN1cHBvc2Ugd2UgY29uZmlndXJlZCB0aGUgUnggcXVl dWUgd2l0aCB0aGUNCj4gPj4+Pj4gZm9sbG93aW5nIHNlZ21lbnRzOg0KPiA+Pj4+PiAgICAgICAg c2VnMCAtIHBvb2wwLCBwcm90b19oZHIwPVJURV9QVFlQRV9MM19JUFY0LCBvZmYwPTJCDQo+ID4+ Pj4+ICAgICAgICBzZWcxIC0gcG9vbDEsIHByb3RvX2hkcjE9UlRFX1BUWVBFX0w0X1VEUCwgb2Zm MT0xMjhCDQo+ID4+Pj4+ICAgICAgICBzZWcyIC0gcG9vbDIsIG9mZjE9MEINCj4gPj4+Pj4NCj4g Pj4+Pj4gVGhlIHBhY2tldCBjb25zaXN0cyBvZiBNQUNfSVBWNF9VRFBfUEFZTE9BRCB3aWxsIGJl IHNwbGl0IGxpa2UNCj4gPj4+Pj4gZm9sbG93aW5nOg0KPiA+Pj4+PiAgICAgICAgc2VnMCAtIGlw djQgaGVhZGVyIEAgUlRFX1BLVE1CVUZfSEVBRFJPT00gKyAyIGluIG1idWYNCj4gZnJvbQ0KPiA+ Pj4+IHBvb2wwDQo+ID4+Pj4+ICAgICAgICBzZWcxIC0gdWRwIGhlYWRlciBAIDEyOCBpbiBtYnVm IGZyb20gcG9vbDENCj4gPj4+Pj4gICAgICAgIHNlZzIgLSBwYXlsb2FkIEAgMCBpbiBtYnVmIGZy b20gcG9vbDINCj4gPj4+Pg0KPiA+Pj4+IEl0IG11c3QgYmUgZGVmaW5lZCBob3cgSUNNUHY0IHBh Y2tldHMgd2lsbCBiZSBzcGxpdCBpbiBzdWNoIGNhc2UuDQo+ID4+Pj4gQW5kIGhvdyBVRFAgb3Zl ciBJUHY2IHdpbGwgYmUgc3BsaXQuDQo+ID4+Pg0KPiA+Pj4gVGhlIElDTVAgaGVhZGVyIHR5cGUg aXMgbWlzc2VkLCBJIHdpbGwgZGVmaW5lIHRoZSBleHBlY3RlZCBzcGxpdA0KPiA+Pj4gYmVoYXZp b3IgYW5kIGFkZCBpdCBpbiBuZXh0IHZlcnNpb24sIHRoYW5rcyBmb3IgeW91ciBjYXRjaC4NCj4g Pg0KPiA+IEkgaGF2ZSBhIHF1ZXN0aW9uIGhlcmUuIFNpbmNlIElDTVAgcGFja2V0cyBhcmUgbWFp bmx5IHVzZWQgdG8gY2hlY2sNCj4gPiB0aGUgY29ubmVjdGl2aXR5IG9mIG5ldHdvcmssIGlzIGl0 IG5lY2Vzc2FyeSBmb3IgdXMgdG8gc3BsaXQgSUNNUCBwYWNrZXRzPw0KPiA+IEFuZCBJIGZvdW5k IHRoZXJlIGlzIG5vIFJURV9QVFlQRSBmb3IgSUNNUC4NCj4gDQo+IEknbSBub3Qgc2F5aW5nIHRo YXQgd2Ugc2hvdWxkIHNwbGl0IG9uIElDTVAuIEknbSBqdXN0IHNheWluZyB0aGF0IHdlIG11c3QN Cj4gZGVmaW5lIHRoZSBiZWhhdmlvdXIgd2hlbiBoYXBwZW5zIGZvciBwYWNrZXRzIHdoaWNoIGRv IG5vdCBtYXRjaCBzcGxpdA0KPiBzcGVjaWZpY2F0aW9uLiBEb2VzIGl0IHNwbGl0IG9uIGxvbmdl c3QgbWF0Y2ggYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpcyBwdXQgaW4NCj4gKHdoaWNoPykgbGFzdCBi dWZmZXI/IEUuZy4gd2UgY29uZmlndXJlIHNwbGl0IG9uIEVUSC1JUHY0LVRDUC4NCj4gV2hhdCBk b2VzIGhhcHBlbiB3aXRoIEVUSC1JUHY0LVVEUD8gRVRILUlQdjY/DQoNCkdldCB5b3VyIHBvaW50 LiBGaXJzdGx5LCBvdXIgZGV2aWNlIG9ubHkgc3VwcG9ydHMgdG8gc3BsaXQgdGhlIHBhY2tldHMg aW50byB0d28gc2VnbWVudHMsDQpTbyB0aGVyZSB3aWxsIGJlIGFuIGV4YWN0IG1hdGNoIGZvciB0 aGUgY29uZmlndXJlZCBwcm90b2NvbCBoZWFkZXIuIEJhY2sgdG8gdGhpcw0KcXVlc3Rpb24sIGZv ciB0aGUgc2V0IG9mIHByb3RvX2hkcnMgY29uZmlndXJlZCwgaXQgY2FuIGhhdmUgdHdvIGJlaGF2 aW9yczoNCjEuIFRoZSBhZ2dyZXNzaXZlIHdheSBpcyB0byBzcGxpdCBvbiBsb25nZXN0IG1hdGNo IHlvdSBtZW50aW9uZWQsIEUuZy4gd2UgY29uZmlndXJlIHNwbGl0DQpvbiBFVEgtSVBWNC1UQ1As IHdoZW4gcmVjZWl2ZXMgRVRILUlQVjQtVURQIG9yIEVUSC1JUFY2LCBpdCBjYW4gYWxzbyBzcGxp dCBvbiBFVEgtSVBWNA0Kb3IgRVRILg0KMi4gQSBtb3JlIGNvbnNlcnZhdGl2ZSB3YXkgaXMgdG8g c3BsaXQgb25seSB3aGVuIHRoZSBwYWNrZXRzIG1lZXQgdGhlIHByb3RvY29sIGhlYWRlcnMNCmlu IHRoZSBSWCBwYWNrZXQgc2VnbWVudC4gSW4gdGhlIGFib3ZlIHNpdHVhdGlvbiwgaXQgd2lsbCBu b3QgZG8gc3BsaXQgZm9yIEVUSC1JUFY0LVVEUA0KYW5kIEVUSC1JUFY2Lg0KDQpJIHByZWZlciB0 aGUgc2Vjb25kIGJlaGF2aW9yLCBiZWNhdXNlIHRoZSBzcGxpdCBpcyB1c3VhbGx5IGZvciB0aGUg aW5uZXIgbW9zdCBoZWFkZXIgYW5kDQpwYXlsb2FkLCBpZiBpdCBkb2VzIG5vdCBtZWV0LCB0aGUg cmVzdCBvZiB0aGUgaGVhZGVycyBoYXZlIG5vIGFjdHVhbCB2YWx1ZS4NCldoYXQgZG8geW91IHRo aW5rPw0KDQo+IA0KPiA+Pj4NCj4gPj4+IEluIGZhY3QsIHRoZSBidWZmZXIgc3BsaXQgYmFzZWQg b24gcHJvdG9jb2wgaGVhZGVyIGRlcGVuZHMgb24gdGhlDQo+ID4+PiBkcml2ZXINCj4gPj4gcGFy c2luZyByZXN1bHQuDQo+ID4+PiBBcyBsb25nIGFzIGRyaXZlciBjYW4gcmVjb2duaXplIHRoaXMg cGFja2V0IHR5cGUsIEkgdGhpbmsgdGhlcmUgaXMNCj4gPj4+IG5vIGRpZmZlcmVuY2UgYmV0d2Vl biBVRFAgb3ZlciBJUFY0IGFuZCBVRFAgb3ZlciBJUFY2Pw0KPiA+Pg0KPiA+PiBXZSBjYW4gYmlu ZCBpdCB0byBwdHlwZXMgcmVjb2duaXplZCBieSB0aGUgSFcrZHJpdmVyLCBidXQgSSBjYW4NCj4g Pj4gZWFzaWx5IGltYWdpbmUgdGhlIGNhc2Ugd2hlbiBIVyBoYXMgbm8gbWVhbnMgdG8gcmVwb3J0 IHJlY29nbml6ZWQNCj4gPj4gcGFja2V0IHR5cGUgKGkuZS4gcHR5cGUgZ2V0IHJldHVybnMgZW1w dHkgbGlzdCksIGJ1dCBzdGlsbCBjb3VsZCBzcGxpdCBvbiBpdC4NCj4gPg0KPiA+IEdldCB5b3Vy IHBvaW50LiBCdXQgaWYgb25lIHB0eXBlIGNhbm5vdCBiZSByZWNvZ25pemVkIGJ5IEhXK2RyaXZl ciwgaXMNCj4gPiBpdCBzdGlsbCBuZWNlc3NhcnkgZm9yIHVzIHRvIGRvIHRoZSBzcGxpdD8gVGhl IG1haW4gcHVycG9zZSBvZiBidWZmZXINCj4gPiBzcGxpdCBpcyB0byBzcGxpdCBoZWFkZXIgYW5k IHBheWxvYWQuIEFsdGhvdWdoIHdlIGFkZCBzcGxpdCBmb3IgdmFyaW91cw0KPiBwcm90b2NvbCBo ZWFkZXJzIG5vdywgd2Ugc2hvdWxkIGZvY3VzIHRoZSBwdHlwZSBjYW4gYmUgcmVjb2duaXplZC4N Cj4gDQo+IFJlY29nbml0aW9uIGFuZCByZXBvcnRpbmcgaXMgYSBzZXBhcmF0ZSB0aGluZ3MuIEl0 IGNvdWxkIGJlIHJlY29nbml6ZWQsIGJ1dCBpdA0KPiBjYW4gaGF2ZSBubyBtZWFucyB0byByZXBv cnQgaXQgdG8gdGhlIGRyaXZlci4gcHR5cGVfZ2V0IGlzIGFib3V0IHJlcG9ydGluZy4NCj4gDQo+ ID4NCj4gPj4gQWxzbywgbm9ib2R5IGd1YXJhbnRlZXMgdGhhdCB0aGVyZSBpcyBubyBkaWZmZXJl bnQgaW4gVURQIG92ZXIgSVB2NA0KPiA+PiB2cw0KPiA+PiBJUHY2IHJlY29nbml0aW9uIGFuZCBz cGxpdC4gSVB2NiBjb3VsZCBoYXZlIGEgbnVtYmVyIG9mIGV4dGVuc2lvbg0KPiA+PiBoZWFkZXJz IHdoaWNoIGNvdWxkIGJlIG5vdCB0aGF0IHRyaXZpYWwgdG8gaG9wIGluIEhXLiBTbywgSFcgY291 bGQNCj4gPj4gcmVjb2duaXplIElQdjYsIGJ1dCBub3QgcHJvdG9jb2xzIGFmdGVyIGl0Lg0KPiA+ PiBBbHNvIGl0IGlzIHZlcnkgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaG93IHRvIGRlZmluZSBwcm90 b2NvbCBzcGxpdCBmb3INCj4gPj4gSVB2NiBwbHVzIGV4dGVuc2lvbiBoZWFkZXJzLiBXaGVyZSB0 byBzdG9wPw0KPiA+DQo+ID4gVGhlIGV4dGVuc2lvbiBoZWFkZXIgeW91IG1lbnRpb25lZCBpcyBp bmRlZWQgYW4gaW50ZXJlc3RpbmcgcXVlc3Rpb24uDQo+ID4gT24gb3VyIGRldmljZSwgdGhlIHN0 b3Agd291bGQgYmUgdGhlIGVuZCBvZiBleHRlbnNpb24gaGVhZGVyLiBUaGUgc2FtZQ0KPiA+IGFz IGFib3ZlLCB0aGUgbWFpbiBwdXJwb3NlIG9mIGJ1ZmZlcnMgc3BsaXQgaXMgZm9yIGhlYWRlciBh bmQgcGF5bG9hZC4NCj4gPiBFdmVuIHJ0ZV9mbG93LCB3ZSBkb24ndCBsaXN0IGFsbCBvZiB0aGUg ZXh0ZW5zaW9uIGhlYWRlcnMuIFNvIHdlIGNhbid0DQo+ID4gY29wZSB3aXRoIGFsbCB0aGUgSVBW NiBleHRlbnNpb24gaGVhZGVycy4NCj4gDQo+IEFnYWluLCB3ZSBtdXN0IGRlZmluZSB0aGUgYmVo YXZpb3VyLiBBcHBsaWNhdGlvbiBuZWVkcyB0byBrbm93IHdoYXQgdG8NCj4gZXhwZWN0Lg0KDQpO b3cgSSB1bmRlcnN0YW5kIHRoZSBiZWhhdmlvciBuZWVkcyB0byBkZWZpbmVkIGNsZWFybHkgZm9y IGFwcGxpY2F0aW9uLg0KQXBwbGljYXRpb24gbmVlZCBhIGNsZWFyIGV4cGVjdGF0aW9uIGZvciBl YWNoIGZ1bmN0aW9uIGNhbGwuDQoNCj4gDQo+ID4NCj4gPiBGb3IgSVBWNiBleHRlbnNpb24gaGVh ZGVycywgd2hhdCBpZiB3ZSB0cmVhdCB0aGUgSVBWNiBoZWFkZXIgYW5kDQo+ID4gZXh0ZW5zaW9u IGhlYWRlciBhcyBvbmUgbGF5ZXI/IEJlY2F1c2UgOTklIG9mIGNhc2VzIHdpbGwgbm90IHJlcXVp cmUgYQ0KPiA+IHNlcGFyYXRlIGV4dGVuc2lvbiBoZWFkZXIuDQo+IA0KPiBJJ2QgbGlrZSB0byBo aWdobGlnaHQgdGhhdCBpdCBpcyBub3QgImFuIGV4dGVuc2lvbiBoZWFkZXIiLiBJdCBpcyAnZXh0 ZW5zaW9uDQo+IGhlYWRlcnMnIChwbHVyYWwpLiBJJ20gbm90IHN1cmUgdGhhdCB3ZSBjYW4gc2F5 IHRoYXQgaW4gb3JkZXIgdG8gc3BsaXQgb24gSVB2Ng0KPiBIVyBtdXN0IHN1cHBvcnQgKmFsbCog KGV2ZW4gZnV0dXJlKSBleHRlbnNpb24gaGVhZGVycy4NCg0KWWVzLCBJJ20gYWxzbyByZWZlcnJp bmcgdG8gZXh0ZW5zaW9uIGhlYWRlcnMocGx1cmFsKSBoZXJlLg0KDQpXaGV0aGVyIGl0J3Mgb25l IG9yIG1vcmUgbGF5ZXJzIG9mIGhlYWRlcnMgZm9yIElQVjYsIGFzIGxvbmcgYXMgdGhlIGRyaXZl ciBjYW4NCnJlY29nbml6ZSB0aGUgZW5kIG9mIHRoZSBJUFY2IGV4dGVuc2lvbiBoZWFkZXIsIHdl IHNwbGl0IHRoZSBJUFY2IGhlYWRlciBvbmNlLg0KRS5nLiBGb3IgRVRILUlQVjYtSVBWNiBleHRl bnNpb24tVURQLXBheWxvYWQsIHdlIHNwbGl0IGl0IHRvIEVUSC1JUFY2LUlQVjYtZXh0ZW5zaW9u LA0KVURQIGFuZCBwYXlsb2FkIHdpdGggUnggc2VnbWVudCBSVEVfUFRZUEVfSVBWNiwgUlRFX1BU WVBFX1VEUCBjb25maWd1cmVkLg0KDQpUaGlzIGlzIHRoZSBiZWhhdmlvciBJIGhvcGUgdG8gZGVm aW5lIGZvciBJUFY2IGV4dGVuc2lvbihhbHNvIG91ciBkZXZpY2UncyBiZWhhdmlvcikuDQpXZSBk b24ndCBzcGVjaWZ5IHRoZSBJUFY2IGV4dGVuc2lvbiBoZWFkZXIgaW4gdGhlIFJYIHNlZ21lbnQu IElmIElQVjYgc3BsaXQgaXMgY29uZmlndXJlZCwNCnRoZSBJUFY2IGFuZCBleHRlbnNpb24gaGVh ZGVyKGlmIGhhdmUpIHdpbGwgYmUgdHJlYWQgYXMgYSBsYXllci4NCg0KPiANCj4gPg0KPiA+IEhv cGUgdG8gZ2V0IHlvdXIgaW5zaWdodHMuDQo+IA0KPiBVbmZvcnR1bmF0ZWx5IEkgaGF2ZSBubyBz b2x1dGlvbnMuIEp1c3QgcXVlc3Rpb25zIHRvIGJlIGFuc3dlcmVkLi4uDQo+IA0KPiA+DQo+ID4+ DQo+ID4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBOb3cgYnVmZmV0IHNwbGl0IGNhbiBiZSBjb25maWd1 cmVkIGluIHR3byBtb2Rlcy4gRm9yIGxlbmd0aCBiYXNlZA0KPiA+Pj4+PiBidWZmZXIgc3BsaXQs IHRoZSBtcCwgbGVuZ3RoLCBvZmZzZXQgZmllbGQgaW4gUnggcGFja2V0IHNlZ21lbnQNCj4gPj4+ Pj4gc2hvdWxkIGJlIGNvbmZpZ3VyZWQsIHdoaWxlIHRoZSBwcm90b19oZHIgZmllbGQgc2hvdWxk IG5vdCBiZQ0KPiBjb25maWd1cmVkLg0KPiA+Pj4+PiBGb3IgcHJvdG9jb2wgaGVhZGVyIGJhc2Vk IGJ1ZmZlciBzcGxpdCwgdGhlIG1wLCBvZmZzZXQsIHByb3RvX2hkcg0KPiA+Pj4+PiBmaWVsZCBp biBSeCBwYWNrZXQgc2VnbWVudCBzaG91bGQgYmUgY29uZmlndXJlZCwgd2hpbGUgdGhlIGxlbmd0 aA0KPiA+Pj4+PiBmaWVsZCBzaG91bGQgbm90IGJlIGNvbmZpZ3VyZWQuDQo+ID4+Pj4+DQo+ID4+ Pj4+IFRoZSBzcGxpdCBsaW1pdGF0aW9ucyBpbXBvc2VkIGJ5IHVuZGVybHlpbmcgUE1EIGlzIHJl cG9ydGVkIGluIHRoZQ0KPiA+Pj4+PiBydGVfZXRoX2Rldl9pbmZvLT5yeF9zZWdfY2FwYSBmaWVs ZC4gVGhlIG1lbW9yeSBhdHRyaWJ1dGVzIGZvciB0aGUNCj4gPj4+Pj4gc3BsaXQgcGFydHMgbWF5 IGRpZmZlciBlaXRoZXIsIGRwZGsgbWVtb3J5IGFuZCBleHRlcm5hbCBtZW1vcnksDQo+ID4+Pj4g cmVzcGVjdGl2ZWx5Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBYdWFuIERpbmcg PHh1YW4uZGluZ0BpbnRlbC5jb20+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IFl1YW4gV2FuZyA8 eXVhbngud2FuZ0BpbnRlbC5jb20+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IFdlbnh1YW4gV3Ug PHdlbnh1YW54Lnd1QGludGVsLmNvbT4NCj4gPj4+Pj4gUmV2aWV3ZWQtYnk6IFFpIFpoYW5nIDxx aS56LnpoYW5nQGludGVsLmNvbT4NCj4gPj4+Pj4gQWNrZWQtYnk6IFJheSBLaW5zZWxsYSA8bWRy QGFzaHJvZS5ldT4NCj4gPj4+Pj4gLS0tDQo+ID4+Pj4+ICAgICBsaWIvZXRoZGV2L3J0ZV9ldGhk ZXYuYyB8IDQwDQo+ID4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0K PiA+PiAtLS0tDQo+ID4+Pj4+ICAgICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCB8IDI4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKy0NCj4gPj4+Pj4gICAgIDIgZmlsZXMgY2hhbmdlZCwgNjAg aW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkNCj4gPj4+Pj4NCj4gPj4+Pj4gZGlmZiAtLWdp dCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4g Pj4+Pj4gaW5kZXggMjlhM2Q4MDQ2Ni4uZmJkNTVjZGQ5ZCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEv bGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+Pj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRo ZGV2LmMNCj4gPj4+Pj4gQEAgLTE2NjEsNiArMTY2MSw3IEBAIHJ0ZV9ldGhfcnhfcXVldWVfY2hl Y2tfc3BsaXQoY29uc3Qgc3RydWN0DQo+ID4+Pj4gcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2Vn LA0KPiA+Pj4+PiAgICAgCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wbCA9IHJ4X3NlZ1tzZWdfaWR4 XS5tcDsNCj4gPj4+Pj4gICAgIAkJdWludDMyX3QgbGVuZ3RoID0gcnhfc2VnW3NlZ19pZHhdLmxl bmd0aDsNCj4gPj4+Pj4gICAgIAkJdWludDMyX3Qgb2Zmc2V0ID0gcnhfc2VnW3NlZ19pZHhdLm9m ZnNldDsNCj4gPj4+Pj4gKwkJdWludDMyX3QgcHJvdG9faGRyID0gcnhfc2VnW3NlZ19pZHhdLnBy b3RvX2hkcjsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAkJaWYgKG1wbCA9PSBOVUxMKSB7DQo+ID4+ Pj4+ICAgICAJCQlSVEVfRVRIREVWX0xPRyhFUlIsICJudWxsIG1lbXBvb2wNCj4gcG9pbnRlclxu Iik7DQo+ID4+Pj4gQEAgLTE2OTQsMTMNCj4gPj4+Pj4gKzE2OTUsMzggQEAgcnRlX2V0aF9yeF9x dWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QNCj4gPj4+PiBydGVfZXRoX3J4c2VnX3NwbGl0 ICpyeF9zZWcsDQo+ID4+Pj4+ICAgICAJCX0NCj4gPj4+Pj4gICAgIAkJb2Zmc2V0ICs9IHNlZ19p ZHggIT0gMCA/IDAgOg0KPiBSVEVfUEtUTUJVRl9IRUFEUk9PTTsNCj4gPj4+Pj4gICAgIAkJKm1i cF9idWZfc2l6ZSA9IHJ0ZV9wa3RtYnVmX2RhdGFfcm9vbV9zaXplKG1wbCk7DQo+ID4+Pj4+IC0J CWxlbmd0aCA9IGxlbmd0aCAhPSAwID8gbGVuZ3RoIDogKm1icF9idWZfc2l6ZTsNCj4gPj4+Pj4g LQkJaWYgKCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsNCj4gPj4+Pj4gLQkJCVJU RV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+Pj4gLQkJCQkgICAgICAgIiVzIG1idWZfZGF0YV9yb29t X3NpemUgJXUgPCAldQ0KPiA+Pj4+IChzZWdtZW50IGxlbmd0aD0ldSArIHNlZ21lbnQgb2Zmc2V0 PSV1KVxuIiwNCj4gPj4+Pj4gLQkJCQkgICAgICAgbXBsLT5uYW1lLCAqbWJwX2J1Zl9zaXplLA0K PiA+Pj4+PiAtCQkJCSAgICAgICBsZW5ndGggKyBvZmZzZXQsIGxlbmd0aCwgb2Zmc2V0KTsNCj4g Pj4+Pj4gLQkJCXJldHVybiAtRUlOVkFMOw0KPiA+Pj4+PiArCQlpZiAocHJvdG9faGRyID09IFJU RV9QVFlQRV9VTktOT1dOKSB7DQo+ID4+Pj4+ICsJCQkvKiBTcGxpdCBhdCBmaXhlZCBsZW5ndGgu ICovDQo+ID4+Pj4+ICsJCQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVm X3NpemU7DQo+ID4+Pj4+ICsJCQlpZiAoKm1icF9idWZfc2l6ZSA8IGxlbmd0aCArIG9mZnNldCkg ew0KPiA+Pj4+PiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+Pj4gKwkJCQkJIiVzDQo+ IG1idWZfZGF0YV9yb29tX3NpemUgJXUgPCAldQ0KPiA+Pj4+IChzZWdtZW50IGxlbmd0aD0ldSAr IHNlZ21lbnQgb2Zmc2V0PSV1KVxuIiwNCj4gPj4+Pj4gKwkJCQkJbXBsLT5uYW1lLCAqbWJwX2J1 Zl9zaXplLA0KPiA+Pj4+PiArCQkJCQlsZW5ndGggKyBvZmZzZXQsIGxlbmd0aCwgb2Zmc2V0KTsN Cj4gPj4+Pj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4gKwkJCX0NCj4gPj4+Pj4gKwkJ fSBlbHNlIHsNCj4gPj4+Pj4gKwkJCS8qIFNwbGl0IGFmdGVyIHNwZWNpZmllZCBwcm90b2NvbCBo ZWFkZXIuICovDQo+ID4+Pj4+ICsJCQlpZiAoIShwcm90b19oZHIgJg0KPiA+Pj4+IFJURV9CVUZG RVJfU1BMSVRfUFJPVE9fSERSX01BU0spKSB7DQo+ID4+Pj4NCj4gPj4+PiBUaGUgY29uZGl0aW9u IGxvb2tzIHN1c3BpY2lvdXMuIEl0IHdpbGwgYmUgdHJ1ZSBpZiBwcm90b19oZHIgaGFzIG5vDQo+ ID4+Pj4gc2luZ2xlIGJpdCBmcm9tIHRoZSBtYXNrLiBJIGd1ZXNzIGl0IGlzIG5vdCB0aGUgaW50 ZW50Lg0KPiA+Pj4NCj4gPj4+IEFjdHVhbGx5IGl0IGlzIHRoZSBpbnRlbnQuLi4gSGVyZSB0aGUg bWFzayBpcyB1c2VkIHRvIGNoZWNrIGlmDQo+ID4+PiBwcm90b19oZHIgYmVsb25ncyB0byB0aGUg aW5uZXIvb3V0ZXIgTDIvTDMvTDQgY2FwYWJpbGl0eSB3ZSBkZWZpbmVkLg0KPiA+Pj4gQW5kIHdo aWNoIHByb3RvX2hkciBpcyBzdXBwb3J0ZWQgYnkgdGhlIE5JQyB3aWxsIGJlIGNoZWNrZWQgaW4g dGhlDQo+ID4+PiBQTUQNCj4gPj4gbGF0ZXIuDQo+ID4NCj4gPiBOZWVkIHRvIGNvcnJlY3QgaGVy ZS4gWW91IGFyZSByaWdodCwgSSBtYWRlIGEgYnVnIGluIHByZXZpb3VzDQo+IGltcGxlbWVudGF0 aW9uLg0KPiA+DQo+ID4+DQo+ID4+IEZyYW5rbHkgc3BlYWtpbmcgSSBzZWUgbm8gdmFsdWUgaW4g c3VjaCBpbmNvbXBsZXRlIGNoZWNrIGlmIHdlIHN0aWxsDQo+ID4+IHJlbHkgb24gZHJpdmVyLiBJ IHNpbXBseSBzZWUgbm8gcmVhc29uIHRvIG9ibGlnZSB0aGUgZHJpdmVyIHRvDQo+ID4+IHN1cHBv cnQgb25lIG9mIHRoZXNlIHByb3RvY29scy4NCj4gPg0KPiA+IFdpdGggQVBJLCB3ZSBjYW4gZ2V0 IHRoZSBkcml2ZXIncyBjYXBhYmlsaXRpZXMgZmlyc3QsIGFuZCBkbyB0aGUgY2hlY2sgaW4NCj4g ZXRoZGV2IGxhdGVyLg0KPiA+IEluIHRoaXMgd2F5LCB3ZSBjYW4gZmluaXNoIHRoZSBjaGVja3Mg aW4gb25jZS4gUGxlYXNlIHNlZSB2OS4NCj4gPg0KPiA+Pg0KPiA+Pj4NCj4gPj4+PiBJIGd1ZXNz IHRoZSBjb25kaXRpb24gc2hvdWxkIGJlDQo+ID4+Pj4gICAgICBwcm90b19oZHIgJiB+UlRFX0JV RkZFUl9TUExJVF9QUk9UT19IRFJfTUFTSyBpLmUuIHRoZXJlIGlzDQo+ID4+Pj4gdW5zdXBwb3J0 ZWQgYml0cyBpbiBwcm90b19oZHINCj4gPj4+Pg0KPiA+Pj4+IElNSE8gd2UgbmVlZCBleHRyYSBm aWVsZCBpbiBkZXZfaW5mbyB0byByZXBvcnQgc3VwcG9ydGVkIHByb3RvY29scw0KPiA+Pj4+IHRv IHNwbGl0IG9uLiBPciBhIG5ldyBBUEkgdG8gZ2V0IGFuIGFycmF5IHNpbWlsYXIgdG8gcHR5cGUg Z2V0Lg0KPiA+Pj4+IE1heSBiZSBhIG5ldyBBUEkgaXMgYSBiZXR0ZXIgY2hvaWNlIHRvIG5vdCBv dmVybG9hZCBkZXZfaW5mbyBhbmQgdG8NCj4gPj4+PiBiZSBtb3JlIGZsZXhpYmxlIGluIHJlcG9y dGluZy4NCj4gPj4+DQo+ID4+PiBUaGFua3MgZm9yIHlvdXIgc3VnZ2VzdGlvbi4NCj4gPj4+IEhl cmUgSSBob3BlIHRvIGNvbmZpcm0gdGhlIGludGVudCBvZiBkZXZfaW5mbyBvciBBUEkgdG8gZXhw b3NlIHRoZQ0KPiA+PiBzdXBwb3J0ZWQgcHJvdG9faGRyIG9mIGRyaXZlci4NCj4gPj4+IElzIGl0 IGZvciB0aGUgcHJvX2hkciBjaGVjayBpbiB0aGUgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxp dCgpPw0KPiA+Pj4gSWYgc28sIGNvdWxkIHdlIGp1c3QgY2hlY2sgd2hldGhlciBwcm9faGRycyBj b25maWd1cmVkIGJlbG9uZ3MgdG8NCj4gPj4+IEwyL0wzL0w0IGluIGxpYiwgYW5kIGNoZWNrIHRo ZSBjYXBhYmlsaXR5IGluIFBNRD8gVGhpcyBpcyB3aGF0IHRoZQ0KPiA+Pj4gY3VycmVudA0KPiA+ PiBkZXNpZ24gZG9lcy4NCj4gPj4NCj4gPj4gTG9vay4gQXBwbGljYXRpb24gbmVlZHMgdG8ga25v dyB3aGF0IHRvIGV4cGVjdCBmcm9tIGV0aCBkZXZpY2UuDQo+ID4+IEl0IHNob3VsZCBrbm93IHdo aWNoIHByb3RvY29scyBpdCBjYW4gc3BsaXQgb24uIE9mIGNvdXJzZSB3ZSBjYW4NCj4gPj4gZW5m b3JjZSBhcHBsaWNhdGlvbiB0byB1c2UgdHJ5LWZhaWwgYXBwcm9hY2ggd2hpY2ggd291bGQgbWFr ZSBzZW5zZQ0KPiA+PiBpZiB3ZSBoYXZlIGRlZGljYXRlZCBBUEkgdG8gcmVxdWVzdCBSeCBidWZm ZXIgc3BsaXQsIGJ1dCBzaW5jZSBpdCBpcw0KPiA+PiBkb25lIHZpYSBSeCBxdWV1ZSBjb25maWd1 cmF0aW9uLCBpdCBjb3VsZCBiZSB0cmlja3kgZm9yIGFwcGxpY2F0aW9uDQo+ID4+IHRvIHJlYWxp emUgd2hpY2ggcGFydCBvZiB0aGUgY29uZmlndXJhdGlvbiBpcyB3cm9uZy4gSXQgY291bGQgc2lt cGx5DQo+ID4+IHJlc3VsdCBpbiBhIHRvbyBtYW55IHJldHJpZXMgd2l0aCBkaWZmZXJlbnQgY29u ZmlndXJhdGlvbi4NCj4gPg0KPiA+IEFncmVlLiBUbyBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgdHJ5 LWZhaWxzLCBJIHdpbGwgYWRkIGEgbmV3IEFQSSBpbg0KPiA+IGRldl9vcHMsIHBsZWFzZSBzZWUg djkuDQo+ID4NCj4gPj4NCj4gPj4gSS5lLiB0aGUgaW5mb3JtYXRpb24gc2hvdWxkIGJlIHVzZWQg YnkgZXRoZGV2IHRvIHZhbGlkYXRlIHJlcXVlc3QgYW5kDQo+ID4+IHRoZSBpbmZvcm1hdGlvbiBz aG91bGQgYmUgdWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0byB1bmRlcnN0YW5kIHdoYXQNCj4gPj4g aXMgc3VwcG9ydGVkLg0KPiA+Pg0KPiA+Pj4NCj4gPj4+IEFjdHVhbGx5IEkgaGF2ZSBhbm90aGVy IHF1ZXN0aW9uLCBkbyB3ZSBuZWVkIGEgQVBJIG9yIGRldl9pbmZvIHRvDQo+ID4+PiBleHBvc2UN Cj4gPj4gd2hpY2ggYnVmZmVyIHNwbGl0IHRoZSBkcml2ZXIgc3VwcG9ydHMuDQo+ID4+PiBpLmUu IGxlbmd0aCBiYXNlZCBvciBwcm90b19oZHIgYmFzZWQuIEJlY2F1c2UgaXQgcmVxdWlyZXMgZGlm ZmVyZW50DQo+ID4+PiBmaWVsZHMgdG8gYmUgY29uZmlndXJlZCBpbiBSWCBwYWNrZXQgc2VnbWVu dC4NCj4gPj4NCj4gPj4gU2VlIGFib3ZlLiBJZiBkZWRpY2F0ZWQgQVBJIHJldHVybiAtRU5PVFNV UCBvciBlbXB0eSBzZXQgb2Ygc3VwcG9ydGVkDQo+ID4+IHByb3RvY29scyB0byBzcGxpdCBvbiwg dGhlIGFuc3dlciBpcyBjbGVhci4NCj4gPg0KPiA+IEdldCB5b3VyIHBvaW50LiBJIHRvdGFsbHkg YWdyZWUgd2l0aCB5b3VyIGlkZWEgb2YgYSBuZXcgQVBJLg0KPiA+IFRocm91Z2ggdGhlIEFQSSwg dGhlIGxvZ2ljIHdpbGwgbG9vayBsaWtlOg0KPiA+IHJldCA9IHJ0ZV9nZXRfc3VwcG9ydGVkX2J1 ZmZlcl9zcGxpdF9wcm90bygpOw0KPiA+IAlpZiAocmV0ID09IC1FTk9UU1VQKQ0KPiA+IAkJQ2hl Y2sgbGVuZ3RoIGJhc2VkIGJ1ZmZlciBzcGxpdA0KPiA+IAllbHNlDQo+ID4gCQlDaGVja2VkIHBy b3RvIGJhc2VkIGJ1ZmZlciBzcGxpdA0KPiA+DQo+ID4gV2UgZG9uJ3QgbmVlZCB0byBjYXJlIGFi b3V0IHRoZSBpcnJlbGV2YW50IGZpZWxkcyBpbiByZXNwZWN0aXZlIGJ1ZmZlcg0KPiA+IHNwbGl0 IGFueW1vcmUuDQo+ID4NCj4gPiBCVFcsIGNvdWxkIHlvdSBoZWxwIHRvIHJldmlldyB0aGUgZGVw cmVjYXRpb24gbm90aWNlIGZvciBoZWFkZXIgc3BsaXQ/DQo+ID4gSWYgaXQgZ2V0cyBhY2tlZCwg SSB3aWxsIHN0YXJ0IHRoZSBkZXByZWNhdGlvbiBpbiAyMi4xMS4NCj4gDQo+IFNpbmNlIHRoZSBm ZWF0dXJlIGlzIGRlZmluaXRlbHkgZGVhZC4gSSdkIHVzZSBmYXN0ZXIgdHJhY2suDQo+IERlcHJl Y2F0ZSBpbiAyMi4wNyBhbmQgcmVtb3ZlIGluIDIyLjExLg0KDQpEb2VzIHRoaXMgbWVhbiBJIGRv bid0IG5lZWQgdG8gZG8gdGhlIHJlbW92ZSB3b3JrPyBJJ20gYWxzbyB3aWxsaW5nIHRvIGhlbHAu DQpBIGRlcHJlY2F0aW9uIG5vdGljZSBoYXMgYmVlbiBzZW50IGluIDIyLjA3Lg0KaHR0cDovL3Bh dGNod29yay5kcGRrLm9yZy9wcm9qZWN0L2RwZGsvcGF0Y2gvMjAyMjA1MjMxNDIwMTYuNDQ0NTEt MS14dWFuLmRpbmdAaW50ZWwuY29tLw0KDQpUaGFua3MsDQpYdWFuDQoNCj4gDQo+ID4NCj4gPiBU aGFua3MsDQo+ID4gWHVhbg0KPiA+DQo+ID4+DQo+ID4+Pg0KPiA+Pj4gSG9wZSB0byBnZXQgeW91 ciBpbnNpZ2h0cy4gOikNCj4gPj4+DQo+ID4+Pj4NCj4gPj4+Pj4gKwkJCQlSVEVfRVRIREVWX0xP RyhFUlIsDQo+ID4+Pj4+ICsJCQkJCSJQcm90b2NvbCBoZWFkZXIgJXUgbm90DQo+ID4+Pj4gc3Vw cG9ydGVkKVxuIiwNCj4gPj4+Pj4gKwkJCQkJcHJvdG9faGRyKTsNCj4gPj4+Pg0KPiA+Pj4+IEkg dGhpbmsgaXQgd291bGQgYmUgdXNlZnVsIHRvIGxvZyB1bnN1cHBvcnRlZCBiaXRzIG9ubHksIGlm IHdlIHNheSBzby4NCj4gPj4+DQo+ID4+PiBUaGUgc2FtZSBhcyBhYm92ZS4NCj4gPj4+IFRoYW5r cyBhZ2FpbiBmb3IgeW91ciB0aW1lLg0KPiA+Pj4NCj4gPj4+IFJlZ2FyZHMsDQo+ID4+PiBYdWFu DQoNCg==