From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B0D9FA2F18 for ; Thu, 3 Oct 2019 16:46:15 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 24B041BEEE; Thu, 3 Oct 2019 16:46:14 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 525F22B8E for ; Thu, 3 Oct 2019 16:46:11 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Oct 2019 07:46:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,252,1566889200"; d="scan'208";a="343684440" Received: from irsmsx154.ger.corp.intel.com ([163.33.192.96]) by orsmga004.jf.intel.com with ESMTP; 03 Oct 2019 07:46:05 -0700 Received: from irsmsx155.ger.corp.intel.com (163.33.192.3) by IRSMSX154.ger.corp.intel.com (163.33.192.96) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 3 Oct 2019 15:46:04 +0100 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.164]) by irsmsx155.ger.corp.intel.com ([169.254.14.139]) with mapi id 14.03.0439.000; Thu, 3 Oct 2019 15:46:04 +0100 From: "Ananyev, Konstantin" To: Anoob Joseph , "Smoczynski, MarcinX" , "akhil.goyal@nxp.com" CC: "dev@dpdk.org" , Jerin Jacob Kollanukkaran , Narayana Prasad Raju Athreya , Archana Muniganti Thread-Topic: [dpdk-dev] [PATCH v3 0/3] add fallback session Thread-Index: AQHVcgRpybp7qxFpeEujftbhitMyNac9nfaAgAA+IYCABNOdgIABgBhAgALv3QCAActlUA== Date: Thu, 3 Oct 2019 14:46:03 +0000 Message-ID: <2601191342CEEE43887BDE71AB97725801919709C0@irsmsx105.ger.corp.intel.com> References: <20190904141642.14820-1-marcinx.smoczynski@intel.com> <20190923114415.17932-1-marcinx.smoczynski@intel.com> <2601191342CEEE43887BDE71AB977258019196B087@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258019196D5B4@irsmsx105.ger.corp.intel.com> In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiODAxZWJmZTktMzM4OS00YWU4LWIzNzctZjZmNTAyNWMzZjU1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoib3B6TkJpWWFIUFBQaDVJWWdtSm0zMlpiODdGZndVY3RvNU9jcGlKeDZldmZ5NjNURXFFM0pLcXJ5NVwvSFJyVGgifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v3 0/3] add fallback session X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgQW5vb2IsDQoNCj4gPiA+ID4gPiBJJ3ZlIGZldyBtb3JlIG9ic2VydmF0aW9ucyByZWdhcmRp bmcgdGhlIHByb3Bvc2VkIGZlYXR1cmUuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAxLiBGcm9tIHdo YXQgSSB1bmRlcnN0b29kLCBpZiBhbiBFU1AgcGFja2V0IGVuZHMgdXAgb24gYW4NCj4gPiA+ID4g PiB1bnByb3RlY3RlZCBpbnRlcmZhY2UgYW5kIGRvZXNuJ3QgaGF2ZSAnUEtUX1JYX1NFQ19PRkZM T0FEJyBiaXQNCj4gPiA+ID4gPiBzZXQsIHRoZW4gdGhlIHBhY2tldA0KPiA+ID4gPiB3b3VsZCBi ZSBsb29rZWQgdXAgdG8gc2VlIHRoZSBhc3NvY2lhdGVkIFNBIGFuZCB0aGVuIGZhbGxiYWNrDQo+ ID4gPiA+IHNlc3Npb24gaXMgZmlndXJlZCBvdXQgYW5kIHRoZW4gZnVydGhlciBwcm9jZXNzaW5n IGlzIGRvbmUuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBDYW4geW91IGNvbmZpcm0gaWYgSSB1bmRl cnN0b29kIHRoZSBzZXF1ZW5jZSBjb3JyZWN0bHk/IElmIHllcywNCj4gPiA+ID4gPiB0aGVuIGFy ZW4ndCB3ZSBkb2luZyBhbiBleHRyYSBsb29rdXAgaW4gdGhlIHMvdz8gVGhlIHBhY2tldCBtYXkg YmUNCj4gPiA+ID4gPiBsb29rZWQgYnkgdGhlIGgvdyB1c2luZyBydGVfZmxvdyBhbmQgdGhhdCBp bmZvcm1hdGlvbiBjb3VsZCBiZQ0KPiA+ID4gPiA+IHVzZWQgdG8gZGV0ZXJtaW5lIHRoZQ0KPiA+ ID4gPiBTQS4gQWxzbywgaWYgdGhlIEVTUCBwYWNrZXQgaXMgZXhwZWN0ZWQgdG8gYmUgZm9yd2Fy ZGVkLCB0aGVuIHRoZQ0KPiA+ID4gPiBhYm92ZSBsb2dpYyB3aWxsIGFkZCBhbiB1bm5lY2Vzc2Fy eSBsb29rdXAgZXZlbiBhZnRlciB5b3VyIGgvdyBoYXMNCj4gPiA+ID4gZGV0ZWN0ZWQgdGhhdCB0 aGUgcGFja2V0IG5lZWQgbm90IGJlIHNlY3VyaXR5IHByb2Nlc3NlZC4NCj4gPiA+ID4NCj4gPiA+ ID4gTm90IHN1cmUgSSB1bmRlcnN0b29kIHlvdXIgd2hvbGUgc3RhdGVtZW50IGFib3ZlLg0KPiA+ ID4gPiBBRkFJSywgcmlnaHQgbm93ICh3aXRoIGRwZGsgbWFzdGVyKSBmb3IgdW5wcm90ZWN0ZWQg aWZhY2UgaXQgd29ya3MgbGlrZSB0aGF0Og0KPiA+ID4gPg0KPiA+ID4gPiAxLiAgc2xpdCBpbmNv bWluZyB0cmFmZmljIGludG8gMyBncm91cHM6IEVTUCBwYWNrZXRzLCBJUHY0IHBhY2tldHMsIElQ djYNCj4gPiBwYWNrZXRzLg0KPiA+ID4gPiBGb3IgRVNQIHBhY2tldHM6DQo+ID4gPiA+IDIuIHBl cmZvcm0gU0FEIGxvb2t1cA0KPiA+ID4gPiAgICAgYS4gaWYgaXQgZmFpbHMgKG5vbiBTQSBmb3Vu ZCBmb3IgdGhhdCBTUEkpLCB0aGVuIGRyb3AgdGhlIHBhY2tldC4NCj4gPiA+ID4gICAgIGIuIG90 aGVyd2lzZSAoU0EgZm91bmQpIHByb2Nlc3MgdGhlIHBhY2tldCB1c2luZyBmb3VuZCBTQQ0KPiA+ ID4gPg0KPiA+ID4gPiBXaGF0IGZhbGwtYmFjayBwYXRjaCBhZGRzOg0KPiA+ID4gPiBCZWZvcmUg c3RlcCAyLmIgY2hlY2s6DQo+ID4gPiA+IGRvZXMgdGhhdCBTQSBoYXMgaXRzIHByaW1hcnkgc2Vz c2lvbiAgd2l0aCB0eXBlIElOTElORS1DUllQVE8gYW5kDQo+ID4gPiA+IGRvZXMgSFcgZmFpbCB0 byBkbyBJUHNlYyByZWFsdGVkIHByb2Nlc3NpbmcgZm9yIGl0IChieSBzb21lIHJlYXNvbik/DQo+ ID4gPiA+IElmIHllcywgdGhlbiBtYXJrIHRoaXMgcGFja2V0IHRvIGJlIHByb2Nlc3NlZCBieSBm YWxsLWJhY2sgc2Vzc2lvbi4NCj4gPiA+ID4gaWYgKE1CVUZfTk9fU0VDX09GRkxPQUQocGt0KSAm JiBzYS0+ZmFsbGJhY2tfc2Vzc2lvbnMgPiAwKSB7DQo+ID4gPiA+ICAgICAgICAgICAgICAgICB1 aW50cHRyX3QgaW50c2EgPSAodWludHB0cl90KXNhOw0KPiA+ID4gPiAgICAgICAgICAgICAgICAg aW50c2EgfD0gSVBTRUNfU0FfT0ZGTE9BRF9GQUxMQkFDS19GTEFHOw0KPiA+ID4gPiAgICAgICAg ICAgICAgICAgcmVzdWx0X3NhID0gKHZvaWQgKilpbnRzYTsgIH0NCj4gPiA+ID4NCj4gPiA+ID4g U28gZnJvbSBteSBwZXJzcGVjdGl2ZSwgbm8gYWRkaXRpb25hbCBsb29rdXAgd2hlcmUgaW50cm9k dWNlZC4NCj4gPiA+DQo+ID4gPiBbQW5vb2JdIEZvciBpbmxpbmUgcHJvY2Vzc2luZywgaC93IGRv ZXMgYSBsb29rdXAgYW5kIGZpZ3VyZXMgb3V0IHRoZSBzZWN1cml0eQ0KPiA+IHByb2Nlc3Npbmcg dG8gYmUgZG9uZSBvbiB0aGUgcGFja2V0Lg0KPiA+ID4gInJ0ZV9zZWN1cml0eV9nZXRfdXNlcmRh dGEoKSIgYWxsb3dzIHMvdyB0byBmdXJ0aGVyIHNlZ3JlZ2F0ZSB0aGF0DQo+ID4gPiBpbmZvLiBJ biB0aGlzIGFwcHJvYWNoLCBJIGJlbGlldmUgd2UgZG9uJ3QgY29uc2lkZXIgaG93IHN1Y2ggaW5m byBmcm9tIGgvdyBjYW4NCj4gPiBiZSB1c2VkLg0KPiA+DQo+ID4gUmlnaHQgbm93IGl0IGlzIG5v dCB0aGUgY2FzZSB3aXRoIGlwc2VjLXNlY2d3Og0KPiANCj4gW0Fub29iXSBBcmUgeW91IHNheWlu ZyB0aGVyZSBpcyBubyBoL3cgbG9va3VwIGludm9sdmVkIHdoZW4gZG9pbmcgaW5saW5lIGNyeXB0 byBwcm9jZXNzaW5nPyBUaGVuIEknbSBjb25mdXNlZC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0 DQo+IHJ0ZV9mbG93IHdpdGggQUNUSU9OIHR5cGUgYXMgU0VDVVJJVFkgaXMgYmVpbmcgdXNlZCB0 byBzZXR1cCBoL3cgbG9va3Vwcy4NCg0KSSBhbSBzYXlpbmcgdGhhdCBjdXJyZW50IGlwc2VjLXNl Y2d3IGNvZGUgZm9yIGVhY2ggaW5ib3VuZCBFU1AgcGFja2V0ICphbHdheXMqIGRvZXMgU1cgbG9v a3VwLg0KTm8gbWF0dGVyIGRpZCBIVyBsb29rdXAgdGFrZSBwbGFjZSBhbHJlYWR5IGFuZCBkb2Vz IGluZm9ybWF0aW9uIGFib3V0IHRoYXQgbG9va3VwIGlzIGF2YWlsYWJsZQ0KdmlhIG1idWYgaW4g c29tZSB3YXkgb3Igbm90Lg0KSnVzdCBsb29rIGF0IHRoZSBpcHNlYy1zZWNndyBjb2RlIHlvdXJz ZWxmOg0KDQpuYl9yeCA9IHJ0ZV9ldGhfcnhfYnVyc3QocG9ydGlkLCBxdWV1ZWlkLCAgcGt0cywg TUFYX1BLVF9CVVJTVCk7DQoNCmlmIChuYl9yeCA+IDApDQoJcHJvY2Vzc19wa3RzKHFjb25mLCBw a3RzLCBuYl9yeCwgcG9ydGlkKTsNCg0KSW5zaWRlIHByb2Nlc3NfcGt0cygpDQpodHRwOi8vbHhy LmRwZGsub3JnL2RwZGsvbGF0ZXN0L2lkZW50L3ByZXBhcmVfb25lX3BhY2tldA0KIGl0IGZpcnN0 IGNhbGxzIHByZXBhcmVfdHJhZmZpYygpIHdoaWNoIGRvZXMgc29ydCBvZiBkZS1tdXhpbmc6DQpw dXQgcGFja2V0IGluIG9uZSBvZiAzIGFycmF5czogDQogICAxKSBFU1AgcGFja2V0cw0KICAgMikg bm9uIEVTUCBJUHY0IHBhY2tldHMNCiAgIDMpIG5vbiBFU1AgSVB2NiBwYWNrZXRzDQpBbHNvIGl0 IGNoZWNrcyBpcyBQS1RfUlhfU0VDX09GRkxPQUQgc2V0IGZvciB0aGF0IHBhY2tldC4NCklmIHll cywgaXQgcmV0cmlldmVzIGFzc29jaWF0ZWQgc2VjdXJpdHkgdXNlci1kYXRhIGFuZCBzdG9yZXMg aXQgaW5zaWRlIHByaXZhdGUgbWJ1ZiBhcmVhLg0KDQpUaGVuIGl0IGdvZXMgaW50byBwcm9jZXNz X3BrdHNfaW5ib3VuZCgpDQpodHRwOi8vbHhyLmRwZGsub3JnL2RwZGsvbGF0ZXN0L2lkZW50L3By b2Nlc3NfcGt0c19pbmJvdW5kDQphbmQgaGVyZSBmb3IgYWxsIEVTUCBwYWNrZXRzOg0KbGVnYWN5 IGNvZGUgcGF0aDoNCmlwc2VjX2luYm91bmQoKS0+aW5ib3VuZF9zYV9sb29rdXAoKS0+c2luZ2xl X2luYm91bmRfbG9va3VwKCkNCmZvciBsaWJydGVfaXBzZWMgY29kZSBwYXRoOg0KaW5ib3VuZF9z YV9sb29rdXAoKS0+c2luZ2xlX2luYm91bmRfbG9va3VwKCkNCg0Kc2luZ2xlX2luYm91bmRfbG9v a3VwKCkgaXMgdGhlIG9uZSB0aGF0IGRvZXMgYWN0dWFsIFNXIGxvb2t1cCBmb3IgZWFjaCBpbnB1 dCBwYWNrZXQuDQpodHRwOi8vbHhyLmRwZGsub3JnL2RwZGsvbGF0ZXN0L2lkZW50L3NpbmdsZV9p bmJvdW5kX2xvb2t1cA0KDQo+IA0KPiA+IGZvciBlYWNoIGluYm91bmQgRVNQIHBhY2tldCBpdCAq YWx3YXlzKiBkb2VzIGEgbG9va3VwIGluIFNXIGJhc2VkIFNBREIsIGFuZCBpZg0KPiA+IGxvb2t1 cCBmYWlscyAtIGRyb3BzIHRoZSBwYWNrZXQgKHNlZSAyLmEgYWJvdmUpLg0KPiA+IFNvLCBJIHN0 aWxsIG5vdCBzZWUgYW55IGFkZGl0aW9uYWwgbG9va3VwcyBpbnRyb2R1Y2VkIHdpdGggdGhlIHBh dGNoLg0KPiANCj4gW0Fub29iXSBJbiBjYXNlIG9mIGlubGluZSBjcnlwdG8sIHlvdSBjb3VsZCBk byB0aGF0LiBObyBkaXNhZ3JlZW1lbnQuIEJ1dCB0aGF0IGRvZXNuJ3QgbWVhbiB0aGF0IGlzIHRo ZSBvbmx5IHdheS4gSWYgUE1EcyBjYW4gcmV0cmlldmUgaW5mbw0KPiBhYm91dCBoL3cgbG9va3Vw cyBhbmQgcGFzcyBpdCBvbiB0byB0aGUgdXBwZXIgbGF5ZXJzLCBpc24ndCB0aGF0IHRoZSBiZXR0 ZXIgYXBwcm9hY2g/DQoNClBsZWFzZSBsZXQncyBrZWVwIG91ciBjb252ZXJzYXRpb24gaW4gYSBj b25zdHJ1Y3RpdmUgd2F5Lg0KV2UgYXJlIG5vdCBkaXNjdXNzaW5nIHdoYXQgY291bGQgYmUgZG9u ZSBpbiB0aGVvcnksIGJ1dCBhIHBhcnRpY3VsYXIgcGF0Y2ggZm9yIGlwc2VjLXNlY2d3Og0KUmln aHQgbm93IGlwc2VjLXNlY2d3IGRvZXMgYSBTVyBsb29rdXAgZm9yIGVhY2ggaW5ib3VuZCBFU1Ag cGFja2V0DQoobm8gbWF0dGVyIHdoYXQgSFcgb2ZmbG9hZCBkb2VzKSBhbmQgdGhpcyBwYXRjaCBk b2Vzbid0IGludHJvZHVjZQ0KYW55IGV4dHJhIFNXIGxvb2t1cHMuDQoNCklmIHlvdSBhcmUgbm90 IGhhcHB5IHdpdGggY3VycmVudCBpcHNlYy1zZWNndyBhcHByb2FjaCwgdGhhdCdzIGZpbmUgLQ0K ZmVlbCBmcmVlIHRvIHN1Ym1pdCBSRkMvcGF0Y2ggdG8gZml4IHRoYXQsIG9yIHN0YXJ0IGEgZGlz Y3Vzc2lvbiBpbiBhIG5ldyB0aHJlYWQuDQpJIGp1c3QgZG9uJ3Qgc2VlIHdoeSB3ZSBoYXZlIHRv IGRpc2N1c3MgaXQgaW4gY29udGV4dCBvZiB0aGlzIHBhdGNoLiAgDQoNCj4gDQo+ID4NCj4gPiA+ DQo+ID4gPiA+IEFsc28gQUZBSUssIHJpZ2h0IG5vdyB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0 byBjb25maWd1cmUNCj4gPiA+ID4gaXBzZWMtc2VjZ3cgdG8gQllQQVNTIHNvbWUgRVNQIHRyYWZm aWMuDQo+ID4gPiA+IFNob3VsZCB3ZSBkbyBpdCAodG8gY29uZm9ybSB0byBpcHNlYyBSRkMpIC0g dGhhdCdzIHByb2JhYmx5IHN1YmplY3QNCj4gPiA+ID4gb2YgYW5vdGhlciBkaXNjdXNzaW9uLg0K PiA+ID4NCj4gPiA+IFtBbm9vYl0gVGhlIGFwcHJvYWNoIChjaG9pY2Ugb2YgZmxhZ3MpIGZvcmNl cyBhIHNvZnR3YXJlLWJhc2VkIFNBDQo+ID4gPiBsb29rdXAgZm9yIHBhY2tldHMgdGhhdCBuZWVk IHRvIGJlIGJ5cGFzc2VkIGluc3RlYWQgb2YgbGV2ZXJhZ2luZyBwb3NzaWJsZQ0KPiA+IGhhcmR3 YXJlIFNBIGxvb2t1cC4gSSBkb24ndCB0aGluayB3aGF0IGlwc2VjLXNlY2d3IGRvZXMgbWF0dGVy cyBoZXJlLg0KPiA+DQo+ID4gSSBkbyBub3QgYWdyZWUgd2l0aCB0aGF0IHN0YXRlbWVudC4NCj4g PiBGaXJzdCBvZiBhbGwgLSBjdXJyZW50IHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBhZGRp dGlvbmFsIFNXIGxvb2t1cHMsIHNlZQ0KPiA+IGFib3ZlLg0KPiA+IFNlY29uZCwgaWYgc29tZW9u ZSB3b3VsZCBsaWtlIHRvIGFkZCBCWVBBU1MgZm9yIEVTUCBwYWNrZXRzIGludG8gaXBzZWMtc2Vj Z3csIEkNCj4gPiB0aGluayBoZSB3b3VsZCBoYXZlIHRvIGluc2VydCBuZXcgY29kZSB0aGF0IGRv IGRlLW11eCAqYmVmb3JlKiBhbnkgRVNQDQo+ID4gcmVsYXRlZCBwcm9jZXNzaW5nIHN0YXJ0cy4N Cj4gPiBNb3N0IG9idmlvdXMgdmFyaWFudDogYXQgcHJlcGFyZV9vbmVfcGFja2V0KCkgd2hlbiB3 ZSBzcGxpdCBvdXIgaW5jb21pbmcNCj4gPiB0cmFmZmljIHRvIElQc2VjIGFuZCBub24tSVBzZWMg b25lcy4NCj4gPiBTZWNvbmQgdmFyaWFudCAtIGF0IGVhcmx5IHN0YWdlIG9mIHNpbmdsZV9pbmJv dW5kX2xvb2t1cCgpLCBzdHJhaWdodCBhZnRlciBhY3R1YWwNCj4gPiBTQUQgbG9va3VwIGZhaWx1 cmUuDQo+ID4gSW4gYm90aCBjYXNlcywgSSBkb24ndCBzZWUgaG93IHNlc3Npb24gc2VsZWN0aW9u IChwcmltYXJ5IG9yIGZhaWxsYmFjaykgd291bGQNCj4gPiBhZmZlY3QgdXMgaGVyZSwgYWN0dWFs IGRlY2lzaW9uIGRvIHdlIHdhbnQgdG8gUFJPQ0VTUyBvciBCWVBBU1MgcGFydGljdWxhciBFU1AN Cj4gPiBwYWNrZXQgbmVlZHMgdG8gdGFrZSBwbGFjZSBiZWZvcmUgdGhhdC4NCj4gPiBTbyBJIHN0 aWxsIGJlbGlldmUgd2UgYXJlIG9rIGhlcmUuDQo+IA0KPiBbQW5vb2JdIEkgZG9uJ3QgdGhpbmsg eW91IHVuZGVyc3Rvb2Qgd2hhdCBJJ20gdHJ5aW5nIHRvIGhpZ2hsaWdodCBoZXJlLiBZb3UgY291 bGQgaGF2ZSBhIHNpdHVhdGlvbiB3aGVuIGgvdyBjYW4gZGV0ZWN0IHRoYXQgdGhlIHBhY2tldCBo YXMNCj4gdG8gYmUgIlBST1RFQ1QiZWQgdXNpbmcgYW4gImlubGluZSBjcnlwdG8iIHNlc3Npb24u IEJ1dCB0aGVuIGl0IG1pZ2h0IGRldGVjdCB0aGF0IGl0IGNhbm5vdCBwcm9jZWVkIHdpdGggaW5s aW5lIHByb2Nlc3NpbmcgYmVjYXVzZSBvZiBzb21lDQo+IGlzc3VlIChmcmFnbWVudGF0aW9uLCBo L3cgcXVldWUgb3ZlcmZsb3cgZXRjKS4gTm93IHRoZSBoL3cgaGFzIGFscmVhZHkgZmlndXJlZCBv dXQgdGhlIGFjdGlvbiB0byBiZSBkb25lIHRvIHRoZSBwYWNrZXQuIElmIFBNRHMgYWxsb3cgdGhp cw0KPiB0byBiZSBjb21tdW5pY2F0ZWQgdG8gdGhlIGFwcGxpY2F0aW9uLCB0aGUgYXBwbGljYXRp b24gd29uJ3QgYmUgcmVxdWlyZWQgdG8gZG8gdGhlIGxvb2t1cC4NCj4gDQo+IEluIGlubGluZSBj cnlwdG8sIGFwcGxpY2F0aW9uIGNhbiBpZ25vcmUgdGhlIGgvdyBsb29rdXAgZGF0YSBhbmQgZG8g YSBzL3cgbG9va3VwIHdpdGggdGhlIHByb3RvY29sIGhlYWRlcnMgYXMgdGhleSBhcmUgbm90IHN0 cmlwcGVkIG9mZi4gSXQNCj4gd2FzIGRvbmUgdGhpcyB3YXksIGJlY2F1c2UgQVBJIGFuZCB0aGUg YXNzb2NpYXRlZCBtZWFucyB0byBnZXQgdGhpcyBpbmZvIGZyb20gUE1EIHdhcyBub3QgaW50cm9k dWNlZCB3aGVuIGlubGluZSBjcnlwdG8gYW5kDQo+IGNvcnJlc3BvbmRpbmcgc3VwcG9ydCBpbiBJ bnRlbCdzIFBNRCB3YXMgYWRkZWQuIEJ1dCBpbmxpbmUgcHJvdG9jb2wgY2Fubm90IGRvIHRoZSBs b29rdXAgaW4gdGhlIGFwcGxpY2F0aW9uIGFuZCBzbyB0aGUgY29uY2VwdCBvZiB1c2VyZGF0YQ0K PiBldGMgd2FzIGludHJvZHVjZWQuIFRoZSBzYW1lIGNhbiBiZSBhcHBsaWVkIHRvIGlubGluZSBj cnlwdG8gYWxzby4gQWR2YW50YWdlPyBJdCBjb3VsZCByZW1vdmUgdGhlIGV4dHJhIGxvb2t1cCBk b25lIGluIHMvdy4NCj4gDQo+IFRvIHN1bW1hcml6ZSwgd2UgY2Fubm90IGFzc3VtZSB0aGF0IGV2 ZXJ5IGlubGluZSBjcnlwdG8gcGFja2V0IG5lZWQgdG8gbG9va2VkIHVwIGluIHRoZSBhcHBsaWNh dGlvbiB0byBmaWd1cmUgb3V0IHRoZSBwcm9jZXNzaW5nIGRvbmUgb24NCj4gdGhlIHBhY2tldC4g VGhlcmUgY2FuIGJlIGFwcGxpY2F0aW9ucyB3aGljaCByZWxpZXMgb24gaC93IGxvb2t1cCBkYXRh IHRvIGZpZ3VyZSBvdXQgdGhlIHByb2Nlc3NpbmcgZG9uZS4NCj4gDQo+IEV4YW1wbGU6IFVzaW5n IHJ0ZV9mbG93LCBJIGNhbiBjcmVhdGUgYSBydWxlIGZvciBFU1AgcGFja2V0cyB0byBiZSBNQVJL ZWQuIFRoZXJlIGlzIG5vIHNlY3VyaXR5IHNlc3Npb24gY3JlYXRlZCBmb3IgdGhlIGZsb3cgYW5k IHRoZQ0KPiBhcHBsaWNhdGlvbiBpbnRlbmRzIHRvIGZvcndhcmQgdGhpcyBmbG93IHBhY2tldHMg dG8gYSBkaWZmZXJlbnQgcG9ydC4gV2l0aCB5b3VyIGFwcHJvYWNoLCBldmVuIHRoZXNlIHBhY2tl dHMgd291bGQgYmUgbG9va2VkIHVwLiBUaGUNCj4gcGFja2V0IHdpbGwgaGF2ZSBpbmZvIGZyb20g dGhlIGgvdyBsb29rdXAgd2hpY2ggZG9lc24ndCBnZXQgdXNlZCwgYmVjYXVzZSB0aGUgYXBwcm9h Y2ggZmFpbHMgdG8gaW50cm9kdWNlIHRoZSByZXF1aXJlZCBjb25jZXB0cy4NCg0KSSB0aGluayBJ IHVuZGVyc3Rvb2QgeW91ciBwb2ludC4NCkJhc2ljYWxseSB5b3Ugc2F5aW5nIHRoYXQgaW4gZnV0 dXJlIHlvdXIgUE1EIGZvciB1bnByb2Nlc3NlZCBFU1AgcGFja2V0cyBtaWdodCBwcm92aWRlIHNv bWUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKHZpYSBydGVfc2VjdXJpdHlfZ2V0X3VzZXJkYXRh KSB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgU1cgLSBsZXQgc2F5IHRvIGNob29zZSBCWVBBU1MgZm9y IHN1Y2ggcGFja2V0cy4NCkN1cnJlbnQgaXBzZWMtc2VjZ3cgZG9lc24ndCBzdXBwb3J0IHN1Y2gg YWJpbGl0eS4NCllvdXIgY29uY2VybiBpcyB0aGF0IHRoaXMgcGF0Y2ggd2lsbCBzb21laG93IHBy ZXZlbnQgKG9yIHdpbGwgbWFrZSBpdCBoYXJkZXIpIGZvciB5b3UgdG8gbWFrZSB5b3VyIGZ1dHVy ZSBjaGFuZ2VzLg0KQ29ycmVjdD8NCklmLCBzbyB0aGVuIEkgc2FpZCBiZWZvcmUsIEkgZG9uJ3Qg dGhpbmsgdGhhdCBjb25jZXJuIGlzIHZhbGlkLg0KTW9zdCBvYnZpb3VzIHZhcmlhbnQgd2hlcmUg dG8gYWRkIHN1Y2ggY29kZSBpcyBpbmlzZGUNCmluc2lkZSBwcmVwYXJlX29uZV9wYWNrZXQoKSB3 aGVuIHdlIHNwbGl0IG91ciBpbmNvbWluZyB0cmFmZmljIHRvIElQc2VjIGFuZCBub24tSVBzZWMg b25lcy4NClRvIGJlIG1vcmUgc3BlY2lmaWMgc29tZXRoaW5nIGxpa2UgdGhhdA0KDQppZiAoZXRo LT5ldGhlcl90eXBlID09IHJ0ZV9jcHVfdG9fYmVfMTYoUlRFX0VUSEVSX1RZUEVfSVBWNCkpIHsN Cg0KICAgICAgICAgICAgICAgIGlwaDQgPSAoY29uc3Qgc3RydWN0IHJ0ZV9pcHY0X2hkciAqKXJ0 ZV9wa3RtYnVmX2Fkaihwa3QsDQogICAgICAgICAgICAgICAgICAgICAgICBSVEVfRVRIRVJfSERS X0xFTik7DQogICAgICAgICAgICAgICAgYWRqdXN0X2lwdjRfcGt0bGVuKHBrdCwgaXBoNCwgMCk7 DQoNCi0gICAgICAgICAgICAgICAgaWYgKGlwaDQtPm5leHRfcHJvdG9faWQgPT0gSVBQUk9UT19F U1ApDQorICAgICAgICAgICAgICAgIGlmIChpcGg0LT5uZXh0X3Byb3RvX2lkID09IElQUFJPVE9f RVNQKSB7DQorCQlpZiAocGt0LT5vbF9mbGFncyAmIFBLVF9SWF9TRUNfT0ZGTE9BRCkgew0KKwkJ CS8qIGV4dHJhY3QgZXh0cmEgaW5mbywgbWFrZSBkZWNpc2lvbiBiYXNlZCBvbiB0aGF0ICovDQor CQl9IGVsc2UNCgkJCXQtPmlwc2VjLnBrdHNbKHQtPmlwc2VjLm51bSkrK10gPSBwa3Q7CQkNCisJ ICAgfSANCg0KT2YgY291cnNlIHNvbWUgY29kZSByZW9yZGVyaW5nIG1pZ2h0IGJlIG5lZWRlZCB0 byBhdm9pZCBwZXJmb3JtYW5jZSBkcm9wLA0KYnV0IEkgc3VwcG9zZSB0aGUgbWFpbiBpZGVhIGlz IGNsZWFyIGVub3VnaC4gDQogU2Vjb25kIHZhcmlhbnQgLSBhdCBlYXJseSBzdGFnZSBvZiBzaW5n bGVfaW5ib3VuZF9sb29rdXAoKSwNCmVpdGhlciBiZWZvcmUgb3Igc3RyYWlnaHQgYWZ0ZXIgYWN0 dWFsIFNBRCBTVyBsb29rdXAgZmFpbHVyZS4NCkluIGJvdGggY2FzZXMsIHRoaXMgbmV3IGNvZGUg d2lsbCBiZSBleGVjdXRlZCAqYmVmb3JlKiBzZXNzaW9uIHNlbGVjdGlvbiBjb2RlLg0KDQo+IA0K PiBEb2VzIHRoZSBhYm92ZSBzb3VuZCBsaWtlIEJZUEFTUz8gWWVzLg0KPiBEb2VzIGlwc2VjLXNl Y2d3IGRvIGl0IHRoaXMgd2F5PyBOby4NCg0KQ29ycmVjdCwgaXQgZG9lc24ndC4NCllvdSBoYXZl IHRvIHN1Ym1pdCBwYXRjaGVzIGlmIHlvdSdkIGxpa2UgdG8gc3VwcG9ydCBzdWNoIGFiaWxpdHku IA0KDQo+IERvZXMgdGhpcyBhcHByb2FjaCBwcmV2ZW50IGFuIGFwcGxpY2F0aW9uIGZyb20gaW50 cm9kdWNpbmcgc3VjaCBhIEJZUEFTUz8gWWVzLg0KDQpUaGF0J3Mgbm90IGNvcnJlY3QsIEkgYmVs aWV2ZSwgc2VlIGFib3ZlLg0KDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4gRm9yIGV4YW1wbGUsIEVT TiB3YXMgbm90IHN1cHBvcnRlZCBieSBpcHNlYy1zZWNndyAoYmVmb3JlIGxpYnJhcnkgbW9kZQ0K PiA+ID4gd2FzIGludHJvZHVjZWQpLCBidXQgZXZlcnkgc2luZ2xlIGxpYnJhcnkgY2hhbmdlIGFu ZCBhcHBsaWNhdGlvbg0KPiA+ID4gY2hhbmdlIHdhcyBhZGRlZCBrZWVwaW5nIGluIG1pbmQgdGhh dCBFU04gaXMgYSB2YWxpZCBmZWF0dXJlIGZvciBpcHNlYy4gU28gaXQgaXMNCj4gPiBvbmUgdGhp bmcgdG8gc2F5IGlwc2VjLXNlY2d3IGRvZXNuJ3Qgc3VwcG9ydCBFU1AgYnlwYXNzIGFuZCBzYXlp bmcgdGhlIHNvbHV0aW9uDQo+ID4gZG9lc24ndCBjb25zaWRlciBhIHBvc3NpYmlsaXR5IG9mIEVT UCBieXBhc3MuDQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gMi4gVGhlIHNv bHV0aW9uIHByb3Bvc2VkIGhlcmUgc2VlbXMgbGlrZSBhZGRpbmcgdGhlIGhhbmRsaW5nIGluDQo+ ID4gPiA+ID4gaXBzZWMtc2VjZ3cgaW5zdGVhZCBvZiBpcHNlYyBsaWJyYXJ5LiBJbiBvdGhlciB3 b3JkcywgdGhpcyBmZWF0dXJlDQo+ID4gPiA+ID4gaXMgbm90IGdldHRpbmcNCj4gPiA+ID4gYWRk ZWQgaW4gaXBzZWMgbGlicmFyeSwgd2hpY2ggd2FzIHN1cHBvc2VkIHRvIHNpbXBsaWZ5IHRoZSB3 aG9sZQ0KPiA+ID4gPiBpcHNlYyB1c2FnZSBpbiBEUERLLCBidXQgZmFpbHMgdG8gaGFuZGxlIHRo ZSBjYXNlIG9mIGZyYWdtZW50YXRpb24uDQo+ID4gPiA+DQo+ID4gPiA+IFdoYXQgd2UgaGF2ZSBy aWdodCBub3cgd2l0aCBpcHNlYyBsaWJyYXJ5IGlzIFNBIChsb3cpIGxldmVsIEFQSS4NCj4gPiA+ ID4gSXQgY2FuIGhhbmRsZSBtdWx0aS1zZWdtZW50IHBhY2tldHMgcHJvcGVybHksIGJ1dCBleHBl Y3RzIHNvbWVvbmUNCj4gPiA+ID4gZWxzZSB0byBkbyBvdGhlciBzdGVwcyAoZnJhZ21lbnRhdGlv bi9yZWFzc2VtYmx5KS4NCj4gPiA+ID4gaXBzZWMtc2VjZ3cgZGVtb25zdHJhdGVzIGhvdyBsaWJy dGVfaXBfZnJhZyBhbmQgbGlicnRlX2lwc2VjIGNhbiBiZQ0KPiA+ID4gPiB1c2VkIHRvZ2V0aGVy IHRvIGRlYWwgd2l0aCBmcmFnbWVudGVkIElQc2VjIHRyYWZmaWMgaW4gYSBwcm9wZXIgbWFubmVy Lg0KPiA+ID4gPiBQcm9iYWJseSBpbiBmdXR1cmUgd2UnbGwgY29uc2lkZXIgYWRkaW5nIHNvbWUg aGlnaC1sZXZlbCBBUEkgdGhhdA0KPiA+ID4gPiB3aWxsIGJlIGFibGUgdG8gZG8gd2hvbGUgcHJv Y2Vzc2luZyB1bmRlciBob29kIChTUEQvU0FEIGxvb2t1cCwNCj4gPiA+ID4gZnJhZ21lbnQvcmVh c3NlbWJseSwgYWN0dWFsIElQc2VjIHBhY2tldCBwcm9jZXNzaW5nLCBtYXRjaGluZw0KPiA+ID4g PiBpbmJvdW5kIHNlbGVjdG9ycywgZXRjLiksIGJ1dCByaWdodCBub3cgaXQgaXMgbm90IHRoZSBj YXNlLg0KPiA+ID4gPg0KPiA+ID4gPiA+IEFsc28sIHNpbmNlIHRoZSBmYWxsYmFjayBmZWF0dXJl IGlzIGVudGlyZWx5IGRvbmUgaW4gdGhlDQo+ID4gPiA+ID4gYXBwbGljYXRpb24sIGl0IGJlZ3Mg dGhlDQo+ID4gPiA+IHF1ZXN0aW9uIHdoeSB0aGUgc2FtZSBmZWF0dXJlIGlzIG9taXR0ZWQgZm9y IGxlZ2FjeSB1c2UgY2FzZS4NCj4gPiA+ID4NCj4gPiA+ID4gQmVjYXVzZSBsZWdhY3kgbW9kZSBk b2Vzbid0IHN1cHBvcnQgbXVsdGktc2VnIHBhY2tldHMgYXQgZmlyc3QgcGxhY2UuDQo+ID4gPiA+ IEFsc28gaXQgaXMgYW4gZXh0cmEgb3ZlcmhlYWQgdG8gc3VwcG9ydCAyIGNvZGUtcGF0aHMgKGxl Z2FjeSBhbmQNCj4gPiA+ID4gbGlicmFyeSkgZm9yIHRoZSBzYW1lIGFwcCwgc28gd2UnZCBsaWtl IGluIGZ1dHVyZSB0byBkZXByZWNhdGUgYW5kDQo+ID4gPiA+IGxhdGVyIHJlbW92ZSBsZWdhY3kg Y29kZS0gcGF0aC4NCj4gPiA+ID4gQXMgYSBmaXJzdCBzdGVwIHdlIHByb3Bvc2UgdG8gbWFrZSBs aWJyYXJ5IGNvZGUtcGF0aCBhIGRlZmF1bHQgb25lOg0KPiA+ID4gPiBodHRwczovL3VybGRlZmVu c2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cC0zQV9fcGF0Y2hlcy5kcGRrLm9yZw0KPiA+ ID4gPg0KPiA+IF9jb3Zlcl81ODI0N18mZD1Ed0lGQWcmYz1uS2pXZWMyYjZSMG1PeVBhejd4dGZR JnI9alBmQjhyd3d2aVJTeHlMDQo+ID4gV3MyDQo+ID4gPiA+IG42Qi1XWUxuMXY5U3lUTXJUNUVR cWgyVFUmbT1iM0U0MjlmdW84UC1LNVhmSDh3Ry0NCj4gPiA3aHdyMWQ4b000dUpHRXJBa2JmDQo+ ID4gPiA+IER2QSZzPXZ6N2lvVXpKT3V6b0pkbVY3UU8wUUxQS1luMXl0RnNqXzBlWWF0YlNDcmcm ZT0NCj4gPiA+DQo+ID4gPiBbQW5vb2JdIEV2ZW4gaWYgd2UgbmVlZCB0aGUgYXBwbGljYXRpb24g dG8gZG8gdGhlIHJlYXNzZW1ibHksIGl0IHdvdWxkDQo+ID4gPiBsb29rIHNpbXBsZSBpZiBhcHBs aWNhdGlvbiB1c2VzIHRoZSBzYW1lICJydGVfaXBzZWNfc2Vzc2lvbiIgdG8gcHJvY2VzcyB0aGUN Cj4gPiBmYWxsYmFjayBwYWNrZXQuDQo+ID4NCj4gPiBJIHRoaW5rIHRoZXJlIGlzIHNvbWUgc29y dCBvZiBtaXN1bmRlcnN0YW5kaW5nIGhlcmUuDQo+ID4gV2l0aCBjdXJyZW50IGxpYnJ0ZV9pcHNl YyBkZXNpZ246DQo+ID4gcnRlX2lwc2VjX3NhIC0gb3BhcXVlIFNXIHJlcHJlc2VudGF0aW9uIG9m IHRoZSBTQSAoSFcgbmV1dHJhbCkNCj4gPiBydGVfaXBzZWNfc2Vzc2lvbiBhc3NvY2lhdGVzIFNB IChydGVfaXBzZWNfc2Epd2l0aCBwYXJ0aWN1bGFyIEhXIGRldmljZQ0KPiA+IChzZXNzaW9uKS4N Cj4gPiBTYW1lIFNBIGNhbiBiZSByZWZlcnJlZCBieSBtdWx0aXBsZSBzZXNzaW9ucy4NCj4gPg0K PiA+IEZyb20gcnRlX2lwc2VjLmg6DQo+ID4gLyoqDQo+ID4gICogcnRlX2lwc2VjX3Nlc3Npb24g aXMgYW4gYWdncmVnYXRlIHN0cnVjdHVyZSB0aGF0IGRlZmluZXMgcGFydGljdWxhcg0KPiA+ICAq IElQc2VjIFNlY3VyaXR5IEFzc29jaWF0aW9uIElQc2VjIChTQSkgb24gZ2l2ZW4gc2VjdXJpdHkv Y3J5cHRvIGRldmljZToNCj4gPiAgKiAtIHBvaW50ZXIgdG8gdGhlIFNBIG9iamVjdA0KPiA+ICAq IC0gc2VjdXJpdHkgc2Vzc2lvbiBhY3Rpb24gdHlwZQ0KPiA+ICAqIC0gcG9pbnRlciB0byBzZWN1 cml0eS9jcnlwdG8gc2Vzc2lvbiwgcGx1cyBvdGhlciByZWxhdGVkIGRhdGENCj4gPiAgKiAtIHNl c3Npb24vZGV2aWNlIHNwZWNpZmljIGZ1bmN0aW9ucyB0byBwcmVwYXJlL3Byb2Nlc3MgSVBzZWMg cGFja2V0cy4NCj4gPiAgKi8NCj4gPg0KPiA+ID4gSW4gdGhhdCBjYXNlLCB0aGUgcHJvY2Vzc2lu ZyByZXF1aXJlZCB0byBoYW5kbGUgdGhlIG90aGVyIHBhY2tldCB3aWxsDQo+ID4gPiBiZSBoaWRk ZW4gZnJvbSB0aGUgYXBwbGljYXRpb24uIEhlcmUgYXBwbGljYXRpb24gaGFzIHRvIG1ha2Ugc3Vy ZSBpdCBjaG9vc2VzDQo+ID4gdGhlIGNvcnJlY3Qgc2Vzc2lvbiwgd2hpY2ggSSBiZWxpZXZlIHNo b3VsZCBiZSBtb3ZlZCB0byBpcHNlYyBsaWJyYXJ5Lg0KPiA+DQo+ID4gRnJvbSBteSBzaWRlIGl0 IGlzIGEgZ29vZCB0aGluZyB0byBsZXQgYXBwbGljYXRpb24gZGVmaW5lIGl0cyBvd24gdXNhZ2Ug bW9kZWwuDQo+ID4gSS5FLiBsaWJydGVfaXBzZWMgc3VwcG9ydHMgbXVsdGlwbGUtc2Vzc2lvbnMg cGVyIFNBLCB1cHBlci1sYXllciAoYXBwKSBkZWNpZGVzIGhvdw0KPiA+IGl0IHdpbGwgdXNlIHRo YXQgZmVhdHVyZS4NCj4gPiBUaG91Z2ggaWYgeW91IHN0cm9uZ2x5IGZlZWwgdGhhdCBzb21lIGhp Z2hlci1sZXZlbCBBUEkgaXMgbmVlZGVkIGhlcmUsIGFuZCBoYXZlDQo+ID4gc29tZSBnb29kIGlk ZWFzIGFib3V0IGl0ICAtIHBsZWFzZSBnbyBhaGVhZCBhbmQgc3VibWl0IFJGQyBmb3IgaXQuDQo+ IA0KPiBbQW5vb2JdIElmIHlvdSBhcmUgb2theSB3aXRoIGFwcGxpY2F0aW9uIGRlZmluaW5nIGhv dyBpdCBpbXBsZW1lbnRzIGlwc2VjLCB0aGVuIHByb2JhYmx5IHRoZXJlIGlzIG5vIHVzZSBjYXNl IGZvciBsaWIgaXBzZWM/DQoNCjopDQpPbmNlIGFnYWluIC0gbGlicmFyeSBwcm92aWRlcyBhbiBp bXBsZW1lbnRhdGlvbi4NCkFwcGxpY2F0aW9uIGRlZmluZXMgdGhlIHdheSB0byB1c2UgaXQsIGku ZS4gaG93IGl0IHdpbGwgYXBwbHkgZnVuY3Rpb25hbGl0eSBsaWJyYXJ5IHByb3ZpZGVzIGZvciBk aWZmZXJlbnQgdXNlLWNhc2Ugc2NlbmFyaW9zLg0KQXMgYW4gZXhhbXBsZTogc25wcml0bmYoKSBw cm92aWRlcyB1c2VyIHdpdGggYWJpbGl0eSB0byBmb3JtYXQgc3RyaW5ncywNCmFwcGxpY2F0aW9u IGRlY2lkZXMgd2hhdCBleGFjdGx5IGZvcm1hdCB0byB1c2UgYW5kIGZvciB3aGljaCBzdHJpbmcu DQpTYW1lIGZvciBsaWJydGVfaXBzZWMsIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0 byBwZXJmb3JtIHByb2Nlc3NpbmcgZm9yIEVTUCBwYWNrZXRzLg0KQXBwbGljYXRpb24gZGVmaW5l cyB3aGljaCBwYWNrZXRzIHRvIHByb2Nlc3MgYW5kIHdoYXQgc2Vzc2lvbiB0byB1c2UuIA0KDQo+ IA0KPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gMy4gSXQgc2VlbXMg bGlrZSBvcmRlcmluZyB3b24ndCBiZSBtYWludGFpbmVkIG9uY2UgdGhpcyBwcm9jZXNzaW5nDQo+ ID4gPiA+ID4gaXMgZG9uZS4gQWdhaW4sIHRoaXMgaXMgdGhlIHNlcXVlbmNlIEkgdW5kZXJzdG9v ZC4gUGxlYXNlIGNvcnJlY3QNCj4gPiA+ID4gPiBtZSBpZiBJIG1pc3NlZA0KPiA+ID4gPiBzb21l dGhpbmcsDQo+ID4gPiA+ID4gICAgICAgIGEuIEFwcGxpY2F0aW9uIHJlY2VpdmVzIGEgYnVuY2gg b2YgcGFja2V0cyAobGV0J3Mgc2F5IDYNCj4gPiA+ID4gPiBwYWNrZXRzKSwgaW4gd2hpY2ggZmV3 IGFyZSBmcmFnbWVudGVkIChQMyAmIFA0KSBhbmQgdGhlIHJlc3QgY2FuDQo+ID4gPiA+ID4gYmUg aW5saW5lDQo+ID4gPiA+IHByb2Nlc3NlZC4NCj4gPiA+ID4gPiAgICAgICAgYi4gQXBwbGljYXRp b24gcmVjZWl2ZXMgUDEtPlAyLT5QMy0+UDQtPlA1LT5QNiAoaW4gdGhpcywNCj4gPiA+ID4gPiBQ MSwgUDIsIFA1LCBQNiBhcmUNCj4gPiA+ID4gaW5saW5lIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkp IGFuZCBQNCAmIFA1IGFyZSB0aGUgZnJhZ21lbnRzDQo+ID4gPiA+ID4gICAgICAgIGMuIEFwcGxp Y2F0aW9uIGdyb3VwcyBwYWNrZXRzLiBQMS0+UDItPlA1LT5QNiBiZWNvbWVzIG9uZQ0KPiA+ID4g PiA+Z3JvdXAgYW5kIFAzLQ0KPiA+ID4gPiA+UDQgYmVjb21lcyBhbm90aGVyIGFuZCBnb2VzIGZv ciBmYWxsYmFjayBwcm9jZXNzaW5nLg0KPiA+ID4gPiA+IE5vdyBob3cgaXMgb3JkZXJpbmcgbWFp bnRhaW5lZD8gSSBjb3VsZG4ndCBmaWd1cmUgb3V0IGhvdyB0aGF0IGlzDQo+ID4gPiA+ID5kb25l IGluIHRoaXMNCj4gPiA+ID4gY2FzZS4NCj4gPiA+ID4NCj4gPiA+ID4gWW91IHJpZ2h0LCBmYWxs YmFjayBzZXNzaW9uIGNhbiBpbnRyb2R1Y2UgcGFja2V0IHJlb3JkZXJpbmcuDQo+ID4gPiA+IEF0 IGxlYXN0IHRpbGwgd2UnbGwgaGF2ZSBhYmlsaXR5IHRvIHByb2Nlc3MgcGFja2V0cyBpbiBzeW5j IG1vZGUgdG9vLg0KPiA+ID4gPiBTZWUgb3VyIHByZXNlbnRhdGlvbiBhdCBkcGRrIHVzZXJzcGFj ZSAoc2xpZGVzIDE3LCAxOCk6DQo+ID4gPiA+IGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50 LmNvbS92Mi91cmw/dT1odHRwcy0zQV9fc3RhdGljLnNjaGVkLmNvDQo+ID4gPiA+IG1faG9zdGVk LTVGZmlsZXNfZHBka2JvcmRlYXV4MjAxOV84Zl9EUERLLQ0KPiA+IDJESVBTRUN1OS5wZGYmZD1E d0lGQWcmYz1uDQo+ID4gPiA+IEtqV2VjMmI2UjBtT3lQYXo3eHRmUSZyPWpQZkI4cnd3dmlSU3h5 TFdzMm42Qi0NCj4gPiBXWUxuMXY5U3lUTXJUNUVRcWgyVFUmDQo+ID4gPiA+IG09YjNFNDI5ZnVv OFAtSzVYZkg4d0ctDQo+ID4gN2h3cjFkOG9NNHVKR0VyQWtiZkR2QSZzPU1MUm5uWWN5a2puc3FY ckhHVXVSDQo+ID4gPiA+IFlIYzV1RHhhQW9kMFlsN2YwNkVRcjFNJmU9IFJpZ2h0IG5vdyB0aGUg b25seSB3YXkgdG8gZGVhbCB3aXRoIGl0IC0NCj4gPiA+ID4gaGF2ZSByZXBsYXkgd2luZG93IGJp ZyBlbm91Z2ggdG8gc3VzdGFpbiByZW9yZGVyaW5nIGFuZCBhc3luYw0KPiA+ID4gPiBwcm9jZXNz aW5nIGxhdGVuY3kuDQo+ID4gPiA+IFRoYXQncyBhY3R1YWxseSBhbm90aGVyIHJlYXNvbiB3aHkg d2UgYWRkIHRoaXMgZmVhdHVyZSBpbnRvDQo+ID4gPiA+IGlwc2VjLXNlY2d3IHNhbXBsZQ0KPiA+ ID4gPiBhcHA6DQo+ID4gPiA+IHNvIHBlb3BsZSBjYW4gZXZhbHVhdGUgaXQgb24gdGhlaXIgcGxh dGZvcm1zLCBkZXRlcm1pbmUgd2hhdCByZXBsYXkNCj4gPiA+ID4gd2luZG93IHNpemUgd291bGQg YmUgbmVlZGVkLCB3aGF0IGlzc3Vlcy9zbG93ZG93bnMgaXQgbWlnaHQgY2F1c2UsIGV0Yy4NCj4g PiA+DQo+ID4gPiBbQW5vb2JdIFRoaXMgaXMgc29tZXRoaW5nIEkgaGFkIG5vdGljZWQgd2hpbGUg Z29pbmcgdGhyb3VnaCB0aGUgY29kZSBmbG93Lg0KPiA+IFRoZSBvcmRlcmluZyBpbmZvIGlzIGxv c3QgYmVjYXVzZSBvZiB0aGUgYXBwcm9hY2guDQo+ID4NCj4gPiBPbmNlIGFnYWluLCBpdCBpcyBh IGtub3duIGxpbWl0YXRpb24gYW5kIHdlIGFyZSBub3QgdHJ5aW5nIHRvIGhpZGUgaXQgZnJvbSB5 b3UgOikNCj4gDQo+IFtBbm9vYl0gTmV2ZXIgc2FpZCBpdCB3YXMgaGlkZGVuLiBJbml0aWFsbHkg SSBoYWQgb2theWVkIHRoZSBhcHByb2FjaCBldmVuIHRob3VnaCBpdCB3YXNuJ3QgYSBzb2x1dGlv biBzdWl0YWJsZSBmb3IgaW5saW5lIHByb3RvY29sLiBCdXQgYXMNCj4gbW9yZSBjYXNlcyB3ZXJl IGNvbnNpZGVyZWQsIGZldyBzaG9ydGNvbWluZ3Mgd2VyZSBvYnNlcnZlZCwgYW5kIEkgd2FzIHNr ZXB0aWNhbCBhYm91dCBob3cgYW55IG9mIHRoYXQgd291bGQgYmUgc29sdmVkIGluIHRoZSBsb25n IHJ1bi4NCj4gDQo+IE15IHN1Z2dlc3Rpb24sIGlmIHRoZXNlIGxpbWl0YXRpb25zIGFuZCB0aGUg cGxhbnMgdG8gYWRkcmVzcyBpdCB3ZXJlIG1lbnRpb25lZCBpbiB0aGUgY292ZXIgbGV0dGVyLCB3 ZSBjb3VsZCd2ZSBzYXZlZCBmZXcgY3ljbGVzIGhlcmUuDQoNClBvaW50IHRha2VuLg0KDQo+IEJ1 dCBteSByZXBseSB3b3VsZCBzdGlsbCBiZSB0aGUgc2FtZSDwn5iKDQo+IA0KPiA+IEl0DQo+ID4g d2FzIG91dGxpbmVkIGhlcmU6DQo+ID4gaHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29t L3YyL3VybD91PWh0dHBzLQ0KPiA+IDNBX19zdGF0aWMuc2NoZWQuY29tX2hvc3RlZC01RmZpbGVz X2RwZGtib3JkZWF1eDIwMTlfOGZfRFBESy0NCj4gPiAyRElQU0VDdTkucGRmJmQ9RHdJRkFnJmM9 bktqV2VjMmI2UjBtT3lQYXo3eHRmUSZyPWpQZkI4cnd3dmlSU3h5TA0KPiA+IFdzMm42Qi1XWUxu MXY5U3lUTXJUNUVRcWgyVFUmbT1iM0U0MjlmdW84UC1LNVhmSDh3Ry0NCj4gPiA3aHdyMWQ4b000 dUpHRXJBa2JmRHZBJnM9TUxSbm5ZY3lram5zcVhySEdVdVJZSGM1dUR4YUFvZDBZbDdmMDZFDQo+ ID4gUXIxTSZlPQ0KPiA+IEFuZCBpbiB0aGUgbGF0ZXN0IHBhdGNoIHZlcnNpb24gTWFyY2luIGNs ZWFybHkgc3RhdGVkIGl0IGluc2lkZSB0aGUgQUcgc2Vzc2lvbjoNCj4gPiBodHRwczovL3VybGRl ZmVuc2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cC0NCj4gPiAzQV9fcGF0Y2hlcy5kcGRr Lm9yZ19wYXRjaF82MDAzOV8mZD1Ed0lGQWcmYz1uS2pXZWMyYjZSMG1PeVBhejd4dGYNCj4gPiBR JnI9alBmQjhyd3d2aVJTeHlMV3MybjZCLVdZTG4xdjlTeVRNclQ1RVFxaDJUVSZtPWIzRTQyOWZ1 bzhQLQ0KPiA+IEs1WGZIOHdHLQ0KPiA+IDdod3IxZDhvTTR1SkdFckFrYmZEdkEmcz16cm45MVZq Zl9aRWxBbERmN0llWkdtR2V2Y0E2Uk13cFBUTFVDR2xnWg0KPiA+IGNZJmU9DQo+ID4gSWYgeW91 IHRoaW5rIGV2ZW4gZnVydGhlciBjbGFyaWZpY2F0aW9uIHdpdGhpbiB0aGUgZG9jIGlzIG5lZWRl ZCwgcGxlYXNlIGxldCB1cw0KPiA+IGtub3cuDQo+ID4NCj4gPiBBYm91dCB0aGUgYWN0dWFsIHBh Y2tldCByZS1vcmlkZXJpbmc6DQo+ID4gIEFGQUlLLCBmb3Igc29tZSB1c2UtY2FzZXMgaXQgbWln aHQgYmUgYWNjZXB0YWJsZSwgZm9yIG90aGVycyBub3QuDQo+ID4gVGhvdWdoIGl0IGlzIGFuIG9w dGlvbmFsIGZlYXR1cmUsIHRoYXQgd291bGRuJ3QgYmUgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyB1 c2VyIGNhbg0KPiA+IGFsd2F5cyBjaG9vc2UgaXMgaXQgZG9lcyBoZSBuZWVkcy93YW50cyB0aGlz IGZlYXR1cmUgb3Igbm90Lg0KPiA+IElmL3doZW4gd2UnbGwgaGF2ZSBDUFVfQ1JZUFRPIHByb2Nl c3NpbmcgbW9kZToNCj4gDQo+IFtBbm9vYl0gU2hvdWxkbid0IHdlIGdldCB0aGF0IGFjY2VwdGVk IGZpcnN0IHRoZW4/DQoNCkkgZG9uJ3QgdGhpbmsgc28uDQpDdXJyZW50IGltcGxlbWVudGF0aW9u IGRvZXMgcHJvdmlkZSBleHBlY3RlZCBmdW5jdGlvbmFsaXR5ICh3aXRoIGtub3duIGxpbWl0YXRp b25zKS4NCkluIGZ1dHVyZSwgd2UgY2FuIHRyeSB0byBpbXByb3ZlIGl0IGFuZC9vciByZW1vdmUg ZXhpc3RpbmcgbGltaXRhdGlvbnMuDQpUaGF0J3MgYSBjb21tb24gaXRlcmF0aW9uIGRldmVsb3Bt ZW50IGFwcHJvYWNoIHRoYXQgaXMgdXNlZCB0aG91Z2ggd2hvbGUgRFBESzoNCi0gcHJvdmlkZSBp bml0aWFsIHNvbHV0aW9uIHdpdGggYmFzaWMgZnVuY3Rpb25hbGl0eSBmaXJzdA0KLSBpbXByb3Zl L2V4dGVuZCB3aXRoIGZ1dHVyZSByZWxlYXNlcy9wYXRjaGVzDQoNCj4gDQo+IEFsc28sIHRoZSBv cmRlcmluZyBpcyBsb3N0IGJlY2F1c2UgYXBwbGljYXRpb24gaXMgbm90IGNvbnNpZGVyaW5nIHRo YXQuIFdoeSBjYW4ndCB3ZSB1c2UgcmUtb3JkZXJpbmcgbGlicmFyeT8gT3IgYW4gZXZlbnQtZGV2 Pw0KDQpOby1vbmUgc2F5aW5nIGl0IGNhbid0IGJlIGltcHJvdmVkIGluIG9uZSB3YXkgb3IgYW5v dGhlci4NCldlIGRvbid0IHBsYW4gdG8gaW50cm9kdWNlIHN1Y2ggY29kZSByaWdodCBub3cgZHVl IHRvIGl0cyBjb21wbGV4aXR5Lg0KTWlnaHQgYmUgc29tZXRoaW5nIGluIGZ1dHVyZS4NClRob3Vn aCB5b3UgYXJlIHdlbGNvbWUgdG8gZ28gYWhlYWQgYW5kIHN1Ym1pdCB5b3VyIG93biBwYXRjaGVz IHRvIGltcHJvdmUgdGhhdCBzb2x1dGlvbi4gICANCg0KPiANCj4gPiBodHRwczovL3VybGRlZmVu c2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cC0NCj4gPiAzQV9fcGF0Y2hlcy5kcGRrLm9y Z19jb3Zlcl81ODg2Ml8mZD1Ed0lGQWcmYz1uS2pXZWMyYjZSMG1PeVBhejd4dGYNCj4gPiBRJnI9 alBmQjhyd3d2aVJTeHlMV3MybjZCLVdZTG4xdjlTeVRNclQ1RVFxaDJUVSZtPWIzRTQyOWZ1bzhQ LQ0KPiA+IEs1WGZIOHdHLQ0KPiA+IDdod3IxZDhvTTR1SkdFckFrYmZEdkEmcz1rMXplZl8xdXFF TFhibEtOM19xalgwNFdYTkZHQVVFRklJSnJ2S1ByNg0KPiA+IGVBJmU9DQo+ID4gd2UnbGwgYWRk IGFiaWxpdHkgZm9yIHRoZSB1c2VyIHRvIGF2b2lkIHRoaXMgcmVvcmRlcmluZyBwcm9ibGVtDQo+ ID4NCj4gPiA+IEFzIHdlIGRpZyBkZWVwZXIsIHRoZSBmZWF0dXJlIGxvb2tzIGhhcmRseSBjb21w bGV0ZS4gVGhlIGNvbmNlcm5pbmcNCj4gPiA+IHBhcnQgaXMgdGhlIGFwcHJvYWNoIGRvZXNuJ3Qg c2VlbSBjb25kdWNpdmUgdG8gZml4aW5nIGFueSBvZiB0aGVzZSBpc3N1ZXMgaW4gdGhlDQo+ID4g ZnV0dXJlLg0KPiA+DQo+ID4gQWdhaW4sIGRvbid0IGFncmVlIHdpdGggdGhhdCBzdGF0ZW1lbnQu DQo+ID4gRnJvbSBteSBwZXJzcGVjdGl2ZTogd2hpbGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBo YXMgaXRzIGxpbWl0YXRpb25zIChwYWNrZXQNCj4gPiByZW9yZGVyaW5nLCBpbmxpbmUtcHJvdG8v bGtzZC1wcm90byksIGl0IGlzIHRvdGFsbHkgZnVuY3Rpb25hbCBhbmQgcHJvdmlkZXMgdXNlcnMN Cj4gPiB3aXRoIGEgcmVmZXJlbmNlIGhvdyB0byBkZWFsIHdpdGggc3VjaCBraW5kIG9mIHByb2Js ZW1zLg0KPiANCj4gW0Fub29iXSBXZWxsLCB0aGF0IGlzIGV4YWN0bHkgbXkgcHJvYmxlbS4gSXQg Z2l2ZXMgYSBza2V3ZWQgcmVmZXJlbmNlIG9uIGhvdyB0byBkZWFsIHdpdGggdGhlIHByb2JsZW0s IHdpdGhvdXQgY29uc2lkZXJpbmcgb3RoZXINCj4gcG9zc2liaWxpdGllcy4NCg0KT25jZSBhZ2Fp biwgcGxlYXNlIGZlZWwgZnJlZSBhbmQgY29tZS11cCB3aXRoIHlvdXIgb3duIHBhdGNoZXMsIHRo YXQgd2lsbCBhZGRyZXNzIHRoaXMgcHJvYmxlbSBpbiBhIHNtYXJ0ZXIgd2F5Lg0KDQo+IElmIGV2 ZXJ5IGFwcGxpY2F0aW9uIHN0YXJ0cyBhZG9wdGluZyB0aGlzIG1ldGhvZCBhbmQgc3RhcnRzIGRv aW5nIGxvb2t1cCBmb3IgZXZlcnkgRVNQIHBhY2tldCwgaC93IGJhc2VkIGxvb2t1cHMgKGFuZCB0 aGUNCj4gYXNzb2NpYXRlZCBoL3cpIHdvdWxkIGJlIHJlbmRlcmVkIHVzZWxlc3MuIEkgcmVhbGx5 IHRoaW5rIHRoaXMgc2VyaWVzLCB3aGljaCBoYXBwZW5zIHRvIGJlIHRoZSBmaXJzdCBzdGVwIGlu IHNvbHZpbmcgYSBjb21wbGV4IHByb2JsZW0sIHdpbGwgYmUNCj4gdmVyeSB1c2VmdWwgaWYgYWxs IHRoZXNlIGlzc3VlcyBhcmUgYWRkcmVzc2VkIHByb3Blcmx5Lg0KPiANCj4gSWYgeW91IGNhbiBp bnRyb2R1Y2UgdGhlIGlubGluZStsb29rYXNpZGUgdmlhIGxpYnJ0ZV9pcHNlYywgaXRzIHBlcmhh cHMgb2sgZm9yIHRoZSBwYXRjaCB0byBoYXZlIHNvbWUgbGltaXRhdGlvbnMobGlrZSBsYWNrIG9m IG9yZGVyaW5nLA0KPiBhc3N1bXB0aW9ucyBvbiBFU1AgZXRjKS4gSG93ZXZlciwgaWYgdGhlIHBh dGNoIGlzIGludHJvZHVjZWQgZGlyZWN0bHkgaW50byBpcHNlYy1zZWNndywgaXQgbmVlZHMgdG8g YmUgbW9yZSBjb21wcmVoZW5zaXZlIGFuZCByb2J1c3QuDQoNCkkgdGhpbmsgY29tbW9uIERQREsg cG9saWN5IGlzIGV4YWN0bHkgb3Bwb3NpdGU6DQpsaWJyYXJ5L2RyaXZlciBoYXMgdG8gYmUgYXMg cm9idXN0IGFuZCBjb21wcmVoZW5zaXZlIGFzIHBvc3NpYmxlLg0Kc2FtcGxlIGFwcCBjb2RlIGFs bG93ZWQgdG8gaGF2ZSBzb21lIGxpbWl0YXRpb25zIChhcyBsb25nIGFzIHRoZXkgYXJlIGRvY3Vt ZW50ZWQsIGV0Yy4pLiANCg0KPiBJIGFsc28gZXhwZWN0IHBlcmZvcm1hbmNlIGltcGFjdCBkdWUg dG8gdGhlc2UgY2hhbmdlcw0KDQpDb3VsZCB5b3UgYmUgbW9yZSBzcGVjaWZpYyBoZXJlPw0KV2hh dCBwZXJmb3JtYW5jZSBpbXBhY3QgZG8geW91IGV4cGVjdCBhbmQgd2h5Pw0KQ2FuIHlvdSBwb2lu dCB0byB0aGUgZXhhY3QgcGllY2Ugb2YgcGF0Y2ggY29kZSB0aGF0IHlvdSBiZWxpZXZlIHdvdWxk IGNhdXNlIGEgZGVncmFkYXRpb24uDQpJIGRvbid0IGV4cGVjdCBhbnkgYW5kIHBlcmZvcm1hbmNl IHRlc3RzIG9uIG91ciBwbGF0Zm9ybXMgZGlkbid0IHNob3cgYW55IHJlZ3Jlc3Npb24gc28gZmFy Lg0KDQo+IGFuZCBzbyBJIHByZWZlciBpZiB0aGUgaW5saW5lK2xvb2thc2lkZSBjYW4gYmUgbWFk ZSBzZXBhcmF0ZSBkYXRhcGF0aCByYXRoZXIgdGhhbg0KPiBvdmVybG9hZGluZyB0aGUgZXhpc3Rp bmcgb25lLg0KDQpJIGRvbid0IHNlZSBhbnkgZ29vZCByZWFzb24gZm9yIHRoYXQuDQpUaGlzIGZl YXR1cmUgaXMgb3B0aW9uYWwuDQpVc2VyIGhhdmUgdG8gZW5hYmxlIGl0IG1hbnVhbGx5IGZvciBl YWNoIHNlc3Npb24gKHZpYSBjb25maWcgZmlsZSkuDQpmb3IgYWxsIG90aGVyIHNlc3Npb25zIHRo ZXJlIGlzIG5vIGltcGFjdC4NCldoYXQgd2UgcHJvYmFibHkgY2FuIGRvIC0gYWRkIGV4dHJhIGNo ZWNrIGluc2lkZSBzYS5jIHRvIGFsbG93DQpmYWxsYmFjayBzZXNzaW9ucyBvbmx5IGZvciBpbmxp bmUtY3J5cHRvLW9mZmxvYWQgdHlwZSBvZiBzZXNzaW9ucy4NCg0KPiANCj4gPg0KPiA+ID4NCj4g PiA+IEFsc28sIGlmIHRoZSBuZXcgaXBzZWMgcmVsYXRlZCBmZWF0dXJlcyBhcmUgaW50cm9kdWNl ZCB2aWEgaXBzZWMtc2VjZ3cNCj4gPiA+IHRoYW4gdmlhIHJ0ZV9pcHNlYywgdGhlbiBpdCByYWlz ZXMgZG91YnRzIG92ZXIgdGhlIHV0aWxpdHkgb2YgcnRlX2lwc2VjIGxpYnJhcnkuDQo+ID4NCj4g Pg0KDQo=