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 5841C41D9C; Tue, 28 Feb 2023 12:35:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4AFB440EE4; Tue, 28 Feb 2023 12:35:51 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 0AA864021F for ; Tue, 28 Feb 2023 12:35:50 +0100 (CET) Received: from frapeml100006.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4PQwGx2BFLz6J9lC; Tue, 28 Feb 2023 19:33:29 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100006.china.huawei.com (7.182.85.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Feb 2023 12:35:48 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.021; Tue, 28 Feb 2023 12:35:48 +0100 From: Konstantin Ananyev To: Tomasz Duszynski , Konstantin Ananyev , "dev@dpdk.org" Subject: RE: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading PMU events Thread-Topic: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading PMU events Thread-Index: AQHZQi/0WtsdB195/EyIqAkaKgLk/K7SLcMAgACWeQCAACW00IADXHGAgAFhvFCAAFwJgIAAEWfQgAAs6ACAAESyAIAJ6kgAgAHYZiA= Date: Tue, 28 Feb 2023 11:35:48 +0000 Message-ID: References: <20230213113156.385482-1-tduszynski@marvell.com> <20230216175502.3164820-1-tduszynski@marvell.com> <20230216175502.3164820-2-tduszynski@marvell.com> <4b055bbc-36e5-671c-8117-fb0ee7307d55@yandex.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.138.42] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected 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 DQoNCj4gPj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvbGliL3BtdS9ydGVfcG11LmggYi9saWIvcG11 L3J0ZV9wbXUuaCBuZXcgZmlsZQ0KPiA+Pj4+Pj4+Pj4+IG1vZGUNCj4gPj4+Pj4+Pj4+PiAxMDA2 NDQgaW5kZXggMDAwMDAwMDAwMC4uNmI2NjRjMzMzNg0KPiA+Pj4+Pj4+Pj4+IC0tLSAvZGV2L251 bGwNCj4gPj4+Pj4+Pj4+PiArKysgYi9saWIvcG11L3J0ZV9wbXUuaA0KPiA+Pj4+Pj4+Pj4+IEBA IC0wLDAgKzEsMjEyIEBADQo+ID4+Pj4+Pj4+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMy1DbGF1c2UNCj4gPj4+Pj4+Pj4+PiArICogQ29weXJpZ2h0KGMpIDIwMjMgTWFydmVs bCAgKi8NCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKyNpZm5kZWYgX1JURV9QTVVfSF8N Cj4gPj4+Pj4+Pj4+PiArI2RlZmluZSBfUlRFX1BNVV9IXw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+ Pj4+Pj4+PiArLyoqDQo+ID4+Pj4+Pj4+Pj4gKyAqIEBmaWxlDQo+ID4+Pj4+Pj4+Pj4gKyAqDQo+ ID4+Pj4+Pj4+Pj4gKyAqIFBNVSBldmVudCB0cmFjaW5nIG9wZXJhdGlvbnMNCj4gPj4+Pj4+Pj4+ PiArICoNCj4gPj4+Pj4+Pj4+PiArICogVGhpcyBmaWxlIGRlZmluZXMgZ2VuZXJpYyBBUEkgYW5k IHR5cGVzIG5lY2Vzc2FyeSB0byBzZXR1cA0KPiA+Pj4+Pj4+Pj4+ICtQTVUgYW5kDQo+ID4+Pj4+ Pj4+Pj4gKyAqIHJlYWQgc2VsZWN0ZWQgY291bnRlcnMgaW4gcnVudGltZS4NCj4gPj4+Pj4+Pj4+ PiArICovDQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsjaWZkZWYgX19jcGx1c3BsdXMN Cj4gPj4+Pj4+Pj4+PiArZXh0ZXJuICJDIiB7DQo+ID4+Pj4+Pj4+Pj4gKyNlbmRpZg0KPiA+Pj4+ Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L3BlcmZfZXZlbnQuaD4NCj4g Pj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxydGVfYXRvbWljLmg+DQo+ID4+ Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxydGVfYnJhbmNoX3ByZWRpY3Rpb24uaD4gI2luY2x1ZGUgPHJ0 ZV9jb21tb24uaD4NCj4gPj4+Pj4+Pj4+PiArI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4gI2luY2x1 ZGUgPHJ0ZV9zcGlubG9jay5oPg0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArLyoqIE1h eGltdW0gbnVtYmVyIG9mIGV2ZW50cyBpbiBhIGdyb3VwICovICNkZWZpbmUNCj4gPj4+Pj4+Pj4+ PiArTUFYX05VTV9HUk9VUF9FVkVOVFMgOA0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiAr LyoqDQo+ID4+Pj4+Pj4+Pj4gKyAqIEEgc3RydWN0dXJlIGRlc2NyaWJpbmcgYSBncm91cCBvZiBl dmVudHMuDQo+ID4+Pj4+Pj4+Pj4gKyAqLw0KPiA+Pj4+Pj4+Pj4+ICtzdHJ1Y3QgcnRlX3BtdV9l dmVudF9ncm91cCB7DQo+ID4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgcGVyZl9ldmVudF9tbWFwX3BhZ2UN Cj4gPj4+Pj4+Pj4+PiArKm1tYXBfcGFnZXNbTUFYX05VTV9HUk9VUF9FVkVOVFNdOw0KPiA+Pj4+ Pj4+Pj4+ICsvKio8IGFycmF5IG9mIHVzZXIgcGFnZXMNCj4gPj4+Pj4+PiAqLw0KPiA+Pj4+Pj4+ Pj4+ICsJaW50IGZkc1tNQVhfTlVNX0dST1VQX0VWRU5UU107IC8qKjwgYXJyYXkgb2YgZXZlbnQg ZGVzY3JpcHRvcnMgKi8NCj4gPj4+Pj4+Pj4+PiArCWJvb2wgZW5hYmxlZDsgLyoqPCB0cnVlIGlm IGdyb3VwIHdhcyBlbmFibGVkIG9uIHBhcnRpY3VsYXIgbGNvcmUgKi8NCj4gPj4+Pj4+Pj4+PiAr CVRBSUxRX0VOVFJZKHJ0ZV9wbXVfZXZlbnRfZ3JvdXApIG5leHQ7IC8qKjwgbGlzdCBlbnRyeSAq LyB9DQo+ID4+Pj4+Pj4+Pj4gK19fcnRlX2NhY2hlX2FsaWduZWQ7DQo+ID4+Pj4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+Pj4+PiArICogQSBzdHJ1Y3R1cmUgZGVzY3JpYmlu ZyBhbiBldmVudC4NCj4gPj4+Pj4+Pj4+PiArICovDQo+ID4+Pj4+Pj4+Pj4gK3N0cnVjdCBydGVf cG11X2V2ZW50IHsNCj4gPj4+Pj4+Pj4+PiArCWNoYXIgKm5hbWU7IC8qKjwgbmFtZSBvZiBhbiBl dmVudCAqLw0KPiA+Pj4+Pj4+Pj4+ICsJdW5zaWduZWQgaW50IGluZGV4OyAvKio8IGV2ZW50IGlu ZGV4IGludG8gZmRzL21tYXBfcGFnZXMgKi8NCj4gPj4+Pj4+Pj4+PiArCVRBSUxRX0VOVFJZKHJ0 ZV9wbXVfZXZlbnQpIG5leHQ7IC8qKjwgbGlzdCBlbnRyeSAqLyB9Ow0KPiA+Pj4+Pj4+Pj4+ICsN Cj4gPj4+Pj4+Pj4+PiArLyoqDQo+ID4+Pj4+Pj4+Pj4gKyAqIEEgUE1VIHN0YXRlIGNvbnRhaW5l ci4NCj4gPj4+Pj4+Pj4+PiArICovDQo+ID4+Pj4+Pj4+Pj4gK3N0cnVjdCBydGVfcG11IHsNCj4g Pj4+Pj4+Pj4+PiArCWNoYXIgKm5hbWU7IC8qKjwgbmFtZSBvZiBjb3JlIFBNVSBsaXN0ZWQgdW5k ZXIgL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMgKi8NCj4gPj4+Pj4+Pj4+PiArCXJ0ZV9z cGlubG9ja190IGxvY2s7IC8qKjwgc2VyaWFsaXplIGFjY2VzcyB0byBldmVudCBncm91cCBsaXN0 ICovDQo+ID4+Pj4+Pj4+Pj4gKwlUQUlMUV9IRUFEKCwgcnRlX3BtdV9ldmVudF9ncm91cCkgZXZl bnRfZ3JvdXBfbGlzdDsgLyoqPCBsaXN0IG9mIGV2ZW50IGdyb3VwcyAqLw0KPiA+Pj4+Pj4+Pj4+ ICsJdW5zaWduZWQgaW50IG51bV9ncm91cF9ldmVudHM7IC8qKjwgbnVtYmVyIG9mIGV2ZW50cyBp biBhIGdyb3VwICovDQo+ID4+Pj4+Pj4+Pj4gKwlUQUlMUV9IRUFEKCwgcnRlX3BtdV9ldmVudCkg ZXZlbnRfbGlzdDsgLyoqPCBsaXN0IG9mIG1hdGNoaW5nIGV2ZW50cyAqLw0KPiA+Pj4+Pj4+Pj4+ ICsJdW5zaWduZWQgaW50IGluaXRpYWxpemVkOyAvKio8IGluaXRpYWxpemF0aW9uIGNvdW50ZXIg Ki8gfTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKy8qKiBsY29yZSBldmVudCBncm91 cCAqLw0KPiA+Pj4+Pj4+Pj4+ICtSVEVfREVDTEFSRV9QRVJfTENPUkUoc3RydWN0IHJ0ZV9wbXVf ZXZlbnRfZ3JvdXAsDQo+ID4+Pj4+Pj4+Pj4gK19ldmVudF9ncm91cCk7DQo+ID4+Pj4+Pj4+Pj4g Kw0KPiA+Pj4+Pj4+Pj4+ICsvKiogUE1VIHN0YXRlIGNvbnRhaW5lciAqLw0KPiA+Pj4+Pj4+Pj4+ ICtleHRlcm4gc3RydWN0IHJ0ZV9wbXUgcnRlX3BtdTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+ Pj4+Pj4gKy8qKiBFYWNoIGFyY2hpdGVjdHVyZSBzdXBwb3J0aW5nIFBNVSBuZWVkcyB0byBwcm92 aWRlIGl0cyBvd24NCj4gPj4+Pj4+Pj4+PiArdmVyc2lvbiAqLyAjaWZuZGVmIHJ0ZV9wbXVfcG1j X3JlYWQgI2RlZmluZQ0KPiA+Pj4+Pj4+Pj4+ICtydGVfcG11X3BtY19yZWFkKGluZGV4KSAoeyAw OyB9KSAjZW5kaWYNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKy8qKg0KPiA+Pj4+Pj4+ Pj4+ICsgKiBAd2FybmluZw0KPiA+Pj4+Pj4+Pj4+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMg QVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCj4gPj4+Pj4+Pj4+PiArICoNCj4g Pj4+Pj4+Pj4+PiArICogUmVhZCBQTVUgY291bnRlci4NCj4gPj4+Pj4+Pj4+PiArICoNCj4gPj4+ Pj4+Pj4+PiArICogQHdhcm5pbmcgVGhpcyBzaG91bGQgYmUgbm90IGNhbGxlZCBkaXJlY3RseS4N Cj4gPj4+Pj4+Pj4+PiArICoNCj4gPj4+Pj4+Pj4+PiArICogQHBhcmFtIHBjDQo+ID4+Pj4+Pj4+ Pj4gKyAqICAgUG9pbnRlciB0byB0aGUgbW1hcHBlZCB1c2VyIHBhZ2UuDQo+ID4+Pj4+Pj4+Pj4g KyAqIEByZXR1cm4NCj4gPj4+Pj4+Pj4+PiArICogICBDb3VudGVyIHZhbHVlIHJlYWQgZnJvbSBo YXJkd2FyZS4NCj4gPj4+Pj4+Pj4+PiArICovDQo+ID4+Pj4+Pj4+Pj4gK3N0YXRpYyBfX3J0ZV9h bHdheXNfaW5saW5lIHVpbnQ2NF90DQo+ID4+Pj4+Pj4+Pj4gK19fcnRlX3BtdV9yZWFkX3VzZXJw YWdlKHN0cnVjdCBwZXJmX2V2ZW50X21tYXBfcGFnZSAqcGMpIHsNCj4gPj4+Pj4+Pj4+PiArCXVp bnQ2NF90IHdpZHRoLCBvZmZzZXQ7DQo+ID4+Pj4+Pj4+Pj4gKwl1aW50MzJfdCBzZXEsIGluZGV4 Ow0KPiA+Pj4+Pj4+Pj4+ICsJaW50NjRfdCBwbWM7DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ Pj4+ICsJZm9yICg7Oykgew0KPiA+Pj4+Pj4+Pj4+ICsJCXNlcSA9IHBjLT5sb2NrOw0KPiA+Pj4+ Pj4+Pj4+ICsJCXJ0ZV9jb21waWxlcl9iYXJyaWVyKCk7DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ Pj4gQXJlIHlvdSBzdXJlIHRoYXQgY29tcGlsZXJfYmFycmllcigpIGlzIGVub3VnaCBoZXJlPw0K PiA+Pj4+Pj4+Pj4gT24gc29tZSBhcmNocyBDUFUgaXRzZWxmIGhhcyBmcmVlZG9tIHRvIHJlLW9y ZGVyIHJlYWRzLg0KPiA+Pj4+Pj4+Pj4gT3IgSSBhbSBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3Vz IGhlcmU/DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJdCdzIGEgbWF0dGVy IG9mIG5vdCBrZWVwaW5nIG9sZCBzdHVmZiBjYWNoZWQgaW4gcmVnaXN0ZXJzIGFuZA0KPiA+Pj4+ Pj4+PiBtYWtpbmcgc3VyZSB0aGF0IHdlIGhhdmUgdHdvIHJlYWRzIG9mIGxvY2suIENQVSByZW9y ZGVyaW5nIHdvbid0DQo+ID4+Pj4+Pj4+IGRvIGFueSBoYXJtIGhlcmUuDQo+ID4+Pj4+Pj4NCj4g Pj4+Pj4+PiBTb3JyeSwgSSBkaWRuJ3QgZ2V0IHlvdSBoZXJlOg0KPiA+Pj4+Pj4+IFN1cHBvc2Ug Q1BVIHdpbGwgcmUtb3JkZXIgcmVhZHMgYW5kIHdpbGwgcmVhZCBsb2NrICphZnRlciogaW5kZXgg b3Igb2Zmc2V0IHZhbHVlLg0KPiA+Pj4+Pj4+IFdvdWxkbid0IGl0IG1lYW4gdGhhdCBpbiB0aGF0 IGNhc2UgaW5kZXggYW5kL29yIG9mZnNldCBjYW4gY29udGFpbiBvbGQvaW52YWxpZCB2YWx1ZXM/ DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBUaGlzIG51bWJlciBpcyBqdXN0IGFuIGlu ZGljYXRvciB3aGV0aGVyIGtlcm5lbCBkaWQgY2hhbmdlIHNvbWV0aGluZyBvciBub3QuDQo+ID4+ Pj4+DQo+ID4+Pj4+IFlvdSBhcmUgdGFsa2luZyBhYm91dCBwYy0+bG9jaywgcmlnaHQ/DQo+ID4+ Pj4+IFllcywgSSBkbyB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgc29ydCBvZiBzZXFsb2NrLg0KPiA+ Pj4+PiBUaGF0J3Mgd2h5IEkgYW0gcHV6emxlZCB3aHkgd2UgZG8gbm90IGNhcmUgYWJvdXQgcG9z c2libGUgY3B1IHJlYWQtcmVvcmRlcmluZy4NCj4gPj4+Pj4gTWFudWFsIGZvciBwZXJmX2V2ZW50 X29wZW4oKSBhbHNvIGhhcyBhIGNvZGUgc25pcHBldCB3aXRoIGNvbXBpbGVyIGJhcnJpZXIgb25s eS4uLg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gSWYgY3B1IHJlb3JkZXJpbmcgd2lsbCBjb21lIGludG8g cGxheSB0aGVuIHRoaXMgd2lsbCBub3QgY2hhbmdlDQo+ID4+Pj4+PiBhbnl0aGluZyBmcm9tIHBv diBvZiB0aGlzDQo+ID4+PiBsb29wLg0KPiA+Pj4+Pj4gQWxsIHdlIHdhbnQgaXMgZnJlc2ggZGF0 YSB3aGVuIG5lZWRlZCBhbmQgbm8gaW52b2x2ZW1lbnQgb2YNCj4gPj4+Pj4+IGNvbXBpbGVyIHdo ZW4gaXQgY29tZXMgdG8gcmVvcmRlcmluZyBjb2RlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBPaywgY2Fu IHlvdSBwcm9iYWJseSBleHBsYWluIHRvIG1lIHdoeSB0aGUgZm9sbG93aW5nIGNvdWxkIG5vdCBo YXBwZW46DQo+ID4+Pj4+IFQwOg0KPiA+Pj4+PiBwYy0+c2VxbG9jaz09MDsgcGMtPmluZGV4PT1J MTsgcGMtPm9mZnNldD09TzE7DQo+ID4+Pj4+IFQxOg0KPiA+Pj4+PiAgICAgICBjcHUgIzAgcmVh ZCBwbXUgKGR1ZSB0byBjcHUgcmVhZCByZW9yZGVyLCB3ZSBnZXQgaW5kZXggdmFsdWUgYmVmb3Jl IHNlcWxvY2spOg0KPiA+Pj4+PiAgICAgICAgaW5kZXg9cGMtPmluZGV4OyAgLy9pbmRleD09STE7 DQo+ID4+Pj4+IFQyOg0KPiA+Pj4+PiAgICAgICBjcHUgIzEga2VybmVsIHZlbnRfdXBkYXRlX3Vz ZXJwYWdlOg0KPiA+Pj4+PiAgICAgICBwYy0+bG9jaysrOyAvLyBwYy0+bG9jaz09MQ0KPiA+Pj4+ PiAgICAgICBwYy0+aW5kZXg9STI7DQo+ID4+Pj4+ICAgICAgIHBjLT5vZmZzZXQ9TzI7DQo+ID4+ Pj4+ICAgICAgIC4uLg0KPiA+Pj4+PiAgICAgICBwYy0+bG9jaysrOyAvL3BjLT5sb2NrPT0yDQo+ ID4+Pj4+IFQzOg0KPiA+Pj4+PiAgICAgICBjcHUgIzAgY29udGludWUgd2l0aCByZWFkIHBtdToN Cj4gPj4+Pj4gICAgICAgc2VxPXBjLT5sb2NrOyAvL3NlcSA9PSAyDQo+ID4+Pj4+ICAgICAgICBv ZmZzZXQ9cGMtPm9mZnNldDsgLy8gb2Zmc2V0ID09IE8yDQo+ID4+Pj4+ICAgICAgICAuLi4uDQo+ ID4+Pj4+ICAgICAgICBwbWMgPSBydGVfcG11X3BtY19yZWFkKGluZGV4IC0gMSk7ICAvLyBOb3Rl IHRoYXQgd2UgcmVhZCBhdCBJMSwgbm90IEkyDQo+ID4+Pj4+ICAgICAgICBvZmZzZXQgKz0gcG1j OyAvL29mZnNldCA9PSBPMiArIHBtY3JlYWQoSTEtMSk7DQo+ID4+Pj4+ICAgICAgICBpZiAocGMt PmxvY2sgPT0gc2VxKSAvLyB0aGV5IGFyZSBlcXVhbCwgcmV0dXJuDQo+ID4+Pj4+ICAgICAgICAg ICAgICByZXR1cm4gb2Zmc2V0Ow0KPiA+Pj4+Pg0KPiA+Pj4+PiBPciwgaXQgY2FuIGhhcHBlbiwg YnV0IGJ5IHNvbWUgcmVhc29uIHdlIGRvbid0IGNhcmUgbXVjaD8NCj4gPj4+Pj4NCj4gPj4+Pg0K PiA+Pj4+IFRoaXMgY29kZSBkb2VzIHNlbGYtbW9uaXRvcmluZyBhbmQgdXNlciBwYWdlICh3aG9s ZSBncm91cCBhY3R1YWxseSkNCj4gPj4+PiBpcyBwZXIgdGhyZWFkIHJ1bm5pbmcgb24gY3VycmVu dCBjcHUuIEhlbmNlIEkgYW0gbm90IHN1cmUgd2hhdCBhcmUNCj4gPj4+PiB5b3UgdHJ5aW5nIHRv IHByb3ZlIHdpdGggdGhhdA0KPiA+Pj4gZXhhbXBsZS4NCj4gPj4+DQo+ID4+PiBJIGFtIG5vdCB0 cnlpbmcgdG8gcHJvdmUgYW55dGhpbmcgc28gZmFyLg0KPiA+Pj4gSSBhbSBhc2tpbmcgaXMgc3Vj aCBzaXR1YXRpb24gcG9zc2libGUgb3Igbm90LCBhbmQgaWYgbm90LCB3aHk/DQo+ID4+PiBNeSBj dXJyZW50IHVuZGVyc3RhbmRpbmcgKHBvc3NpYmx5IHdyb25nKSBpcyB0aGF0IGFmdGVyIHlvdSBt bWFwZWQNCj4gPj4+IHRoZXNlIHBhZ2VzLCBrZXJuZWwgc3RpbGwgY2FuIGFzeW5jaHJvbm91c2x5 IHVwZGF0ZSB0aGVtLg0KPiA+Pj4gU28sIHdoZW4gcmVhZGluZyB0aGUgZGF0YSBmcm9tIHRoZXNl IHBhZ2VzIHlvdSBoYXZlIHRvIGNoZWNrICdsb2NrJw0KPiA+Pj4gdmFsdWUgYmVmb3JlIGFuZCBh ZnRlciBhY2Nlc3Npbmcgb3RoZXIgZGF0YS4NCj4gPj4+IElmIHNvLCB3aHkgcG9zc2libGUgY3B1 IHJlYWQtcmVvcmRlcmluZyBkb2Vzbid0IG1hdHRlcj8NCj4gPj4+DQo+ID4+DQo+ID4+IExvb2su IEknbGwgcmVpdGVyYXRlIHRoYXQuDQo+ID4+DQo+ID4+IDEuIFRoYXQgdXNlciBwYWdlL2dyb3Vw L1BNVSBjb25maWcgaXMgcGVyIHByb2Nlc3MuIE90aGVyIHByb2Nlc3NlcyBkbyBub3QgYWNjZXNz IHRoYXQuDQo+ID4NCj4gPk9rLCB0aGF0J3MgY2xlYXIuDQo+ID4NCj4gPg0KPiA+PiAgICAgQWxs IHRoaXMgaGFwcGVucyBvbiB0aGUgdmVyeSBzYW1lIENQVSB3aGVyZSBjdXJyZW50IHRocmVhZCBp cyBydW5uaW5nLg0KPiA+DQo+ID5Pay4uLiBidXQgY2FuJ3QgdGhpcyBwYWdlIGJlIHVwZGF0ZWQg Ynkga2VybmVsIHRocmVhZCBydW5uaW5nIHNpbXVsdGFuZW91c2x5IG9uIGRpZmZlcmVudCBDUFU/ DQo+ID4NCj4gDQo+IEkgYWxyZWFkeSBwb2ludGVkIG91dCB0aGF0IGV2ZW50L2NvdW50ZXIgY29u ZmlndXJhdGlvbiBpcyBib3VuZCB0byBjdXJyZW50IGNwdS4gSG93IGNhbiBwb3NzaWJseQ0KPiBv dGhlciBjcHUgdXBkYXRlIHRoYXQgY29uZmlndXJhdGlvbj8gVGhpcyBjYW5ub3Qgd29yay4NCiAN CkNhbiB5b3UgZWxhYm9yYXRlIGEgYml0IHdoYXQgeW91IG1lYW4gd2l0aCAnZXZlbnQvY291bnRl ciBjb25maWd1cmF0aW9uIGlzIGJvdW5kIHRvIGN1cnJlbnQgY3B1Jz8NCklmIHRoYXQgbWVhbnMg aXQgY291bGQgYmUgdXBkYXRlZCBvbmx5IGJ5IGNvZGUgcnVubmluZyBvbiBnaXZlbiwgQ1BVIC0g eWVzIGl0IGlzIGNsZWFyLg0KQnV0IGNhbiB0aGlzIHBhZ2UgYmUgcmVhZCBieSB1c2VyLXNwYWNl IGZyb20gZGlmZmVyZW50IENQVT8gDQpPciB5b3UganVzdCBhc3N1bWUgdGhhdCB5b3VyIHVzZXIt c3BhY2UgdGhyZWFkIHdpbGwgKmFsd2F5cyogYmUgYm91bmRlZCBqdXN0IHRvIG9uZQ0KcGFydGlj dWxhciBDUFUgYW5kIHdvdWxkIG5ldmVyIHN3aXRjaD8NCg0KPiANCj4gDQo+IElmIHlvdSB0aGlu ayB0aGF0IHRoZXJlJ3Mgc29tZSBwcm9ibGVtIHdpdGggdGhlIGNvZGUgKG9yIGlzIHNpbXBseSBi cm9rZW4gb24geW91ciBzZXR1cCkgYW5kIGxvZ2ljW10gYSBiaXQNCj4gaGFzIG9idmlvdXMgZmxh dyBhbmQgeW91IGNhbiBwcm92aWRlIG1lYW5pbmdmdWwgZXZpZGVuY2Ugb2YgdGhhdCB0aGVuIEkn ZCBiZSBtb3JlIHRoYW4gaGFwcHkgdG8NCj4gYXBwbHkgdGhhdCBmaXguIE90aGVyd2lzZSB0aGF0 IGRpc2N1c3Npb24gd2lsbCBnZXQgdXMgbm93aGVyZS4NCj4gDQoNClllcywgd2UgYXJlIGdvaW5n IGluIGN5Y2xlcyBoZXJlLg0KSSBrZWVwIGFza2luZyB5b3Ugc2FtZSBxdWVzdGlvbnMgYWJvdXQg bGlicmFyeSBmdW5jdGlvbiBpbnRlcm5hbHMsIHlvdSBrZWVwIHJlZnVzaW5nIHRvIGV4cGxhaW4g dGhpbmdzDQp0byBtZSBpbnNpc3RpbmcgdGhhdCBpdCBpcyAnd2F5IHRvbyBvYnZpb3VzJy4NCldl bGwsIHNvcnJ5IGJ1dCBpdCBpcyBub3Qgb2J2aW91cyB0byBtZS4NClNvIEkgc3RpbGwgaW5zaXN0 IHRoYXQgYSBjbGVhcmx5IGRvY3VtZW50ZWQgaW50ZXJuYWwgZGVzaWduIGFuZCBleHBlY3RlZCB1 c2FnZSBpcyByZXF1aXJlZCBmb3IgdGhhdCBwYXRjaA0KYmVmb3JlIGl0IGNhbiBiZSBhY2NlcHRl ZC4NCg0KS29uc3RhbnRpbiANCg==