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 B20C3A034C; Wed, 21 Sep 2022 09:34:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8FDF540697; Wed, 21 Sep 2022 09:34:38 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2045.outbound.protection.outlook.com [40.107.220.45]) by mails.dpdk.org (Postfix) with ESMTP id 899E54014F for ; Wed, 21 Sep 2022 09:34:36 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D2U4asUJRjG5Nqapei1IMfxy5uXP8j83vk9S8rVLbtdPlPzRAaJ97xABba3tAKLbCv7zjqEt7jBSuXrTAuQl2r7Gs4Z6o38LLRMAG5LDaj9KgWUsUiOllhMLQ6/NrSOTc//yxBVo1RNKcIhedVYv1Pl8XLSKVaGWLPPR8mgRj8kI2pAi6B7tvO0nYS3qf3+aGDK+NTh5HBWk1DPPZQ0VAtyrhPvmlXFE4nuCBrVJJYEboq4qaprqt8aSsXAAnVnEaI7IJRTmVtOnObtPIcbE84UVUUJMrjAXqgqRo/aA14DG4wSn4LIk000jkQbb0MAfxFREyPfY0/MBO575T0yPhg== 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=q01Wkzc1Zx9Rjmf5qnS+i2X/kTBmhUSyUuUvLIxQ26Y=; b=TKxmdkkmzyYJKpXwSVvRGXTCDhLuJl3vugOXnmESM/aar98jIXGEy442ti7Gl6ybeJXSTrHZ8b4/VQoxF9DNYYxtob+oXDgJZvvdi7ZHsUOXle01NsJTYTCveIThwGl+Cquk4ofy0MnMVh1yX19gO+iegR1iEo9GdZImZWUt8upjNt+3qFoEthkU8qLIU2c9Opyw/wvlYMqmw34TliJS5qnvvHxEKE5UGkmhGuz9SnKcGNi0yGZX2gz4HRE59UyTuoB9wCpnU133O1cMFIfnQRPRxPFlBpY6enDG5HwDRiLdNHvvEfbEcC9FYd2gM4osrZTa7Bd7v98VfRF8pW2FIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q01Wkzc1Zx9Rjmf5qnS+i2X/kTBmhUSyUuUvLIxQ26Y=; b=qxcsNla+BrMsCdLXZIziS2n3FenzgfmqoM0WP+OLWtiYG4boAlF5Q66BhXL4jt90IzVmWItTcKf7Do1dGeZuxkCuvMkG2P6/A3v6jaMt7qGMzYWcYnFCBiIOKgnfjZmUuAGGfQJaBwKGDz93xhsfty2iq5WPBLwuLRhrLIyl9A3wMB78Z0d26OEpDThf2RzL+8EuBKlh+yctjTvwngph2d3DRP2V16E7GfBMhU8qs5KShxVKJwi+KOKAd0XcKYhTop5xlC3S90SwfO9JRQVvhFFtDYVit5GwA7snnHodMwtnXFOZ53CfoFjjUdJPzfxmTfIHPQ5/R+Qx+nOEmgVXOw== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by DS0PR12MB6438.namprd12.prod.outlook.com (2603:10b6:8:ca::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.14; Wed, 21 Sep 2022 07:34:33 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9847:f2a5:c4f:ec52]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9847:f2a5:c4f:ec52%5]) with mapi id 15.20.5632.021; Wed, 21 Sep 2022 07:34:33 +0000 From: Ori Kam To: Ivan Malov CC: "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Rongwei Liu , Matan Azrad , Slava Ovsiienko , Aman Singh , Yuying Zhang , Andrew Rybchenko , "dev@dpdk.org" , Raslan Darawsheh Subject: RE: [PATCH v1] ethdev: add direction info when creating the transfer table Thread-Topic: [PATCH v1] ethdev: add direction info when creating the transfer table Thread-Index: AQHYwmNBlMPGSxWFbECmDbi50+NQZa3cDLOAgAFdCwCAAAzvgIAA9vIAgAAlywCAAC4vAIAAU/oAgACiMQCAAHInAIAAEUWAgAAkdICAAATEgIAHt1DAgAA9WICAAAyHcIAAIM+AgADwaXA= Date: Wed, 21 Sep 2022 07:34:33 +0000 Message-ID: References: <20220907024020.2474860-1-rongweil@nvidia.com> <297a487e-b5d-4928-e96-c80b2603dd8@oktetlabs.ru> <2834724.SvYEEZNnvj@thomas> <824d3d7-df5a-c81e-d5b-77f880b369b@oktetlabs.ru> In-Reply-To: <824d3d7-df5a-c81e-d5b-77f880b369b@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW2PR12MB4666:EE_|DS0PR12MB6438:EE_ x-ms-office365-filtering-correlation-id: 99304666-0a87-4ab4-b1f9-08da9ba3ba88 x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rhRNMTsUL523yXdz4XLh6CDFl49c4WMuhUBWKCyLuxgq8AHvUY44LEas77RMnykV4MNzQzDTLiFD0zKRoKc5CxRwUwIJmOykQtJOtvcSrU+B39nTITgFn72fhE1M3gwZQ48Qh+dQJeQP+yo1aC625FhJwHXJFfpTSxYZCQqIvkB6dxLoWsaYZ0hbAW8qe4YyNEjNOXKoEim3U1sireTomIMu4DVLDxj/HBgkncRVc1msc4dE2sf91wr3blDXyEYOfpKiLuOvBVWSPwOp4h3esNwIyNAsyoqyqE5TO6DtU36pJzr3RCjRthgWL47kjXwtPSWYcDha5dUXZABdCP8wFYehI6cha+EqxHpINgSD8AYkXbrA4cfjF1p2YdNRQTyi6wrwOpZUrVilg+0Sq4ojnX0FBg9Fedgr9ad78hvqRmhsbGyZmoj8zRZ+Po14mnmOCa8FVoOjNocbuLuX/d2VUhA6/PzZM4xYMHzY9M0q/YvWkyHHt3RDqUxaXioNZwaOFrmKLC/aLcYBvLvzci9qUkfi4Z2T7AL0uYOTbQxHj2rBYoO2n1V5Mn0Sa3nnQ0BDt085oB/39r3la4MC+57Um2A8+1Q5xDIqLWKSuamOPLfhuSomJ8KUM/kTdby+pLB99/SptBKbCcRSmIdUCuyrR6wj6gqsBMJylZHoIfah/V0OCn0l4Y3hhVYfrkDWaOz0PAzWKB7C2n+U8iX6JZ8n9tDZC39Kh+qN4XdJmSNSiJLpRHhwsFEbVQtLVEVDhWSoRWHcmmIZUOolz2r2G+RyHg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4666.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(346002)(396003)(366004)(136003)(39860400002)(376002)(451199015)(8936002)(2906002)(30864003)(5660300002)(76116006)(4326008)(8676002)(64756008)(66446008)(66476007)(66556008)(66946007)(41300700001)(52536014)(71200400001)(6916009)(54906003)(122000001)(478600001)(107886003)(26005)(33656002)(86362001)(316002)(9686003)(38070700005)(7696005)(6506007)(38100700002)(83380400001)(186003)(55016003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WG4zaUdqYVR0UHZGditPVlJBUGszVDhubnZJWUwzcngwMHk2OUFPMnNjMElP?= =?utf-8?B?eHN4U1NmVE8zTTg5SUJhd2VrRzIycDV1VTZ6MG9YRW1SL3krRThUTEREMTBP?= =?utf-8?B?N1hFUWpBbm9vYnF2NkUzSGVWOGw4bm1hZU9OTmRWMEJxWXZjWW1FdDJSUzll?= =?utf-8?B?dWhkVUMwdTZQb3l0QkZ3ZXVJOGw5YkJmYVR1L1dKT2xOVWU0SWJyY08wWkhl?= =?utf-8?B?aTNyYUpMeHBES2M2YUh2a0dHWXpKVGxVUFlESzc4K1puWE8yZUVTS2UwRllF?= =?utf-8?B?Qm00N3lsNWNsTDlHdjVEbDJsT2FuQlRZbUN0K0kvTTVYNTRTdDNsZG9ReSt6?= =?utf-8?B?OGJsTndLRG1pZGhjZGJocEFFOEtnV1F5QndXN2thR2pMendBMWdBWVFuV0hJ?= =?utf-8?B?QkNiSiszaE1yRjJPM0pFYi8yaTlUbkVnTFd2R1BZSGxUcGtjVm52aS84VWNy?= =?utf-8?B?ajRIVDhFcG5lMWtSOFdKQklpUmg3ekw2emxOMm5tRHNmYkZMV0lNOWw2L2Zx?= =?utf-8?B?THNncVN0TjVYc3Fwa2J0ZjVJamRmRHc5Um9sS3dFQnNyR1g1WVNMTjNaSVBk?= =?utf-8?B?VWNwelNOUmV1eUN1NXV3SEl2UG9Tb3cyVzR5bHkwRUsyVjR5b0pIVlFDSkVD?= =?utf-8?B?OTZLb24wUzBGUnpIMnhQdVJzZHJicEY4TjBpRWdEN2hQMTZuaTlheFNNTktJ?= =?utf-8?B?bXRjZkdvWEVrREEyRk01QWRvL0x0dEJFclN4YWRkbndvSjhZb1NmYm1NaVVa?= =?utf-8?B?S0tKNUdFVEplTWlXeXdtS0kzR0VsUGtxVHpUZ3YxZjdic3A0QmRnakVCT2Jy?= =?utf-8?B?R3FoZkdZSFZHRUNwMWkrTjBiK2dCOHdiZ3hiOEM2V21UNmlrZW00U0c2Vm1Q?= =?utf-8?B?dERVN0VsRUFQd3FUa25Ta3lwenN4OXBmbTdwdGRIbTZRMkpoOFlSL1doaTV3?= =?utf-8?B?djRqdGVQdTB1a2N5V2cza25kdm1Ob0J5Zkg1ZmZwcUJRUzJtQThqOEhsNkxQ?= =?utf-8?B?c1FNMzg4REU3aDN2cVVxRTJVcVlucmJJbCtxYjNBUzhFYVc5Z21zNWI4eWE1?= =?utf-8?B?NFFFQjdBYWpsOTFLYVJCcUFKcnVxTGFHR3c5VEZTUTUrZy95UTdqcmtJM3lu?= =?utf-8?B?d054MjJ6UHVObkdMd2JKbm12a3NLSzhVQUdtcC9TUjVod0JTRnpac25xc3l5?= =?utf-8?B?SWNLQmEyUVZ4MjFIS0VPL1BXQllyeHN2TjdZODhYbTVHeDVxVU5oOGdtYklW?= =?utf-8?B?cDE3T2lWZEl4UEhVSk8rb2dnaWVnMVdXbU9PczE3bXZvR2Fzb3FubW5rWGEr?= =?utf-8?B?Z2FLb0dzV1YyOG1jM1pYUU5ZbkZDcGRQWTYxbUhFc0gxb0ZWYXNwZEVRSWJu?= =?utf-8?B?MW1YZGJjWXlkS1ArN2p3azQrSWNCRzZQeXhiM2JwbDNUd2pVSGdoT2ZGVUN1?= =?utf-8?B?UzdjUGJMSk5HSkMxbVhrQ3VCMWFPdjhTeEVNYXFvMWo4MGQzRHJWWXlwUGJG?= =?utf-8?B?dHdWMTJ6T25oNnd0aHIxLytQYTVUTUxLV09qWGFTakxLVmVueW1LQ2xVU284?= =?utf-8?B?bmhKUE9LYVFMOEovZXZKNnVqS0lSNlNGR1JvMWNSNWVFd2EzVElJaDNhOXFt?= =?utf-8?B?Sm5jbzdvOXFoWHZocUpnYUtOL0NacjRCTzVMNUVSd0pOR0lNZGF5ZW9rYWUw?= =?utf-8?B?eVdlQVoxdVd1MkRyV21IbTFxQmhSRlhReGpYY1VmeTJaUURiUms4Q0hnQWRB?= =?utf-8?B?STBOT0NvczROcVpvVDNDVS9mZm9rWmJDVUI0cVZtYVpBR2U5emY5WjFVRkIr?= =?utf-8?B?bnNJY1o5UERVNDdSZ1ExQXRmdlVHdGF6cXhEbFBWakZKck1DNFJiRTZJSTAx?= =?utf-8?B?N1JKZFBaaHRkNFRZZ0drSGZnRWRRVUdacE1NSCsvTnFXOS8xWFV2dlp5SDho?= =?utf-8?B?bk0wTWlHUWY3Yml6NFNZb3AzUjg0cjNOb0RBVDh6aHpHTzFXZjdzNzhxR0d0?= =?utf-8?B?ZTRvUzJrNm80QzJkZ0E1Q1FXM3VCZnZXc1ZGTVQrV2lVT0pSMGJ5ZWxmM0h2?= =?utf-8?B?dVVJaE9DUjJKRW5uTno5VkViUVdSUkU5a1U0Z3lDV2Z0blROOEZjODdWd3ph?= =?utf-8?Q?Ewxk=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99304666-0a87-4ab4-b1f9-08da9ba3ba88 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Sep 2022 07:34:33.7216 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Cy1GMxOoiO0HgBV4hidM1gp5iclprx7TlilYQQD2JmXm/TIkd+olHX3sXHo2LelHY1c01mGBGJh+cn9HRh9wyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6438 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 SGkgSXZhbiwNCg0KUFNCIG15IGNvbW1lbnRzLg0KDQpJbiBhbnkgY2FzZSwgSSdtIGFmcmFpZCB3 ZSBhcmUgaW4gYSBkZWFkbG9jay4NCkkgdW5kZXJzdGFuZCB5b3VyIHZpZXdwb2ludCwgSSBkb24n dCB0aGluayBpdCBpcyB0aGUgY29ycmVjdA0Kb25lIGZvciB0aGUgZmVhdHVyZSBzdWdnZXN0ZWQg aGVyZS4NCkZvciBhbGwgdGhlIHJlYXNvbnMgSSBsaXN0ZWQuDQoNClNvIGZyb20gbXkgdmlld3Bv aW50LCB0aGUgcGF0Y2ggaXMgQWNrZWQuDQpJZiB5b3Ugd2lzaCBhcyBJIHN1Z2dlc3RlZCBiZWZv cmUsIHdlIGNhbiBoYXZlIGEgbWVldGluZyB3aXRoDQpSb25nd2VpIGFuZCBhbnlvbmUgZWxzZSB3 aG8gaXMgaW50ZXJlc3RlZCBhbmQgY2xvc2UgdGhpcyBzdWJqZWN0Lg0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEl2YW4gTWFsb3YgPGl2YW4ubWFsb3ZAb2t0ZXRsYWJz LnJ1Pg0KPiBTZW50OiBUdWVzZGF5LCAyMCBTZXB0ZW1iZXIgMjAyMiAxODoyOA0KUkU6IFtQQVRD SCB2MV0gZXRoZGV2OiBhZGQgZGlyZWN0aW9uIGluZm8gd2hlbiBjcmVhdGluZyB0aGUgdHJhbnNm ZXINCj4gdGFibGUNCj4gDQo+IEhpIE9yaSwNCj4gDQo+IE9uIFR1ZSwgMjAgU2VwIDIwMjIsIE9y aSBLYW0gd3JvdGU6DQo+IA0KPiA+IEhpIEl2YW4sDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogSXZhbiBNYWxvdiA8aXZhbi5tYWxvdkBva3RldGxhYnMu cnU+DQo+ID4+IFNlbnQ6IFR1ZXNkYXksIDIwIFNlcHRlbWJlciAyMDIyIDE1OjQ2DQo+ID4+DQo+ ID4+IEhpIE9yaSwNCj4gPj4NCj4gPj4gT24gVHVlLCAyMCBTZXAgMjAyMiwgT3JpIEthbSB3cm90 ZToNCj4gPj4NCj4gPj4+IEhpIEl2YW4sIFRob21hcyBhbmQgUm9uZ3dlaQ0KPiA+Pj4NCj4gPj4+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IFRob21hcyBNb25qYWxv biA8dGhvbWFzQG1vbmphbG9uLm5ldD4NCj4gPj4+PiBTZW50OiBUaHVyc2RheSwgMTUgU2VwdGVt YmVyIDIwMjIgMTQ6MTYNCj4gPj4+Pg0KPiA+Pj4+IDE1LzA5LzIwMjIgMTI6NTksIEl2YW4gTWFs b3Y6DQo+ID4+Pj4+IEhpIFJvbmd3ZWksDQo+ID4+Pj4+DQo+ID4+Pj4+IEluIHRoaXMgcmVwbHks IEkgZG8gbm90IGluY2x1ZGUgdGhlIHByZXZpb3VzIG1haWwgYmVjYXVzZSB0aGUgYW1vdW50DQo+ ID4+Pj4+IG9mIGlubGluZSBjb21tZW50YXJ5IGhhcyBnb25lIGhheXdpcmUgb3ZlciB0aGUgcGFz dCBjb3VwbGUgb2YgZGF5cy4NCj4gPj4+Pj4gTGV0J3MgcmUtaXRlcmF0ZS4NCj4gPj4+Pj4NCj4g Pj4+Pj4gQnV0IGJlZm9yZSBJIGdldCB0byB0aGF0LCBJJ2QgbGlrZSB0byBvZmZlciBhIGZyZXNo IHBlcnNwZWN0aXZlOg0KPiA+Pj4+Pg0KPiA+Pj4+PiBQZXJoYXBzLCBpZiB3ZSBhbGwgYWdyZWUg dGhhdCB0ZXJtICJ2cG9ydCIgbWVhbnMgYW4gZW5kcG9pbnQgd2hpY2gNCj4gPj4+Pj4gY2FuIHN0 YW5kIGZvciBhbnkgInBvcnQiIGV4Y2VwdCBmb3IgcGh5c2ljYWwgb25lLCB0aGVuIGl0IHNob3Vs ZA0KPiA+Pj4+PiBiZSBwb3NzaWJsZSB0byB1c2UgdGVybSBBTllfVlBPUlRTIHJhdGhlciB0aGFu DQo+IEFOWV9HVUVTVF9QT1JUUy4NCj4gPj4+Pg0KPiA+Pj4+IFRoZSBvcHBvc2l0ZSBvZiAicGh5 c2ljYWwiIGlzICJ2aXJ0dWFsIiBpbmRlZWQuDQo+ID4+Pj4NCj4gPj4+Pj4gQnV0IHRoYXQncyB0 cmlja3ksIG9mIGNvdXJzZS4gSSBkb24ndCBoYXZlIGEgd2F5IHdpdGggbmFtaW5nLA0KPiA+Pj4+ PiBzbyBtb3JlIG9waW5pb25zIGFyZSB3ZWxjb21lIGFuZCB2ZXJ5LXZlcnkgZGVzaXJhYmxlIGhl cmUuDQo+ID4+Pj4+DQo+ID4+Pj4+IFNvOg0KPiA+Pj4+Pg0KPiA+Pj4+PiAxKSBEbyB5b3UgYWdy ZWUgdGhhdCwgaW4geW91ciBwcm9wb3NhbCwgdGhlIG5ldyAid2lyZV9vcmlnIiAvICJ2Zl9vcmln Ig0KPiA+Pj4+PiAgICAgcHJpbWl0aXZlcyBhcmUgaW4gZmFjdCB5ZXQgYW5vdGhlciBtYXRjaCBj cml0ZXJpYT8NCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIC4uDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBU byBtZSwgaXQgbG9va3Mgc28uIElmIHRoZXkgYXJlIG1hdGNoIGNyaXRlcmlhLCB0aGVuIHRoZXkg YmVsb25nDQo+ID4+Pj4+ICAgICBpbiBtYXRjaCBwYXR0ZXJuLCB0aGF0IGlzLCB0aGV5IHNob3Vs ZCBiZSBleHByZXNzZWQgYXMgbmV3IGl0ZW1zLg0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgRm9yICJ0 cmFuc2ZlciIgcnVsZXMsIHRoZSAqZXhpc3RpbmcqIGF0dHJpYnV0ZXMgYXJlOiAiZ3JvdXAiDQo+ ID4+Pj4+ICAgICBhbmQgInByaW9yaXR5Ii4gQXMgeW91IG1heSBub3RlLCB0aGVzZSBhcmUgY2xl YXJseSBub3QgbWF0Y2gNCj4gPj4+Pj4gICAgIGNyaXRlcmlhLiBUaGV5IGNvbnRyb2wgdGhlIGxv b2stdXAgb3JkZXIuIFNvLCB0byB0aGlzIGRheSwNCj4gPj4+Pj4gICAgIHRoZXJlJ3JlIG5vIG1h dGNoIGNyaXRlcmlhIGluIERQREsgZXhwcmVzc2VkIGFzIGF0dHJpYnV0ZXMuDQo+ID4+Pj4+DQo+ ID4+Pj4+ICAgICBJZiB0aGVzZSAid2lyZV9vcmlnIiAvICJ2Zl9vcmlnIiBhcmUgZ29pbmcgdG8g YmUgaW50cm9kdWNlZA0KPiA+Pj4+PiAgICAgYXMgYXR0cmlidXRlcywgdGhhdCBzaG91bGQgYmUg YmFja2VkIHdpdGggc3Ryb25nIG1vdGl2YXRpb24uDQo+ID4+Pj4NCj4gPj4+PiBJIHByZWZlciB3 ZSBrZWVwIG1hdGNoaW5nIGluIGEgc2luZ2xlIHBsYWNlLCBub3QgaW4gYXR0cmlidXRlcy4NCj4g Pj4+Pg0KPiA+Pj4NCj4gPj4+IEkgdGhpbmsgd2UgYXJlIHRhbGtpbmcgYWJvdXQgdHdvIGRpZmZl cmVudCBmZWF0dXJlcy4NCj4gPj4+IEZlYXR1cmUgMToNCj4gPj4+IEFsbG93IG1hdGNoaW5nIG9u IGFsbCB2cG9ydHMgdGhhdCBhcmUgbm90IHdpcmUNCj4gPj4+IEZlYXR1cmUgMjoNCj4gPj4+IFNh dmUgYWxsb2NhdGlvbiBzcGFjZSBhbmQgYWxsb3cgZmFzdCBpbnNlcnRpb24uDQo+ID4+PiBJbiB0 aGlzIGNhc2UsIHRoZSBtYXRjaGluZyBpcyBub3Qgb24gYWxsIHZwb3J0cyBpdCBjYW4gYmUganVz dCBwYXJ0IG9mIHRoZQ0KPiB2cG9ydHMNCj4gPj4+IGJ1dCBpdCB3aWxsIG5ldmVyIGJlIHRoZSB3 aXJlIHBvcnQuDQo+ID4+PiBGb3IgZXhhbXBsZToNCj4gPj4+IHBvcnQgMCAtIHdpcmUNCj4gPj4+ IHBvcnRzIDEsMiwzLDQsNSAgLSB2cG9ydHMNCj4gPj4+IHRoZSBhcHBsaWNhdGlvbiB3YW50IHRv IGluc2V0IG9ubHkgdGhvc2UgcnVsZXM6DQo+ID4+PiByZXByZXNlbnRlZF9wb3J0KHBvcnRfaWQ9 MikgLyBldGggLyBpcHY0IChzcmM9PXh4KQ0KPiA+Pj4gcmVwcmVzZW50ZWRfcG9ydChwb3J0X2lk PTQpIC8gZXRoIC8gaXB2NCAoc3JjPT14eCkNCj4gPj4+IHJlcHJlc2VudGVkX3BvcnQocG9ydF9p ZD00KSAvIGV0aCAvIGlwdjQgKHNyYz09eXkpDQo+ID4+Pg0KPiA+Pj4gRm9yIGZlYXR1cmUgMSBJ IGZ1bGx5IGFncmVlIHdpdGggeW91IEl2YW4sIHRoaXMgc2hvdWxkIGJlIGFkZGVkIGFzIGFuIGl0 ZW0uDQo+ID4+DQo+ID4+IFRoYW5rIHlvdS4NCj4gPj4NCj4gPj4+IEZvciBmZWF0dXJlIDIgSSB0 aGluayBSb25nd2VpJ3Mgc3VnZ2VzdGlvbiBpcyB0aGUgYmV0dGVyIG9wdGlvbi4NCj4gPj4+IElm IEkgdW5kZXJzdGFuZCBjb3JyZWN0bHkgdGhlIGlkZWEgaXMgdG8gZ2l2ZSBoaW50IHRvIHRoZSBQ TUQgb24gd2hlcmUgdG8NCj4gPj4gYWxsb2NhdGUgbWVtb3J5DQo+ID4+PiBhbmQgaG93IHRvIGlu c2VydCB0aGUgcnVsZXMgbW9zdCBvcHRpbWFsbHkuIFNpbmNlIHRoaXMgaXMgc2hhcmVkIGZvciBh bGwNCj4gcnVsZXMgaXQNCj4gPj4gbWFrZXMgbW9yZSBzZW5zZQ0KPiA+Pj4gdG8gYWRkIGl0IGFz IGFuIGF0dHJpYnV0ZSwganVzdCBsaWtlIHdlIGRvbuKAmXQgaGF2ZSBhbiBpbmdyZXNzIGl0ZW0g KG1heWJlDQo+IHdlDQo+ID4+IHNob3VsZD8pDQo+ID4+DQo+ID4+IEJ1dCBpc24ndCBwYXR0ZXJu IHRlbXBsYXRlIGFsc28gc3VwcG9zZWQgdG8gYmUgc2hhcmVkIGZvciBhbGwgcnVsZXMNCj4gPj4g aW4gdGhlIHRhYmxlPyBJLmUuLCB0aGUgdXNlciBjcmVhdGVzIGFuIGFzeW5jIGZsb3cgdGFibGUg YW5kIHN1Ym1pdHMNCj4gPj4gYSBmbG93ICJzaGFwZSIgKHdoaWNoIGNvbnNpc3RzIG9mIGF0dHJz LCBwYXR0ZXJuIHRlbXBsYXRlIGFuZCBhY3Rpb24NCj4gPj4gdGVtcGxhdGUpLiBTbyB3aHkgc2hv dWxkICJnaXZpbmcgYSBoaW50IiB2aWEgYW4gaXRlbSB0ZW1wbGF0ZSBiZQ0KPiA+PiBjb25zaWRl cmVkIHdvcnNlIHRoYW4gZG9pZyBzbyB2aWEgYW4gYXR0cmlidXRlPw0KPiA+Pg0KPiA+DQo+ID4g VGhlIHNhbWUgaXRlbSB0ZW1wbGF0ZSBtYXliZSB1c2VkIGVsc2V3aGVyZSwgZm9yIGV4YW1wbGUs IHRoZQ0KPiBmb2xsb3dpbmcNCj4gPiBwYXR0ZXJuICBldGggLyBpcHY0KHNyYywgZHN0KSAvIHVk cChzcG9ydCwgZHBvcnQpLCBjYW4gYmUgdXNlZCBvbiBudW1iZXIgb2YNCj4gZGlmZmVyZW50DQo+ ID4gdGFibGVzLg0KPiANCj4gSW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIHVzZXIgbWF5IHdhbnQg dG8gY3JlYXRlIGZsb3cgdGFibGUgQQ0KPiBhbmQgdXNlIHBhdHRlcm4gdGVtcGxhdGUgQScgZm9y IGl0LCB3aGljaCBpcyBhcyBmb2xsb3dzOg0KPiANCj4gYW55X3Zwb3J0cyAvIGV0aCAvIGlwdjQg LyB1ZHANCj4gDQo+IFRoZSBQTUQgY2FuIHNlZSB0aGlzIGl0ZW0gYW5kIHRyZWF0IGl0IGV4YWN0 bHkgdGhlIHNhbWUNCj4gd2F5IGFzIGl0IGNvdWxkIHRyZWF0IHN1Y2ggYXR0cmlidXRlICgid2hl cmUgdG8gYWxsb2NhdGUNCj4gcmVzb3VyY2VzLCBldGMuIikuDQo+IA0KPiBUaGVuIHRoZSB1c2Vy IG1heSB3YW50IHRvIGNyZWF0ZSBmbG93IHRhYmxlIEIgYW5kDQo+IHVzZSBwYXR0ZXJuIHRlbXBs YXRlIEInIGZvciBpdDoNCj4gDQo+IGFueV9waHlfcG9ydHMgLyBldGggLyBpcHY0IC8gdWRwDQo+ IA0KPiBPbmNlIGFnYWluLCB0aGUgUE1EIGNhbiBjbGVhcmx5IHNlZSB0aGUgZGlmZmVyZW5jZSBi ZXR3ZWVuDQo+IHRoZSBBJyBhbmQgQicgdGVtcGxhdGVzIGFuZCwgdGhpcyB0aW1lLCBhbGxvY2F0 ZSByZXNvdXJjZXMNCj4gdGhlIG90aGVyIHdheSAoYXMgcGVyIGVmZmljaWVuY3kgcmVxdWlyZW1l bnRzKS4NCj4gDQoNClllcywgYnV0IGFnYWluIHlvdSBzZWxlY3QgYWxsIHZwb3J0cywgdGhpcyBp cyBub3Qgd2hhdCB0aGUgYXBwbGljYXRpb24gd2FudHMNCnRoZSBhcHBsaWNhdGlvbiB3YW50cyB0 byBpbnNlcnQgdGhlIGZvbGxvd2luZyBydWxlczoNCkFzc3VtaW5nIHBvcnQgMCBpcyB3aXJlIGFu ZCBEUERLIHBvcnRzIDEsMiwzLDQsNSBhcmUgdnBvcnRzLg0KUmVwcmVzZW50ZWRfcG9ydChpZD0y KSAvIGV0aCAvIGlwdjQvIHVkcA0KUmVwcmVzZW50ZWRfcG9ydChpZD01KSAvIGV0aCAvIGlwdjQv IHVkcA0KDQpBcyB5b3UgY2FuIHNlZSB0aGUgYXBwbGljYXRpb24gZG9lc27igJl0IHdhbnQgYWxs IHBvcnRzIGp1c3Qgc29tZSB2cG9ydHMgYnV0IGZvciBzdXJlIG5vdCB0aGUNCndpcmUgcG9ydC4N Cg0KSSBhZ3JlZSB0aGF0IHdlIGNhbiBnbyB3aXRoIHlvdXIgYXBwcm9hY2gsIGJ1dCBpdCBpc24n dCBjb3JyZWN0IHNpbmNlIHdoeSBhcHBsaWNhdGlvbiBzaG91bGQNCmluc2VydDoNCmFueV9waHlf cG9ydHMgLyBSZXByZXNlbnRlZF9wb3J0KGlkPTIpIC8gZXRoIC8gaXB2NC8gdWRwDQphbnlfcGh5 X3BvcnRzIC8gUmVwcmVzZW50ZWRfcG9ydChpZD0yKSAvIGV0aCAvIGlwdjQvIHVkcA0KDQo+IEJ5 IHNheWluZyAiY2FuIGJlIHVzZWQgb24gbnVtYmVyIG9mIGRpZmZlcmVudCB0YWJsZXMiLCBkbyB5 b3UgbWVhbg0KPiB0aGF0IGl0IGlzIGltcG9ydGFudCB0byBtYWtlIHRoZSAqbmV0d29yayogcGFy dCBvZiB0aGUgcGF0dGVybg0KPiBzaGFyZWFibGUgYmV0d2VlbiBmbG93IHRhYmxlcz8gSS5lLiBh cmUgeW91IHNheWluZyB0aGF0DQo+IHRlbXBsYXRlcyBBJyBhbmQgQicgY2F1c2UgcmVzb3VyY2Ug ZHVwbGljYXRpb24ganVzdA0KPiBiZWNhdXNlIG9mIHRoZSBzYW1lICpuZXR3b3JrKiBwYXJ0IGlu IHlvdXIgY2FzZT8NCj4gDQoNCkknbSBzYXlpbmcgdGhhdCBhZGRpbmcgd2lsbCBtZWFuIHRoYXQg dGhlIGFwcGxpY2F0aW9uIGNhbid0IHJldXNlIHRoZSBwYXR0ZXJuIHRlbXBsYXRlIGl0IGNyZWF0 ZWQuDQppZiB0aGUgYXBwbGljYXRpb24gY3JlYXRlZCA1IHR1cGxlIHRlbXBsYXRlLg0KSXQgY2Fu IHJldXNlIGl0IGluIGluZ3Jlc3MgdGFibGVzLCBlZ3Jlc3MgdGFibGVzLCBGREIgdGFibGVzIHRo ZXJlIGlzIG5vIG5lZWQgdG8gY3JlYXRlDQpleHRyYSBwYXR0ZXJuIHRlbXBsYXRlcy4NCg0KPiA+ IEkgdGhpbmsgdGhhdCB0aGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gdXMgaXMgdGhhdCBmcm9t IG15IHBvaW50IG9mIHZpZXcNCj4gdGhpcyB2YWx1ZSBpcyBqdXN0DQo+ID4gd2hlcmUgdG8gYWxs b2NhdGUgcmVzb3VyY2VzIC8gaG93IHRvIGJldHRlciBpbnNlcnQgdGhlIHJ1bGUuIEl0IGlzIG5v dCByZWxhdGVkDQo+IHRvIG1hdGNoaW5nLg0KPiANCj4gVG8gbWUsIGl0ICppcyogdGhlIG1hdGNo IGNyaXRlcmlvbiB3aGljaCwgYXQgdGhlIHNhbWUgdGltZSwgc2VydmVzDQo+IGFzIGEgdmFsdWUg aW5kaWNhdGluZyB0aGUgd2F5IGhvdyByZXNvdXJjZXMgc2hvdWxkIGJlIGFsbG9jYXRlZC4NCj4g QnV0IGJlZm9yZSBhbGwsIGl0IGlzIGEgbWF0Y2ggY3JpdGVyaW9uLg0KPiANCg0KRGVwZW5kcyBv biBob3cgeW91IGRlZmluZSBtYXRjaGluZywgYnV0IGp1c3QgbGlrZSBpbmdyZXNzIC8gZWdyZXNz IGlzIG5vdCBtYXRjaGluZyANCnRoZSBzYW1lIGdvZXMgaGVyZS4NCg0KPiBJZiBpdCByZWZlcnMg dG8gYSBncm91cCBvZiBwb3J0cyA9IGluIG9yZGVyIHRvIGRpdGNoICJ0aGUgb3RoZXIgaGFsZiIN Cj4gb2YgdHJhZmZpYyBmcm9tIGNvbnNpZGVyYXRpb24gKGxpa2UgUm9uZ3dlaSBleHBsYWluZWQp LCB0aGVuIGl0DQo+IGxvb2tzIGxpa2UgYSBtYXRjaCBjcml0ZXJpb24uDQo+IA0KDQpTZWUgYWJv dmUgY29tbWVudCwgYWxzbyB0aGlzIGNhc2UgaXQgcmVsYXRlcyB0byBhbGxvY2F0aW9uIGFuZCBp bnNlcnRpb24sDQp0aGUgbWF0Y2hpbmcgaXMgc2lkZSBwcm9kdWN0Lg0KDQo+ID4gRnJvbSBOdmlk aWEgdmlld3BvaW50IHdlIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiBzbyB3ZSBjYW4gYWxsb2NhdGUg dGhlDQo+IHJlc291cmNlIGF0IHRoZSBjb3JyZWN0DQo+ID4gcGxhY2UgYW5kIGF2b2lkIGluc2Vy dGluZyBkdXBsaWNhdGlvbiBvZiBydWxlcy4NCj4gDQo+IEkgc2VlLg0KPiANCj4gPiBJIGFncmVl IHRoYXQgYnkgdXNpbmcgdGhlIGl0ZW0gd2UgY2FuIGdldCB0aGUgc2FtZSByZXN1bHRzLCBidXQg aXQgaXMgaW5jb3JyZWN0DQo+IHNpbmNlIHdlIGFyZSBub3QgbWF0Y2hpbmcgb24gaXQuDQo+IA0K PiBJZiBvbmUgcHJvdmlkZXMgaXRlbSBVRFAgaW4gdGhlIHBhdHRlcm4gYW5kIGRvZXMgbm90IG1h dGNoIG9uIGFueSBVRFANCj4gZmllbGRzLCBkb2luZyBzbyBuZXZlcnRoZWxlc3MgKmlzKiBtYXRj aGluZyBvbiBwYXJ0aWN1bGFyIHBhY2tldCB0eXBlLg0KPiANClllcyBpdCBtYXRjaGVzIGFsbCBV RFAgd2lsbCBhZ2FpbiBpbiB0aGlzIGNhc2UgdGhlIGlkZWEgaXMgbm90IHRvIG1hdGNoIGFsbCB2 cG9ydHMNCmJ1dCBqdXN0IHRvIHRlbGwgdGhlIFBNRCB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSB2 cG9ydHMgYXJyaXZpbmcgdG8gdGhpcyB0YWJsZS4gDQoNCj4gVGhlIHNhbWUgc2VlbWluZ2x5IGdv ZXMgZm9yIHRoZSBuZXcgYXR0cmlidXRlIC8gaXRlbS4gSWYgaXQgaXMNCj4gcHJvdmlkZWQsIHRo ZW4gdGhlIHVzZXIgZG9lc24ndCB3YW50IHRoZSBydWxlIHRvIGFmZmVjdA0KPiBwYWNrZXRzIGNv bWluZyBmcm9tIGNlcnRhaW4gcG9ydHMgKGkuZS4gZnJvbSB3aXJlKS4NCj4gDQo+IFNvIHN0aWxs IHNvdW5kcyBsaWtlIG1hdGNoaW5nLg0KPiANCj4gPiBQYXJ0IG9mIHRoZSBpZGVhIG9mIHRlbXBs YXRlIEFQSSBpcyB0byBnaXZlIGFzIG1hbnkgaGludHMgYXMgcG9zc2libGUgdG8gdGhlDQo+IFBN RCBzbyB0aGUgaW5zZXJ0aW9uIHdpbGwgYmUgb3B0aW1pemVkLg0KPiANCj4gSSBzZWUuDQo+IA0K PiA+DQo+ID4NCj4gPj4gQXMgZm9yICJpbmdyZXNzIiBpdGVtLCAtIG5vLCBvbmUgc2hvdWxkIG5v dCBhZGQgc3VjaC4gV2UgaGF2ZSBoYWQNCj4gPj4gbWFueSBkaXNjdXNzaW9ucyBjb25jZXJuaW5n IHRoaXMgYml0IGluIHRoZSBwYXN0LiBJbmdyZXNzL2VncmVzcw0KPiA+PiBhcmUgbm9uLXRyYW5z ZmVyIHRlcm1zLiBUaGV5IGJlbG9uZyBpbiB0aGUgc2NvcGUgb2Ygdk5JQyAvIGV0aGRldg0KPiA+ PiBmaWx0ZXJpbmcsIG5vdCB0byBlbWJlZGRlZCBzd2l0Y2ggcnVsZXMuDQo+ID4+DQo+ID4+IElu IG15IG9waW5pb24sIGluIHRoZSBlbWJlZGRlZCBzd2l0Y2gsIG9uZSBzaG91bGQgZWl0aGVyIHBv aW50IHRvDQo+ID4+IHNvbWUgcHJlY2lzZSBzd2l0Y2ggcG9ydHMgKHVzaW5nIFJFUFJFU0VOVE9S IC8gUkVQUkVTRU5URUQgaXRlbXMpDQo+ID4+IG9yIHVzZSBhbm90aGVyIGtpbmQgb2YgaXRlbSB0 byByZWZlciB0byBhICJzdXBlciBzZXQiIG9mIHBvcnRzDQo+ID4+IHdoaWNoIGhhdmUgc29tZXRo aW5nIGluIGNvbW1vbiAoImFsbCB3aXJlIHBvcnRzIiwgImFsbCBOT04td2lyZSBwb3J0cyIpLg0K PiA+Pg0KPiA+DQo+ID4gQnV0IHRoaXMgaXMgbXkgcG9pbnQgd2UgZG9uJ3Qgd2FudCBhbGwgd2ly ZSBwb3J0cyBvciBhbGwgTk9OLXdpcmUgcG9ydHMsIHdlDQo+IGp1c3Qga25vdyB0aGF0IGluIHRo aXMgdGFibGUNCj4gPiB3ZSB3aWxsIGhhdmUgb25seSBub24td2lyZSAvIHdpcmUgcG9ydHMuDQo+ IA0KPiBCdXQgaG93IGRvIHRoZXNlIHR3byB2aWV3cG9pbnRzIGNvbnRyYWRpY3QgZWFjaCBvdGhl cj8NCj4gDQoNCldoaWNoIHZpZXdwb2ludHM/DQoNCj4gPg0KPiA+Pj4NCj4gPj4+IEl2YW4gd2Ug aGF2ZSB0aGUgaXRlbSBSVEVfRkxPV19JVEVNX1RZUEVfUEYgYW5kDQo+ID4+IFJURV9GTE9XX0lU RU1fVFlQRV9WRiB3aGljaCBhcmUgZGVwcmVjYXRlZCwNCj4gPj4+IFNvIGRvIHlvdSB3YW50IHRv IHVuLWRlcHJlY2F0ZSB0aGVtPw0KPiA+Pg0KPiA+PiBOby4gVGhlc2UgaXRlbXMgYXJlIGRlcHJl Y2F0ZWQgYmVjYXVzZToNCj4gPj4NCj4gPj4gYSkgdGhlaXIgbmFtZXMgc3VnZ2VzdCB0aGF0IGFw cGxpY2F0aW9uIGtub3dzIHdoZXRoZXIgYW4gZXRoZGV2DQo+ID4+ICAgICBzaXRzIG9uIHRvcCBv ZiBhIFBGIG9yIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGhhcyBzb21lDQo+ID4+ICAgICBrbm93bGVk Z2Ugb2YgZXhpc3RlbmNlIG9mIHBhcnRpY3VsYXIgVkZzLCBidXQgaW4NCj4gPj4gICAgIHJlYWxp dHkgYXBwbGljYXRpb25zIHNob3VsZCBub3QgYmUgd29ycmllZCBvZg0KPiA+PiAgICAgdGhlIHVu ZGVybHlpbmcgZnVuY3Rpb24gdHlwZSA9IHRvIHRoZW0sIGFsbA0KPiA+PiAgICAgZXRoZGV2cyBh cmUganVzdCByZXByZXNlbnRvcnMgb2Ygc29tZXRoaW5nLA0KPiA+PiAgICAgYW5kIGlmIHRoZSBh cHBsaWNhdGlvbiBuZWVkcyB0byByZWZlciB0bw0KPiA+PiAgICAgVkZzIChvciBvdGhlciBQRnMs IC0gZG9lc24ndCBtYXR0ZXIpLCBpdA0KPiA+PiAgICAgc2hvdWxkIGRvIHRoYXQgdmlhIFJFUFJF U0VOVE9SIGl0ZW1zOw0KPiA+Pg0KPiA+PiBiKSBzdWNoIGl0ZW1zIHdvdWxkIGR1cGxpY2F0ZSBS RVBSRVNFTlRPUiAvIFJFUFJFU0VOVEVELg0KPiA+Pg0KPiA+IEFncmVlIHdpdGggZXZlcnl0aGlu ZyB5b3Ugc2F5Lg0KPiANCj4gR3JlYXQgd2UncmUgb24gdGhlIHNhbWUgcGFnZSByZWdhcmRpbmcg dGhpcyBiaXQuDQo+IA0KPiA+DQo+ID4+Pg0KPiA+Pj4gVG8gc3VtbWFyaXplLCBpZiBQTUQgY2Fu IHVzZSBzdWNoIGFuIGhpbnQgZHVyaW5nIHJ1bGUgY3JlYXRpb24gYW5kIHNhdmUNCj4gPj4gbWVt b3J5LCBJIHZvdGUNCj4gPj4+IHRvIGFsbG93IGl0Lg0KPiA+Pj4gaWYgdGhlIGlkZWEgaXMgdG8g bWF0Y2ggb24gYWxsIHZwb3J0cyB0aGVuIGl0IHNob3VsZCBiZSBhbiBpdGVtLg0KPiA+Pg0KPiA+ PiBCdXQgc3VjaCBhIGhpbnQgd291bGQgZWZmZWN0aXZlbHkgYmUgYSBtYXRjaCBjcml0ZXJpb24s IHRvbywgcmlnaHQ/DQo+ID4+IFNvLCBpbiBmYWN0IGl0J3MgYSBjb21iaW5lZCB1c2UgY2FzZTog YSBtYXRjaCBjcml0ZXJpb24gd2hpY2ggaXMNCj4gPj4gZmxleGlibGUgZW5vdWdoIHRvIGJlIGEg ImhpbnQiID0gaS5lLiB0aGUgUE1EIGNhbiBzZWUgaXQgd2hlbg0KPiA+PiBwcm9jZXNzaW5nIHRo ZSBwYXR0ZXJuICp0ZW1wbGF0ZSogYW5kIHRyZWF0IGl0IGFzIGEgaGludC4NCj4gPj4NCj4gPg0K PiA+IFllcywgYnV0IGl0IGlzIGFuIGltcGxpY2l0IG1hdGNoLCBqdXN0IGxpa2Ugc2F5aW5nIGlu Z3Jlc3MuIEVncmVzcyBpdCBoYXMgbWVhbmluZw0KPiBhYm92ZSB0aGUNCj4gPiBtYXRjaGluZy4g SW4gYWRkaXRpb24sIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBhZGQgZXh0cmEgaXRlbSBmb3IgZWFj aCBydWxlIHdlDQo+IGNyZWF0ZSwganVzdA0KPiA+IHRvIGVuYWJsZSBzb21ldGhpbmcgdGhhdCBp cyBmaXhlZCBkdXJpbmcgdGhlIHRhYmxlIGNyZWF0aW9uLg0KPiA+IEV4dHJhIGl0ZW0gaW4gcGF0 dGVybiB0ZW1wbGF0ZSBtZWFucyBleHRyYSBpdGVtIGZvciBlYWNoIHJ1bGUuDQo+ID4gSSBrbm93 IHdlIGNhbiBhdm9pZCB0aGlzIGFuZCBvcHRpbWl6ZSB0aGUgY29kZSBidXQgd2h5IGFkZCBzb21l dGhpbmcNCj4gdGhhdCBubyBvbmUgbmVlZHMNCj4gPiBhZnRlciB0YWJsZSBjcmVhdGlvbj8NCj4g DQo+IEdvb2QgcXVlc3Rpb24uIEJ1dCwgaW4gY2FzZSBzb21lIHdheSBleGlzdHMgdG8gbWFrZSBz dWNoIG9wdGltaXNhdGlvbg0KPiBsYWNvbmljIGVub3VnaCB0byBhdm9pZCBjb25mdXNpb24gZXRj LiwgdGhlbiBpdCBzaG91bGQgYmUgbm8gcHJvYmxlbQ0KPiBpbiBwcmVmZXJyaW5nIHRoZSBwYXR0 ZXJuIGFwcHJvYWNoIG92ZXIgYXR0cmlidXRlIGFwcHJvYWNoLg0KPiANCj4gPg0KPiA+DQo+ID4+ Pg0KPiA+Pj4+DQo+ID4+Pj4+IDIpIEZyb20geW91ciB2aWV3cG9pbnQsIHdoeSBpdGVtcyAiQU5Z X1BIWVNfUE9SVFMiIGFuZA0KPiA+Pj4+ICJBTllfVlBPUlRTIg0KPiA+Pj4+PiAgICAgd29uJ3Qg ZG8/IE9yLCB3aGljaCBwcm9ibGVtcyBkbyB5b3UgdGhpbmsgdGhleSBtYXkgaW5mbGljdD8NCj4g Pj4+Pj4NCj4gPj4+Pj4gICAgIC4uDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBQcmV2aW91c2x5LCB5 b3UgZXhwbGFpbmVkIHdoeSBSRVBSRVNFTlRFRF9QT1JUIHdvdWxkIG5vdA0KPiA+Pj4+PiAgICAg Zml0IHlvdXIgbmVlZHMuIEFuZCBJIHVuZGVyc3RhbmQgeW91ciBwb2ludDogdG8gYXN5bmMgQVBJ LA0KPiA+Pj4+PiAgICAgdHdvIHBhdHRlcm4gdGVtcGxhdGVzIHdoaWNoIGJvdGggaGF2ZSBpdGVt IFJFUFJFU0VOVEVEX1BPUlQNCj4gPj4+Pj4gICAgIGluIHRoZW0gY2Fubm90IGJlIGNsZWFybHkg ZGlzdGluZ3Vpc2hlZCBhbmQgYXJlIGluIGZhY3QgdGhlDQo+ID4+Pj4+ICAgICBzYW1lIHNldCBv ZiBjcml0ZXJpYSAocHJvdmlkZWQgdGhhdCBhbGwgb3RoZXIgaXRlbXMgYXJlIGFsc28NCj4gPj4+ Pj4gICAgIHRoZSBzYW1lIGFuZCBoYXZlIHRoZSBzYW1lIG1hc2tzKS4gVGVtcGxhdGVzIGFyZSwg d2VsbCwNCj4gPj4+Pj4gICAgIHRlbXBsYXRlcyAob3Igc2hhcGVzKSBvZiB0aGUgcnVsZXMgdG8g Y29tZSBsYXRlciBhbmQNCj4gPj4+Pj4gICAgIGRvIG5vdCBpbmNsdWRlIGV4YWN0ICJzcGVjIiBm b3IgdGhlICJldGhkZXZfaWQiLg0KPiA+Pj4+PiAgICAgR290IGl0Lg0KPiA+Pj4+Pg0KPiA+Pj4+ PiAgICAgQnV0IHRoYXQncyBub3QgZ29pbmcgdG8gYmUgdGhlIGNhc2Ugd2l0aCBpdGVtcyBBTllf UEhZU19QT1JUUw0KPiBhbmQNCj4gPj4+Pj4gICAgIEFOWV9WUE9SVFMsIGlzIGl0PyBJbiBvbmUg YXN5bmMgdGFibGUgdGVtcGxhdGUsIHRoZSB1c2VyIHN1Ym1pdHMNCj4gPj4+Pj4gICAgIGl0ZW0g QU5ZX1BIWVNfUE9SVFMgKGluc3RlYWQgb2YgdGFibGUgYXR0cmlidXRlICJ3aXJlX29yaWciKS4N Cj4gPj4+Pj4gICAgIEluIGFub3RoZXIgdGVtcGxhdGUsIHRoZSB1c2VyIHN1Ym1pdHMgaXRlbSBB TllfVlBPUlRTIHRvDQo+ID4+Pj4+ICAgICBzdGF0ZSB0aGF0IHRoZXkgd2FudCB0byBtYXRjaCBv bmx5IHRyYWZmaWMgdHJhbnNtaXR0ZWQNCj4gPj4+Pj4gICAgIHNvZnR3YXJlIGVuZHBvaW50cyAo RFBESyBldGhkZXZzLCBndWVzdCBWRnMsIGV0Yy4pDQo+ID4+Pj4+ICAgICBjb25uZWN0ZWQgdG8g dGhlIHN3aXRjaC4NCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIFBN RCB3aWxsIGNsZWFybHkgc2VlIHRoYXQgdGhlIHR3byB0ZW1wbGF0ZXMNCj4gPj4+Pj4gICAgIGRp ZmZlci4gU28gaXQgd2lsbCBiZSBhYmxlIHRvIGFsbG9jYXRlIHNlcGFyYXRlIHJlc291cmNlcywg ZWFjaA0KPiA+Pj4+PiAgICAgb25lICJjdXR0aW5nIG9uZSBoYWxmIG9mIHRyYWZmaWMiIChhcyBw ZXIgeW91ciBjb25jZXB0KS4NCj4gPj4+Pj4NCj4gPj4+Pj4gMykgSW4geW91ciBtb3N0IHJlY2Vu dCByZXNwb25zZSwgeW91IHN1Z2dlc3RlZCB0aGF0IG9uZSBtaWdodCBoYXZlDQo+ID4+Pj4+ICAg ICBoYWQgdGhlIGF0dHJpYnV0ZXMgb2NjdXBpZWQgZm9yIHNvbWUgb3RoZXIgcHVycG9zZXMuIFRv IG1lLA0KPiA+Pj4+PiAgICAgdGhleSdyZSBub3QuIE5laXRoZXIgbWUgbm9yIG15IGNsb3Nlc3Qg Y29sbGVhZ3VlcyBoYXZlDQo+ID4+Pj4+ICAgICBhbnkgcGxhbnMgb24gdGhlbS4gV2hlbiBJIGFk dm9jYXRlIHVzaW5nIGl0ZW0gYXBwcm9hY2gNCj4gPj4+Pj4gICAgIG92ZXIgdGhlIGF0dHJpYnV0 ZSBhcHByb2FjaCwgSSBkbyB0aGlzIHRvIGVuc3VyZQ0KPiA+Pj4+PiAgICAgYSkgY2xhcml0eSBv ZiB0aGUgQVBJIGNvbnRyYWN0IGFuZCBiKSByb2J1c3RuZXNzLg0KPiA+Pj4NCj4gPj4+IElmIHNv bWV0aGluZyBpcyBzaGFyZWQgZm9yIGFsbCBydWxlcyBpbiB0aGUgc2FtZSB0YWJsZSwgaXQgc2hv dWxkIGJlIGEgdGFibGUNCj4gPj4+IHByb3BlcnR5Lg0KPiA+Pg0KPiA+PiBCdXQgdGhlIHdob2xl IHBhdHRlcm4gKnRlbXBsYXRlKiBpcyBhbHNvIGEgdGFibGUgcHJvcGVydHksIGlzbid0IGl0Pw0K PiA+Pg0KPiA+DQo+ID4gTGlrZSBJIHNhaWQgYWJvdmUgdGhlIHBhdHRlcm4gdGVtcGxhdGUgY2Fu IGJlIHVzZWQgaW4gYWxsIGRvbWFpbnMgdGhhdCBpcw0KPiB3aHkNCj4gPiB0aGVyZSBpcyBhIHNw bGl0IGJldHdlZW4gdGFibGUgYW5kIHBhdHRlciwgaW4gYWRkaXRpb24gdG8gdGhhdCBlYWNoIHRh YmxlIG1heQ0KPiBoYXZlDQo+ID4gbnVtYmVyIG9mIHBhdHRlcm4gdGVtcGxhdGVzLg0KPiANCj4g VGhpcyBpcyBhIHZhbHVhYmxlIGNsYXJpZmljYXRpb24uIEhvd2V2ZXIsIGV2ZW4gaWYgdGhlIGF0 dHJpYnV0ZSB3YXkNCj4gbWF5IHNlZW0gT0sgYWZ0ZXIgdGhpcyBleHBsYW5hdGlvbiwgdGhlbiBJ IHN0aWxsIGRvbid0IHVuZGVyc3RhbmQNCj4gd2h5IGl0IGlzIHJlcXVpcmVkIHRvIGFkZCB0aGlz IGF0dHJpYnV0ZSB0byB0aGUgZ2VuZXJpYyAic3RydWN0DQo+IHJ0ZV9mbG93X2F0dHIiIGFuZCBu b3QganVzdCB0byB0aGUgKnRhYmxlKiBhdHRyLg0KPiANCj4gR2VuZXJpYyAic3RydWN0IHJ0ZV9m bG93X2F0dHIiIGlzIHVzZWQgYm90aCBmb3IgYXN5bmMgYW5kDQo+IHN5bmMgKHJlZ3VsYXIpIGFw cHJvYWNoLiBTbyB3aHkgYWRkIHNvbWV0aGluZyB0byBnZW5lcmljDQo+IHN0cnVjdCB3aGljaCBp cyBuZXZlciBnb2luZyB0byBtYWtlIHNlbnNlIHRvIHN5bmMgZmxvd3M/DQo+IA0KDQpJIGd1ZXNz IHdlIGNhbiBtb3ZlIGl0IHRvIHRoZSB0YWJsZSBhdHRyaWJ1dGUsIGJ1dCBJIHRoaW5rIHRoYXQg ZXZlbiANCmluIHN0YW5kYXJkIHJ0ZV9mbG93IEFQSSB0aGlzIGNhbiBzYXZlIGR1cGxpY2F0ZSBp bnNlcnRpb24uDQoNCj4gPg0KPiA+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gNCkgQWxzbywgaW4geW91 ciByZXNwb25zZSwgeW91IHN1Z2dlc3RlZCB0aGF0IEkgbWlnaHQgaGF2ZQ0KPiA+Pj4+PiAgICAg Y29uZnVzZWQgaXRlbSBtYXNrIGFuZCBzcGVjLiBUaGF0IGlzIG5vdCB0aGUgY2FzZS4NCj4gPj4+ Pj4gICAgIElmIHdlIGFncmVlLCB0aGF0IHN3aXRjaCBkb21haW4gSUQgaXMgdW5uZWVkZWQgaW4N Cj4gPj4+Pj4gICAgIHRoZSBuZXcgaXRlbXMsIHRoZW4gdGhlc2UgaXRlbXMgd2lsbCBoYXZlIG5v DQo+ID4+Pj4+ICAgICBmaWVsZHMgaW4gdGhlbSAobGlrZSBpdGVtIFBGIGhhZCBub3QgaGFkIGFu eQ0KPiA+Pj4+PiAgICAgYmVmb3JlIGl0IHdhcyBkZXByZWNhdGVkKS4NCj4gPj4+Pj4NCj4gPj4+ Pj4gICAgIE5vIGZpZWxkcyBpbiBuZXcgaXRlbXMgPT4gbm8gZmllbGQgbWFza3MuDQo+ID4+Pj4+ ICAgICBTbyB3aGF0J3MgdGhlIHByb2JsZW0gdGhlbj8NCj4gPj4+Pj4NCj4gPj4+Pj4gNSkgV2l0 aCByZWdhcmQgdG8gb3VyIHRhbGsgYWJvdXQgaWRlbnRpZnlpbmcgdGhlIHJlbGF0aW9uc2hpcA0K PiA+Pj4+PiAgICAgYmV0d2VlbiBldGhkZXZzIGFuZCBzd2l0Y2ggZG9tYWlucywgeW91IHNhaWQg dGhhdCB0aGUgdXNlcg0KPiA+Pj4+PiAgICAgY291bGQga25vdyB0aGUgZGlmZmVyZW5jZSBmcm9t IHRoZSB2ZXJ5IGJlZ2lubmluZzoNCj4gPj4+Pj4gICAgIC9zeXNmcy8gLi4uLiAvUEZfQkRGL3Ny aW92X251bQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgVGhhdCBpcyB0cnVlIGZvciB0aGUgdXNlciB3 aG8gc3RhcnRzIHRoZSBhcHBsaWNhdGlvbiwgYnV0DQo+ID4+Pj4+ICAgICB0aGlzIGtub3dsZWRn ZSBpcyBoYXJkIHRvIG9idGFpbiBmcm9tIHRoZSBhcHBsaWNhdGlvbg0KPiA+Pj4+PiAgICAgcGVy c3BlY3RpdmUgPSBpdCdzIGhhcmQgdG8gYXV0b21hdGUuDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBU aGlzIGlzIHdoeSBldGhkZXZzIGFyZSBhYmxlIHRvIGFkdmVydGlzZSB0aGVpciBkb21haW4gSURz Lg0KPiA+Pj4+PiAgICAgQW5kLCBhcyBJIGV4cGxhaW5lZCwgbG9va2luZyBhdCBkb21haW4gSUQg dG8gdW5kZXJzdGFuZA0KPiA+Pj4+DQo+ID4+Pj4gbmFtZWx5IHJ0ZV9ldGhfZGV2X2luZm8uc3dp dGNoX2luZm8uZG9tYWluX2lkDQo+ID4+Pj4NCj4gPj4+Pj4gICAgIHBvcnQgcmVsYXRpb25zaGlw IGlzIHZhbGlkLCB3aGlsc3QgbG9va2luZyBhdCBwcm94eSBJRHMNCj4gPj4+Pj4gICAgIHRvIGFj aGlldmUgdGhlIHNhbWUgZ29hbCBpcyBub3QuIFByb3h5IHBvcnQgSURzIG9ubHkNCj4gPj4+Pj4g ICAgIHNlcnZlIHRoZSBwdXJwb3NlIG9mIGZpbmRpbmcgYW4gZW50cnkgcG9pbnQgZm9yDQo+ID4+ Pj4+ICAgICBtYW5hZ2luZyBmbG93cy4gVGhhdCBoYXMgc2xpZ2h0bHkgZGlmZmVyZW50DQo+ID4+ Pj4+ICAgICBtZWFuaW5nLCBidXQgdGhpcyBzdWJ0bGUgZGlmZmVyZW5jZSBpcyBpbXBvcnRhbnQu DQo+ID4+Pj4NCj4gPj4+PiBUaGVyZSBpcyBhbHNvIGEgY29uY2VwdCBvZiBzaWJsaW5nIHBvcnRz DQo+ID4+Pj4gdG8gZ2V0IGFsbCBwb3J0cyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgaGFyZHdhcmUu DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiA2KSBBcyBmb3IgdGhlIGNvbmZ1c2lvbiBvdmVyIHRo ZSBkaWZmZXJlbmNlIGJldHdlZW4gZml4aW5nDQo+ID4+Pj4+ICAgICBidWdzIGFuZCBtYWtpbmcg dGhlIGNvZGUgcm9idXN0IGJ5IGV4dHJhIGNoZWNrczoNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIFll cywgSSBhZ3JlZSB0aGF0IHRoZSBwcm9ncmFtbWVyIHdobyB3cml0ZXMgdGhlDQo+ID4+Pj4+ICAg ICBhcHBsaWNhdGlvbiBtdXN0IGJlIGludGVsbGlnZW50IGVub3VnaCB0byB1c2UNCj4gPj4+Pj4g ICAgIGZsb3cgcHJpbWl0aXZlcyB0aGUgcHJvcGVyIHdheS4gWWVzLCB0aGUgdXNlcg0KPiA+Pj4+ PiAgICAgd2hvIHN0YXJ0cyB0aGUgYXBwbGljYXRpb24gYWxzbyBzaG91bGQgdGhyZWFkDQo+ID4+ Pj4+ICAgICBjYXJlZnVsbHkuIEJ1dCB0aGF0IGRvZXMgbm90IHByZXZlbnQgc29tZQ0KPiA+Pj4+ PiAgICAgbWlzdGFrZXMgaW4gb3RoZXIgcGFydHMgb2YgY29kZSBmcm9tDQo+ID4+Pj4+ICAgICBj b3JydXB0aW5nIHZhcmlvdXMgY2h1bmtzIG9mIG1lbW9yeSwNCj4gPj4+Pj4gICAgIGluY2x1ZGlu ZywgZm9yIGV4YW1wbGUsIGZsb3cgYXR0cnMuDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBZb3Ugc2F5 IHRoYXQgc3VjaCBtaXN0YWtlcyBoYXZlIHRvIGJlICJqdXN0IGZpeGVkIg0KPiA+Pj4+PiAgICAg YXMgYW55IG90aGVyIGJ1Z3MuIFJpZ2h0LiBCdXQgaG93IG11Y2ggdGltZSB3aWxsDQo+ID4+Pj4+ ICAgICB0aGUgcHJvZ3JhbW1lciBzcGVuZCB0byBpZGVudGlmeSB0aGUgYnVncz8NCj4gPj4+Pj4N Cj4gPj4+Pj4gICAgIElmIHRoZSBQTURzIGRvIGFsbCB0aGUgY2hlY2tzIChhcyB3aXRoIGF0dHJp YnV0ZXMpLA0KPiA+Pj4+PiAgICAgdGhlIGh5cG90aGV0aWNhbCBidWcgd2lsbCBtYW5pZmVzdCBp dHNlbGYgbXVjaA0KPiA+Pj4+PiAgICAgZWFybGllci4gVGhhdCB3aWxsIHNpbXBsaWZ5IGRlYnVn Z2luZyBieSBhIGxvdC4uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgU28sIG15IHBvaW50IGlzIHRo YXQgaXQncyBzdGlsbCBiZXR0ZXIgdG8gZW5zdXJlDQo+ID4+Pj4+ICAgICB0aGF0IG5ldyBmbG93 IHByaW1pdGl2ZXMgaGF2ZSBhbGwgbmVjZXNzYXJ5DQo+ID4+Pj4+ICAgICBjaGVja3MgaW4gcGxh Y2UuIEZvciBhdHRyaWJ1dGVzLCBpdCBpcw0KPiA+Pj4+PiAgICAgcmVxdWlyZWQgdG8gYWRkIHRo ZW0gc2VwYXJhdGVseS4NCj4gPj4+Pg0KPiA+Pj4+IElmIGZsb3cgaW5zZXJ0aW9uIGlzIGRvbmUg aW4gYSBmYXN0IHBhdGgsDQo+ID4+Pj4gc3VjaCBjaGVja3MgbWF5IGJlIHNraXBwZWQuDQo+ID4+ Pg0KPiA+Pj4gVGhlIGlkZWEgaXMgdGhhdCBhbGwgcnVsZXMgaW4gdGhpcyB0YWJsZSB3aWxsIHNo YXJlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24sDQo+ID4+PiB0aGVyZSBpcyBubyByZWFzb24gdG8g c2F5IGV2ZXJ5dGhpbmcgYWdhaW4gZm9yIGVhY2ggcnVsZS4gVGhpcyBpcyB3aHkNCj4gPj4+IHRo ZSBydWxlIGF0dHJpYnV0ZXMgd2VyZSBtb3ZlZCB0byB0aGUgdGFibGUgc3RydWN0IGFuZCBub3Qg cGVyIHJ1bGUuDQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4+ICAgICBGb3IgaXRlbXMsIGFzIEkgZXhw bGFpbmVkLCBpdCBtaWdodCBub3QgYmUgbmVjZXNzYXJ5DQo+ID4+Pj4+ICAgICBpbiB0aGUgbWFq b3JpdHkgb2YgY2FzZXMgc2ltcGx5IGJlY2F1c2Ugb2YgdGhlDQo+ID4+Pj4+ICAgICBzd2l0Y2gg KGl0ZW0tPnR5cGUpIHsgY2FzZSB9IHN0cnVjdHVyZS4NCj4gPj4+Pj4NCj4gPj4+Pj4gU28sIHRo ZXNlIGFyZSBzb21lIG9mIG15IHBvaW50cyB0byBleHBsYWluIHdoeSB0aGUNCj4gPj4+Pj4gYXR0 cmlidXRlIGFwcHJvYWNoIGlzIHVudGVuYWJsZS4gVG8gbWUsIGF0dHJpYnV0ZXMNCj4gPj4+Pj4g YXJlIHNvbWV0aGluZyBnbG9iYWwsIHdoaWNoIGRlbWFuZHMgY2hlY2tzIGluIGFsbA0KPiA+Pj4+ PiBmbG93LWNhcGFibGUgUE1Ecy4gSXRlbXMgc2VlbSBiZXR0ZXIgYmVjYXVzZSB0aGV5DQo+ID4+ Pj4+IGFyZSBkb24ndCBjYXJlcyB0byBhbGwgUE1EcyB3aGljaCBhcmUgdW5hd2FyZSBvZg0KPiA+ Pj4+PiB0aGUgYXN5bmMgY29uY2VwdC4gU28sIGV2ZW4gaWYgc29tZW9uZSBkb2VzIG5vdA0KPiA+ Pj4+PiBpbXBsZW1lbnQgdGhlIGFzeW5jIGNvbmNlcHQgb3IgZG9lcyBub3QgbGlrZQ0KPiA+Pj4+ PiB0aGUgbmV3IGl0ZW0gbmFtZXMsIHRoZXkgY2FuIHR1cm4gYSBibGluZA0KPiA+Pj4+PiBleWUg dG8gdGhpcyAtIHdpdGggYXR0cmlidXRlcywgdGhheSBjYW4ndC4NCj4gPj4+Pj4NCj4gPj4+DQo+ ID4+PiBHb29kIHBvaW50LA0KPiA+Pj4gTWF5YmUgd2Ugc2hvdWxkIGFkZCBoaW50cyBpbiB0aGUg YXR0cmlidXRlLA0KPiA+Pj4gZm9yIGV4YW1wbGUsIGhpbnRfb25seV93aXJlIGluIHRoaXMgY2Fz ZSBpdCB3aWxsIGJlIGNsZWFyIHRoYXQNCj4gPj4+IFBNRCBtYXkgaWdub3JlIHRoaXMsIGFuZCBp dCBzaG91bGQgYmUgZnVsbHkgZG9jdW1lbnRlZCB0aGF0IHRoaXMgaXMgbm90IGENCj4gPj4gbWFu ZGF0b3J5IGZpZWxkLg0KPiA+Pj4gV2hhdCBkbyB5b3UgdGhpbms/DQo+ID4+DQo+ID4+IFRoZW9y ZXRpY2FsbHksIG1ha2luZyB0ZXJtaW5vbG9neSBzb2Z0ZXIgKGxpa2Ugd2l0aCB0aGUgd29yZCAi aGludCIpDQo+ID4+IGNvdWxkIG1ha2UgdGhpbmdzIGVhc2llciBmb3IgdmVuZG9ycyB3aG8gbWF5 IGZpbmQgdGhlIG5ldyBmZWF0dXJlDQo+ID4+IGNvbmZ1c2luZyBvciBzb21ldGhpbmcgbGlrZSB0 aGF0LiBCdXQgaWYsIGluIHJlYWxpdHksIHRoaXMgaGludA0KPiA+PiBpcyBpbmRlZWQgYW5vdGhl ciBtYXRjaCBjcml0ZXJpb24gKHNlZSBteSBjb21tZW50cyBhYm92ZSksIHRoZW4NCj4gPj4gaW4g bm8gZXZlbnQgc2hhbGwgdGhlIHByZWZpeCAiaGludCIgYmUgYW4gZXhjdXNlIGZvciB0aGlzDQo+ ID4+IGNyaXRlcmlvbiBub3QgYmVpbmcgZXhwcmVzc2VkIGFzIGEgcGF0dGVybiBpdGVtLg0KPiA+ Pg0KPiA+DQo+ID4gUGxlYXNlIHNlZSBteSByZXNwb25zZSBhYm92ZS4gVGhpcyBpcyB0aGUgcG9p bnQgaXQgaXMgbXVjaCBtb3JlIHRoYW4NCj4gbWF0Y2hpbmcuDQo+ID4NCj4gPj4gUGxlYXNlIGhl YXIgbWUgb3V0OiBJIGRvbid0IG1lYW4gdG8gc291bmQgYXJyb2dhbnQsIC0ganVzdCB0cnlpbmcN Cj4gPj4gdG8gdW5kZXJzdGFuZCB3aHkgZXhwcmVzc2luZyB0aGUgbmV3IGJpdCBhcyBhbiBpdGVt IGNhbid0IGJlDQo+ID4+IGVmZmljaWVudCBlbm91Z2ggZm9yIHRoZSBhc3luYyBmbG93IGFwcHJv YWNoLg0KPiA+Pg0KPiA+DQo+ID4gSSBkb24ndCB0aGluayB5b3UgYXJlIGFycm9nYW50LCBhbmQg SSBob3BlIHRoYXQgeW91IHNlZSB0aGF0IEkgZG8gdW5kZXJzdGFuZA0KPiB5b3VyIGNvbW1lbnRz Lg0KPiA+IHNheWluZyB0aGF0IEkgaG9wZSBJIGV4cGxhaW5lZCB3aHkgSSB0aGluayBpdCBpcyBi ZXR0ZXIgdG8gaGF2ZSBpdCBhcyBhIHRhYmxlDQo+IGF0dHJpYnV0ZSBhbmQgbm90IGFzIGFuDQo+ ID4gaXRlbS4gKFdlIGFyZSBub3QgbWF0Y2hpbmcgb24gaXQsIHRoaXMgaGVscHMgdGhlIFBNRCBh bGxvY2F0ZSB0aGUgdGFibGUgYXQNCj4gdGhlIGJlc3QgbG9jYXRpb24gYW5kIGF2b2lkDQo+ID4g ZHVwbGljYXRpb24gb2YgcnVsZXMpDQo+ID4NCj4gPiBJZiB5b3Ugd2lzaCwgd2UgY2FuIGhhdmUg YSBzaG9ydCBwaG9uZSBjYWxsIGFuZCBkaXNjdXNzIHRoaXMuDQo+ID4NCj4gPiBCZXN0LA0KPiA+ IE9yaQ0KPiA+DQo+ID4NCj4gPj4+DQo+ID4+Pj4+IFRoYW5rIHlvdS4NCj4gPj4+Pg0KPiA+Pj4+ DQo+ID4+Pg0KPiA+Pj4NCj4gPj4NCj4gPj4gSXZhbg0KPiA+DQo+IA0KPiBUaGFua3MsDQo+IEl2 YW4NCg==