From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 1967C1B5A6 for ; Tue, 26 Jun 2018 14:58:44 +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 orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Jun 2018 05:58:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,274,1526367600"; d="scan'208";a="211260375" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga004.jf.intel.com with ESMTP; 26 Jun 2018 05:58:42 -0700 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 26 Jun 2018 05:58:42 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx124.amr.corp.intel.com (10.18.125.39) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 26 Jun 2018 05:58:42 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.51]) by shsmsx102.ccr.corp.intel.com ([169.254.2.223]) with mapi id 14.03.0319.002; Tue, 26 Jun 2018 20:58:39 +0800 From: "Zhang, Qi Z" To: "Burakov, Anatoly" , "thomas@monjalon.net" CC: "Ananyev, Konstantin" , "dev@dpdk.org" , "Richardson, Bruce" , "Yigit, Ferruh" , "Shelton, Benjamin H" , "Vangati, Narender" Thread-Topic: [PATCH v4 06/24] ethdev: enable hotplug on multi-process Thread-Index: AQHUDRx7We7K/aoOz0ivwrGOyZX0naRx7K2AgACIkVD//4LDAIAAhpRw Date: Tue, 26 Jun 2018 12:58:38 +0000 Message-ID: <039ED4275CED7440929022BC67E706115323E7A5@SHSMSX103.ccr.corp.intel.com> References: <20180607123849.14439-1-qi.z.zhang@intel.com> <20180626070832.3055-1-qi.z.zhang@intel.com> <20180626070832.3055-7-qi.z.zhang@intel.com> <969f0cb7-4186-d05c-442f-6341f1c44e93@intel.com> <039ED4275CED7440929022BC67E706115323E71A@SHSMSX103.ccr.corp.intel.com> <30b1c93c-1d7c-07d9-d41a-76e84f63d6a1@intel.com> In-Reply-To: <30b1c93c-1d7c-07d9-d41a-76e84f63d6a1@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDdjNDllODItZTg4MS00OWZhLWE0ZGMtZGYyYmYyN2Q0ZjIwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiYnVqc3NUVlJTWkxiQkNFYTBPdGtEUnJFS1BzNnA1M1dPcVd3eHUwcWI5ZVFWVmFmOVBuTjlnVVYycXFPZU5JZSJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 06/24] ethdev: enable hotplug on multi-process 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: , X-List-Received-Date: Tue, 26 Jun 2018 12:58:45 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQnVyYWtvdiwgQW5hdG9s eQ0KPiBTZW50OiBUdWVzZGF5LCBKdW5lIDI2LCAyMDE4IDg6NTAgUE0NCj4gVG86IFpoYW5nLCBR aSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47IHRob21hc0Btb25qYWxvbi5uZXQNCj4gQ2M6IEFu YW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBkZXZAZHBk ay5vcmc7DQo+IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47 IFlpZ2l0LCBGZXJydWgNCj4gPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+OyBTaGVsdG9uLCBCZW5q YW1pbiBIDQo+IDxiZW5qYW1pbi5oLnNoZWx0b25AaW50ZWwuY29tPjsgVmFuZ2F0aSwgTmFyZW5k ZXINCj4gPG5hcmVuZGVyLnZhbmdhdGlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENI IHY0IDA2LzI0XSBldGhkZXY6IGVuYWJsZSBob3RwbHVnIG9uIG11bHRpLXByb2Nlc3MNCj4gDQo+ IE9uIDI2LUp1bi0xOCAxOjE5IFBNLCBaaGFuZywgUWkgWiB3cm90ZToNCj4gPg0KPiA+DQo+ID4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEJ1cmFrb3YsIEFuYXRvbHkN Cj4gPj4gU2VudDogVHVlc2RheSwgSnVuZSAyNiwgMjAxOCA4OjA5IFBNDQo+ID4+IFRvOiBaaGFu ZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyB0aG9tYXNAbW9uamFsb24ubmV0DQo+ID4+ IENjOiBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsg ZGV2QGRwZGsub3JnOw0KPiA+PiBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBp bnRlbC5jb20+OyBZaWdpdCwgRmVycnVoDQo+ID4+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsg U2hlbHRvbiwgQmVuamFtaW4gSA0KPiA+PiA8YmVuamFtaW4uaC5zaGVsdG9uQGludGVsLmNvbT47 IFZhbmdhdGksIE5hcmVuZGVyDQo+ID4+IDxuYXJlbmRlci52YW5nYXRpQGludGVsLmNvbT4NCj4g Pj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NCAwNi8yNF0gZXRoZGV2OiBlbmFibGUgaG90cGx1ZyBv biBtdWx0aS1wcm9jZXNzDQo+ID4+DQo+ID4+IE9uIDI2LUp1bi0xOCA4OjA4IEFNLCBRaSBaaGFu ZyB3cm90ZToNCj4gPj4+IFdlIGFyZSBnb2luZyB0byBpbnRyb2R1Y2UgdGhlIHNvbHV0aW9uIHRv IGhhbmRsZSBkaWZmZXJlbnQgaG90cGx1Zw0KPiA+Pj4gY2FzZXMgaW4gbXVsdGktcHJvY2VzcyBz aXR1YXRpb24sIGl0IGluY2x1ZGUgYmVsb3cgc2NlbmFyaW86DQo+ID4+Pg0KPiA+Pj4gMS4gQXR0 YWNoIGEgc2hhcmUgZGV2aWNlIGZyb20gcHJpbWFyeSAyLiBEZXRhY2ggYSBzaGFyZSBkZXZpY2Ug ZnJvbQ0KPiA+Pj4gcHJpbWFyeSAzLiBBdHRhY2ggYSBzaGFyZSBkZXZpY2UgZnJvbSBzZWNvbmRh cnkgNC4gRGV0YWNoIGEgc2hhcmUNCj4gPj4+IGRldmljZSBmcm9tIHNlY29uZGFyeSA1LiBBdHRh Y2ggYSBwcml2YXRlIGRldmljZSBmcm9tIHNlY29uZGFyeSA2Lg0KPiA+Pj4gRGV0YWNoIGEgcHJp dmF0ZSBkZXZpY2UgZnJvbSBzZWNvbmRhcnkgNy4gRGV0YWNoIGEgc2hhcmUgZGV2aWNlIGZyb20N Cj4gPj4+IHNlY29uZGFyeSBwcml2YXRlbHkgOC4gQXR0YWNoIGEgc2hhcmUgZGV2aWNlIGZyb20g c2Vjb25kYXJ5DQo+ID4+PiBwcml2YXRlbHkNCj4gPj4+DQo+ID4+PiBJbiBwcmltYXJ5LXNlY29u ZGFyeSBwcm9jZXNzIG1vZGVsLCB3ZSBhc3N1bWUgZGV2aWNlIGlzIHNoYXJlZCBieQ0KPiBkZWZh dWx0Lg0KPiA+Pj4gdGhhdCBtZWFucyBhdHRhY2ggb3IgZGV0YWNoIGEgZGV2aWNlIG9uIGFueSBw cm9jZXNzIHdpbGwgYnJvYWRjYXN0DQo+ID4+PiB0byBhbGwgb3RoZXIgcHJvY2Vzc2VzIHRocm91 Z2ggbXAgY2hhbm5lbCB0aGVuIGRldmljZSBpbmZvcm1hdGlvbg0KPiA+Pj4gd2lsbCBiZSBzeW5j aHJvbml6ZWQgb24gYWxsIHByb2Nlc3Nlcy4NCj4gPj4+DQo+ID4+PiBBbnkgZmFpbHVyZSBkdXJp bmcgYXR0YWNoaW5nIHByb2Nlc3Mgd2lsbCBjYXVzZSBpbmNvbnNpc3RlbnQgc3RhdHVzDQo+ID4+ PiBiZXR3ZWVuIHByb2Nlc3Nlcywgc28gcHJvcGVyIHJvbGxiYWNrIGFjdGlvbiBzaG91bGQgYmUg Y29uc2lkZXJlZC4NCj4gPj4+IEFsc28gaXQgaXMgbm90IHNhZmUgdG8gZGV0YWNoIGEgc2hhcmUg ZGV2aWNlIHdoZW4gb3RoZXIgcHJvY2Vzcw0KPiA+Pj4gc3RpbGwgdXNlIGl0LCBzbyBhIGhhbmRz aGFrZSBtZWNoYW5pc20gaXMgaW50cm9kdWNlZC4NCj4gPj4+DQo+ID4+PiBUaGlzIHBhdGNoIGNv dmVycyB0aGUgaW1wbGVtZW50YXRpb24gb2YgY2FzZSAxLDIsNSw2LDcsOC4NCj4gPj4+IENhc2Ug Myw0IHdpbGwgYmUgaW1wbGVtZW50ZWQgb24gc2VwYXJhdGUgcGF0Y2ggYXMgd2VsbCBhcyBoYW5k c2hha2UNCj4gPj4+IG1lY2hhbmlzbS4NCj4gPj4+DQo+ID4+PiBTY2VuYXJpbyBmb3IgQ2FzZSAx LCAyOg0KPiA+Pj4NCj4gPj4+IGF0dGFjaCBkZXZpY2UNCj4gPj4+IGEpIHByaW1hcnkgYXR0YWNo IHRoZSBuZXcgZGV2aWNlIGlmIGZhaWxlZCBnb3RvIGgpLg0KPiA+Pj4gYikgcHJpbWFyeSBzZW5k IGF0dGFjaCBzeW5jIHJlcXVlc3QgdG8gYWxsIHNlY29uZGFyeS4NCj4gPj4+IGMpIHNlY29uZGFy eSByZWNlaXZlIHJlcXVlc3QgYW5kIGF0dGFjaCBkZXZpY2UgYW5kIHNlbmQgcmVwbHkuDQo+ID4+ PiBkKSBwcmltYXJ5IGNoZWNrIHRoZSByZXBseSBpZiBhbGwgc3VjY2VzcyBnbyB0byBpKS4NCj4g Pj4+IGUpIHByaW1hcnkgc2VuZCBhdHRhY2ggcm9sbGJhY2sgc3luYyByZXF1ZXN0IHRvIGFsbCBz ZWNvbmRhcnkuDQo+ID4+PiBmKSBzZWNvbmRhcnkgcmVjZWl2ZSB0aGUgcmVxdWVzdCBhbmQgZGV0 YWNoIGRldmljZSBhbmQgc2VuZCByZXBseS4NCj4gPj4+IGcpIHByaW1hcnkgcmVjZWl2ZSB0aGUg cmVwbHkgYW5kIGRldGFjaCBkZXZpY2UgYXMgcm9sbGJhY2sgYWN0aW9uLg0KPiA+Pj4gaCkgYXR0 YWNoIGZhaWwNCj4gPj4+IGkpIGF0dGFjaCBzdWNjZXNzDQo+ID4+Pg0KPiA+Pj4gZGV0YWNoIGRl dmljZQ0KPiA+Pj4gYSkgcHJpbWFyeSBwZXJmb3JtIHByZS1kZXRhY2ggY2hlY2ssIGlmIGRldmlj ZSBpcyBsb2NrZWQsIGdvdG8gaSkuDQo+ID4+PiBiKSBwcmltYXJ5IHNlbmQgcHJlLWRldGFjaCBz eW5jIHJlcXVlc3QgdG8gYWxsIHNlY29uZGFyeS4NCj4gPj4+IGMpIHNlY29uZGFyeSBwZXJmb3Jt IHByZS1kZXRhY2ggY2hlY2sgYW5kIHNlbmQgcmVwbHkuDQo+ID4+PiBkKSBwcmltYXJ5IGNoZWNr IHRoZSByZXBseSBpZiBhbnkgZmFpbCBnb3RvIGkpLg0KPiA+Pj4gZSkgcHJpbWFyeSBzZW5kIGRl dGFjaCBzeW5jIHJlcXVlc3QgdG8gYWxsIHNlY29uZGFyeQ0KPiA+Pj4gZikgc2Vjb25kYXJ5IGRl dGFjaCB0aGUgZGV2aWNlIGFuZCBzZW5kIHJlcGx5IChhc3N1bWUgbm8gZmFpbCkNCj4gPj4+IGcp IHByaW1hcnkgZGV0YWNoIHRoZSBkZXZpY2UuDQo+ID4+PiBoKSBkZXRhY2ggc3VjY2Vzcw0KPiA+ Pj4gaSkgZGV0YWNoIGZhaWxlZA0KPiA+Pj4NCj4gPj4+IENhc2UgNSwgNjoNCj4gPj4+IFNlY29u ZGFyeSBwcm9jZXNzIGNhbiBhdHRhY2ggcHJpdmF0ZSBkZXZpY2Ugd2hpY2ggb25seSB2aXNpYmxl IHRvDQo+ID4+PiBpdHNlbGYsIGluIHRoaXMgY2FzZSBubyBJUEMgaXMgaW52b2x2ZWQsIHByaW1h cnkgcHJvY2VzcyBpcyBub3QNCj4gPj4+IGFsbG93ZWQgdG8gaGF2ZSBwcml2YXRlIGRldmljZSBz byBmYXIuDQo+ID4+Pg0KPiA+Pj4gQ2FzZSA3LCA4Og0KPiA+Pj4gU2Vjb25kYXJ5IHByb2Nlc3Mg Y2FuIGFsc28gdGVtcG9yYWxseSB0byBkZXRhY2ggYSBzaGFyZSBkZXZpY2UgInByaXZhdGVseSIN Cj4gPj4+IHRoZW4gYXR0YWNoIGl0IGJhY2sgbGF0ZXIsIHRoaXMgYWN0aW9uIGFsc28gbm90IGlt cGFjdCBvdGhlciBwcm9jZXNzZXMuDQo+ID4+Pg0KPiA+Pj4gQVBJcyBjaGFuZ2VzOg0KPiA+Pj4N Cj4gPj4+IHJ0ZV9ldGhfZGV2X2F0dGFjaCBhbmQgcnRlX2V0aF9kZXZfYXR0YWNoIGFyZSBleHRl bmRlZCB0byBzdXBwb3J0DQo+ID4+PiBzaGFyZSBkZXZpY2UgYXR0YWNoL2RldGFjaCBpbiBwcmlt YXJ5LXNlY29uZGFyeSBwcm9jZXNzIG1vZGVsLCBpdA0KPiA+Pj4gd2lsbCBiZSBjYWxsZWQgaW4g Y2FzZSAxLDIsMyw0Lg0KPiA+Pj4NCj4gPj4+IE5ldyBBUEkgcnRlX2V0aF9kZXZfYXR0YWNoX3By aXZhdGUgYW5kIHJ0ZV9ldGhfZGV2X2RldGFjaF9wcml2YXRlDQo+ID4+PiBhcmUgaW50cm9kdWNl ZCB0byBjb3ZlciBjYXNlIDUsNiw3LDgsIHRoaXMgQVBJIGNhbiBvbmx5IGJlIGludm9rZWQNCj4g Pj4+IGluIHNlY29uZGFyeSBwcm9jZXNzLg0KPiA+Pj4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IFFp IFpoYW5nIDxxaS56LnpoYW5nQGludGVsLmNvbT4NCj4gPj4+IC0tLQ0KPiA+Pg0KPiA+PiA8c25p cD4NCj4gPj4NCj4gPj4+ICtzdGF0aWMgaW50DQo+ID4+PiAraGFuZGxlX3ByaW1hcnlfcmVxdWVz dChjb25zdCBzdHJ1Y3QgcnRlX21wX21zZyAqbXNnLCBjb25zdCB2b2lkDQo+ID4+PiArKnBlZXIp IHsNCj4gPj4+ICsNCj4gPj4+ICsJc3RydWN0IHJ0ZV9tcF9tc2cgbXBfcmVzcDsNCj4gPj4+ICsJ Y29uc3Qgc3RydWN0IGV0aF9kZXZfbXBfcmVxICpyZXEgPQ0KPiA+Pj4gKwkJKGNvbnN0IHN0cnVj dCBldGhfZGV2X21wX3JlcSAqKW1zZy0+cGFyYW07DQo+ID4+PiArCXN0cnVjdCBldGhfZGV2X21w X3JlcSAqcmVzcCA9DQo+ID4+PiArCQkoc3RydWN0IGV0aF9kZXZfbXBfcmVxICopbXBfcmVzcC5w YXJhbTsNCj4gPj4+ICsJc3RydWN0IG1wX3JlcGx5X2J1bmRsZSAqYnVuZGxlOw0KPiA+Pj4gKwlp bnQgcmV0ID0gMDsNCj4gPj4+ICsNCj4gPj4+ICsJbWVtc2V0KCZtcF9yZXNwLCAwLCBzaXplb2Yo bXBfcmVzcCkpOw0KPiA+Pj4gKwlzdHJsY3B5KG1wX3Jlc3AubmFtZSwgRVRIX0RFVl9NUF9BQ1RJ T05fUkVRVUVTVCwNCj4gPj4gc2l6ZW9mKG1wX3Jlc3AubmFtZSkpOw0KPiA+Pj4gKwltcF9yZXNw Lmxlbl9wYXJhbSA9IHNpemVvZigqcmVxKTsNCj4gPj4+ICsJbWVtY3B5KHJlc3AsIHJlcSwgc2l6 ZW9mKCpyZXNwKSk7DQo+ID4+PiArDQo+ID4+PiArCWJ1bmRsZSA9IGNhbGxvYygxLCBzaXplb2Yo KmJ1bmRsZSkpOw0KPiA+Pj4gKwlpZiAoYnVuZGxlID09IE5VTEwpIHsNCj4gPj4+ICsJCXJlc3At PnJlc3VsdCA9IC1FTk9NRU07DQo+ID4+PiArCQlyZXQgPSBydGVfbXBfcmVwbHkoJm1wX3Jlc3As IHBlZXIpOw0KPiA+Pj4gKwkJaWYgKHJldCkgew0KPiA+Pj4gKwkJCWV0aGRldl9sb2coRVJSLCAi ZmFpbGVkIHRvIHNlbmQgcmVwbHkgdG8gcHJpbWFyeQ0KPiByZXF1ZXN0XG4iKTsNCj4gPj4+ICsJ CQlyZXR1cm4gcmV0Ow0KPiA+Pj4gKwkJfQ0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ID4+PiArCWJ1 bmRsZS0+bXNnID0gKm1zZzsNCj4gPj4+ICsJYnVuZGxlLT5wZWVyID0gcGVlcjsNCj4gPj4+ICsN Cj4gPj4+ICsJcmV0ID0gcnRlX2VhbF9tcF90YXNrX2FkZChfX2hhbmRsZV9wcmltYXJ5X3JlcXVl c3QsIGJ1bmRsZSk7DQo+ID4+PiArCWlmIChyZXQpIHsNCj4gPj4+ICsJCXJlc3AtPnJlc3VsdCA9 IHJldDsNCj4gPj4+ICsJCXJldCA9IHJ0ZV9tcF9yZXBseSgmbXBfcmVzcCwgcGVlcik7DQo+ID4+ PiArCQlpZiAocmV0KSB7DQo+ID4+PiArCQkJZXRoZGV2X2xvZyhFUlIsICJmYWlsZWQgdG8gc2Vu ZCByZXBseSB0byBwcmltYXJ5DQo+IHJlcXVlc3RcbiIpOw0KPiA+Pj4gKwkJCXJldHVybiByZXQ7 DQo+ID4+PiArCQl9DQo+ID4+PiArCX0NCj4gPj4NCj4gPj4gV2hhdCB5b3UncmUgZG9pbmcgaGVy ZSBpcyBxdWl0ZSBkYW5nZXJvdXMuIFRoZSBwYXJhbWV0ZXIgImNvbnN0IHZvaWQNCj4gKnBlZXIi DQo+ID4+IGlzIG9ubHkgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCBhdCB0aGUgdGltZSBvZiB0aGUg Y2FsbGJhY2sgLSBub3QNCj4gPj4gbmVjZXNzYXJpbHkgYWZ0ZXJ3YXJkcy4gU28sIGlmIHlvdSdy ZSBoYW5kaW5nIG9mZiBzZW5kaW5nIHJlcGxpZXMgdG8NCj4gPj4gYSBzZXBhcmF0ZSB0aHJlYWQs IHRoaW5ncyBtaWdodCBibG93IHVwIGJlY2F1c2UgdGhlIHBvaW50ZXIgbWF5IG5vIGxvbmdlcg0K PiBiZSB2YWxpZC4NCj4gPg0KPiA+IE9LLCBzbyB3aGF0IGFib3V0IGNsb25lIHRoZSBjb250ZW50 IGEgYnVmZmVyLCBJIHRoaW5rIHRoZSBjb250ZW50IHNob3VsZCBiZQ0KPiB2YWxpZCBiZWZvcmUg cmVwbHkgaXMgc2VudCwgcmlnaHQ/DQo+IA0KPiBZZXMsIGJ1dCBldmVuIGlmIHlvdSBjbG9uZSB0 aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLCB3aGVyZSB3b3VsZCB5b3Ugc2VuZCBpdA0KPiAqdG8q PyBZb3UnbGwgbmVlZCB0aGUgcGVlciBwYXJhbWV0ZXIgdG8ga25vdyB3aGVyZSB0byBzZW5kIHlv dXIgcmVzcG9uc2UuDQoNCm15IHVuZGVyc3RhbmQgaXMgcGVlciBpcyBpZGVudGlmaWVkIGJ5IGEg c3RyaW5nIChvciBmaWxlbmFtZSkNCndoYXQgSSBtZWFuIGlzIGNsb25lIHRoZSBjb250ZW50IG9m IHRoZSBidWZmZXIgdGhhdCBwZWVyIHBvaW50IHRvICwgDQpTbyBJIGRvbid0IG5lZWQgdG8gd29y cnkgaWYgdGhlIG9yaWdpbmFsIHBlZXIgYmUgdXNlZCB0byBwb2ludCB0byBzb21lIG90aGVyIGRh dGENCg0KDQoNCj4gDQo+ID4NCj4gPiBUaGFua3MNCj4gPiBRaQ0KPiA+Pg0KPiA+PiAtLQ0KPiA+ PiBUaGFua3MsDQo+ID4+IEFuYXRvbHkNCj4gDQo+IA0KPiAtLQ0KPiBUaGFua3MsDQo+IEFuYXRv bHkNCg==