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 5692DA3160 for ; Thu, 10 Oct 2019 12:55:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A71A01E993; Thu, 10 Oct 2019 12:55:26 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id B1C1C1E97D for ; Thu, 10 Oct 2019 12:55:23 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Oct 2019 03:55:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,279,1566889200"; d="scan'208";a="206052968" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by orsmga002.jf.intel.com with ESMTP; 10 Oct 2019 03:55:20 -0700 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.164]) by IRSMSX152.ger.corp.intel.com ([169.254.6.150]) with mapi id 14.03.0439.000; Thu, 10 Oct 2019 11:55:19 +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+IYCABNOdgIABgBhAgALv3QCAActlUIAJjr4AgACEvFA= Date: Thu, 10 Oct 2019 10:55:19 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772580191974E18@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> <2601191342CEEE43887BDE71AB97725801919709C0@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: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiODE0YmRkMGUtYWQxZS00MTI5LThjZjItMmM3MDJiMzdlMjM0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVWVKaGNtTW4yNndVNUUrVlltcVwvUDZlZmFyT01ZUnFMdU53Y3lieDdwSW45dUxkeUcyWjBVNVE1QzNzTTNlMGYifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [163.33.239.182] 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" DQpIaSBBbm9vYiwNCg0KPiANCj4gRm9sbG93aW5nIGFyZSB0aGUgbWFpbiBpc3N1ZXMgSSBoYWQg aWRlbnRpZmllZCwNCj4gDQo+IDEuIERvZXNuJ3Qgd29yayBmb3IgaW5saW5lIHByb3RvY29sIG9m ZmxvYWQgKHRoZSBwbGFuIGl0c2VsZiB3b24ndCBzY2FsZSBmb3IgdGhhdCBjYXNlKQ0KPiAyLiBJ Z25vcmVzIHRoZSBkYXRhIGZyb20gdGhlIGgvdyBsb29rdXANCj4gMy4gVGhlIGZhbGxiYWNrIHN1 cHBvcnQgaXMgYWN0dWFsbHkgc3VwcG9ydGVkIGluIGlwc2VjLXNlY2d3IChhcHBsaWNhdGlvbikg aW5zdGVhZCBvZiBsaWJydGVfaXBzZWMuDQo+IDQuIFJlb3JkZXJpbmcgaXNzdWUuDQo+IDUuIElu dHJvZHVjZXMgY2hlY2tzIGluIGV4aXN0aW5nIGRhdGEgcGF0aCBldmVuIHdoZW4gdGhlIGZlYXR1 cmUgaXMgbm90IHByb3Blcmx5IGltcGxlbWVudGVkL2lzIG5vdCBzdWl0YWJsZSBmb3Igb3RoZXIg UE1Ecy4NCj4gDQo+IEZvciBJc3N1ZSAjMSwgSSBnZXQgdGhhdCBJbnRlbCBkb2Vzbid0IGhhdmUg cGxhbnMgdG8gc3VwcG9ydCB0aGUgZmVhdHVyZSBhbmQgd29uJ3QgYmUgc3VibWl0dGluZyBhbnl0 aGluZyBpbiB0aGF0IGRpcmVjdGlvbi4NCj4gQnV0IGFkZGluZyBjb2RlIHRoYXQgZnVydGhlciBl eGFjZXJiYXRlcyB0aGUgc2l0dWF0aW9uIGlzIHByb2JhYmx5IG5vdCBkZXNpcmVkLg0KDQpXZSBh bHJlYWR5IGRpc2N1c3NlZCB3aHkgdGhhdCBmZWF0dXJlIGNhbid0IGJlIGZ1bGx5IHN1cHBvcnRl ZCByaWdodCBub3cgYnkNCmlubGluZS1wcm90by9sb29rYXNpZGUtcHJvdG8gZGV2aWNlczoNClRo ZXJlIGlzIG5vIEFQSSBkZWZpbmVkIHRvIHN5bmMgc2Vzc2lvbiBzdGF0ZSBiZXR3ZWVuIEhXIGFu ZCBTVw0KaHR0cDovL21haWxzLmRwZGsub3JnL2FyY2hpdmVzL2Rldi8yMDE5LVNlcHRlbWJlci8x NDM4ODEuaHRtbA0KDQpJIGFscmVhZHkgb3V0bGluZWQgdGhhdCBnYXAgbmVhcmx5IGEgeWVhciBh Z286DQpodHRwOi8vbWFpbHMuZHBkay5vcmcvYXJjaGl2ZXMvZGV2LzIwMTgtU2VwdGVtYmVyLzEx MzYwMC5odG1sDQpUaG91Z2ggc28gZmFyIEkgZGlkbid0IHNlZSBhbnkgYXR0ZW1wdCB0byByZXNv bHZlIHRoaXMgcHJvYmxlbSBieSBNYXJ2ZWxsIChvciBOWFApIGVuZ2luZWVycy4NCldoaWNoIG1h a2VzIG1lIHRoaW5rIHRoYXQgZWl0aGVyIHlvdSBndXlzIGRvbid0IGNvbnNpZGVyIGl0IGFzIGEg cHJvYmxlbSBhdCBhbGwsDQpvciBoYXZlIG5vIGRlc2lyZSB0byB3b3JrIG9uIGl0Lg0KSSBuZXZl ciBpbnNpc3RlZCwgYXMgSSBkb24ndCAgdGhpbmsgaXQgaXMgbXkgY2FsbCBieSBvYnZpb3VzIHJl YXNvbnM6IA0KMSkgcmlnaHQgbm93IEludGVsIGRvZXNuJ3QgaGF2ZSBIVyB0aGF0IHByb3ZpZGVz IGlubGluZS1wcm90by9sa3NkLXByb3RvIGNhcGFiaWxpdGllcy4NCjIpIEludGVsIERQREsgdGVh bSBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIHN1Y2ggSFcuDQozKSBUaGVyZSBpcyBubyBQTUQgaW5z aWRlIGRwZGsub3JnIHRoYXQgaW1wbGVtZW50cyBpbmxpbmUtcHJvdG8gYW55d2F5LiAgDQoNCk5v dywgb25lIHllYXIgbGF0ZXIgd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlOg0KMSkgdGhlcmUg c3RpbGwgbm8gUE1EIGF0IGRwZGsub3JnIHRoYXQgc3VwcG9ydHMgaW5saW5lLXByb3RvLg0KMikg QVBJIHRvIHN5bmMgc2Vzc2lvbiBzdGF0ZSBiZXR3ZWVuIEhXIGFuZCBTVyBzdGlsbCBub3QgZGVm aW5lZC9pbXBsZW1lbnRlZC4NCjMpIHlvdSB0cnlpbmcgdG8gYWNjdXNlIG1lIGFuZCBvdGhlciBJ bnRlbCBEUERLIHRlYW0gZm9yIGxhY2sgb2YgaW50ZXJlc3QgdG8gd29yayBvbiB0aGF0IHByb2Js ZW0gZm9yIHlvdQ0KICAgYW5kIHRocmVhdCBvdXIgcGF0Y2hlcyBiZWNhdXNlIG9mIHRoYXQuDQoN ClRoYXQganVzdCBkb2Vzbid0IGxvb2sgZmFpciB0byBtZS4NCllvdSBzaG91bGRuJ3QgZXhwZWN0 IG90aGVyIHBlb3BsZSBwYXRjaGVzIHRvIHByb3ZpZGUgJ2NvbXBsZXRlJyBzb2x1dGlvbiBmb3Ig aW5saW5lLXByb3RvLA0KaWYgKGluIGEgeWVhciB0aW1lKSB5b3UgZmFpbGVkIHRvIGRlZmluZS9p bXBsZW1lbnQgYW4gQVBJIGZvciB0aGF0Lg0KDQo+IEZvciBJc3N1ZSAjMiwgc2luY2UgaXBzZWMt c2VjZ3cgaXMgbm90IHV0aWxpemluZyB0aGUgaC93IGxvb2t1cCBkYXRhLCB0aGUgc29sdXRpb24g aGVyZSBmb2xsb3dzIHN1aXQgYW5kIGlzIHByZXZlbnRpbmcgb3RoZXIgdXNhZ2UgbW9kZWxzIG9m DQo+IHRoZSBoYXJkd2FyZSB3aGljaCBhcmUgYWxsb3dlZCBieSB0aGUgbGlicmFyeS4NCg0KU2Ft ZSBhcyBhYm92ZSwgcmlnaHQgbm93IHRoZXJlIGlzIG5vIFBNRCB0aGF0IHN1cHBvcnRzIGlubGlu ZS1wcm90byBhbmQgbm8gQVBJIHRvIGV4dHJhY3QgdGhhdCBleHRyYSBIL1cgbG9va3VwIGRhdGEu DQpUaG91Z2ggSSByZXBsaWVkIHRvIHlvdSBhbmQgZXhwbGFpbmVkICp0d2ljZSpob3cgSSB0aGlu ayBzdWNoIGZ1bmN0aW9uYWxpdHkgY291bGQgYmUgYWRkZWQgaWYNCmluIGh5cG90aGV0aWNhbCBm dXR1cmUgdGhlcmUgd291bGQgYmUgYSBQTUQgdGhhdCB3aWxsIHN1cHBvcnQgdGhlc2UgZmVhdHVy ZXMuIA0KQnV0IHlvdSBzaW1wbHkgaWdub3JlZCBteSByZXBsaWVzIGFuZCBrZXB0IHRocmVhdGlu ZyBvdXIgcGF0Y2hlcy4NCk9idmlvdXNseSwgSSBkb24ndCB0aGluayBpdCBpcyBhIHByb3BlciBh dHRpdHVkZSBmb3Igb3Blbi1zb3VyY2UgY29tbXVuaXR5Lg0KQXQgbGVhc3QgSSB3b3VsZCBleHBl Y3QgdG8gcHJvdmlkZSBzb21lIGNsZWFyIGV4cGxhbmF0aW9uLA0Kd2h5IGRvIHlvdSB0aGluayBh cHByb2FjaCBJIG91dGxpbmVkIGlzIG5vdCBnb29kIGVub3VnaC4NCkV2ZW4gYmV0dGVyIHdvdWxk IGJlIHRvOiANCjEpIHN1Ym1pdCBhbiBSRkMvcGF0Y2ggd2l0aCBBUEkgeW91IGVudmlzaW9uIGFu ZCBQTUQgaW1wbGVtZW50YXRpb24gZm9yIGl0Lg0KMikgc3VibWl0IGFuIFJGQy9wYXRjaCB3aXRo IGNoYW5nZXMgaW4gaXBzZWMtc2VjZ3cgdG8gZW5hYmxlIHRoZXNlIG5ldyBmZWF0dXJlcy4NCldp dGhvdXQgdGhhdCBpbiBwbGFjZSB0aGVyZSBpcyBub3QgbXVjaCB0byBkaXNjdXNzLiAgICANCiAN Cj4gRm9yIElzc3VlICMzLCBsaWJydGVfaXBzZWMgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBp cyBqdXN0IDItMyByZWxlYXNlcyBvbGQuIEl0IGhhcyBzY29wZSBmb3IgaW1wcm92ZW1lbnQgYW5k IGFsbCB0aGVzZSBmZWF0dXJlcyB3b3VsZCd2ZQ0KPiBhZGRlZCB2YWx1ZSB0byBpdHMgdXRpbGl0 eS4gTm8gc3Ryb25nIGZlZWxpbmdzIGhlcmUuDQo+IA0KPiBGb3IgSXNzdWUgIzQsIGdsYWQgdGhh dCB5b3UgZG9jdW1lbnRlZCB0aGF0IGlzc3VlLg0KPiANCj4gRm9yIElzc3VlICM1LCBpbiB5b3Vy IHJlcGx5IHlvdSBoYWQgbWVudGlvbmVkIHRoYXQgdGhlcmUgaXMgbm8gYWRkaXRpb25hbCBjaGVj ayBkb25lLiBJIHNlZSBhdGxlYXN0IGZldyBjaGVja3MgaW4gdGhlIGRhdGFwYXRoLiBTaW5jZSB0 aGUNCj4gZmVhdHVyZSBpdHNlbGYgaXMgZXhwZXJpbWVudGFsLCBpdCB3b3VsZCBiZSBsZXNzIGNv bnRlbnRpb3VzIGlmIGl0IHdhcyBpbnRyb2R1Y2VkIGFzIGEgbmV3IGRhdGEgcGF0aC4NCg0KT25j ZSBhZ2FpbiAtIHlvdSBrZWVwIG1ha2luZyBzdGF0ZW1lbnRzIHdpdGhvdXQgYW55IGV2aWRlbmNl Lg0KUHJvdmlkZSBzb21ldGhpbmcgbW9yZSBjb25jcmV0ZSBoZXJlIC0gZGVzY3JpcHRpb24gb2Yg cGFja2V0IGFuZCBjb2RlIGZsb3cNCihmdW5jdGlvbiBuYW1lcywgZXhhY3QgbGluZXMgb2YgY29k ZSkgdGhhdCB5b3UgdGhpbmsgd2lsbCBjYXVzZSBhIHByb2JsZW0uDQoNCj4gDQo+IEFsc28sIHRv IHF1b3RlIGZyb20gdGhlIHJlcGx5LA0KPiANCj4gPiA+IFtBbm9vYl0gU2hvdWxkbid0IHdlIGdl dCB0aGF0IGFjY2VwdGVkIGZpcnN0IHRoZW4/DQo+ID4NCj4gPiBJIGRvbid0IHRoaW5rIHNvLg0K PiA+IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBwcm92aWRlIGV4cGVjdGVkIGZ1bmN0aW9u YWxpdHkgKHdpdGgga25vd24NCj4gPiBsaW1pdGF0aW9ucykuDQo+ID4gSW4gZnV0dXJlLCB3ZSBj YW4gdHJ5IHRvIGltcHJvdmUgaXQgYW5kL29yIHJlbW92ZSBleGlzdGluZyBsaW1pdGF0aW9ucy4N Cj4gPiBUaGF0J3MgYSBjb21tb24gaXRlcmF0aW9uIGRldmVsb3BtZW50IGFwcHJvYWNoIHRoYXQg aXMgdXNlZCB0aG91Z2ggd2hvbGUNCj4gPiBEUERLOg0KPiA+IC0gcHJvdmlkZSBpbml0aWFsIHNv bHV0aW9uIHdpdGggYmFzaWMgZnVuY3Rpb25hbGl0eSBmaXJzdA0KPiA+IC0gaW1wcm92ZS9leHRl bmQgd2l0aCBmdXR1cmUgcmVsZWFzZXMvcGF0Y2hlcw0KPiANCj4gSWYgeW91ciBzdWdnZXN0aW9u IGlzIHRvIHN0aWNrIHRvIGFib3ZlIGd1aWRlbGluZXMsDQoNCkl0IGlzIG5vdCBteSBzdWdnZXN0 aW9uLCB0aGF0J3MgaG93IHRoaW5ncyB3b3JrIHdpdGhpbiBEUERLIHJpZ2h0IG5vdy4NCk5lYXJs eSBldmVyeSBkcGRrIGxpYnJhcnksIGRyaXZlciBhbmQgc2FtcGxlIGFwcCB3YXMgZGV2ZWxvcGVk IGJhc2VkIG9uIHRoYXQgcHJpbmNpcGxlLg0KRXZlbiBpcHNlYy1zZWNndyBpdHNlbGYsIGp1c3Qg bG9vayBhdCB0aGUgZ2l0IGxvZyBmb3IgaXQuIA0KDQo+IEkgZG9uJ3QgdGhpbmsgdGhlcmUgaXMg YW55IHBvaW50IGluIHB1c2hpbmcgYW55IGZ1cnRoZXIuIEkgbGVhdmUgdGhpcyB0byBtYWludGFp bmVycyB0byBkZWNpZGUuIEkNCj4gd291bGQgYXNzdW1lIHRoZSBzYW1lIHJ1bGVzIHdvdWxkIGFw cGx5IHRvIGV2ZXJ5IGZlYXR1cmUgdGhhdCBpcyBiZWluZyBhdHRlbXB0ZWQuDQoNCkkgYmVsaWV2 ZSB0aGF0IGZvciAjMSwgIzIsICM1IHlvdXIgY29tbWVudHMgYXJlIGJpYXNlZCwgYW5kIGRvZXNu J3QgcHJvdmlkZSByZWFsIHBpY3R1cmUuDQpTbyBteSBzdWdnZXN0aW9uIHRvIG1haW50YWluZXJz IHdvdWxkIGJlIHRvIGlnbm9yZSB0aGVtIGFzIG5vdCB2YWx1YWJsZS4NCg0KS29uc3RhbnRpbiAN Cg0KDQo+IA0KPiBUaGFua3MsDQo+IEFub29iDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4gRnJvbTogZGV2IDxkZXYtYm91bmNlc0BkcGRrLm9yZz4gT24gQmVoYWxmIE9m IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAzLCAyMDE5 IDg6MTYgUE0NCj4gPiBUbzogQW5vb2IgSm9zZXBoIDxhbm9vYmpAbWFydmVsbC5jb20+OyBTbW9j enluc2tpLCBNYXJjaW5YDQo+ID4gPG1hcmNpbnguc21vY3p5bnNraUBpbnRlbC5jb20+OyBha2hp bC5nb3lhbEBueHAuY29tDQo+ID4gQ2M6IGRldkBkcGRrLm9yZzsgSmVyaW4gSmFjb2IgS29sbGFu dWtrYXJhbiA8amVyaW5qQG1hcnZlbGwuY29tPjsgTmFyYXlhbmENCj4gPiBQcmFzYWQgUmFqdSBB dGhyZXlhIDxwYXRocmV5YUBtYXJ2ZWxsLmNvbT47IEFyY2hhbmEgTXVuaWdhbnRpDQo+ID4gPG1h cmNoYW5hQG1hcnZlbGwuY29tPg0KPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2 MyAwLzNdIGFkZCBmYWxsYmFjayBzZXNzaW9uDQo+ID4NCj4gPiBIaSBBbm9vYiwNCj4gPg0KPiA+ ID4gPiA+ID4gPiBJJ3ZlIGZldyBtb3JlIG9ic2VydmF0aW9ucyByZWdhcmRpbmcgdGhlIHByb3Bv c2VkIGZlYXR1cmUuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IDEuIEZyb20gd2hhdCBJ IHVuZGVyc3Rvb2QsIGlmIGFuIEVTUCBwYWNrZXQgZW5kcyB1cCBvbiBhbg0KPiA+ID4gPiA+ID4g PiB1bnByb3RlY3RlZCBpbnRlcmZhY2UgYW5kIGRvZXNuJ3QgaGF2ZSAnUEtUX1JYX1NFQ19PRkZM T0FEJw0KPiA+ID4gPiA+ID4gPiBiaXQgc2V0LCB0aGVuIHRoZSBwYWNrZXQNCj4gPiA+ID4gPiA+ IHdvdWxkIGJlIGxvb2tlZCB1cCB0byBzZWUgdGhlIGFzc29jaWF0ZWQgU0EgYW5kIHRoZW4gZmFs bGJhY2sNCj4gPiA+ID4gPiA+IHNlc3Npb24gaXMgZmlndXJlZCBvdXQgYW5kIHRoZW4gZnVydGhl ciBwcm9jZXNzaW5nIGlzIGRvbmUuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IENhbiB5 b3UgY29uZmlybSBpZiBJIHVuZGVyc3Rvb2QgdGhlIHNlcXVlbmNlIGNvcnJlY3RseT8gSWYNCj4g PiA+ID4gPiA+ID4geWVzLCB0aGVuIGFyZW4ndCB3ZSBkb2luZyBhbiBleHRyYSBsb29rdXAgaW4g dGhlIHMvdz8gVGhlDQo+ID4gPiA+ID4gPiA+IHBhY2tldCBtYXkgYmUgbG9va2VkIGJ5IHRoZSBo L3cgdXNpbmcgcnRlX2Zsb3cgYW5kIHRoYXQNCj4gPiA+ID4gPiA+ID4gaW5mb3JtYXRpb24gY291 bGQgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlDQo+ID4gPiA+ID4gPiBTQS4gQWxzbywgaWYgdGhl IEVTUCBwYWNrZXQgaXMgZXhwZWN0ZWQgdG8gYmUgZm9yd2FyZGVkLCB0aGVuDQo+ID4gPiA+ID4g PiB0aGUgYWJvdmUgbG9naWMgd2lsbCBhZGQgYW4gdW5uZWNlc3NhcnkgbG9va3VwIGV2ZW4gYWZ0 ZXIgeW91cg0KPiA+ID4gPiA+ID4gaC93IGhhcyBkZXRlY3RlZCB0aGF0IHRoZSBwYWNrZXQgbmVl ZCBub3QgYmUgc2VjdXJpdHkgcHJvY2Vzc2VkLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IE5v dCBzdXJlIEkgdW5kZXJzdG9vZCB5b3VyIHdob2xlIHN0YXRlbWVudCBhYm92ZS4NCj4gPiA+ID4g PiA+IEFGQUlLLCByaWdodCBub3cgKHdpdGggZHBkayBtYXN0ZXIpIGZvciB1bnByb3RlY3RlZCBp ZmFjZSBpdCB3b3JrcyBsaWtlDQo+ID4gdGhhdDoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAx LiAgc2xpdCBpbmNvbWluZyB0cmFmZmljIGludG8gMyBncm91cHM6IEVTUCBwYWNrZXRzLCBJUHY0 DQo+ID4gPiA+ID4gPiBwYWNrZXRzLCBJUHY2DQo+ID4gPiA+IHBhY2tldHMuDQo+ID4gPiA+ID4g PiBGb3IgRVNQIHBhY2tldHM6DQo+ID4gPiA+ID4gPiAyLiBwZXJmb3JtIFNBRCBsb29rdXANCj4g PiA+ID4gPiA+ICAgICBhLiBpZiBpdCBmYWlscyAobm9uIFNBIGZvdW5kIGZvciB0aGF0IFNQSSks IHRoZW4gZHJvcCB0aGUgcGFja2V0Lg0KPiA+ID4gPiA+ID4gICAgIGIuIG90aGVyd2lzZSAoU0Eg Zm91bmQpIHByb2Nlc3MgdGhlIHBhY2tldCB1c2luZyBmb3VuZCBTQQ0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+IFdoYXQgZmFsbC1iYWNrIHBhdGNoIGFkZHM6DQo+ID4gPiA+ID4gPiBCZWZvcmUg c3RlcCAyLmIgY2hlY2s6DQo+ID4gPiA+ID4gPiBkb2VzIHRoYXQgU0EgaGFzIGl0cyBwcmltYXJ5 IHNlc3Npb24gIHdpdGggdHlwZSBJTkxJTkUtQ1JZUFRPDQo+ID4gPiA+ID4gPiBhbmQgZG9lcyBI VyBmYWlsIHRvIGRvIElQc2VjIHJlYWx0ZWQgcHJvY2Vzc2luZyBmb3IgaXQgKGJ5IHNvbWUgcmVh c29uKT8NCj4gPiA+ID4gPiA+IElmIHllcywgdGhlbiBtYXJrIHRoaXMgcGFja2V0IHRvIGJlIHBy b2Nlc3NlZCBieSBmYWxsLWJhY2sgc2Vzc2lvbi4NCj4gPiA+ID4gPiA+IGlmIChNQlVGX05PX1NF Q19PRkZMT0FEKHBrdCkgJiYgc2EtPmZhbGxiYWNrX3Nlc3Npb25zID4gMCkgew0KPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBpbnRzYSA9ICh1aW50cHRyX3Qpc2E7DQo+ID4g PiA+ID4gPiAgICAgICAgICAgICAgICAgaW50c2EgfD0gSVBTRUNfU0FfT0ZGTE9BRF9GQUxMQkFD S19GTEFHOw0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHJlc3VsdF9zYSA9ICh2b2lkICop aW50c2E7ICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gU28gZnJvbSBteSBwZXJzcGVjdGl2 ZSwgbm8gYWRkaXRpb25hbCBsb29rdXAgd2hlcmUgaW50cm9kdWNlZC4NCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IFtBbm9vYl0gRm9yIGlubGluZSBwcm9jZXNzaW5nLCBoL3cgZG9lcyBhIGxvb2t1cCBh bmQgZmlndXJlcyBvdXQNCj4gPiA+ID4gPiB0aGUgc2VjdXJpdHkNCj4gPiA+ID4gcHJvY2Vzc2lu ZyB0byBiZSBkb25lIG9uIHRoZSBwYWNrZXQuDQo+ID4gPiA+ID4gInJ0ZV9zZWN1cml0eV9nZXRf dXNlcmRhdGEoKSIgYWxsb3dzIHMvdyB0byBmdXJ0aGVyIHNlZ3JlZ2F0ZSB0aGF0DQo+ID4gPiA+ ID4gaW5mby4gSW4gdGhpcyBhcHByb2FjaCwgSSBiZWxpZXZlIHdlIGRvbid0IGNvbnNpZGVyIGhv dyBzdWNoIGluZm8NCj4gPiA+ID4gPiBmcm9tIGgvdyBjYW4NCj4gPiA+ID4gYmUgdXNlZC4NCj4g PiA+ID4NCj4gPiA+ID4gUmlnaHQgbm93IGl0IGlzIG5vdCB0aGUgY2FzZSB3aXRoIGlwc2VjLXNl Y2d3Og0KPiA+ID4NCj4gPiA+IFtBbm9vYl0gQXJlIHlvdSBzYXlpbmcgdGhlcmUgaXMgbm8gaC93 IGxvb2t1cCBpbnZvbHZlZCB3aGVuIGRvaW5nDQo+ID4gPiBpbmxpbmUgY3J5cHRvIHByb2Nlc3Np bmc/IFRoZW4gSSdtIGNvbmZ1c2VkLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgcnRlX2Zsb3cN Cj4gPiB3aXRoIEFDVElPTiB0eXBlIGFzIFNFQ1VSSVRZIGlzIGJlaW5nIHVzZWQgdG8gc2V0dXAg aC93IGxvb2t1cHMuDQo+ID4NCj4gPiBJIGFtIHNheWluZyB0aGF0IGN1cnJlbnQgaXBzZWMtc2Vj Z3cgY29kZSBmb3IgZWFjaCBpbmJvdW5kIEVTUCBwYWNrZXQNCj4gPiAqYWx3YXlzKiBkb2VzIFNX IGxvb2t1cC4NCj4gPiBObyBtYXR0ZXIgZGlkIEhXIGxvb2t1cCB0YWtlIHBsYWNlIGFscmVhZHkg YW5kIGRvZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhhdA0KPiA+IGxvb2t1cCBpcyBhdmFpbGFibGUg dmlhIG1idWYgaW4gc29tZSB3YXkgb3Igbm90Lg0KPiA+IEp1c3QgbG9vayBhdCB0aGUgaXBzZWMt c2VjZ3cgY29kZSB5b3Vyc2VsZjoNCj4gPg0KPiA+IG5iX3J4ID0gcnRlX2V0aF9yeF9idXJzdChw b3J0aWQsIHF1ZXVlaWQsICBwa3RzLCBNQVhfUEtUX0JVUlNUKTsNCj4gPg0KPiA+IGlmIChuYl9y eCA+IDApDQo+ID4gCXByb2Nlc3NfcGt0cyhxY29uZiwgcGt0cywgbmJfcngsIHBvcnRpZCk7DQo+ ID4NCj4gPiBJbnNpZGUgcHJvY2Vzc19wa3RzKCkNCj4gPiBodHRwczovL3VybGRlZmVuc2UucHJv b2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cC0NCj4gPiAzQV9fbHhyLmRwZGsub3JnX2RwZGtfbGF0 ZXN0X2lkZW50X3ByZXBhcmUtNUZvbmUtDQo+ID4gNUZwYWNrZXQmZD1Ed0lHYVEmYz1uS2pXZWMy YjZSMG1PeVBhejd4dGZRJnI9QlBjR09PdWRVTXJURFE5WWINCj4gPiBnS2NPa081Q2hZaVVQUGxQ TklFdlRPaGpORSZtPUtWQmd2WFlsVUd5TW11MjYwZXJJU0tyNzNRdDZQQkx1eDBTSQ0KPiA+IG9T TzFpLU0mcz1vcGJHR0hVcWZ4eThwXzROdndDRzZvZDZWZFYwcU44WGFmYVBpdWJmTzFBJmU9DQo+ ID4gIGl0IGZpcnN0IGNhbGxzIHByZXBhcmVfdHJhZmZpYygpIHdoaWNoIGRvZXMgc29ydCBvZiBk ZS1tdXhpbmc6DQo+ID4gcHV0IHBhY2tldCBpbiBvbmUgb2YgMyBhcnJheXM6DQo+ID4gICAgMSkg RVNQIHBhY2tldHMNCj4gPiAgICAyKSBub24gRVNQIElQdjQgcGFja2V0cw0KPiA+ICAgIDMpIG5v biBFU1AgSVB2NiBwYWNrZXRzDQo+ID4gQWxzbyBpdCBjaGVja3MgaXMgUEtUX1JYX1NFQ19PRkZM T0FEIHNldCBmb3IgdGhhdCBwYWNrZXQuDQo+ID4gSWYgeWVzLCBpdCByZXRyaWV2ZXMgYXNzb2Np YXRlZCBzZWN1cml0eSB1c2VyLWRhdGEgYW5kIHN0b3JlcyBpdCBpbnNpZGUgcHJpdmF0ZSBtYnVm DQo+ID4gYXJlYS4NCj4gPg0KPiA+IFRoZW4gaXQgZ29lcyBpbnRvIHByb2Nlc3NfcGt0c19pbmJv dW5kKCkNCj4gPiBodHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0 cC0NCj4gPiAzQV9fbHhyLmRwZGsub3JnX2RwZGtfbGF0ZXN0X2lkZW50X3Byb2Nlc3MtNUZwa3Rz LQ0KPiA+IDVGaW5ib3VuZCZkPUR3SUdhUSZjPW5LaldlYzJiNlIwbU95UGF6N3h0ZlEmcj1CUGNH T091ZFVNclREUTlZDQo+ID4gYmdLY09rTzVDaFlpVVBQbFBOSUV2VE9oak5FJm09S1ZCZ3ZYWWxV R3lNbXUyNjBlcklTS3I3M1F0NlBCTHV4MFMNCj4gPiBJb1NPMWktTSZzPTJPeE1YdWc3anRVUVBj WWlETjRuVzlXYnJNdFJmVEp4NWstTjdpa09lTUUmZT0NCj4gPiBhbmQgaGVyZSBmb3IgYWxsIEVT UCBwYWNrZXRzOg0KPiA+IGxlZ2FjeSBjb2RlIHBhdGg6DQo+ID4gaXBzZWNfaW5ib3VuZCgpLT5p bmJvdW5kX3NhX2xvb2t1cCgpLT5zaW5nbGVfaW5ib3VuZF9sb29rdXAoKQ0KPiA+IGZvciBsaWJy dGVfaXBzZWMgY29kZSBwYXRoOg0KPiA+IGluYm91bmRfc2FfbG9va3VwKCktPnNpbmdsZV9pbmJv dW5kX2xvb2t1cCgpDQo+ID4NCj4gPiBzaW5nbGVfaW5ib3VuZF9sb29rdXAoKSBpcyB0aGUgb25l IHRoYXQgZG9lcyBhY3R1YWwgU1cgbG9va3VwIGZvciBlYWNoIGlucHV0DQo+ID4gcGFja2V0Lg0K PiA+IGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1odHRwLQ0KPiA+ IDNBX19seHIuZHBkay5vcmdfZHBka19sYXRlc3RfaWRlbnRfc2luZ2xlLTVGaW5ib3VuZC0NCj4g PiA1Rmxvb2t1cCZkPUR3SUdhUSZjPW5LaldlYzJiNlIwbU95UGF6N3h0ZlEmcj1CUGNHT091ZFVN clREUTlZYg0KPiA+IGdLY09rTzVDaFlpVVBQbFBOSUV2VE9oak5FJm09S1ZCZ3ZYWWxVR3lNbXUy NjBlcklTS3I3M1F0NlBCTHV4MFNJDQo+ID4gb1NPMWktTSZzPUQyWlBaUExiY1FTYmFsdUc4S0gw RjN1VURIZlFXTll4dzRNT2MwZlNrSTgmZT0NCj4gPg0KPiA+ID4NCj4gPiA+ID4gZm9yIGVhY2gg aW5ib3VuZCBFU1AgcGFja2V0IGl0ICphbHdheXMqIGRvZXMgYSBsb29rdXAgaW4gU1cgYmFzZWQN Cj4gPiA+ID4gU0FEQiwgYW5kIGlmIGxvb2t1cCBmYWlscyAtIGRyb3BzIHRoZSBwYWNrZXQgKHNl ZSAyLmEgYWJvdmUpLg0KPiA+ID4gPiBTbywgSSBzdGlsbCBub3Qgc2VlIGFueSBhZGRpdGlvbmFs IGxvb2t1cHMgaW50cm9kdWNlZCB3aXRoIHRoZSBwYXRjaC4NCj4gPiA+DQo+ID4gPiBbQW5vb2Jd IEluIGNhc2Ugb2YgaW5saW5lIGNyeXB0bywgeW91IGNvdWxkIGRvIHRoYXQuIE5vIGRpc2FncmVl bWVudC4NCj4gPiA+IEJ1dCB0aGF0IGRvZXNuJ3QgbWVhbiB0aGF0IGlzIHRoZSBvbmx5IHdheS4g SWYgUE1EcyBjYW4gcmV0cmlldmUgaW5mbyBhYm91dA0KPiA+IGgvdyBsb29rdXBzIGFuZCBwYXNz IGl0IG9uIHRvIHRoZSB1cHBlciBsYXllcnMsIGlzbid0IHRoYXQgdGhlIGJldHRlciBhcHByb2Fj aD8NCj4gPg0KPiA+IFBsZWFzZSBsZXQncyBrZWVwIG91ciBjb252ZXJzYXRpb24gaW4gYSBjb25z dHJ1Y3RpdmUgd2F5Lg0KPiA+IFdlIGFyZSBub3QgZGlzY3Vzc2luZyB3aGF0IGNvdWxkIGJlIGRv bmUgaW4gdGhlb3J5LCBidXQgYSBwYXJ0aWN1bGFyIHBhdGNoIGZvcg0KPiA+IGlwc2VjLXNlY2d3 Og0KPiA+IFJpZ2h0IG5vdyBpcHNlYy1zZWNndyBkb2VzIGEgU1cgbG9va3VwIGZvciBlYWNoIGlu Ym91bmQgRVNQIHBhY2tldCAobm8NCj4gPiBtYXR0ZXIgd2hhdCBIVyBvZmZsb2FkIGRvZXMpIGFu ZCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBleHRyYSBTVw0KPiA+IGxvb2t1cHMu DQo+ID4NCj4gPiBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIGN1cnJlbnQgaXBzZWMtc2VjZ3cg YXBwcm9hY2gsIHRoYXQncyBmaW5lIC0gZmVlbCBmcmVlIHRvDQo+ID4gc3VibWl0IFJGQy9wYXRj aCB0byBmaXggdGhhdCwgb3Igc3RhcnQgYSBkaXNjdXNzaW9uIGluIGEgbmV3IHRocmVhZC4NCj4g PiBJIGp1c3QgZG9uJ3Qgc2VlIHdoeSB3ZSBoYXZlIHRvIGRpc2N1c3MgaXQgaW4gY29udGV4dCBv ZiB0aGlzIHBhdGNoLg0KPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBBbHNvIEFGQUlLLCByaWdodCBub3cgdGhlcmUgaXMgbm8gcG9zc2liaWxpdHkgdG8gY29uZmln dXJlDQo+ID4gPiA+ID4gPiBpcHNlYy1zZWNndyB0byBCWVBBU1Mgc29tZSBFU1AgdHJhZmZpYy4N Cj4gPiA+ID4gPiA+IFNob3VsZCB3ZSBkbyBpdCAodG8gY29uZm9ybSB0byBpcHNlYyBSRkMpIC0g dGhhdCdzIHByb2JhYmx5DQo+ID4gPiA+ID4gPiBzdWJqZWN0IG9mIGFub3RoZXIgZGlzY3Vzc2lv bi4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFtBbm9vYl0gVGhlIGFwcHJvYWNoIChjaG9pY2Ugb2Yg ZmxhZ3MpIGZvcmNlcyBhIHNvZnR3YXJlLWJhc2VkIFNBDQo+ID4gPiA+ID4gbG9va3VwIGZvciBw YWNrZXRzIHRoYXQgbmVlZCB0byBiZSBieXBhc3NlZCBpbnN0ZWFkIG9mIGxldmVyYWdpbmcNCj4g PiA+ID4gPiBwb3NzaWJsZQ0KPiA+ID4gPiBoYXJkd2FyZSBTQSBsb29rdXAuIEkgZG9uJ3QgdGhp bmsgd2hhdCBpcHNlYy1zZWNndyBkb2VzIG1hdHRlcnMgaGVyZS4NCj4gPiA+ID4NCj4gPiA+ID4g SSBkbyBub3QgYWdyZWUgd2l0aCB0aGF0IHN0YXRlbWVudC4NCj4gPiA+ID4gRmlyc3Qgb2YgYWxs IC0gY3VycmVudCBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgYWRkaXRpb25hbCBTVw0KPiA+ ID4gPiBsb29rdXBzLCBzZWUgYWJvdmUuDQo+ID4gPiA+IFNlY29uZCwgaWYgc29tZW9uZSB3b3Vs ZCBsaWtlIHRvIGFkZCBCWVBBU1MgZm9yIEVTUCBwYWNrZXRzIGludG8NCj4gPiA+ID4gaXBzZWMt c2VjZ3csIEkgdGhpbmsgaGUgd291bGQgaGF2ZSB0byBpbnNlcnQgbmV3IGNvZGUgdGhhdCBkbyBk ZS1tdXgNCj4gPiA+ID4gKmJlZm9yZSogYW55IEVTUCByZWxhdGVkIHByb2Nlc3Npbmcgc3RhcnRz Lg0KPiA+ID4gPiBNb3N0IG9idmlvdXMgdmFyaWFudDogYXQgcHJlcGFyZV9vbmVfcGFja2V0KCkg d2hlbiB3ZSBzcGxpdCBvdXINCj4gPiA+ID4gaW5jb21pbmcgdHJhZmZpYyB0byBJUHNlYyBhbmQg bm9uLUlQc2VjIG9uZXMuDQo+ID4gPiA+IFNlY29uZCB2YXJpYW50IC0gYXQgZWFybHkgc3RhZ2Ug b2Ygc2luZ2xlX2luYm91bmRfbG9va3VwKCksIHN0cmFpZ2h0DQo+ID4gPiA+IGFmdGVyIGFjdHVh bCBTQUQgbG9va3VwIGZhaWx1cmUuDQo+ID4gPiA+IEluIGJvdGggY2FzZXMsIEkgZG9uJ3Qgc2Vl IGhvdyBzZXNzaW9uIHNlbGVjdGlvbiAocHJpbWFyeSBvcg0KPiA+ID4gPiBmYWlsbGJhY2spIHdv dWxkIGFmZmVjdCB1cyBoZXJlLCBhY3R1YWwgZGVjaXNpb24gZG8gd2Ugd2FudCB0bw0KPiA+ID4g PiBQUk9DRVNTIG9yIEJZUEFTUyBwYXJ0aWN1bGFyIEVTUCBwYWNrZXQgbmVlZHMgdG8gdGFrZSBw bGFjZSBiZWZvcmUgdGhhdC4NCj4gPiA+ID4gU28gSSBzdGlsbCBiZWxpZXZlIHdlIGFyZSBvayBo ZXJlLg0KPiA+ID4NCj4gPiA+IFtBbm9vYl0gSSBkb24ndCB0aGluayB5b3UgdW5kZXJzdG9vZCB3 aGF0IEknbSB0cnlpbmcgdG8gaGlnaGxpZ2h0DQo+ID4gPiBoZXJlLiBZb3UgY291bGQgaGF2ZSBh IHNpdHVhdGlvbiB3aGVuIGgvdyBjYW4gZGV0ZWN0IHRoYXQgdGhlIHBhY2tldA0KPiA+ID4gaGFz IHRvIGJlICJQUk9URUNUImVkIHVzaW5nIGFuICJpbmxpbmUgY3J5cHRvIiBzZXNzaW9uLiBCdXQg dGhlbiBpdA0KPiA+ID4gbWlnaHQgZGV0ZWN0IHRoYXQgaXQgY2Fubm90IHByb2NlZWQgd2l0aCBp bmxpbmUgcHJvY2Vzc2luZyBiZWNhdXNlIG9mIHNvbWUNCj4gPiBpc3N1ZSAoZnJhZ21lbnRhdGlv biwgaC93IHF1ZXVlIG92ZXJmbG93IGV0YykuIE5vdyB0aGUgaC93IGhhcyBhbHJlYWR5IGZpZ3Vy ZWQNCj4gPiBvdXQgdGhlIGFjdGlvbiB0byBiZSBkb25lIHRvIHRoZSBwYWNrZXQuIElmIFBNRHMg YWxsb3cgdGhpcyB0byBiZSBjb21tdW5pY2F0ZWQNCj4gPiB0byB0aGUgYXBwbGljYXRpb24sIHRo ZSBhcHBsaWNhdGlvbiB3b24ndCBiZSByZXF1aXJlZCB0byBkbyB0aGUgbG9va3VwLg0KPiA+ID4N Cj4gPiA+IEluIGlubGluZSBjcnlwdG8sIGFwcGxpY2F0aW9uIGNhbiBpZ25vcmUgdGhlIGgvdyBs b29rdXAgZGF0YSBhbmQgZG8gYQ0KPiA+ID4gcy93IGxvb2t1cCB3aXRoIHRoZSBwcm90b2NvbCBo ZWFkZXJzIGFzIHRoZXkgYXJlIG5vdCBzdHJpcHBlZCBvZmYuIEl0DQo+ID4gPiB3YXMgZG9uZSB0 aGlzIHdheSwgYmVjYXVzZSBBUEkgYW5kIHRoZSBhc3NvY2lhdGVkIG1lYW5zIHRvIGdldCB0aGlz DQo+ID4gPiBpbmZvIGZyb20gUE1EIHdhcyBub3QgaW50cm9kdWNlZCB3aGVuIGlubGluZSBjcnlw dG8gYW5kIGNvcnJlc3BvbmRpbmcNCj4gPiBzdXBwb3J0IGluIEludGVsJ3MgUE1EIHdhcyBhZGRl ZC4gQnV0IGlubGluZSBwcm90b2NvbCBjYW5ub3QgZG8gdGhlIGxvb2t1cCBpbg0KPiA+IHRoZSBh cHBsaWNhdGlvbiBhbmQgc28gdGhlIGNvbmNlcHQgb2YgdXNlcmRhdGEgZXRjIHdhcyBpbnRyb2R1 Y2VkLiBUaGUgc2FtZQ0KPiA+IGNhbiBiZSBhcHBsaWVkIHRvIGlubGluZSBjcnlwdG8gYWxzby4g QWR2YW50YWdlPyBJdCBjb3VsZCByZW1vdmUgdGhlIGV4dHJhDQo+ID4gbG9va3VwIGRvbmUgaW4g cy93Lg0KPiA+ID4NCj4gPiA+IFRvIHN1bW1hcml6ZSwgd2UgY2Fubm90IGFzc3VtZSB0aGF0IGV2 ZXJ5IGlubGluZSBjcnlwdG8gcGFja2V0IG5lZWQgdG8NCj4gPiA+IGxvb2tlZCB1cCBpbiB0aGUg YXBwbGljYXRpb24gdG8gZmlndXJlIG91dCB0aGUgcHJvY2Vzc2luZyBkb25lIG9uIHRoZSBwYWNr ZXQuDQo+ID4gVGhlcmUgY2FuIGJlIGFwcGxpY2F0aW9ucyB3aGljaCByZWxpZXMgb24gaC93IGxv b2t1cCBkYXRhIHRvIGZpZ3VyZSBvdXQgdGhlDQo+ID4gcHJvY2Vzc2luZyBkb25lLg0KPiA+ID4N Cj4gPiA+IEV4YW1wbGU6IFVzaW5nIHJ0ZV9mbG93LCBJIGNhbiBjcmVhdGUgYSBydWxlIGZvciBF U1AgcGFja2V0cyB0byBiZQ0KPiA+ID4gTUFSS2VkLiBUaGVyZSBpcyBubyBzZWN1cml0eSBzZXNz aW9uIGNyZWF0ZWQgZm9yIHRoZSBmbG93IGFuZCB0aGUNCj4gPiA+IGFwcGxpY2F0aW9uIGludGVu ZHMgdG8gZm9yd2FyZCB0aGlzIGZsb3cgcGFja2V0cyB0byBhIGRpZmZlcmVudCBwb3J0LiBXaXRo IHlvdXINCj4gPiBhcHByb2FjaCwgZXZlbiB0aGVzZSBwYWNrZXRzIHdvdWxkIGJlIGxvb2tlZCB1 cC4gVGhlIHBhY2tldCB3aWxsIGhhdmUgaW5mbw0KPiA+IGZyb20gdGhlIGgvdyBsb29rdXAgd2hp Y2ggZG9lc24ndCBnZXQgdXNlZCwgYmVjYXVzZSB0aGUgYXBwcm9hY2ggZmFpbHMgdG8NCj4gPiBp bnRyb2R1Y2UgdGhlIHJlcXVpcmVkIGNvbmNlcHRzLg0KPiA+DQo+ID4gSSB0aGluayBJIHVuZGVy c3Rvb2QgeW91ciBwb2ludC4NCj4gPiBCYXNpY2FsbHkgeW91IHNheWluZyB0aGF0IGluIGZ1dHVy ZSB5b3VyIFBNRCBmb3IgdW5wcm9jZXNzZWQgRVNQIHBhY2tldHMgbWlnaHQNCj4gPiBwcm92aWRl IHNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAodmlhIHJ0ZV9zZWN1cml0eV9nZXRfdXNlcmRh dGEpIHRoYXQgbWlnaHQNCj4gPiBiZSB1c2VkIGJ5IFNXIC0gbGV0IHNheSB0byBjaG9vc2UgQllQ QVNTIGZvciBzdWNoIHBhY2tldHMuDQo+ID4gQ3VycmVudCBpcHNlYy1zZWNndyBkb2Vzbid0IHN1 cHBvcnQgc3VjaCBhYmlsaXR5Lg0KPiA+IFlvdXIgY29uY2VybiBpcyB0aGF0IHRoaXMgcGF0Y2gg d2lsbCBzb21laG93IHByZXZlbnQgKG9yIHdpbGwgbWFrZSBpdCBoYXJkZXIpIGZvcg0KPiA+IHlv dSB0byBtYWtlIHlvdXIgZnV0dXJlIGNoYW5nZXMuDQo+ID4gQ29ycmVjdD8NCj4gPiBJZiwgc28g dGhlbiBJIHNhaWQgYmVmb3JlLCBJIGRvbid0IHRoaW5rIHRoYXQgY29uY2VybiBpcyB2YWxpZC4N Cj4gPiBNb3N0IG9idmlvdXMgdmFyaWFudCB3aGVyZSB0byBhZGQgc3VjaCBjb2RlIGlzIGluaXNk ZSBpbnNpZGUNCj4gPiBwcmVwYXJlX29uZV9wYWNrZXQoKSB3aGVuIHdlIHNwbGl0IG91ciBpbmNv bWluZyB0cmFmZmljIHRvIElQc2VjIGFuZCBub24tSVBzZWMNCj4gPiBvbmVzLg0KPiA+IFRvIGJl IG1vcmUgc3BlY2lmaWMgc29tZXRoaW5nIGxpa2UgdGhhdA0KPiA+DQo+ID4gaWYgKGV0aC0+ZXRo ZXJfdHlwZSA9PSBydGVfY3B1X3RvX2JlXzE2KFJURV9FVEhFUl9UWVBFX0lQVjQpKSB7DQo+ID4N Cj4gPiAgICAgICAgICAgICAgICAgaXBoNCA9IChjb25zdCBzdHJ1Y3QgcnRlX2lwdjRfaGRyICop cnRlX3BrdG1idWZfYWRqKHBrdCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfRVRI RVJfSERSX0xFTik7DQo+ID4gICAgICAgICAgICAgICAgIGFkanVzdF9pcHY0X3BrdGxlbihwa3Qs IGlwaDQsIDApOw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgICBpZiAoaXBoNC0+bmV4dF9wcm90 b19pZCA9PSBJUFBST1RPX0VTUCkNCj4gPiArICAgICAgICAgICAgICAgIGlmIChpcGg0LT5uZXh0 X3Byb3RvX2lkID09IElQUFJPVE9fRVNQKSB7DQo+ID4gKwkJaWYgKHBrdC0+b2xfZmxhZ3MgJiBQ S1RfUlhfU0VDX09GRkxPQUQpIHsNCj4gPiArCQkJLyogZXh0cmFjdCBleHRyYSBpbmZvLCBtYWtl IGRlY2lzaW9uIGJhc2VkIG9uIHRoYXQgKi8NCj4gPiArCQl9IGVsc2UNCj4gPiAJCQl0LT5pcHNl Yy5wa3RzWyh0LT5pcHNlYy5udW0pKytdID0gcGt0Ow0KPiA+ICsJICAgfQ0KPiA+DQo+ID4gT2Yg Y291cnNlIHNvbWUgY29kZSByZW9yZGVyaW5nIG1pZ2h0IGJlIG5lZWRlZCB0byBhdm9pZCBwZXJm b3JtYW5jZSBkcm9wLA0KPiA+IGJ1dCBJIHN1cHBvc2UgdGhlIG1haW4gaWRlYSBpcyBjbGVhciBl bm91Z2guDQo+ID4gIFNlY29uZCB2YXJpYW50IC0gYXQgZWFybHkgc3RhZ2Ugb2Ygc2luZ2xlX2lu Ym91bmRfbG9va3VwKCksIGVpdGhlciBiZWZvcmUgb3INCj4gPiBzdHJhaWdodCBhZnRlciBhY3R1 YWwgU0FEIFNXIGxvb2t1cCBmYWlsdXJlLg0KPiA+IEluIGJvdGggY2FzZXMsIHRoaXMgbmV3IGNv ZGUgd2lsbCBiZSBleGVjdXRlZCAqYmVmb3JlKiBzZXNzaW9uIHNlbGVjdGlvbiBjb2RlLg0KPiA+ DQo+ID4gPg0KPiA+ID4gRG9lcyB0aGUgYWJvdmUgc291bmQgbGlrZSBCWVBBU1M/IFllcy4NCj4g PiA+IERvZXMgaXBzZWMtc2VjZ3cgZG8gaXQgdGhpcyB3YXk/IE5vLg0KPiA+DQo+ID4gQ29ycmVj dCwgaXQgZG9lc24ndC4NCj4gPiBZb3UgaGF2ZSB0byBzdWJtaXQgcGF0Y2hlcyBpZiB5b3UnZCBs aWtlIHRvIHN1cHBvcnQgc3VjaCBhYmlsaXR5Lg0KPiA+DQo+ID4gPiBEb2VzIHRoaXMgYXBwcm9h Y2ggcHJldmVudCBhbiBhcHBsaWNhdGlvbiBmcm9tIGludHJvZHVjaW5nIHN1Y2ggYSBCWVBBU1M/ DQo+ID4gWWVzLg0KPiA+DQo+ID4gVGhhdCdzIG5vdCBjb3JyZWN0LCBJIGJlbGlldmUsIHNlZSBh Ym92ZS4NCj4gPg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEZvciBleGFt cGxlLCBFU04gd2FzIG5vdCBzdXBwb3J0ZWQgYnkgaXBzZWMtc2VjZ3cgKGJlZm9yZSBsaWJyYXJ5 DQo+ID4gPiA+ID4gbW9kZSB3YXMgaW50cm9kdWNlZCksIGJ1dCBldmVyeSBzaW5nbGUgbGlicmFy eSBjaGFuZ2UgYW5kDQo+ID4gPiA+ID4gYXBwbGljYXRpb24gY2hhbmdlIHdhcyBhZGRlZCBrZWVw aW5nIGluIG1pbmQgdGhhdCBFU04gaXMgYSB2YWxpZA0KPiA+ID4gPiA+IGZlYXR1cmUgZm9yIGlw c2VjLiBTbyBpdCBpcw0KPiA+ID4gPiBvbmUgdGhpbmcgdG8gc2F5IGlwc2VjLXNlY2d3IGRvZXNu J3Qgc3VwcG9ydCBFU1AgYnlwYXNzIGFuZCBzYXlpbmcNCj4gPiA+ID4gdGhlIHNvbHV0aW9uIGRv ZXNuJ3QgY29uc2lkZXIgYSBwb3NzaWJpbGl0eSBvZiBFU1AgYnlwYXNzLg0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAyLiBUaGUgc29sdXRpb24g cHJvcG9zZWQgaGVyZSBzZWVtcyBsaWtlIGFkZGluZyB0aGUgaGFuZGxpbmcNCj4gPiA+ID4gPiA+ ID4gaW4gaXBzZWMtc2VjZ3cgaW5zdGVhZCBvZiBpcHNlYyBsaWJyYXJ5LiBJbiBvdGhlciB3b3Jk cywgdGhpcw0KPiA+ID4gPiA+ID4gPiBmZWF0dXJlIGlzIG5vdCBnZXR0aW5nDQo+ID4gPiA+ID4g PiBhZGRlZCBpbiBpcHNlYyBsaWJyYXJ5LCB3aGljaCB3YXMgc3VwcG9zZWQgdG8gc2ltcGxpZnkg dGhlIHdob2xlDQo+ID4gPiA+ID4gPiBpcHNlYyB1c2FnZSBpbiBEUERLLCBidXQgZmFpbHMgdG8g aGFuZGxlIHRoZSBjYXNlIG9mIGZyYWdtZW50YXRpb24uDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gV2hhdCB3ZSBoYXZlIHJpZ2h0IG5vdyB3aXRoIGlwc2VjIGxpYnJhcnkgaXMgU0EgKGxvdykg bGV2ZWwgQVBJLg0KPiA+ID4gPiA+ID4gSXQgY2FuIGhhbmRsZSBtdWx0aS1zZWdtZW50IHBhY2tl dHMgcHJvcGVybHksIGJ1dCBleHBlY3RzDQo+ID4gPiA+ID4gPiBzb21lb25lIGVsc2UgdG8gZG8g b3RoZXIgc3RlcHMgKGZyYWdtZW50YXRpb24vcmVhc3NlbWJseSkuDQo+ID4gPiA+ID4gPiBpcHNl Yy1zZWNndyBkZW1vbnN0cmF0ZXMgaG93IGxpYnJ0ZV9pcF9mcmFnIGFuZCBsaWJydGVfaXBzZWMg Y2FuDQo+ID4gPiA+ID4gPiBiZSB1c2VkIHRvZ2V0aGVyIHRvIGRlYWwgd2l0aCBmcmFnbWVudGVk IElQc2VjIHRyYWZmaWMgaW4gYSBwcm9wZXINCj4gPiBtYW5uZXIuDQo+ID4gPiA+ID4gPiBQcm9i YWJseSBpbiBmdXR1cmUgd2UnbGwgY29uc2lkZXIgYWRkaW5nIHNvbWUgaGlnaC1sZXZlbCBBUEkN Cj4gPiA+ID4gPiA+IHRoYXQgd2lsbCBiZSBhYmxlIHRvIGRvIHdob2xlIHByb2Nlc3NpbmcgdW5k ZXIgaG9vZCAoU1BEL1NBRA0KPiA+ID4gPiA+ID4gbG9va3VwLCBmcmFnbWVudC9yZWFzc2VtYmx5 LCBhY3R1YWwgSVBzZWMgcGFja2V0IHByb2Nlc3NpbmcsDQo+ID4gPiA+ID4gPiBtYXRjaGluZyBp bmJvdW5kIHNlbGVjdG9ycywgZXRjLiksIGJ1dCByaWdodCBub3cgaXQgaXMgbm90IHRoZSBjYXNl Lg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gQWxzbywgc2luY2UgdGhlIGZhbGxiYWNrIGZl YXR1cmUgaXMgZW50aXJlbHkgZG9uZSBpbiB0aGUNCj4gPiA+ID4gPiA+ID4gYXBwbGljYXRpb24s IGl0IGJlZ3MgdGhlDQo+ID4gPiA+ID4gPiBxdWVzdGlvbiB3aHkgdGhlIHNhbWUgZmVhdHVyZSBp cyBvbWl0dGVkIGZvciBsZWdhY3kgdXNlIGNhc2UuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g QmVjYXVzZSBsZWdhY3kgbW9kZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGktc2VnIHBhY2tldHMgYXQg Zmlyc3QgcGxhY2UuDQo+ID4gPiA+ID4gPiBBbHNvIGl0IGlzIGFuIGV4dHJhIG92ZXJoZWFkIHRv IHN1cHBvcnQgMiBjb2RlLXBhdGhzIChsZWdhY3kgYW5kDQo+ID4gPiA+ID4gPiBsaWJyYXJ5KSBm b3IgdGhlIHNhbWUgYXBwLCBzbyB3ZSdkIGxpa2UgaW4gZnV0dXJlIHRvIGRlcHJlY2F0ZQ0KPiA+ ID4gPiA+ID4gYW5kIGxhdGVyIHJlbW92ZSBsZWdhY3kgY29kZS0gcGF0aC4NCj4gPiA+ID4gPiA+ IEFzIGEgZmlyc3Qgc3RlcCB3ZSBwcm9wb3NlIHRvIG1ha2UgbGlicmFyeSBjb2RlLXBhdGggYSBk ZWZhdWx0IG9uZToNCj4gPiA+ID4gPiA+IGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNv bS92Mi91cmw/dT1odHRwLTNBX19wYXRjaGVzLmRwZGsNCj4gPiA+ID4gPiA+IC5vcmcNCj4gPiA+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gX2NvdmVyXzU4MjQ3XyZkPUR3SUZBZyZjPW5LaldlYzJiNlIw bU95UGF6N3h0ZlEmcj1qUGZCOHJ3d3ZpUlN4eUwNCj4gPiA+ID4gV3MyDQo+ID4gPiA+ID4gPiBu NkItV1lMbjF2OVN5VE1yVDVFUXFoMlRVJm09YjNFNDI5ZnVvOFAtSzVYZkg4d0ctDQo+ID4gPiA+ IDdod3IxZDhvTTR1SkdFckFrYmYNCj4gPiA+ID4gPiA+IER2QSZzPXZ6N2lvVXpKT3V6b0pkbVY3 UU8wUUxQS1luMXl0RnNqXzBlWWF0YlNDcmcmZT0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFtBbm9v Yl0gRXZlbiBpZiB3ZSBuZWVkIHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGUgcmVhc3NlbWJseSwg aXQNCj4gPiA+ID4gPiB3b3VsZCBsb29rIHNpbXBsZSBpZiBhcHBsaWNhdGlvbiB1c2VzIHRoZSBz YW1lICJydGVfaXBzZWNfc2Vzc2lvbiINCj4gPiA+ID4gPiB0byBwcm9jZXNzIHRoZQ0KPiA+ID4g PiBmYWxsYmFjayBwYWNrZXQuDQo+ID4gPiA+DQo+ID4gPiA+IEkgdGhpbmsgdGhlcmUgaXMgc29t ZSBzb3J0IG9mIG1pc3VuZGVyc3RhbmRpbmcgaGVyZS4NCj4gPiA+ID4gV2l0aCBjdXJyZW50IGxp YnJ0ZV9pcHNlYyBkZXNpZ246DQo+ID4gPiA+IHJ0ZV9pcHNlY19zYSAtIG9wYXF1ZSBTVyByZXBy ZXNlbnRhdGlvbiBvZiB0aGUgU0EgKEhXIG5ldXRyYWwpDQo+ID4gPiA+IHJ0ZV9pcHNlY19zZXNz aW9uIGFzc29jaWF0ZXMgU0EgKHJ0ZV9pcHNlY19zYSl3aXRoIHBhcnRpY3VsYXIgSFcNCj4gPiA+ ID4gZGV2aWNlIChzZXNzaW9uKS4NCj4gPiA+ID4gU2FtZSBTQSBjYW4gYmUgcmVmZXJyZWQgYnkg bXVsdGlwbGUgc2Vzc2lvbnMuDQo+ID4gPiA+DQo+ID4gPiA+IEZyb20gcnRlX2lwc2VjLmg6DQo+ ID4gPiA+IC8qKg0KPiA+ID4gPiAgKiBydGVfaXBzZWNfc2Vzc2lvbiBpcyBhbiBhZ2dyZWdhdGUg c3RydWN0dXJlIHRoYXQgZGVmaW5lcw0KPiA+ID4gPiBwYXJ0aWN1bGFyDQo+ID4gPiA+ICAqIElQ c2VjIFNlY3VyaXR5IEFzc29jaWF0aW9uIElQc2VjIChTQSkgb24gZ2l2ZW4gc2VjdXJpdHkvY3J5 cHRvIGRldmljZToNCj4gPiA+ID4gICogLSBwb2ludGVyIHRvIHRoZSBTQSBvYmplY3QNCj4gPiA+ ID4gICogLSBzZWN1cml0eSBzZXNzaW9uIGFjdGlvbiB0eXBlDQo+ID4gPiA+ICAqIC0gcG9pbnRl ciB0byBzZWN1cml0eS9jcnlwdG8gc2Vzc2lvbiwgcGx1cyBvdGhlciByZWxhdGVkIGRhdGENCj4g PiA+ID4gICogLSBzZXNzaW9uL2RldmljZSBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gcHJlcGFyZS9w cm9jZXNzIElQc2VjIHBhY2tldHMuDQo+ID4gPiA+ICAqLw0KPiA+ID4gPg0KPiA+ID4gPiA+IElu IHRoYXQgY2FzZSwgdGhlIHByb2Nlc3NpbmcgcmVxdWlyZWQgdG8gaGFuZGxlIHRoZSBvdGhlciBw YWNrZXQNCj4gPiA+ID4gPiB3aWxsIGJlIGhpZGRlbiBmcm9tIHRoZSBhcHBsaWNhdGlvbi4gSGVy ZSBhcHBsaWNhdGlvbiBoYXMgdG8gbWFrZQ0KPiA+ID4gPiA+IHN1cmUgaXQgY2hvb3Nlcw0KPiA+ ID4gPiB0aGUgY29ycmVjdCBzZXNzaW9uLCB3aGljaCBJIGJlbGlldmUgc2hvdWxkIGJlIG1vdmVk IHRvIGlwc2VjIGxpYnJhcnkuDQo+ID4gPiA+DQo+ID4gPiA+IEZyb20gbXkgc2lkZSBpdCBpcyBh IGdvb2QgdGhpbmcgdG8gbGV0IGFwcGxpY2F0aW9uIGRlZmluZSBpdHMgb3duIHVzYWdlIG1vZGVs Lg0KPiA+ID4gPiBJLkUuIGxpYnJ0ZV9pcHNlYyBzdXBwb3J0cyBtdWx0aXBsZS1zZXNzaW9ucyBw ZXIgU0EsIHVwcGVyLWxheWVyDQo+ID4gPiA+IChhcHApIGRlY2lkZXMgaG93IGl0IHdpbGwgdXNl IHRoYXQgZmVhdHVyZS4NCj4gPiA+ID4gVGhvdWdoIGlmIHlvdSBzdHJvbmdseSBmZWVsIHRoYXQg c29tZSBoaWdoZXItbGV2ZWwgQVBJIGlzIG5lZWRlZA0KPiA+ID4gPiBoZXJlLCBhbmQgaGF2ZSBz b21lIGdvb2QgaWRlYXMgYWJvdXQgaXQgIC0gcGxlYXNlIGdvIGFoZWFkIGFuZCBzdWJtaXQgUkZD DQo+ID4gZm9yIGl0Lg0KPiA+ID4NCj4gPiA+IFtBbm9vYl0gSWYgeW91IGFyZSBva2F5IHdpdGgg YXBwbGljYXRpb24gZGVmaW5pbmcgaG93IGl0IGltcGxlbWVudHMgaXBzZWMsDQo+ID4gdGhlbiBw cm9iYWJseSB0aGVyZSBpcyBubyB1c2UgY2FzZSBmb3IgbGliIGlwc2VjPw0KPiA+DQo+ID4gOikN Cj4gPiBPbmNlIGFnYWluIC0gbGlicmFyeSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbi4NCj4g PiBBcHBsaWNhdGlvbiBkZWZpbmVzIHRoZSB3YXkgdG8gdXNlIGl0LCBpLmUuIGhvdyBpdCB3aWxs IGFwcGx5IGZ1bmN0aW9uYWxpdHkgbGlicmFyeQ0KPiA+IHByb3ZpZGVzIGZvciBkaWZmZXJlbnQg dXNlLWNhc2Ugc2NlbmFyaW9zLg0KPiA+IEFzIGFuIGV4YW1wbGU6IHNucHJpdG5mKCkgcHJvdmlk ZXMgdXNlciB3aXRoIGFiaWxpdHkgdG8gZm9ybWF0IHN0cmluZ3MsIGFwcGxpY2F0aW9uDQo+ID4g ZGVjaWRlcyB3aGF0IGV4YWN0bHkgZm9ybWF0IHRvIHVzZSBhbmQgZm9yIHdoaWNoIHN0cmluZy4N Cj4gPiBTYW1lIGZvciBsaWJydGVfaXBzZWMsIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0 eSB0byBwZXJmb3JtIHByb2Nlc3NpbmcgZm9yDQo+ID4gRVNQIHBhY2tldHMuDQo+ID4gQXBwbGlj YXRpb24gZGVmaW5lcyB3aGljaCBwYWNrZXRzIHRvIHByb2Nlc3MgYW5kIHdoYXQgc2Vzc2lvbiB0 byB1c2UuDQo+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IDMuIEl0IHNlZW1zIGxpa2Ugb3JkZXJpbmcgd29uJ3Qg YmUgbWFpbnRhaW5lZCBvbmNlIHRoaXMNCj4gPiA+ID4gPiA+ID4gcHJvY2Vzc2luZyBpcyBkb25l LiBBZ2FpbiwgdGhpcyBpcyB0aGUgc2VxdWVuY2UgSSB1bmRlcnN0b29kLg0KPiA+ID4gPiA+ID4g PiBQbGVhc2UgY29ycmVjdCBtZSBpZiBJIG1pc3NlZA0KPiA+ID4gPiA+ID4gc29tZXRoaW5nLA0K PiA+ID4gPiA+ID4gPiAgICAgICAgYS4gQXBwbGljYXRpb24gcmVjZWl2ZXMgYSBidW5jaCBvZiBw YWNrZXRzIChsZXQncyBzYXkgNg0KPiA+ID4gPiA+ID4gPiBwYWNrZXRzKSwgaW4gd2hpY2ggZmV3 IGFyZSBmcmFnbWVudGVkIChQMyAmIFA0KSBhbmQgdGhlIHJlc3QNCj4gPiA+ID4gPiA+ID4gY2Fu IGJlIGlubGluZQ0KPiA+ID4gPiA+ID4gcHJvY2Vzc2VkLg0KPiA+ID4gPiA+ID4gPiAgICAgICAg Yi4gQXBwbGljYXRpb24gcmVjZWl2ZXMgUDEtPlAyLT5QMy0+UDQtPlA1LT5QNiAoaW4NCj4gPiA+ ID4gPiA+ID4gdGhpcywgUDEsIFAyLCBQNSwgUDYgYXJlDQo+ID4gPiA+ID4gPiBpbmxpbmUgcHJv Y2Vzc2VkIHN1Y2Nlc3NmdWxseSkgYW5kIFA0ICYgUDUgYXJlIHRoZSBmcmFnbWVudHMNCj4gPiA+ ID4gPiA+ID4gICAgICAgIGMuIEFwcGxpY2F0aW9uIGdyb3VwcyBwYWNrZXRzLiBQMS0+UDItPlA1 LT5QNiBiZWNvbWVzDQo+ID4gPiA+ID4gPiA+b25lIGdyb3VwIGFuZCBQMy0NCj4gPiA+ID4gPiA+ ID5QNCBiZWNvbWVzIGFub3RoZXIgYW5kIGdvZXMgZm9yIGZhbGxiYWNrIHByb2Nlc3NpbmcuDQo+ ID4gPiA+ID4gPiA+IE5vdyBob3cgaXMgb3JkZXJpbmcgbWFpbnRhaW5lZD8gSSBjb3VsZG4ndCBm aWd1cmUgb3V0IGhvdyB0aGF0DQo+ID4gPiA+ID4gPiA+aXMgZG9uZSBpbiB0aGlzDQo+ID4gPiA+ ID4gPiBjYXNlLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFlvdSByaWdodCwgZmFsbGJhY2sg c2Vzc2lvbiBjYW4gaW50cm9kdWNlIHBhY2tldCByZW9yZGVyaW5nLg0KPiA+ID4gPiA+ID4gQXQg bGVhc3QgdGlsbCB3ZSdsbCBoYXZlIGFiaWxpdHkgdG8gcHJvY2VzcyBwYWNrZXRzIGluIHN5bmMg bW9kZSB0b28uDQo+ID4gPiA+ID4gPiBTZWUgb3VyIHByZXNlbnRhdGlvbiBhdCBkcGRrIHVzZXJz cGFjZSAoc2xpZGVzIDE3LCAxOCk6DQo+ID4gPiA+ID4gPiBodHRwczovL3VybGRlZmVuc2UucHJv b2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cHMtM0FfX3N0YXRpYy5zY2hlDQo+ID4gPiA+ID4gPiBk LmNvDQo+ID4gPiA+ID4gPiBtX2hvc3RlZC01RmZpbGVzX2RwZGtib3JkZWF1eDIwMTlfOGZfRFBE Sy0NCj4gPiA+ID4gMkRJUFNFQ3U5LnBkZiZkPUR3SUZBZyZjPW4NCj4gPiA+ID4gPiA+IEtqV2Vj MmI2UjBtT3lQYXo3eHRmUSZyPWpQZkI4cnd3dmlSU3h5TFdzMm42Qi0NCj4gPiA+ID4gV1lMbjF2 OVN5VE1yVDVFUXFoMlRVJg0KPiA+ID4gPiA+ID4gbT1iM0U0MjlmdW84UC1LNVhmSDh3Ry0NCj4g PiA+ID4gN2h3cjFkOG9NNHVKR0VyQWtiZkR2QSZzPU1MUm5uWWN5a2puc3FYckhHVXVSDQo+ID4g PiA+ID4gPiBZSGM1dUR4YUFvZDBZbDdmMDZFUXIxTSZlPSBSaWdodCBub3cgdGhlIG9ubHkgd2F5 IHRvIGRlYWwgd2l0aA0KPiA+ID4gPiA+ID4gaXQgLSBoYXZlIHJlcGxheSB3aW5kb3cgYmlnIGVu b3VnaCB0byBzdXN0YWluIHJlb3JkZXJpbmcgYW5kDQo+ID4gPiA+ID4gPiBhc3luYyBwcm9jZXNz aW5nIGxhdGVuY3kuDQo+ID4gPiA+ID4gPiBUaGF0J3MgYWN0dWFsbHkgYW5vdGhlciByZWFzb24g d2h5IHdlIGFkZCB0aGlzIGZlYXR1cmUgaW50bw0KPiA+ID4gPiA+ID4gaXBzZWMtc2VjZ3cgc2Ft cGxlDQo+ID4gPiA+ID4gPiBhcHA6DQo+ID4gPiA+ID4gPiBzbyBwZW9wbGUgY2FuIGV2YWx1YXRl IGl0IG9uIHRoZWlyIHBsYXRmb3JtcywgZGV0ZXJtaW5lIHdoYXQNCj4gPiA+ID4gPiA+IHJlcGxh eSB3aW5kb3cgc2l6ZSB3b3VsZCBiZSBuZWVkZWQsIHdoYXQgaXNzdWVzL3Nsb3dkb3ducyBpdCBt aWdodA0KPiA+IGNhdXNlLCBldGMuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBbQW5vb2JdIFRoaXMg aXMgc29tZXRoaW5nIEkgaGFkIG5vdGljZWQgd2hpbGUgZ29pbmcgdGhyb3VnaCB0aGUgY29kZSBm bG93Lg0KPiA+ID4gPiBUaGUgb3JkZXJpbmcgaW5mbyBpcyBsb3N0IGJlY2F1c2Ugb2YgdGhlIGFw cHJvYWNoLg0KPiA+ID4gPg0KPiA+ID4gPiBPbmNlIGFnYWluLCBpdCBpcyBhIGtub3duIGxpbWl0 YXRpb24gYW5kIHdlIGFyZSBub3QgdHJ5aW5nIHRvIGhpZGUNCj4gPiA+ID4gaXQgZnJvbSB5b3Ug OikNCj4gPiA+DQo+ID4gPiBbQW5vb2JdIE5ldmVyIHNhaWQgaXQgd2FzIGhpZGRlbi4gSW5pdGlh bGx5IEkgaGFkIG9rYXllZCB0aGUgYXBwcm9hY2gNCj4gPiA+IGV2ZW4gdGhvdWdoIGl0IHdhc24n dCBhIHNvbHV0aW9uIHN1aXRhYmxlIGZvciBpbmxpbmUgcHJvdG9jb2wuIEJ1dCBhcyBtb3JlIGNh c2VzDQo+ID4gd2VyZSBjb25zaWRlcmVkLCBmZXcgc2hvcnRjb21pbmdzIHdlcmUgb2JzZXJ2ZWQs IGFuZCBJIHdhcyBza2VwdGljYWwgYWJvdXQNCj4gPiBob3cgYW55IG9mIHRoYXQgd291bGQgYmUg c29sdmVkIGluIHRoZSBsb25nIHJ1bi4NCj4gPiA+DQo+ID4gPiBNeSBzdWdnZXN0aW9uLCBpZiB0 aGVzZSBsaW1pdGF0aW9ucyBhbmQgdGhlIHBsYW5zIHRvIGFkZHJlc3MgaXQgd2VyZSBtZW50aW9u ZWQNCj4gPiBpbiB0aGUgY292ZXIgbGV0dGVyLCB3ZSBjb3VsZCd2ZSBzYXZlZCBmZXcgY3ljbGVz IGhlcmUuDQo+ID4NCj4gPiBQb2ludCB0YWtlbi4NCj4gPg0KPiA+ID4gQnV0IG15IHJlcGx5IHdv dWxkIHN0aWxsIGJlIHRoZSBzYW1lIPCfmIoNCj4gPiA+DQo+ID4gPiA+IEl0DQo+ID4gPiA+IHdh cyBvdXRsaW5lZCBoZXJlOg0KPiA+ID4gPiBodHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2ludC5j b20vdjIvdXJsP3U9aHR0cHMtDQo+ID4gPiA+IDNBX19zdGF0aWMuc2NoZWQuY29tX2hvc3RlZC01 RmZpbGVzX2RwZGtib3JkZWF1eDIwMTlfOGZfRFBESy0NCj4gPiA+ID4NCj4gPiAyRElQU0VDdTku cGRmJmQ9RHdJRkFnJmM9bktqV2VjMmI2UjBtT3lQYXo3eHRmUSZyPWpQZkI4cnd3dmlSU3h5TA0K PiA+ID4gPiBXczJuNkItV1lMbjF2OVN5VE1yVDVFUXFoMlRVJm09YjNFNDI5ZnVvOFAtSzVYZkg4 d0ctDQo+ID4gPiA+DQo+ID4gN2h3cjFkOG9NNHVKR0VyQWtiZkR2QSZzPU1MUm5uWWN5a2puc3FY ckhHVXVSWUhjNXVEeGFBb2QwWWw3ZjA2RQ0KPiA+ID4gPiBRcjFNJmU9DQo+ID4gPiA+IEFuZCBp biB0aGUgbGF0ZXN0IHBhdGNoIHZlcnNpb24gTWFyY2luIGNsZWFybHkgc3RhdGVkIGl0IGluc2lk ZSB0aGUgQUcgc2Vzc2lvbjoNCj4gPiA+ID4gaHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQu Y29tL3YyL3VybD91PWh0dHAtDQo+ID4gPiA+DQo+ID4gM0FfX3BhdGNoZXMuZHBkay5vcmdfcGF0 Y2hfNjAwMzlfJmQ9RHdJRkFnJmM9bktqV2VjMmI2UjBtT3lQYXo3eHRmDQo+ID4gPiA+IFEmcj1q UGZCOHJ3d3ZpUlN4eUxXczJuNkItDQo+ID4gV1lMbjF2OVN5VE1yVDVFUXFoMlRVJm09YjNFNDI5 ZnVvOFAtDQo+ID4gPiA+IEs1WGZIOHdHLQ0KPiA+ID4gPg0KPiA+IDdod3IxZDhvTTR1SkdFckFr YmZEdkEmcz16cm45MVZqZl9aRWxBbERmN0llWkdtR2V2Y0E2Uk13cFBUTFVDR2xnWg0KPiA+ID4g PiBjWSZlPQ0KPiA+ID4gPiBJZiB5b3UgdGhpbmsgZXZlbiBmdXJ0aGVyIGNsYXJpZmljYXRpb24g d2l0aGluIHRoZSBkb2MgaXMgbmVlZGVkLA0KPiA+ID4gPiBwbGVhc2UgbGV0IHVzIGtub3cuDQo+ ID4gPiA+DQo+ID4gPiA+IEFib3V0IHRoZSBhY3R1YWwgcGFja2V0IHJlLW9yaWRlcmluZzoNCj4g PiA+ID4gIEFGQUlLLCBmb3Igc29tZSB1c2UtY2FzZXMgaXQgbWlnaHQgYmUgYWNjZXB0YWJsZSwg Zm9yIG90aGVycyBub3QuDQo+ID4gPiA+IFRob3VnaCBpdCBpcyBhbiBvcHRpb25hbCBmZWF0dXJl LCB0aGF0IHdvdWxkbid0IGJlIGVuYWJsZWQgYnkNCj4gPiA+ID4gZGVmYXVsdCwgc28gdXNlciBj YW4gYWx3YXlzIGNob29zZSBpcyBpdCBkb2VzIGhlIG5lZWRzL3dhbnRzIHRoaXMgZmVhdHVyZSBv cg0KPiA+IG5vdC4NCj4gPiA+ID4gSWYvd2hlbiB3ZSdsbCBoYXZlIENQVV9DUllQVE8gcHJvY2Vz c2luZyBtb2RlOg0KPiA+ID4NCj4gPiA+IFtBbm9vYl0gU2hvdWxkbid0IHdlIGdldCB0aGF0IGFj Y2VwdGVkIGZpcnN0IHRoZW4/DQo+ID4NCj4gPiBJIGRvbid0IHRoaW5rIHNvLg0KPiA+IEN1cnJl bnQgaW1wbGVtZW50YXRpb24gZG9lcyBwcm92aWRlIGV4cGVjdGVkIGZ1bmN0aW9uYWxpdHkgKHdp dGgga25vd24NCj4gPiBsaW1pdGF0aW9ucykuDQo+ID4gSW4gZnV0dXJlLCB3ZSBjYW4gdHJ5IHRv IGltcHJvdmUgaXQgYW5kL29yIHJlbW92ZSBleGlzdGluZyBsaW1pdGF0aW9ucy4NCj4gPiBUaGF0 J3MgYSBjb21tb24gaXRlcmF0aW9uIGRldmVsb3BtZW50IGFwcHJvYWNoIHRoYXQgaXMgdXNlZCB0 aG91Z2ggd2hvbGUNCj4gPiBEUERLOg0KPiA+IC0gcHJvdmlkZSBpbml0aWFsIHNvbHV0aW9uIHdp dGggYmFzaWMgZnVuY3Rpb25hbGl0eSBmaXJzdA0KPiA+IC0gaW1wcm92ZS9leHRlbmQgd2l0aCBm dXR1cmUgcmVsZWFzZXMvcGF0Y2hlcw0KPiA+DQo+ID4gPg0KPiA+ID4gQWxzbywgdGhlIG9yZGVy aW5nIGlzIGxvc3QgYmVjYXVzZSBhcHBsaWNhdGlvbiBpcyBub3QgY29uc2lkZXJpbmcgdGhhdC4g V2h5IGNhbid0DQo+ID4gd2UgdXNlIHJlLW9yZGVyaW5nIGxpYnJhcnk/IE9yIGFuIGV2ZW50LWRl dj8NCj4gPg0KPiA+IE5vLW9uZSBzYXlpbmcgaXQgY2FuJ3QgYmUgaW1wcm92ZWQgaW4gb25lIHdh eSBvciBhbm90aGVyLg0KPiA+IFdlIGRvbid0IHBsYW4gdG8gaW50cm9kdWNlIHN1Y2ggY29kZSBy aWdodCBub3cgZHVlIHRvIGl0cyBjb21wbGV4aXR5Lg0KPiA+IE1pZ2h0IGJlIHNvbWV0aGluZyBp biBmdXR1cmUuDQo+ID4gVGhvdWdoIHlvdSBhcmUgd2VsY29tZSB0byBnbyBhaGVhZCBhbmQgc3Vi bWl0IHlvdXIgb3duIHBhdGNoZXMgdG8gaW1wcm92ZQ0KPiA+IHRoYXQgc29sdXRpb24uDQo+ID4N Cj4gPiA+DQo+ID4gPiA+IGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/ dT1odHRwLQ0KPiA+ID4gPg0KPiA+IDNBX19wYXRjaGVzLmRwZGsub3JnX2NvdmVyXzU4ODYyXyZk PUR3SUZBZyZjPW5LaldlYzJiNlIwbU95UGF6N3h0Zg0KPiA+ID4gPiBRJnI9alBmQjhyd3d2aVJT eHlMV3MybjZCLQ0KPiA+IFdZTG4xdjlTeVRNclQ1RVFxaDJUVSZtPWIzRTQyOWZ1bzhQLQ0KPiA+ ID4gPiBLNVhmSDh3Ry0NCj4gPiA+ID4NCj4gPiA3aHdyMWQ4b000dUpHRXJBa2JmRHZBJnM9azF6 ZWZfMXVxRUxYYmxLTjNfcWpYMDRXWE5GR0FVRUZJSUpydktQcjYNCj4gPiA+ID4gZUEmZT0NCj4g PiA+ID4gd2UnbGwgYWRkIGFiaWxpdHkgZm9yIHRoZSB1c2VyIHRvIGF2b2lkIHRoaXMgcmVvcmRl cmluZyBwcm9ibGVtDQo+ID4gPiA+DQo+ID4gPiA+ID4gQXMgd2UgZGlnIGRlZXBlciwgdGhlIGZl YXR1cmUgbG9va3MgaGFyZGx5IGNvbXBsZXRlLiBUaGUNCj4gPiA+ID4gPiBjb25jZXJuaW5nIHBh cnQgaXMgdGhlIGFwcHJvYWNoIGRvZXNuJ3Qgc2VlbSBjb25kdWNpdmUgdG8gZml4aW5nDQo+ID4g PiA+ID4gYW55IG9mIHRoZXNlIGlzc3VlcyBpbiB0aGUNCj4gPiA+ID4gZnV0dXJlLg0KPiA+ID4g Pg0KPiA+ID4gPiBBZ2FpbiwgZG9uJ3QgYWdyZWUgd2l0aCB0aGF0IHN0YXRlbWVudC4NCj4gPiA+ ID4gRnJvbSBteSBwZXJzcGVjdGl2ZTogd2hpbGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMg aXRzDQo+ID4gPiA+IGxpbWl0YXRpb25zIChwYWNrZXQgcmVvcmRlcmluZywgaW5saW5lLXByb3Rv L2xrc2QtcHJvdG8pLCBpdCBpcw0KPiA+ID4gPiB0b3RhbGx5IGZ1bmN0aW9uYWwgYW5kIHByb3Zp ZGVzIHVzZXJzIHdpdGggYSByZWZlcmVuY2UgaG93IHRvIGRlYWwgd2l0aCBzdWNoDQo+ID4ga2lu ZCBvZiBwcm9ibGVtcy4NCj4gPiA+DQo+ID4gPiBbQW5vb2JdIFdlbGwsIHRoYXQgaXMgZXhhY3Rs eSBteSBwcm9ibGVtLiBJdCBnaXZlcyBhIHNrZXdlZCByZWZlcmVuY2UNCj4gPiA+IG9uIGhvdyB0 byBkZWFsIHdpdGggdGhlIHByb2JsZW0sIHdpdGhvdXQgY29uc2lkZXJpbmcgb3RoZXIgcG9zc2li aWxpdGllcy4NCj4gPg0KPiA+IE9uY2UgYWdhaW4sIHBsZWFzZSBmZWVsIGZyZWUgYW5kIGNvbWUt dXAgd2l0aCB5b3VyIG93biBwYXRjaGVzLCB0aGF0IHdpbGwNCj4gPiBhZGRyZXNzIHRoaXMgcHJv YmxlbSBpbiBhIHNtYXJ0ZXIgd2F5Lg0KPiA+DQo+ID4gPiBJZiBldmVyeSBhcHBsaWNhdGlvbiBz dGFydHMgYWRvcHRpbmcgdGhpcyBtZXRob2QgYW5kIHN0YXJ0cyBkb2luZw0KPiA+ID4gbG9va3Vw IGZvciBldmVyeSBFU1AgcGFja2V0LCBoL3cgYmFzZWQgbG9va3VwcyAoYW5kIHRoZSBhc3NvY2lh dGVkDQo+ID4gPiBoL3cpIHdvdWxkIGJlIHJlbmRlcmVkIHVzZWxlc3MuIEkgcmVhbGx5IHRoaW5r IHRoaXMgc2VyaWVzLCB3aGljaCBoYXBwZW5zIHRvIGJlDQo+ID4gdGhlIGZpcnN0IHN0ZXAgaW4g c29sdmluZyBhIGNvbXBsZXggcHJvYmxlbSwgd2lsbCBiZSB2ZXJ5IHVzZWZ1bCBpZiBhbGwgdGhl c2UgaXNzdWVzDQo+ID4gYXJlIGFkZHJlc3NlZCBwcm9wZXJseS4NCj4gPiA+DQo+ID4gPiBJZiB5 b3UgY2FuIGludHJvZHVjZSB0aGUgaW5saW5lK2xvb2thc2lkZSB2aWEgbGlicnRlX2lwc2VjLCBp dHMNCj4gPiA+IHBlcmhhcHMgb2sgZm9yIHRoZSBwYXRjaCB0byBoYXZlIHNvbWUgbGltaXRhdGlv bnMobGlrZSBsYWNrIG9mIG9yZGVyaW5nLA0KPiA+IGFzc3VtcHRpb25zIG9uIEVTUCBldGMpLiBI b3dldmVyLCBpZiB0aGUgcGF0Y2ggaXMgaW50cm9kdWNlZCBkaXJlY3RseSBpbnRvIGlwc2VjLQ0K PiA+IHNlY2d3LCBpdCBuZWVkcyB0byBiZSBtb3JlIGNvbXByZWhlbnNpdmUgYW5kIHJvYnVzdC4N Cj4gPg0KPiA+IEkgdGhpbmsgY29tbW9uIERQREsgcG9saWN5IGlzIGV4YWN0bHkgb3Bwb3NpdGU6 DQo+ID4gbGlicmFyeS9kcml2ZXIgaGFzIHRvIGJlIGFzIHJvYnVzdCBhbmQgY29tcHJlaGVuc2l2 ZSBhcyBwb3NzaWJsZS4NCj4gPiBzYW1wbGUgYXBwIGNvZGUgYWxsb3dlZCB0byBoYXZlIHNvbWUg bGltaXRhdGlvbnMgKGFzIGxvbmcgYXMgdGhleSBhcmUNCj4gPiBkb2N1bWVudGVkLCBldGMuKS4N Cj4gPg0KPiA+ID4gSSBhbHNvIGV4cGVjdCBwZXJmb3JtYW5jZSBpbXBhY3QgZHVlIHRvIHRoZXNl IGNoYW5nZXMNCj4gPg0KPiA+IENvdWxkIHlvdSBiZSBtb3JlIHNwZWNpZmljIGhlcmU/DQo+ID4g V2hhdCBwZXJmb3JtYW5jZSBpbXBhY3QgZG8geW91IGV4cGVjdCBhbmQgd2h5Pw0KPiA+IENhbiB5 b3UgcG9pbnQgdG8gdGhlIGV4YWN0IHBpZWNlIG9mIHBhdGNoIGNvZGUgdGhhdCB5b3UgYmVsaWV2 ZSB3b3VsZCBjYXVzZSBhDQo+ID4gZGVncmFkYXRpb24uDQo+ID4gSSBkb24ndCBleHBlY3QgYW55 IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cyBvbiBvdXIgcGxhdGZvcm1zIGRpZG4ndCBzaG93IGFueQ0K PiA+IHJlZ3Jlc3Npb24gc28gZmFyLg0KPiA+DQo+ID4gPiBhbmQgc28gSSBwcmVmZXIgaWYgdGhl IGlubGluZStsb29rYXNpZGUgY2FuIGJlIG1hZGUgc2VwYXJhdGUgZGF0YXBhdGgNCj4gPiA+IHJh dGhlciB0aGFuIG92ZXJsb2FkaW5nIHRoZSBleGlzdGluZyBvbmUuDQo+ID4NCj4gPiBJIGRvbid0 IHNlZSBhbnkgZ29vZCByZWFzb24gZm9yIHRoYXQuDQo+ID4gVGhpcyBmZWF0dXJlIGlzIG9wdGlv bmFsLg0KPiA+IFVzZXIgaGF2ZSB0byBlbmFibGUgaXQgbWFudWFsbHkgZm9yIGVhY2ggc2Vzc2lv biAodmlhIGNvbmZpZyBmaWxlKS4NCj4gPiBmb3IgYWxsIG90aGVyIHNlc3Npb25zIHRoZXJlIGlz IG5vIGltcGFjdC4NCj4gPiBXaGF0IHdlIHByb2JhYmx5IGNhbiBkbyAtIGFkZCBleHRyYSBjaGVj ayBpbnNpZGUgc2EuYyB0byBhbGxvdyBmYWxsYmFjayBzZXNzaW9ucw0KPiA+IG9ubHkgZm9yIGlu bGluZS1jcnlwdG8tb2ZmbG9hZCB0eXBlIG9mIHNlc3Npb25zLg0KPiA+DQo+ID4gPg0KPiA+ID4g Pg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQWxzbywgaWYgdGhlIG5ldyBpcHNlYyByZWxhdGVkIGZl YXR1cmVzIGFyZSBpbnRyb2R1Y2VkIHZpYQ0KPiA+ID4gPiA+IGlwc2VjLXNlY2d3IHRoYW4gdmlh IHJ0ZV9pcHNlYywgdGhlbiBpdCByYWlzZXMgZG91YnRzIG92ZXIgdGhlIHV0aWxpdHkgb2YNCj4g PiBydGVfaXBzZWMgbGlicmFyeS4NCj4gPiA+ID4NCj4gPiA+ID4NCg0K