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 2B419A00BE; Tue, 3 May 2022 21:38:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BE03A40C35; Tue, 3 May 2022 21:38:11 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id C26B840691 for ; Tue, 3 May 2022 21:38:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651606689; x=1683142689; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=oh92BpxWZDOdNe5Bzr1Rvyl7bz2rHBq0V3C8RjPGllE=; b=g3ozT9pXWCul2d/+TsAbfBMoAVmzVQlffdkZFelOIi05RknHI6vUPvoB 6lkha2vIOi0i4q1JGP5igj8IIlRzPGb0Uip5B4Zt2tGSu2PWvxrCrKdgJ miCIudf6yHHamtIAFATQzo2ujtBr2aBdeWx5DJQ9mQXwBbM0whHE0lB9m pFSqbBtfyXKfLYTscpHxg4edBypeonkWV7da17vsd/cABhvvYp8J31M78 /UVI+odo3I5Sdu7ngx49JuniGoRsz1P+AL+9ZsAUIdlc8e3u+zOHT/naC vGxtZgv96WzbaT+57PHc2s86o369sHkWosrRRV37/Cq9e6ur34Td1ZQP+ A==; X-IronPort-AV: E=McAfee;i="6400,9594,10336"; a="255033539" X-IronPort-AV: E=Sophos;i="5.91,196,1647327600"; d="scan'208";a="255033539" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2022 12:38:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,196,1647327600"; d="scan'208";a="620477235" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga008.fm.intel.com with ESMTP; 03 May 2022 12:38:08 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 3 May 2022 12:38:07 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 3 May 2022 12:38:07 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.170) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Tue, 3 May 2022 12:38:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kVl0+EPVtj70HwsnNf/T5s9ecqgfy3iXCL7lY8NlKO5fTlSnv5fnX77hmUowpBPOS3+1Ze6guqQKb+bDuuQTVYHxWjehIqW5ghnrH/LuPgB51EyZKY8C2hI/3rxTMffu98wmmzlEkuI29N+CckQXuUbPfC2HBZNDp9R4cW9PwN7HeGOW/Gof3j3up89DJBg3V7GekRnwaw+fDbRvCFg0APxS6owFRYZc2/awokNPuXFzjtBC8tLzl812jCsHZWWgSJBDT8YHCbelLXaVuHMQD85FoaWk22Eir5AfZjC9fjqSaK/wP/SGwZG9IdF4KqBSefZuEU2DLVjyY7Ja09wdZQ== 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=oh92BpxWZDOdNe5Bzr1Rvyl7bz2rHBq0V3C8RjPGllE=; b=Lp+4M5GugnE5yKauLjSJc4Cint8k4TJ8skMqSai7QHvHXnX0+48d9ynv3aswnAuiOt6bST+Z6cuv7xc60wkOD6sJEAh+Htg3YCDtOJgNJjzENBDMlv64lloaB5S5euN7eolPsfxM0ItOeZHyS3x7zHjaUDK8vNHcolvwfFzBVAEj+M2REnq5d9JycLYOMy5nWenYYWQkby6qr7pTHyAWgn4K67hcULO1cl88X6oaG3m20skV73+WX8cJjIfvrsysoWRDj/ea5U2skGphq4gFBAqsW+cQJ5c4aklbt5JfAdBSNfOtgqt/I3duhSUlxYdMF/BpMEnIkzZJhXeFfT+qww== 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 BN0PR11MB5712.namprd11.prod.outlook.com (2603:10b6:408:160::17) by BYAPR11MB3797.namprd11.prod.outlook.com (2603:10b6:a03:fe::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24; Tue, 3 May 2022 19:38:04 +0000 Received: from BN0PR11MB5712.namprd11.prod.outlook.com ([fe80::3091:5a2:a42d:effe]) by BN0PR11MB5712.namprd11.prod.outlook.com ([fe80::3091:5a2:a42d:effe%5]) with mapi id 15.20.5206.024; Tue, 3 May 2022 19:38:04 +0000 From: "Van Haaren, Harry" To: Ilya Maximets , "Richardson, Bruce" CC: "Mcnamara, John" , "Hu, Jiayu" , Maxime Coquelin , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Pai G, Sunil" , "Stokes, Ian" , "Ferriter, Cian" , "ovs-dev@openvswitch.org" , "dev@dpdk.org" , "O'Driscoll, Tim" , "Finn, Emma" Subject: RE: OVS DPDK DMA-Dev library/Design Discussion Thread-Topic: OVS DPDK DMA-Dev library/Design Discussion Thread-Index: Adg/jDNGcC8G4wWtSxeVfUOuAS3Y6wACLuFQAM6falAAJoZBIAAA0srQAAK2F/AABHBTAAAAvWSAAACgo4AAAF2UgAAAVPwgAAOflKAAGxPQIAGemZWwAAEf4gAAAH3EAAAitdwAAAW7UoACaY7F0AEGIP2AAGIVDYAAImhggAEJM86Q Date: Tue, 3 May 2022 19:38:04 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D86F82@smartserver.smartshare.dk> <94d817cb-8151-6644-c577-ed8b42d24337@redhat.com> <55c5a37f-3ee8-394b-8cff-e7daecb59f73@ovn.org> <0a414313f07d4781b9bdd8523c2e06f5@intel.com> <5ba635f6-0e7f-a558-b599-674e272cfd1e@ovn.org> In-Reply-To: Accept-Language: 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.401.20 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: 8acebe3e-45ec-4d63-8d27-08da2d3c7110 x-ms-traffictypediagnostic: BYAPR11MB3797:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr 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: YkaQRrjJnbeLXG5h50p9JnblBYZkr+Y2R1kNq4PfK1N8EBhNiV2lf53yFtkFBQ+K1Dz5jI3zC9O/g3TFXRd2nWxeo2ZUwIQ4flvADiJNoMz/oHeJ9ACNPeoRBgrubbOXz7xnoOZyafzHzyhYi3lVNb2NikP+yAwnRr5F0TqoQOHs4oFCu1pDsUVbbxvZUFHBO250wYEz+xicPSXVtNJYZ/s+Uf9VgFAzVLlbIaFqYWe3Giq33upkUmEgjJalCeLun3ovM7wPY4SL0mGHZAbdJ1vNhbKUX3MWc3mbK0wEcfPA/I2wzfKbmE6UJ96bV2N5wannCumRGLbW97PZf3RhzspPtvw79W+at8I4zEQGbWPrTTNYmiC5TNtz5dMkoZSYuXooIFg60MRZLDhnaM5rJvnvOwsFC5Xz8D7+4IlTR69hhLgRkcbN0TpDp2QaaHN5TSX0Hepj80D9rNuDTO9FdgfOECCwIgbwmIKITceCdWMpry+/oqd3U9w9k1uERyAgCP94OSuxHm1eOwgtYNyaCVThu2OM4CvHBfTDCNioBpqyHYug8rQ1cG5jeJ6CRDTLcAowl9dSCoSqo/UMc2yZVVVzgWgpY55Qi0ijpzUO2i6zC5lE/oLI/PkKh7IobxfN+nQkTTUHrRrqXEOaOr96KOpAeEUMWjwVQhpnnqey8yADrMMQev04yjxwT+6uaAiQI4isHYCwgJL1M120fZWEY53nekI+eigE+KOdLihJLfje3/Vw39o+Me3nJBrCIqf7LNcTCMFjgFBOsJ3pgsPBT8HGjN2JdmfcyrPiDpA1C0c7/+5PenyoQAY+lNJqfGIqkCQynC8d+HTnMIatGEFAiA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN0PR11MB5712.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(186003)(71200400001)(83380400001)(107886003)(86362001)(38070700005)(508600001)(38100700002)(966005)(9686003)(26005)(122000001)(4326008)(76116006)(66476007)(66446008)(64756008)(66556008)(82960400001)(8676002)(66946007)(6506007)(66574015)(30864003)(33656002)(7696005)(55016003)(8936002)(316002)(6636002)(52536014)(5660300002)(110136005)(53546011)(54906003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bFh0Y25OT3p3NmpzSFY1Tkh6TnYvM2UrYWJ5VlpuZTdQNi9YMHI4SG9yMTlV?= =?utf-8?B?K1AxWGxBQ0JLelFQQW1mQmRaNjZHTGpkSjhTYkkxQjllVnYvUnFRQ3hvb2I2?= =?utf-8?B?S2RnWDZMRVBFQWU2Unkya2JMbFM4UDFUWHBLcjNQRnVFM1E2TzBQWWJZclMw?= =?utf-8?B?STF4ZmRQRFZqczVlRjlDM3FsRDFrMFBFQVl6b2ZUYTFseWNuOGlRdDBzZk5T?= =?utf-8?B?aU4xWjRsUDBPRG9HVEJqUnFRRjA5b2NNWkd3czBDNld4azFiMFpleisxUHJX?= =?utf-8?B?RHV1MFVOdkhXSmJ3dWZ1TkExUFBCbmxMNkdrTS9sT1p6WGFpMDJUZU4vZEFW?= =?utf-8?B?TWNMRkdaY0FQZEx4Tmx2TERlYlQyMHZ5Y2lUaXRXeFVMTzB3aGRoOElzTStk?= =?utf-8?B?K24wcWpqOUlpeStJZUE5akttSVhFeWoyZk1SanE0b1Q0RVVFaVZmeTJaNzlE?= =?utf-8?B?L0RreFpyekppZE03eC82VWhEOStwMnlLZEVEWWQrNXpQUHFzSHRUZFZYenpq?= =?utf-8?B?bysxQ2dvNnFodlNSU0pqdmdVQWo2NWV3V2crVkdZQ3NpY04vcHBHc0pQa2Er?= =?utf-8?B?N2Q2U2puNis2Qk5LbUlEd01EdTQ0VThrWFNQOXo4T2pnRktscWF6a0NWejJy?= =?utf-8?B?Z25sOUZ3NFlVZE1lS2dWUlBNRUhZU3BINitxSXY3dk5TdUw0eHBxaDI2Yldj?= =?utf-8?B?OVN4TkwzQWJFd1FkdW9TYkN0dDFRbGlCekZKT0czMnY3THgxWXpoMlpMYWFG?= =?utf-8?B?emRlejNIYUcxZXlQTkxzTzJVUHVvck9sOVNoLzB3RThHZkVKUjBIUHp6TGMx?= =?utf-8?B?L01FbVpGWmU4TDgyNUtTaUdBN09DS1MvaGNBWkN3SGprTVlDWkxmb2pUZHFi?= =?utf-8?B?N2RyU3hJc01jUXo4MTBHNHZFOW5MY2hvbjY5bW5sUFlGVlBQVWlMZ0h5cFFW?= =?utf-8?B?YUVNSlAxcHo5cVNYSG5MMFVva01sRzZWNEp2OHFYa0l5aHNlcDVwZXVRYnJI?= =?utf-8?B?RFltczA5bnUvc1ZhZ2JZUHcvUGhxK2NNdHh5WTFTUVVKYnVvNWtKKyt0ZGps?= =?utf-8?B?UTE1cW9ua0U2dlJRRnViYk1Ib3U3SGVWODVlSzFqNjkrcHl2K0JTWkd0ckJE?= =?utf-8?B?cnZ3UXovLyt3SzMyc0twYnJreVdHK0R0cG9CNVBvbHJzdmluM1krcXhYRkQy?= =?utf-8?B?L0ZMM3R5OWpaVkFMOE9kRU0yNDgvZi9KcjZhd2FETkVDVXp3RWVITnpPM2pr?= =?utf-8?B?RXRvVlB3YmtNVDhidjYyYk5JaW5YeWplbWRONzVQN25JYTZtdTRhWTlMKzRD?= =?utf-8?B?MytaWWxwZHZTdHJZOGYrOHhKM3BXTm03c2ROdkdTS25SUmtyQmNYSEdyWnJa?= =?utf-8?B?eXY0bGNJLzJvSVhSaUszOVZjb1JkQTlEWGFOMmpKcHVCb1cySEhVSjlqTlls?= =?utf-8?B?UCtQTW0zS0VmaldubTlNRTkvUE1ubUlDRWFPd0ZMZldIaXQvSmVZZVpPQkdE?= =?utf-8?B?bVErTksyWmUyU1lRT0cyYkI3RVRhbW9aRjliR25HQWs2WXk4UWR6dm0yeXR6?= =?utf-8?B?TjBlZHcwbjcya1NWcE1HTUNpdE1idVhWWDFBZGNITkV4TERCandEZEpqNHhW?= =?utf-8?B?OGNKQnI4WEtBVjAySXVSL2dORUFhZTc0OUg5N2U5eUxnNTVhNUIzeEozZ2sx?= =?utf-8?B?ZUVNQkNSUkM5L3FVRDJlUE9VWVErUUp3L2cxblg1OFVRY0k4cnNKcXlFbHc3?= =?utf-8?B?RjlxbFBWT1VXUGlWQlpLaG40OU4xZldBRnF5a3FhOGx6UVltSWc5WTl0MVBX?= =?utf-8?B?YjVTYlMzSE1MUHlRZEVRYjlTdmQyMThaNkpHY2hNbHA5anFLVWIzbUx0Z3Ru?= =?utf-8?B?M2ZCVFNiOXVCUUppYlR3blNoclZkL3JkUi93TXUrTEhUbWNycCtpalp2T2Mr?= =?utf-8?B?T3VPajFCQ3dsWjZqSkZoQ05yT2R4MFlIN2tOdUV2d1VZVlQ4NVZkR2s3OFR6?= =?utf-8?B?V1RlVnlORWFHd1N2dTRqWjcram1VREdqUS9kaDJ1cDdjeTFaSG9NeEJhSC9E?= =?utf-8?B?ZUhoRk5EcmZ0WWdyN3J2YWRVSVFNRCtQVFNZM1RONDIyMXo5NWRWSEZBTUFL?= =?utf-8?B?Z1Eyc0R6UGFMdHlEVU5XUXhibklqRFdMeU5keEltbWF3aTlUU291b0FVc3NB?= =?utf-8?B?RUZtbFJxdEcyRWZOLzJVWW1tSWNIZEo4dE8rYXVMRUtwcHoyWWdLeFlQRisv?= =?utf-8?B?b2tERDlYL2RLUkluOXhpUWFsTXpqRWN3YjJPb1M5R3dXK1hidFlVWjhYSXV1?= =?utf-8?B?a1hJQ0F3Z3NUbzlsUDhXczlxN3JvTGtkWXhoVWFLb1k0MEFyZk1tUy92TFBY?= =?utf-8?Q?B2/57owUu4veZ0AU=3D?= 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: BN0PR11MB5712.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8acebe3e-45ec-4d63-8d27-08da2d3c7110 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 May 2022 19:38:04.4231 (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: f8v4yl+XV92hy6i2mbPSgddbobvVzZeSrYSIsvtezWo65S9GPL13toIQ0nK5LYfURdJHw3tuq+ySRL4sFyonc3JpfacByL/alSawBhWg7tY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3797 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 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJbHlhIE1heGltZXRzIDxpLm1h eGltZXRzQG92bi5vcmc+DQo+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCAyOCwgMjAyMiAyOjAwIFBN DQo+IFRvOiBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ IENjOiBpLm1heGltZXRzQG92bi5vcmc7IE1jbmFtYXJhLCBKb2huIDxqb2huLm1jbmFtYXJhQGlu dGVsLmNvbT47IEh1LCBKaWF5dQ0KPiA8amlheXUuaHVAaW50ZWwuY29tPjsgTWF4aW1lIENvcXVl bGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT47IFZhbg0KPiBIYWFyZW4sIEhhcnJ5IDxo YXJyeS52YW4uaGFhcmVuQGludGVsLmNvbT47IE1vcnRlbiBCcsO4cnVwDQo+IDxtYkBzbWFydHNo YXJlc3lzdGVtcy5jb20+OyBQYWkgRywgU3VuaWwgPHN1bmlsLnBhaS5nQGludGVsLmNvbT47IFN0 b2tlcywgSWFuDQo+IDxpYW4uc3Rva2VzQGludGVsLmNvbT47IEZlcnJpdGVyLCBDaWFuIDxjaWFu LmZlcnJpdGVyQGludGVsLmNvbT47IG92cy0NCj4gZGV2QG9wZW52c3dpdGNoLm9yZzsgZGV2QGRw ZGsub3JnOyBPJ0RyaXNjb2xsLCBUaW0gPHRpbS5vZHJpc2NvbGxAaW50ZWwuY29tPjsNCj4gRmlu biwgRW1tYSA8ZW1tYS5maW5uQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IE9WUyBEUERLIERN QS1EZXYgbGlicmFyeS9EZXNpZ24gRGlzY3Vzc2lvbg0KPiANCj4gT24gNC8yNy8yMiAyMjozNCwg QnJ1Y2UgUmljaGFyZHNvbiB3cm90ZToNCj4gPiBPbiBNb24sIEFwciAyNSwgMjAyMiBhdCAxMTo0 NjowMVBNICswMjAwLCBJbHlhIE1heGltZXRzIHdyb3RlOg0KPiA+PiBPbiA0LzIwLzIyIDE4OjQx LCBNY25hbWFyYSwgSm9obiB3cm90ZToNCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+Pj4+IEZyb206IElseWEgTWF4aW1ldHMgPGkubWF4aW1ldHNAb3ZuLm9yZz4NCj4gPj4+ PiBTZW50OiBGcmlkYXksIEFwcmlsIDgsIDIwMjIgMTA6NTggQU0NCj4gPj4+PiBUbzogSHUsIEpp YXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyBNYXhpbWUgQ29xdWVsaW4NCj4gPj4+PiA8bWF4aW1l LmNvcXVlbGluQHJlZGhhdC5jb20+OyBWYW4gSGFhcmVuLCBIYXJyeQ0KPiA+Pj4+IDxoYXJyeS52 YW4uaGFhcmVuQGludGVsLmNvbT47IE1vcnRlbiBCcsO4cnVwDQo+IDxtYkBzbWFydHNoYXJlc3lz dGVtcy5jb20+Ow0KPiA+Pj4+IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29uQGlu dGVsLmNvbT4NCj4gPj4+PiBDYzogaS5tYXhpbWV0c0Bvdm4ub3JnOyBQYWkgRywgU3VuaWwgPHN1 bmlsLnBhaS5nQGludGVsLmNvbT47IFN0b2tlcywgSWFuDQo+ID4+Pj4gPGlhbi5zdG9rZXNAaW50 ZWwuY29tPjsgRmVycml0ZXIsIENpYW4gPGNpYW4uZmVycml0ZXJAaW50ZWwuY29tPjsgb3ZzLQ0K PiA+Pj4+IGRldkBvcGVudnN3aXRjaC5vcmc7IGRldkBkcGRrLm9yZzsgTWNuYW1hcmEsIEpvaG4N Cj4gPj4+PiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+OyBPJ0RyaXNjb2xsLCBUaW0gPHRpbS5v ZHJpc2NvbGxAaW50ZWwuY29tPjsNCj4gPj4+PiBGaW5uLCBFbW1hIDxlbW1hLmZpbm5AaW50ZWwu Y29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBPVlMgRFBESyBETUEtRGV2IGxpYnJhcnkvRGVzaWdu IERpc2N1c3Npb24NCj4gPj4+Pg0KPiA+Pj4+IE9uIDQvOC8yMiAwOToxMywgSHUsIEppYXl1IHdy b3RlOg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4+Pj4+IEZyb206IElseWEgTWF4aW1ldHMgPGkubWF4aW1ldHNAb3ZuLm9yZz4NCj4g Pj4+Pj4+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCA3LCAyMDIyIDEwOjQwIFBNDQo+ID4+Pj4+PiBU bzogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT47IFZhbiBIYWFy ZW4sIEhhcnJ5DQo+ID4+Pj4+PiA8aGFycnkudmFuLmhhYXJlbkBpbnRlbC5jb20+OyBNb3J0ZW4g QnLDuHJ1cA0KPiA+Pj4+Pj4gPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT47IFJpY2hhcmRzb24s IEJydWNlDQo+ID4+Pj4+PiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ID4+Pj4+PiBD YzogaS5tYXhpbWV0c0Bvdm4ub3JnOyBQYWkgRywgU3VuaWwgPHN1bmlsLnBhaS5nQGludGVsLmNv bT47IFN0b2tlcywNCj4gPj4+Pj4+IElhbiA8aWFuLnN0b2tlc0BpbnRlbC5jb20+OyBIdSwgSmlh eXUgPGppYXl1Lmh1QGludGVsLmNvbT47IEZlcnJpdGVyLA0KPiA+Pj4+Pj4gQ2lhbiA8Y2lhbi5m ZXJyaXRlckBpbnRlbC5jb20+OyBvdnMtZGV2QG9wZW52c3dpdGNoLm9yZzsNCj4gPj4+Pj4+IGRl dkBkcGRrLm9yZzsgTWNuYW1hcmEsIEpvaG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsgTydE cmlzY29sbCwNCj4gPj4+Pj4+IFRpbSA8dGltLm9kcmlzY29sbEBpbnRlbC5jb20+OyBGaW5uLCBF bW1hIDxlbW1hLmZpbm5AaW50ZWwuY29tPg0KPiA+Pj4+Pj4gU3ViamVjdDogUmU6IE9WUyBEUERL IERNQS1EZXYgbGlicmFyeS9EZXNpZ24gRGlzY3Vzc2lvbg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9u IDQvNy8yMiAxNjoyNSwgTWF4aW1lIENvcXVlbGluIHdyb3RlOg0KPiA+Pj4+Pj4+IEhpIEhhcnJ5 LA0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gT24gNC83LzIyIDE2OjA0LCBWYW4gSGFhcmVuLCBIYXJy eSB3cm90ZToNCj4gPj4+Pj4+Pj4gSGkgT1ZTICYgRFBESywgTWFpbnRhaW5lcnMgJiBDb21tdW5p dHksDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFRvcCBwb3N0aW5nIG92ZXJ2aWV3IG9mIGRpc2N1 c3Npb24gYXMgcmVwbGllcyB0byB0aHJlYWQgYmVjb21lDQo+ID4+Pj4gc2xvd2VyOg0KPiA+Pj4+ Pj4+PiBwZXJoYXBzIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHJldmlldyBhbmQgcGxhbiBmb3IgbmV4 dCBzdGVwcz8NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gwqBGcm9tIG15IHBlcnNwZWN0aXZlLCBp dCB0aG9zZSBtb3N0IHZvY2FsIGluIHRoZSB0aHJlYWQgc2VlbSB0byBiZQ0KPiA+Pj4+Pj4+PiBp biBmYXZvdXIgb2YgdGhlIGNsZWFuIHJ4L3R4IHNwbGl0ICgiZGVmZXIgd29yayIpLCB3aXRoIHRo ZQ0KPiA+Pj4+Pj4+PiB0cmFkZW9mZiB0aGF0IHRoZSBhcHBsaWNhdGlvbiBtdXN0IGJlIGF3YXJl IG9mIGhhbmRsaW5nIHRoZSBhc3luYw0KPiA+Pj4+Pj4+PiBETUEgY29tcGxldGlvbnMuIElmIHRo ZXJlIGFyZSBhbnkgY29uY2VybnMgb3Bwb3NpbmcgdXBzdHJlYW1pbmcgb2YNCj4gPj4+Pj4+Pj4g dGhpcw0KPiA+Pj4+Pj4gbWV0aG9kLCBwbGVhc2UgaW5kaWNhdGUgdGhpcyBwcm9tcHRseSwgYW5k IHdlIGNhbiBjb250aW51ZSB0ZWNobmljYWwNCj4gPj4+Pj4+IGRpc2N1c3Npb25zIGhlcmUgbm93 Lg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gV2Fzbid0IHRoZXJlIHNvbWUgZGlzY3Vzc2lvbnMgYWJv dXQgaGFuZGxpbmcgdGhlIFZpcnRpbyBjb21wbGV0aW9ucw0KPiA+Pj4+Pj4+IHdpdGggdGhlIERN QSBlbmdpbmU/IFdpdGggdGhhdCwgd2Ugd291bGRuJ3QgbmVlZCB0aGUgZGVmZXJyYWwgb2Ygd29y ay4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiArMQ0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFdpdGggdGhlIHZp cnRpbyBjb21wbGV0aW9ucyBoYW5kbGVkIGJ5IERNQSBpdHNlbGYsIHRoZSB2aG9zdCBwb3J0DQo+ ID4+Pj4+PiB0dXJucyBhbG1vc3QgaW50byBhIHJlYWwgSFcgTklDLiAgV2l0aCB0aGF0IHdlIHdp bGwgbm90IG5lZWQgYW55DQo+ID4+Pj4+PiBleHRyYSBtYW5pcHVsYXRpb25zIGZyb20gdGhlIE9W UyBzaWRlLCBpLmUuIG5vIG5lZWQgdG8gZGVmZXIgYW55IHdvcmsNCj4gPj4+Pj4+IHdoaWxlIG1h aW50YWluaW5nIGNsZWFyIHNwbGl0IGJldHdlZW4gcnggYW5kIHR4IG9wZXJhdGlvbnMuDQo+ID4+ Pj4+DQo+ID4+Pj4+IEZpcnN0LCBtYWtpbmcgRE1BIGRvIDJCIGNvcHkgd291bGQgc2FjcmlmaWNl IHBlcmZvcm1hbmNlLCBhbmQgSSB0aGluaw0KPiA+Pj4+PiB3ZSBhbGwgYWdyZWUgb24gdGhhdC4N Cj4gPj4+Pg0KPiA+Pj4+IEkgZG8gbm90IGFncmVlIHdpdGggdGhhdC4gIFllcywgMkIgY29weSBi eSBETUEgd2lsbCBsaWtlbHkgYmUgc2xvd2VyIHRoYW4NCj4gPj4+PiBkb25lIGJ5IENQVSwgaG93 ZXZlciBDUFUgaXMgZ29pbmcgYXdheSBmb3IgZG96ZW5zIG9yIGV2ZW4gaHVuZHJlZHMgb2YNCj4g Pj4+PiB0aG91c2FuZHMgb2YgY3ljbGVzIHRvIHByb2Nlc3MgYSBuZXcgcGFja2V0IGJhdGNoIG9y IHNlcnZpY2Ugb3RoZXIgcG9ydHMsDQo+ID4+Pj4gaGVuY2UgRE1BIHdpbGwgbGlrZWx5IGNvbXBs ZXRlIHRoZSB0cmFuc21pc3Npb24gZmFzdGVyIHRoYW4gd2FpdGluZyBmb3INCj4gPj4+PiB0aGUg Q1BVIHRocmVhZCB0byBjb21lIGJhY2sgdG8gdGhhdCB0YXNrLiAgSW4gYW55IGNhc2UsIHRoaXMg aGFzIHRvIGJlDQo+ID4+Pj4gdGVzdGVkLg0KPiA+Pj4+DQo+ID4+Pj4+IFNlY29uZCwgdGhpcyBt ZXRob2QgY29tZXMgd2l0aCBhbiBpc3N1ZSBvZiBvcmRlcmluZy4NCj4gPj4+Pj4gRm9yIGV4YW1w bGUsIFBNRCB0aHJlYWQwIGVucXVldWUgMTAgcGFja2V0cyB0byB2cmluZzAgZmlyc3QsIHRoZW4g UE1EDQo+ID4+Pj4+IHRocmVhZDEgZW5xdWV1ZSAyMCBwYWNrZXRzIHRvIHZyaW5nMC4gSWYgUE1E IHRocmVhZDAgYW5kIHRocmVhMSBoYXZlDQo+ID4+Pj4+IG93biBkZWRpY2F0ZWQgRE1BIGRldmlj ZSBkbWEwIGFuZCBkbWExLCBmbGFnL2luZGV4IHVwZGF0ZSBmb3IgdGhlDQo+ID4+Pj4+IGZpcnN0 IDEwIHBhY2tldHMgaXMgZG9uZSBieSBkbWEwLCBhbmQgZmxhZy9pbmRleCB1cGRhdGUgZm9yIHRo ZSBsZWZ0DQo+ID4+Pj4+IDIwIHBhY2tldHMgaXMgZG9uZSBieSBkbWExLiBCdXQgdGhlcmUgaXMg bm8gb3JkZXJpbmcgZ3VhcmFudGVlIGFtb25nDQo+ID4+Pj4+IGRpZmZlcmVudCBETUEgZGV2aWNl cywgc28gZmxhZy9pbmRleCB1cGRhdGUgbWF5IGVycm9yLiBJZiBQTUQgdGhyZWFkcw0KPiA+Pj4+ PiBkb24ndCBoYXZlIGRlZGljYXRlZCBETUEgZGV2aWNlcywgd2hpY2ggbWVhbnMgRE1BIGRldmlj ZXMgYXJlIHNoYXJlZA0KPiA+Pj4+PiBhbW9uZyB0aHJlYWRzLCB3ZSBuZWVkIGxvY2sgYW5kIHBh eSBmb3IgbG9jayBjb250ZW50aW9uIGluIGRhdGEtcGF0aC4NCj4gPj4+Pj4gT3Igd2UgY2FuIGFs bG9jYXRlIERNQSBkZXZpY2VzIGZvciB2cmluZyBkeW5hbWljYWxseSB0byBhdm9pZCBETUENCj4g Pj4+Pj4gc2hhcmluZyBhbW9uZyB0aHJlYWRzLiBCdXQgd2hhdCdzIHRoZSBvdmVyaGVhZCBvZiBh bGxvY2F0aW9uIG1lY2hhbmlzbT8NCj4gPj4+PiBXaG8gZG9lcyBpdD8gQW55IHRob3VnaHRzPw0K PiA+Pj4+DQo+ID4+Pj4gMS4gRE1BIGNvbXBsZXRpb24gd2FzIGRpc2N1c3NlZCBpbiBjb250ZXh0 IG9mIHBlci1xdWV1ZSBhbGxvY2F0aW9uLCBzbw0KPiA+Pj4+IHRoZXJlDQo+ID4+Pj4gICAgaXMg bm8gcmUtb3JkZXJpbmcgaW4gdGhpcyBjYXNlLg0KPiA+Pj4+DQo+ID4+Pj4gMi4gT3ZlcmhlYWQg Y2FuIGJlIG1pbmltYWwgaWYgYWxsb2NhdGVkIGRldmljZSBjYW4gc3RpY2sgdG8gdGhlIHF1ZXVl IGZvcg0KPiA+Pj4+IGENCj4gPj4+PiAgICByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lIHdpdGhv dXQgcmUtYWxsb2NhdGlvbiBvbiBldmVyeSBzZW5kLiAgWW91IG1heQ0KPiA+Pj4+ICAgIGxvb2sg YXQgWFBTIGltcGxlbWVudGF0aW9uIGluIGxpYi9kcGlmLW5ldGRldi5jIGluIE9WUyBmb3IgZXhh bXBsZSBvZg0KPiA+Pj4+ICAgIHN1Y2ggbWVjaGFuaXNtLiAgRm9yIHN1cmUgaXQgY2FuIG5vdCBi ZSB0aGUgc2FtZSwgYnV0IGlkZWFzIGNhbiBiZSByZS0NCj4gPj4+PiB1c2VkLg0KPiA+Pj4+DQo+ ID4+Pj4gMy4gTG9ja2luZyBkb2Vzbid0IG1lYW4gY29udGVudGlvbiBpZiByZXNvdXJjZXMgYXJl IGFsbG9jYXRlZC9kaXN0cmlidXRlZA0KPiA+Pj4+ICAgIHRob3VnaHRmdWxseS4NCj4gPj4+Pg0K PiA+Pj4+IDQuIEFsbG9jYXRpb24gY2FuIGJlIGRvbmUgYmUgZWl0aGVyIE9WUyBvciB2aG9zdCBs aWJyYXJ5IGl0c2VsZiwgSSdkIHZvdGUNCj4gPj4+PiAgICBmb3IgZG9pbmcgdGhhdCBpbnNpZGUg dGhlIHZob3N0IGxpYnJhcnksIHNvIGFueSBEUERLIGFwcGxpY2F0aW9uIGFuZA0KPiA+Pj4+ICAg IHZob3N0IGV0aGRldiBjYW4gdXNlIGl0IHdpdGhvdXQgcmUtaW52ZW50aW5nIGZyb20gc2NyYXRj aC4gIEl0IGFsc28NCj4gPj4+PiBzaG91bGQNCj4gPj4+PiAgICBiZSBzaW1wbGVyIGZyb20gdGhl IEFQSSBwb2ludCBvZiB2aWV3IGlmIGFsbG9jYXRpb24gYW5kIHVzYWdlIGFyZSBpbg0KPiA+Pj4+ ICAgIHRoZSBzYW1lIHBsYWNlLiAgQnV0IEkgZG9uJ3QgaGF2ZSBhIHN0cm9uZyBvcGluaW9uIGhl cmUgYXMgZm9yIG5vdywNCj4gPj4+PiBzaW5jZQ0KPiA+Pj4+ICAgIG5vIHJlYWwgY29kZSBleGFt cGxlcyBleGlzdCwgc28gaXQncyBoYXJkIHRvIGV2YWx1YXRlIGhvdyB0aGV5IGNvdWxkDQo+ID4+ Pj4gbG9vaw0KPiA+Pj4+ICAgIGxpa2UuDQo+ID4+Pj4NCj4gPj4+PiBCdXQgSSBmZWVsIGxpa2Ug d2UncmUgc3RhcnRpbmcgdG8gcnVuIGluIGNpcmNsZXMgaGVyZSBhcyBJIGRpZCBhbHJlYWR5IHNh eQ0KPiA+Pj4+IG1vc3Qgb2YgdGhhdCBiZWZvcmUuDQo+ID4+Pg0KPiA+Pj4NCj4gPj4NCj4gPj4g SGksIEpvaG4uDQo+ID4+DQo+ID4+IEp1c3QgcmVhZGluZyB0aGlzIGVtYWlsIGFzIEkgd2FzIG9u IFBUTyBmb3IgYSBsYXN0IDEuNSB3ZWVrcw0KPiA+PiBhbmQgZGlkbid0IGdldCB0aHJvdWdoIGFs bCB0aGUgZW1haWxzIHlldC4NCj4gPj4NCj4gPj4+IFRoaXMgZG9lcyBzZWVtIHRvIGJlIGdvaW5n IGluIGNpcmNsZXMsIGVzcGVjaWFsbHkgc2luY2UgdGhlcmUgc2VlbWVkIHRvIGJlDQo+IHRlY2hu aWNhbCBhbGlnbm1lbnQgb24gdGhlIGxhc3QgcHVibGljIGNhbGwgb24gTWFyY2ggMjl0aC4NCj4g Pj4NCj4gPj4gSSBndWVzcywgdGhlcmUgaXMgYSB0eXBvIGluIHRoZSBkYXRlIGhlcmUuDQo+ID4+ IEl0IHNlZW1zIHRvIGJlIDI2dGgsIG5vdCAyOXRoLg0KPiA+Pg0KPiA+Pj4gSXQgaXMgbm90IGZl YXNpYmxlIHRvIGRvIGEgcmVhbCB3b3JsZCBpbXBsZW1lbnRhdGlvbi9QT0Mgb2YgZXZlcnkgZGVz aWduDQo+IHByb3Bvc2FsLg0KPiA+Pg0KPiA+PiBGV0lXLCBJIHRoaW5rIGl0IG1ha2VzIHNlbnNl IHRvIFBvQyBhbmQgdGVzdCBvcHRpb25zIHRoYXQgYXJlDQo+ID4+IGdvaW5nIHRvIGJlIHNpbXBs eSB1bmF2YWlsYWJsZSBnb2luZyBmb3J3YXJkIGlmIG5vdCBleHBsb3JlZCBub3cuDQo+ID4+IEVz cGVjaWFsbHkgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFueSBnb29kIHNvbHV0aW9ucyBhbnl3YXkN Cj4gPj4gKCJEZWZlcnJhbCBvZiBXb3JrIiBpcyBhcmNoaXRlY3R1cmFsbHkgd3Jvbmcgc29sdXRp b24gZm9yIE9WUykuDQo+ID4+DQo+ID4NCj4gPiBIaSBJbHlhLA0KPiA+DQo+ID4gZm9yIHRob3Nl IG9mIHVzIHdobyBoYXZlbid0IHNwZW50IGEgbG9uZyB0aW1lIHdvcmtpbmcgb24gT1ZTLCBjYW4g eW91DQo+ID4gcGVyaGFwcyBleHBsYWluIGEgYml0IG1vcmUgYXMgdG8gd2h5IGl0IGlzIGFyY2hp dGVjdHVyYWxseSB3cm9uZz8gRnJvbSBteQ0KPiA+IGV4cGVyaWVuY2Ugd2l0aCBEUERLLCB1c2Ug b2YgYW55IGxvb2thc2lkZSBhY2NlbGVyYXRvciwgbm90IGp1c3QgRE1BIGJ1dA0KPiA+IGFueSBj cnlwdG8sIGNvbXByZXNzaW9uIG9yIG90aGVyd2lzZSwgcmVxdWlyZXMgYXN5bmNocm9ub3VzIG9w ZXJhdGlvbiwgYW5kDQo+ID4gdGhlcmVmb3JlIHNvbWUgZm9ybSBvZiBzZXR0aW5nIHdvcmsgYXNp ZGUgdGVtcG9yYXJpbHkgdG8gZG8gb3RoZXIgdGFza3MuDQo+IA0KPiBPVlMgZG9lc24ndCB1c2Ug YW55IGxvb2thc2lkZSBhY2NlbGVyYXRvcnMgYW5kIGRvZXNuJ3QgaGF2ZSBhbnkNCj4gaW5mcmFz dHJ1Y3R1cmUgZm9yIHRoZW0uDQo+IA0KPiANCj4gTGV0IG1lIGNyZWF0ZSBhIERQREsgYW5hbG9n eSBvZiB3aGF0IGlzIHByb3Bvc2VkIGZvciBPVlMuDQo+IA0KPiBEUERLIGhhcyBhbiBldGhkZXYg QVBJIHRoYXQgYWJzdHJhY3RzIGRpZmZlcmVudCBkZXZpY2UgZHJpdmVycyBmb3INCj4gdGhlIGFw cGxpY2F0aW9uLiAgVGhpcyBBUEkgaGFzIGEgcnRlX2V0aF90eF9idXJzdCgpIGZ1bmN0aW9uIHRo YXQNCj4gaXMgc3VwcG9zZWQgdG8gc2VuZCBwYWNrZXRzIHRocm91Z2ggdGhlIHBhcnRpY3VsYXIg bmV0d29yayBpbnRlcmZhY2UuDQo+IA0KPiBJbWFnaW5lIG5vdyB0aGF0IHRoZXJlIGlzIGEgbmV0 d29yayBjYXJkIHRoYXQgaXMgbm90IGNhcGFibGUgb2YNCj4gc2VuZGluZyBwYWNrZXRzIHJpZ2h0 IGF3YXkgYW5kIHJlcXVpcmVzIHRoZSBhcHBsaWNhdGlvbiB0byBjb21lDQo+IGJhY2sgbGF0ZXIg dG8gZmluaXNoIHRoZSBvcGVyYXRpb24uICBUaGF0IGlzIGFuIG9idmlvdXMgcHJvYmxlbSwNCj4g YmVjYXVzZSBydGVfZXRoX3R4X2J1cnN0KCkgZG9lc24ndCByZXF1aXJlIGFueSBleHRyYSBhY3Rp b25zIGFuZA0KPiBkb2Vzbid0IHRha2Ugb3duZXJzaGlwIG9mIHBhY2tldHMgdGhhdCB3YXNuJ3Qg Y29uc3VtZWQuDQo+IA0KPiBUaGUgcHJvcG9zZWQgc29sdXRpb24gZm9yIHRoaXMgcHJvYmxlbSBp cyB0byBjaGFuZ2UgdGhlIGV0aGRldiBBUEk6DQo+IA0KPiAxLiBBbGxvdyBydGVfZXRoX3R4X2J1 cnN0KCkgdG8gcmV0dXJuIC1FSU5QUk9HUkVTUyB0aGF0IGVmZmVjdGl2ZWx5DQo+ICAgIG1lYW5z IHRoYXQgcGFja2V0cyB3YXMgYWNrbm93bGVkZ2VkLCBidXQgbm90IGFjdHVhbGx5IHNlbnQgeWV0 Lg0KPiANCj4gMi4gUmVxdWlyZSB0aGUgYXBwbGljYXRpb24gdG8gY2FsbCB0aGUgbmV3IHJ0ZV9l dGhfcHJvY2Vzc19hc3luYygpDQo+ICAgIGZ1bmN0aW9uIHNvbWV0aW1lIGxhdGVyIHVudGlsIGl0 IGRvZXNuJ3QgcmV0dXJuIC1FSU5QUk9HUkVTUw0KPiAgICBhbnltb3JlLCBpbiBjYXNlIHRoZSBv cmlnaW5hbCBydGVfZXRoX3R4X2J1cnN0KCkgY2FsbCByZXR1cm5lZA0KPiAgICAtRUlOUFJPR1JF U1MuDQo+IA0KPiBUaGUgbWFpbiByZWFzb24gd2h5IHRoaXMgcHJvcG9zYWwgaXMgcXVlc3Rpb25h YmxlOg0KPiANCj4gSXQncyBvbmx5IG9uZSBzcGVjaWZpYyBkZXZpY2UgdGhhdCByZXF1aXJlcyB0 aGlzIHNwZWNpYWwgaGFuZGxpbmcsDQo+IGFsbCBvdGhlciBkZXZpY2VzIGFyZSBjYXBhYmxlIG9m IHNlbmRpbmcgcGFja2V0cyByaWdodCBhd2F5Lg0KPiBIb3dldmVyLCBldmVyeSBEUERLIGFwcGxp Y2F0aW9uIG5vdyBoYXMgdG8gaW1wbGVtZW50IHNvbWUga2luZA0KPiBvZiAiRGVmZXJyYWwgb2Yg V29yayIgbWVjaGFuaXNtIGluIG9yZGVyIHRvIGJlIGNvbXBsaWFudCB3aXRoDQo+IHRoZSB1cGRh dGVkIERQREsgZXRoZGV2IEFQSS4NCj4gDQo+IFdpbGwgRFBESyBtYWtlIHRoaXMgQVBJIGNoYW5n ZT8NCj4gSSBoYXZlIG5vIHZvaWNlIGluIERQREsgQVBJIGRlc2lnbiBkZWNpc2lvbnMsIGJ1dCBJ J2QgYXJndWUgYWdhaW5zdC4NCj4gDQo+IEludGVyZXN0aW5nbHksIHRoYXQncyBub3QgcmVhbGx5 IGFuIGltYWdpbmFyeSBwcm9wb3NhbC4gIFRoYXQgaXMNCj4gYW4gZXhhY3QgY2hhbmdlIHJlcXVp cmVkIGZvciBEUERLIGV0aGRldiBBUEkgaW4gb3JkZXIgdG8gYWRkDQo+IHZob3N0IGFzeW5jIHN1 cHBvcnQgdG8gdGhlIHZob3N0IGV0aGRldiBkcml2ZXIuDQo+IA0KPiBHb2luZyBiYWNrIHRvIE9W UzoNCj4gDQo+IEFuIG92ZXJzaW1wbGlmaWVkIGFyY2hpdGVjdHVyZSBvZiBPVlMgaGFzIDMgbGF5 ZXJzICh0b3AgdG8gYm90dG9tKToNCj4gDQo+IDEuIE9GcHJvdG8gLSB0aGUgbGF5ZXIgdGhhdCBo YW5kbGVzIE9wZW5GbG93Lg0KPiAyLiBEYXRhcGF0aCBJbnRlcmZhY2UgLSBwYWNrZXQgcHJvY2Vz c2luZy4NCj4gMy4gTmV0ZGV2IC0gYWJzdHJhY3Rpb24gb24gdG9wIG9mIGFsbCB0aGUgZGlmZmVy ZW50IHBvcnQgdHlwZXMuDQo+IA0KPiBFYWNoIGxheWVyIGhhcyBpdCdzIG93biBBUEkgdGhhdCBh bGxvd3MgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucw0KPiBvZiB0aGUgc2FtZSBsYXllciB0byBi ZSB1c2VkIGludGVyY2hhbmdlYWJseSB3aXRob3V0IGFueSBtb2RpZmljYXRpb25zDQo+IHRvIGhp Z2hlciBsYXllcnMuICBUaGF0J3Mgd2hhdCBBUElzIGFuZCBlbmNhcHN1bGF0aW9uIGlzIGZvci4N Cj4gDQo+IFNvLCBOZXRkZXYgbGF5ZXIgaGFzIGl0J3Mgb3duIEFQSSBhbmQgdGhpcyBBUEkgaXMg YWN0dWFsbHkgdmVyeQ0KPiBzaW1pbGFyIHRvIHRoZSBEUERLJ3MgZXRoZGV2IEFQSS4gIFNpbXBs eSBiZWNhdXNlIHRoZXkgYXJlIHNlcnZpbmcNCj4gdGhlIHNhbWUgcHVycG9zZSAtIGFic3RyYWN0 aW9uIG9uIHRvcCBvZiBkaWZmZXJlbnQgbmV0d29yayBpbnRlcmZhY2VzLg0KPiBCZXNpZGUgZGlm ZmVyZW50IHR5cGVzIG9mIERQREsgcG9ydHMsIHRoZXJlIGFyZSBhbHNvIHNldmVyYWwgdHlwZXMN Cj4gb2YgbmF0aXZlIGxpbnV4LCBic2QgYW5kIHdpbmRvd3MgcG9ydHMsIHZhcmlldHkgb2YgZGlm ZmVyZW50IHR1bm5lbA0KPiBwb3J0cy4NCj4gDQo+IERhdGFwYXRoIGludGVyZmFjZSBsYXllciBp cyBhbiAiYXBwbGljYXRpb24iIGZyb20gdGhlIGV0aGRldiBhbmFsb2d5DQo+IGFib3ZlLg0KPiAN Cj4gV2hhdCBpcyBwcm9wb3NlZCBieSAiRGVmZXJyYWwgb2YgV29yayIgc29sdXRpb24gaXMgdG8g bWFrZSBwcmV0dHkNCj4gbXVjaCB0aGUgc2FtZSBBUEkgY2hhbmdlIHRoYXQgSSBkZXNjcmliZWQs IGJ1dCB0byBuZXRkZXYgbGF5ZXIgQVBJDQo+IGluc2lkZSB0aGUgT1ZTLCBhbmQgaW50cm9kdWNl IGEgZmFpcmx5IGNvbXBsZXggKGFuZCBxdWVzdGlvbmFibGUsDQo+IGJ1dCBJJ20gbm90IGdvaW5n IGludG8gdGhhdCByaWdodCBub3cpIG1hY2hpbmVyeSB0byBoYW5kbGUgdGhhdCBBUEkNCj4gY2hh bmdlIGludG8gdGhlIGRhdGFwYXRoIGludGVyZmFjZSBsYXllci4NCj4gDQo+IFNvLCBleGFjdGx5 IHRoZSBzYW1lIHByb2JsZW0gaXMgaGVyZToNCj4gDQo+IElmIHRoZSBBUEkgY2hhbmdlIGlzIG5l ZWRlZCBvbmx5IGZvciBhIHNpbmdsZSBwb3J0IHR5cGUgaW4gYSB2ZXJ5DQo+IHNwZWNpZmljIGhh cmR3YXJlIGVudmlyb25tZW50LCB3aHkgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGNvbW1vbg0KPiBB UEkgYW5kIHJld29yayBhIGxvdCBvZiB0aGUgY29kZSBpbiB1cHBlciBsYXllcnMgaW4gb3JkZXIg dG8gYWNjb21tb2RhdGUNCj4gdGhhdCBBUEkgY2hhbmdlLCB3aGlsZSBpdCBtYWtlcyBubyBwcmFj dGljYWwgc2Vuc2UgZm9yIGFueSBvdGhlcg0KPiBwb3J0IHR5cGVzIG9yIG1vcmUgZ2VuZXJpYyBo YXJkd2FyZSBzZXR1cHM/DQo+IEFuZCBzaW1pbGFyIGNoYW5nZXMgd2lsbCBoYXZlIHRvIGJlIGRv bmUgaW4gYW55IG90aGVyIERQREsgYXBwbGljYXRpb24NCj4gdGhhdCBpcyBub3QgYm91bmQgdG8g YSBzcGVjaWZpYyBoYXJkd2FyZSwgYnV0IHdhbnRzIHRvIHN1cHBvcnQgdmhvc3QNCj4gYXN5bmMu DQo+IA0KPiBUaGUgcmlnaHQgc29sdXRpb24sIElNTywgaXMgdG8gbWFrZSB2aG9zdCBhc3luYyBi ZWhhdmUgYXMgYW55IG90aGVyDQo+IHBoeXNpY2FsIE5JQywgc2luY2UgaXQgaXMgZXNzZW50aWFs bHkgYSBwaHlzaWNhbCBOSUMgbm93ICh3ZSdyZSBub3QNCj4gdXNpbmcgRE1BIGRpcmVjdGx5LCBp dCdzIGEgY29tYmluZWQgdmhvc3QrRE1BIHNvbHV0aW9uKSwgaW5zdGVhZCBvZg0KPiBwcm9wYWdh dGluZyBxdWlya3Mgb2YgdGhlIHNpbmdsZSBkZXZpY2UgdG8gYSBjb21tb24gQVBJLg0KPiANCj4g QW5kIGdvaW5nIGJhY2sgdG8gRFBESywgdGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGFsbG93 IHVzZSBvZg0KPiB2aG9zdCBhc3luYyBpbiB0aGUgRFBESydzIG93biB2aG9zdCBldGhkZXYgZHJp dmVyLg0KPiANCj4gTXkgaW5pdGlhbCByZXBseSB0byB0aGUgIkRlZmVycmFsIG9mIFdvcmsiIFJG QyB3aXRoIHByZXR0eSBtdWNoDQo+IHRoZSBzYW1lIGNvbmNlcm5zOg0KPiAgIGh0dHBzOi8vcGF0 Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9vcGVudnN3aXRjaC9wYXRjaC8yMDIxMDkwNzExMTcy NS40MzY3Mi0NCj4gMi1jaWFuLmZlcnJpdGVyQGludGVsLmNvbS8jMjc1MTc5OQ0KPiANCj4gQmVz dCByZWdhcmRzLCBJbHlhIE1heGltZXRzLg0KDQoNCkhpIElseWEsDQoNClRoYW5rcyBmb3IgcmVw bHlpbmcgaW4gbW9yZSBkZXRhaWwsIHVuZGVyc3RhbmRpbmcgeW91ciBwZXJzcGVjdGl2ZSBoZXJl IGhlbHBzIHRvDQpjb21tdW5pY2F0ZSB0aGUgdmFyaW91cyBzb2x1dGlvbnMgYmVuZWZpdHMgYW5k IGRyYXdiYWNrcy4gQWdyZWVkIHRoZSBPZlByb3RvL0RwaWYvTmV0ZGV2DQphYnN0cmFjdGlvbiBs YXllcnMgYXJlIHN0cm9uZyBhYnN0cmFjdGlvbnMgaW4gT1ZTLCBhbmQgaW4gZ2VuZXJhbCB0aGV5 IHNlcnZlIHRoZWlyIHB1cnBvc2UuDQoNCkEga2V5IGRpZmZlcmVuY2UgYmV0d2VlbiBPVlMncyB1 c2FnZSBvZiBEUERLIEV0aGRldiBUWCBhbmQgVkhvc3QgVFggaXMgdGhhdCB0aGUgcGVyZm9ybWFu Y2UNCm9mIGVhY2ggaXMgdmVyeSBkaWZmZXJlbnQ6IGFzIHlvdSBrbm93LCBzZW5kaW5nIGEgMTUw MCBieXRlIHBhY2tldCBvdmVyIGEgcGh5c2ljYWwgTklDLCBvciB2aWENClZIb3N0IGludG8gYSBn dWVzdCBoYXMgYSB2ZXJ5IGRpZmZlcmVudCBDUFUgY3ljbGUgY29zdC4gVHlwaWNhbGx5IERQREsg VHggdGFrZXMgfjUlIENQVSBjeWNsZXMNCndoaWxlIHZob3N0IGNvcGllcyBhcmUgb2Z0ZW4gfjMw JSwgYnV0IGNhbiBiZSA+IDUwJSBpbiBjZXJ0YWluIHBhY2tldC1zaXplcy9jb25maWd1cmF0aW9u cy4NCg0KTGV0J3MgdmlldyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGFib3ZlIGV4YW1wbGUgZnJv bSB0aGUgcGVyc3BlY3RpdmUgb2YgYW4gYWN0dWFsIGRlcGxveW1lbnQ6IE9WUyBpcw0KdmVyeSBv ZnRlbiBkZXBsb3llZCB0byBwcm92aWRlIGFuIGFjY2VsZXJhdGVkIHBhY2tldCBpbnRlcmZhY2Ug dG8gYSBndWVzdC9WTSB2aWEgVmhvc3QvVmlydGlvLg0KU3VyZWx5IGltcHJvdmluZyBwZXJmb3Jt YW5jZSBvZiB0aGlzIHByaW1hcnkgdXNlLWNhc2UgaXMgYSB2YWxpZCByZWFzb24gdG8gY29uc2lk ZXIgY2hhbmdlcyBhbmQgDQppbXByb3ZlbWVudHMgdG8gYW4gaW50ZXJuYWwgYWJzdHJhY3Rpb24g bGF5ZXIgaW4gT1ZTPw0KDQpUb2RheSBEUERLIHR4IGFuZCB2aG9zdCB0eCBhcmUgY2FsbGVkIHZp YSB0aGUgc2FtZSBuZXRkZXYgYWJzdHJhY3Rpb24sIGJ1dCB3ZSBtdXN0IGFzayB0aGUgcXVlc3Rp b25zOg0KCS0gSXMgdGhlIG5ldGRldiBhYnN0cmFjdGlvbiByZWFsbHkgdGhlIGJlc3QgaXQgY2Fu IGJlPw0KCS0gRG9lcyBhZGRpbmcgYW4gb3B0aW9uYWwgImFzeW5jIiBmZWF0dXJlIHRvIHRoZSBh YnN0cmFjdGlvbiBpbXByb3ZlIHBlcmZvcm1hbmNlIHNpZ25pZmljYW50bHk/IChwb3NpdGl2ZSBm cm9tIGluY2x1ZGluZz8pDQoJLSBEb2VzIGFkZGluZyB0aGUgb3B0aW9uYWwgYXN5bmMgZmVhdHVy ZSBjYXVzZSBhY3R1YWwgZGVncmFkYXRpb24gaW4gRFBJRiBpbXBsZW1lbnRhdGlvbnMgdGhhdCBk b24ndCBzdXBwb3J0L3VzZSBpdD8gKG5lZ2F0aXZlIGR1ZSB0byBpbmNsdWRpbmc/KQ0KDQpPZiBj b3Vyc2Ugc3Ryb25nIGFic3RyYWN0aW9ucyBhcmUgdmFsdWFibGUsIGFuZCBvZiBjb3Vyc2UgY2hh bmdpbmcgdGhlbSByZXF1aXJlcyBjYXJlZnVsIHRob3VnaHQuDQpCdXQgbGV0J3MgYmUgY2xlYXIg LSBJdCBpcyBwcm9iYWJseSBmYWlyIHRvIHNheSB0aGF0IE9WUyBpcyBub3QgZGVwbG95ZWQgYmVj YXVzZSBpdCBoYXMgZ29vZCBhYnN0cmFjdGlvbnMgaW50ZXJuYWxseS4NCkl0IGlzIGRlcGxveWVk IGJlY2F1c2UgaXQgaXMgdXNlZnVsLCBhbmQgc2VydmVzIHRoZSBuZWVkIG9mIGFuIGVuZC11c2Vy LiBBbmQgcGFydCBvZiB0aGUgZW5kLXVzZXIgbmVlZHMgaXMgcGVyZm9ybWFuY2UuDQoNClRoZSBz dWdnZXN0aW9uIG9mIGludGVncmF0aW5nICJEZWZlciBXb3JrIiBtZXRob2Qgb2YgZXhwb3Npbmcg YXN5bmMgaW4gdGhlIE9WUyBEYXRhcGF0aCBpcyB3ZWxsIHRob3VnaHQgb3V0LA0KYW5kIGEgY2xl YW4gd2F5IG9mIGhhbmRsaW5nIGFzeW5jIHdvcmsgaW4gYSBwZXItdGhyZWFkIG1hbm5lciBhdCB0 aGUgYXBwbGljYXRpb24gbGF5ZXIuIEl0IGlzIHRoZSBtb3N0IGNvbW1vbiB3YXkgb2YgaW50ZWdy YXRpbmcNCmxvb2thc2lkZSBhY2NlbGVyYXRpb24gaW4gc29mdHdhcmUgcGlwZWxpbmVzLCBhbmQg aGFuZGxpbmcgdGhlIGFzeW5jIHdvcmsgYXQgYXBwbGljYXRpb24gdGhyZWFkIGxldmVsIGlzIHRo ZSBvbmx5IGxvZ2ljYWwgcGxhY2Ugd2hlcmUNCnRoZSBwcm9ncmFtbWVyIGNhbiByZWFzb24gYWJv dXQgdHJhZGVvZmZzIGZvciBhIHNwZWNpZmljIHVzZS1jYXNlLiBBZGRpbmcgImRtYSBhY2NlbGVy YXRpb24gdG8gVmhvc3QiIHdpbGwgaW5ldml0YWJseSBsZWFkIHRvDQpjb21wcm9taXNlcyBpbiB0 aGUgRFBESyBpbXBsZW1lbnRhdGlvbiwgYW5kIG9uZXMgdGhhdCBtaWdodCAob3IgbWlnaHQgbm90 KSB3b3JrIGZvciBPVlMgYW5kIG90aGVyIGFwcHMuDQoNCkFzIHlvdSBrbm93LCB0aGVyZSBoYXZl IGJlZW4gT1ZTIENvbmZlcmVuY2UgcHJlc2VudGF0aW9uc1sxXVsyXSwgUkZDcyBhbmQgUE9Dc1sz XVs0XVs1XVs2XSwgYW5kIGNvbW11bml0eSBjYWxsc1s3XVs4XVs5XSBvbiB0aGUgdG9waWMuDQpJ biB0aGUgdmFyaW91cyBwcmVzZW50YXRpb25zLCB0aGUgYmVuZWZpdHMgb2YgdXNpbmcgYXBwbGlj YXRpb24tbGV2ZWwgZGVmZXJyYWwgb2Ygd29yayBhcmUgaGlnaGxpZ2h0ZWQsIGFuZCBjb21wYXJl ZCB0byBvdGhlciBpbXBsZW1lbnRhdGlvbnMNCndoaWNoIGhhdmUgbm9uLWRlc2lyYWJsZSBzaWRl LWVmZmVjdHMuIFdlIGhhdmVuJ3QgaGVhcmQgYW55IG9iamVjdGlvbnMgdGhhdCBwZW9wbGUgd29u J3QgdXNlIE9WUyBpZiB0aGUgbmV0ZGV2IGFic3RyYWN0aW9uIGlzIGNoYW5nZWQuDQoNCkl0IHNl ZW1zIHRoZXJlIGlzIGEgdHJhZGUtb2ZmIGRlY2lzaW9uIHRvIGJlIG1hZGU7IA0KCUEpIENoYW5n ZS9pbXByb3ZlIHRoZSBuZXRkZXYgYWJzdHJhY3Rpb24gdG8gYWxsb3cgZm9yIGFzeW5jIGFjY2Vs ZXJhdGlvbnMsIGFuZCBwYXkgdGhlIGNvc3Qgb2YgYWRkZWQgYXBwIGxheWVyIGNvbXBsZXhpdHkN CglCKSBEZW1hbmQgZG1hLWFjY2VsZXJhdGlvbiBpcyBwdXNoZWQgZG93biBpbnRvIHZob3N0ICYg YmVsb3cgKGFzIG5ldGRldiBhYnN0cmFjdGlvbiBpcyBub3QgZ29pbmcgdG8gYmUgY2hhbmdlZCks DQoJICAgIHJlc3VsdGluZyBpbiBzdWItcGFyIGFuZCBwb3RlbnRpYWxseSB1bnVzYWJsZSBjb2Rl IGZvciBhbnkgZ2l2ZW4gYXBwLCBhcyBsb3dlci1sYXllcnMgY2Fubm90IHJlYXNvbiBhYm91dCBh cHAgbGV2ZWwgc3BlY2lmaWNzDQoNCkhvdyBjYW4gd2UgdGhlIE9WUy9EUERLIGRldmVsb3BlcnMg YW5kIHVzZXJzIG1ha2UgYSBkZWNpc2lvbiBoZXJlPw0KDQpSZWdhcmRzLCAtSGFycnkNCg0KWzFd IGh0dHBzOi8vd3d3Lm9wZW52c3dpdGNoLm9yZy9zdXBwb3J0L292c2NvbjIwMjAvI0MzDQpbMl0g aHR0cHM6Ly93d3cub3BlbnZzd2l0Y2gub3JnL3N1cHBvcnQvb3ZzY29uMjAyMS8jVDEyDQpbM10g cmF3ZGV2OyBodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3Qvb3BlbnZzd2l0Y2gv cGF0Y2gvMjAyMDEwMjMwOTQ4NDUuMzU2NTItMi1zdW5pbC5wYWkuZ0BpbnRlbC5jb20vDQpbNF0g ZGVmZXIgd29yazsgaHR0cDovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3Qvb3BlbnZzd2l0 Y2gvbGlzdC8/c2VyaWVzPTI2MTI2NyZzdGF0ZT0qDQpbNV0gdjM7IGh0dHA6Ly9wYXRjaHdvcmsu b3psYWJzLm9yZy9wcm9qZWN0L29wZW52c3dpdGNoL3BhdGNoLzIwMjIwMTA0MTI1MjQyLjEwNjQx NjItMi1zdW5pbC5wYWkuZ0BpbnRlbC5jb20vDQpbNl0gdjQ7IGh0dHA6Ly9wYXRjaHdvcmsub3ps YWJzLm9yZy9wcm9qZWN0L29wZW52c3dpdGNoL3BhdGNoLzIwMjIwMzIxMTczNjQwLjMyNjc5NS0y LXN1bmlsLnBhaS5nQGludGVsLmNvbS8NCls3XSBTbGlkZXMgc2Vzc2lvbiAxOyBodHRwczovL2dp dGh1Yi5jb20vU3VuaWwtUGFpLUcvT1ZTLURQREstcHJlc2VudGF0aW9uLXNoYXJlL3Jhdy9tYWlu L09WUyUyMHZob3N0JTIwYXN5bmMlMjBkYXRhcGF0aCUyMGRlc2lnbiUyMDIwMjIucGRmDQpbOF0g U2xpZGVzIHNlc3Npb24gMjsgaHR0cHM6Ly9naXRodWIuY29tL1N1bmlsLVBhaS1HL09WUy1EUERL LXByZXNlbnRhdGlvbi1zaGFyZS9yYXcvbWFpbi9PVlMlMjB2aG9zdCUyMGFzeW5jJTIwZGF0YXBh dGglMjBkZXNpZ24lMjAyMDIyJTIwc2Vzc2lvbiUyMDIucGRmDQpbOV0gU2xpZGVzIHNlc3Npb24g MzsgaHR0cHM6Ly9naXRodWIuY29tL1N1bmlsLVBhaS1HL09WUy1EUERLLXByZXNlbnRhdGlvbi1z aGFyZS9yYXcvbWFpbi9vdnNfZGF0YXBhdGhfZGVzaWduXzIwMjIlMjBzZXNzaW9uJTIwMy5wZGYN Cg0K