From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70082.outbound.protection.outlook.com [40.107.7.82]) by dpdk.org (Postfix) with ESMTP id 3807FB62; Mon, 18 Jun 2018 19:06:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Mzbc6xtk7yT75tkLpHMlx7/P5ARz0BbLblbLxze4/pQ=; b=e/iH/0Kh8K9PHE5D9SARSeFaBU8h5dI+rrE0601pzqhqCoXhm8Mp4cXEFyC7UcEXiLe76/9UOuc8iXIpuXR6xyypBviWKj+T7QsOFWtRB0j6AoPrUl4C4N7MT3uhEYsG5tzwzEoZ4eQZxUAQ15HTH8oO5Q3Jp714+A55zqttbwI= Received: from VI1PR0501MB2045.eurprd05.prod.outlook.com (10.167.195.147) by VI1PR0501MB2800.eurprd05.prod.outlook.com (10.172.11.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.16; Mon, 18 Jun 2018 17:06:42 +0000 Received: from VI1PR0501MB2045.eurprd05.prod.outlook.com ([fe80::bd68:85f2:e540:99e6]) by VI1PR0501MB2045.eurprd05.prod.outlook.com ([fe80::bd68:85f2:e540:99e6%5]) with mapi id 15.20.0863.016; Mon, 18 Jun 2018 17:06:41 +0000 From: Yongseok Koh To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Adrien Mazarguil , "dev@dpdk.org" , Shahaf Shuler , dpdk stable , "Xueming(Steven) Li" Thread-Topic: [PATCH] net/mlx5: fix error number handling Thread-Index: AQHT/CrB77XBxzx71UKFjyHIOSVKCKRRO0gAgAD264CAAJwLgIAAT3cAgAFPXACAEegMAA== Date: Mon, 18 Jun 2018 17:06:41 +0000 Message-ID: <42BB3FF2-80B8-4250-928C-32D509E32DAA@mellanox.com> References: <20180604173731.29125-1-yskoh@mellanox.com> <20180605065246.mw7xnk24cfwxy4an@laranjeiro-vm.dev.6wind.com> <84C956B6-28EE-4F82-97AE-5E9C371DD115@mellanox.com> <20180606065501.hhrfrti47nr5xigo@laranjeiro-vm.dev.6wind.com> <20180606183926.GA1446@yongseok-MBP.local> <20180607073944.zewdysx6ddrdygoz@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180607073944.zewdysx6ddrdygoz@laranjeiro-vm.dev.6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; x-originating-ip: [209.116.155.178] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR0501MB2800; 7:eO0RkrFp9V6WpS74M0bXhOpyqd7T5jDej/aYdI6YEw6JqCw0kCKHI3MQD+1IUalCvVB12F93P8W5yyX9s6CHE5qYqqXAAHrL1qKmjqm3nS2WMH8yZd5SbEP9Nd3HRoFDGi5M3YrtMw2iexUrMKvVcuoXevAiN7cVewpyzU49JYNJ1IIyyw6gA2Rg8dfodbcpWA21yH6Ix1FCamEYBE2ZU7pWijETsFXk51+WbKn8e93qQ7gAmK8F4nqf2DrpTzSj x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: efd4c4ec-f44d-4196-0fb8-08d5d53ddcf4 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2800; x-ms-traffictypediagnostic: VI1PR0501MB2800: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(60795455431006); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:VI1PR0501MB2800; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2800; x-forefront-prvs: 0707248B64 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(39380400002)(346002)(396003)(376002)(199004)(189003)(76176011)(316002)(53546011)(66066001)(26005)(83716003)(102836004)(11346002)(446003)(2616005)(82746002)(2900100001)(68736007)(33656002)(6436002)(478600001)(6916009)(54906003)(25786009)(99286004)(59450400001)(86362001)(97736004)(6512007)(186003)(486006)(476003)(93886005)(6506007)(8936002)(3280700002)(81156014)(14454004)(229853002)(36756003)(107886003)(81166006)(3660700001)(5660300001)(106356001)(6246003)(53936002)(105586002)(6486002)(7736002)(2906002)(6116002)(3846002)(305945005)(4326008)(8676002)(5890100001)(5250100002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2800; H:VI1PR0501MB2045.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: A1Ky+70H7DnoCI0cg48vvbGR64PGyO9Jc4BYmkKuv6GDyJBvArUt1TNpJ7qb1exdfJqdmOrsstvRcWAnVeNc8HqtbilUSmExfYTirntB7NGSOgSSq//b7SgNpRTNzxQe+7/3o6gk3Kant0meapU441PDaEyU6Gm1qGsOSL24VHYI/fBcE5Pb6LufS12c/E0WowgXzZcCYxlzbtd2SR28eEgvqUodltRkgzXMS3ARjqw267kEW4GAhiQq0YwGTScht4+e4NqPzfC7Q1YDuZSjFidiH5++hk7Git1mH2OQ7B+JuEM2txImcklCLfMPUWVA7TTpSw1k13Oq169Hfwhs3Q== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: efd4c4ec-f44d-4196-0fb8-08d5d53ddcf4 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jun 2018 17:06:41.8175 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2800 Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix error number handling 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: Mon, 18 Jun 2018 17:06:44 -0000 DQo+IE9uIEp1biA3LCAyMDE4LCBhdCAxMjozOSBBTSwgTsOpbGlvIExhcmFuamVpcm8gPG5lbGlv LmxhcmFuamVpcm9ANndpbmQuY29tPiB3cm90ZToNCj4gDQo+IE9uIFdlZCwgSnVuIDA2LCAyMDE4 IGF0IDExOjM5OjI3QU0gLTA3MDAsIFlvbmdzZW9rIEtvaCB3cm90ZToNCj4+IE9uIFdlZCwgSnVu IDA2LCAyMDE4IGF0IDA4OjU1OjAxQU0gKzAyMDAsIE7DqWxpbyBMYXJhbmplaXJvIHdyb3RlOg0K Pj4+IE9uIFR1ZSwgSnVuIDA1LCAyMDE4IGF0IDA5OjM2OjMyUE0gKzAwMDAsIFlvbmdzZW9rIEtv aCB3cm90ZToNCj4+Pj4+IE9uIEp1biA0LCAyMDE4LCBhdCAxMTo1MiBQTSwgTsOpbGlvIExhcmFu amVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPiB3cm90ZToNCj4+Pj4+IA0KPj4+Pj4g T24gTW9uLCBKdW4gMDQsIDIwMTggYXQgMTA6Mzc6MzFBTSAtMDcwMCwgWW9uZ3Nlb2sgS29oIHdy b3RlOg0KPj4+Pj4+IHJ0ZV9lcnJubyBzaG91bGQgYmUgc2F2ZWQgb25seSBpZiBlcnJvciBoYXMg b2NjdXJyZWQgYmVjYXVzZSBydGVfZXJybm8NCj4+Pj4+PiBjb3VsZCBoYXZlIGdhcmJhZ2UgdmFs dWUuDQo+Pj4+Pj4gDQo+Pj4+Pj4gRml4ZXM6IGE2ZDgzYjZhOTIwOSAoIm5ldC9tbHg1OiBzdGFu ZGFyZGl6ZSBvbiBuZWdhdGl2ZSBlcnJubyB2YWx1ZXMiKQ0KPj4+Pj4+IENjOiBzdGFibGVAZHBk ay5vcmcNCj4+Pj4+PiANCj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBZb25nc2VvayBLb2ggPHlza29o QG1lbGxhbm94LmNvbT4NCj4+Pj4+PiAtLS0NCj4+Pj4+PiBkcml2ZXJzL25ldC9tbHg1L21seDVf Zmxvdy5jIHwgMyArKy0NCj4+Pj4+PiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pDQo+Pj4+Pj4gDQo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21s eDUvbWx4NV9mbG93LmMgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+Pj4+Pj4gaW5k ZXggOTk0YmUwNWJlLi5lYWZmZTc0OTUgMTAwNjQ0DQo+Pj4+Pj4gLS0tIGEvZHJpdmVycy9uZXQv bWx4NS9tbHg1X2Zsb3cuYw0KPj4+Pj4+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93 LmMNCj4+Pj4+PiBAQCAtMzU2MSw3ICszNTYxLDggQEAgbWx4NV9mZGlyX2ZpbHRlcl9kZWxldGUo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+Pj4+Pj4gCQkvKiBUaGUgZmxvdyBkb2VzIG5vdCBt YXRjaC4gKi8NCj4+Pj4+PiAJCWNvbnRpbnVlOw0KPj4+Pj4+IAl9DQo+Pj4+Pj4gLQlyZXQgPSBy dGVfZXJybm87IC8qIFNhdmUgcnRlX2Vycm5vIGJlZm9yZSBjbGVhbnVwLiAqLw0KPj4+Pj4+ICsJ aWYgKHJldCkNCj4+Pj4+PiArCQlyZXQgPSBydGVfZXJybm87IC8qIFNhdmUgcnRlX2Vycm5vIGJl Zm9yZSBjbGVhbnVwLiAqLw0KPj4+Pj4+IAlpZiAoZmxvdykNCj4+Pj4+PiAJCW1seDVfZmxvd19s aXN0X2Rlc3Ryb3koZGV2LCAmcHJpdi0+Zmxvd3MsIGZsb3cpOw0KPj4+Pj4+IGV4aXQ6DQo+Pj4+ Pj4gLS0gDQo+Pj4+Pj4gMi4xMS4wDQo+Pj4+PiANCj4+Pj4+IFRoaXMgcGF0Y2ggaXMgbm90IGVu b3VnaCwgdGhlIHJldHVybmVkIHZhbHVlIGJlaW5nIC1ydGVfZXJybm8gaWYgbm8NCj4+Pj4+IGVy cm9yIGlzIGRldGVjdGVkIGJ5IHRoZSBmdW5jdGlvbiBpdCBjYW5ub3Qgc2V0IHJ0ZV9lcnJubyBu b3IgcmV0dXJuIGl0Lg0KPj4+PiANCj4+Pj4gV2UgbWF5IG5lZWQgdG8gcmVmYWN0b3IgdGhpcyBr aW5kIG9mIGNvZGUgKHNhdmluZyBhbmQgcmVzdG9yaW5nIHJ0ZV9lcnJubykuIEkNCj4+Pj4gc3Rp bGwgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgd2Ugc2hvdWxkIHByZXNlcnZlIHJ0ZV9lcnJubyBsaWtl IHRoaXMuDQo+Pj4+IA0KPj4+PiBFdmVuIGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNz LCB0aGVyZSdzIG5vIG9ibGlnYXRpb24gdG8gcHJlc2VydmUNCj4+Pj4gcnRlX2Vycm5vIGluIHRo ZSBmdW5jdGlvbi4gT25jZSBpdCBpcyBjYWxsZWQsIHRoZSBvd25lcnNoaXAgb2YgcnRlX2Vycm5v IGJlbG9uZ3MNCj4+Pj4gdG8gdGhpcyBmdW5jdGlvbi4NCj4+Pj4gDQo+Pj4+IEkgY2FuJ3QgZmlu ZCBob3cgd2UgZGVmaW5lIHRoaXMgcGVyLWxjb3JlIHZhcmlhYmxlIGJ1dCwgZnJvbQ0KPj4+PiB0 aGUgbWFuIHBhZ2Ugb2YgZXJybm8sDQo+Pj4+IA0KPj4+PiAgICAgICBUaGUgIDxlcnJuby5oPiAg aGVhZGVyICBmaWxlICBkZWZpbmVzICB0aGUgaW50ZWdlciB2YXJpYWJsZSBlcnJubywgd2hpY2gN Cj4+Pj4gICAgICAgaXMgc2V0IGJ5IHN5c3RlbSBjYWxscyBhbmQgc29tZSBsaWJyYXJ5IGZ1bmN0 aW9ucyBpbiB0aGUgZXZlbnQgb2YgYW4NCj4+Pj4gICAgICAgZXJyb3IgdG8gaW5kaWNhdGUgd2hh dCB3ZW50IHdyb25nLiAgSXRzIHZhbHVlIGlzIHNpZ25pZmljYW50IG9ubHkgd2hlbg0KPj4+PiAg ICAgICB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsIGluZGljYXRlZCBhbiBlcnJvciAoaS5l LiwgLTEgZnJvbSBtb3N0DQo+Pj4+ICAgICAgIHN5c3RlbSBjYWxsczsgLTEgb3IgTlVMTCBmcm9t IG1vc3QgbGlicmFyeSAgZnVuY3Rpb25zKTsNCj4+Pj4gICAgICAgYSBmdW5jdGlvbiB0aGF0IHN1 Y2NlZWRzIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGVycm5vLg0KPj4+PiANCj4+Pj4gU28sIEkgc3Rp bGwgdGhpbmsgYW4gQVBJIGNhbiBjaGFuZ2UgcnRlX2Vycm5vIGV2ZW4gaWYgaXQgc3VjY2VlZHMs IG5vIG5lZWQgdG8NCj4+Pj4gcHJlc2VydmUgaXQuIElmIG5lZWRlZCwgdGhlIGNhbGxlciBoYXMg dG8gc2F2ZSBpdC4NCj4+PiANCj4+PiBGdW5jdGlvbnMgaW4gdGhpcyBQTUQgYXJlIGRlZmluZWQg YXMgaXM6DQo+Pj4gDQo+Pj4gICogQHJldHVybg0KPj4+ICAqICAgMCBvbiBzdWNjZXNzLCBhIG5l Z2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCj4+PiAN Cj4+PiBXaGljaCBtZWFucyBydGVfZXJybm8gaXMgb25seSBtb2RpZmllZCBpbiBjYXNlIG9mIGVy cm9yLg0KPj4+IA0KPj4+IFRoaXMgZml4IGRvZXMgbm90IHJlc3BlY3QgdGhlIGRvY3VtZW50YXRp b24gb2YgdGhlIGZ1bmN0aW9uIG9yIGFueSBvdGhlcg0KPj4+IGZ1bmN0aW9uIG9mIHRoZSBQTUQg d2hpY2ggY2FuIHJldHVybiBlcnJvcnMuDQo+PiANCj4+IFRoYXQncyBsb2dpY2FsbHkgYSB3cm9u ZyBpbnRlcnByZXRhdGlvbi4gQWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbiwgaWYNCj4+IHJl dHVybmluZyBlcnJvciwgcnRlX2Vycm5vIGlzIHNldCBidXQgdGhlIG9wcG9zaXRlIGlzbid0IGFs d2F5cyB0cnVlLiBFdmVuIGlmDQo+PiBydGVfZXJybm8gaXMgc2V0LCBpdCBkb2Vzbid0IG1lYW4g dGhlcmUncyBhbiBlcnJvci4gU28gdGhlIGRlc2NyaXB0aW9uIGNvaW5jaWRlcw0KPj4gd2l0aCB0 aGF0IG9mIGVycm5vLiBJZiB5b3Ugd2FudCB0byBlbmZvcmNlIHByZXNlcnZpbmcgcnRlX2Vycm5v IGluIGNhc2Ugb2YNCj4+IHN1Y2Nlc3MsIHlvdSBzaG91bGQgYW1lbmQgdGhlIGRvY3VtZW50YXRp b24uDQo+PiANCj4+PiBydGVfZXJybm8gaXMgb25seSBzZXQgaWYgYW4gZXJyb3IgaXMgZW5jb3Vu dGVyZWQgYW5kIGNvbnRhaW5zIG9ubHkgdGhlIGVycm9yDQo+Pj4gY29kZSBvZiB0aGUgZmlyc3Qg ZXJyb3Igc3ViLXNlcXVlbnQgb25lcyBhcmUgY29uc2lkZXJlZCBjb25zZXF1ZW5jZXMgb2YgdGhl DQo+Pj4gZmlyc3Qgb25lIGFuZCB0aHVzIG5vdCBwcmVzZXJ2ZWQuDQo+Pj4gDQo+Pj4gTm90IHBy ZXNlcnZpbmcgdGhlIHJ0ZV9lcnJubyBpbiByb2xsIGJhY2tzIGlzIGVxdWl2YWxlbnQgdG8gbm90 IHNldHRpbmcNCj4+PiBpdCBhdCBhbGwgYXMgYSBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIHJvbGxi YWNrIG1heSBhbHNvIHNldCBpdCwgZXhhbXBsZToNCj4+PiANCj4+PiB7DQo+Pj4gICAgdm9pZCAq IGE7DQo+Pj4gDQo+Pj4gICAgZm9vX2RvKCk7DQo+Pj4gICAgYSAgPSBtYWxsb2MoMTApOw0KPj4+ ICAgIGlmICghYSkgew0KPj4+ICAgIAlydGVfZXJybm8gPSBFTk9NRU07DQo+Pj4gCWZvb191bmRv KCk7DQo+PiANCj4+IFRoaXMgZXhhbXBsZSBpcyB3ZWlyZC4gWW91IGNhbiBzaW1wbHkgc2V0IHJ0 ZV9lcnJubyBhZnRlciBmb29fdW5kbygpIGluIHRoaXMNCj4+IGNhc2UuDQo+PiANCj4+PiAJcmV0 dXJuIC1ydGVfZXJybm87DQo+Pj4gICAgfQ0KPj4+IH0NCj4+PiANCj4+PiBJZiBmb29fdW5kbygp IGFsc28gZW5jb3VudGVyIGFuIGVycm9yIGl0IHdpbGwgbW9kaWZ5IHRoZSBydGVfZXJybm8gd2hp Y2gNCj4+PiBtYXkgaGF2ZSBhIHZhbHVlIGRpZmZlcmVudCBmcm9tIEVOT01FTSwgZm9yIHRoZSBj YWxsZWUgd29uJ3QgYmUgaW5mb3JtZWQNCj4+PiB0aGUgZXJyb3IgaXMgZHVlIHRvIGEgbWVtb3J5 IGlzc3VlIGFuZCB0aHVzIGNhbm5vdCBtYWtlIGNvdW50ZXIgcGFydHMuDQo+Pj4gSW4gc3VjaCBz aXR1YXRpb24gdGhlIHJ0ZV9lcnJubyBtdXN0IGJlIHByZXNlcnZlZCB0byBrZWVwIHRoZSBFTk9N RU0NCj4+PiBlcnJvciBjb2RlLg0KPj4gDQo+PiBJIGtuZXcgaXQuIFRoYXQncyB3aHkgcnRlX2Vy cm5vIGlzIHNhdmVkIGJlZm9yZSBjYWxsaW5nIGFub3RoZXIgQVBJIHdoaWNoIG1heQ0KPj4gY2hh bmdlIHRoZSBydGVfZXJybm8gaW5zaWRlLiBCdXQsIHdlIGFyZSB0YWxraW5nIGFib3V0IGEgY2Fz ZSB3aGVyZSBhbiBBUEkNCj4+IHJldHVybnMgc3VjY2Vzcy4gSWYgY2FsbGVyIGlzIHN1cHBvc2Vk IHRvIHNhdmUgcnRlX2Vycm5vICh3aGVuIGl0J3MgbmVlZGVkKSwgd2h5DQo+PiBkb2VzIGNhbGxl ZSBoYXZlIHRvIHB1dCBzb21lIGVmZm9ydCB0byBwcmVzZXJ2ZSBpdCBldmVuIGluIGNhc2Ugb2Yg c3VjY2Vzcz8gSWYNCj4+IHJ0ZV9lcnJubyBtdXN0IGJlIHByZXNlcnZlZCBldmVuIGluIGNhc2Ug b2Ygc3VjY2Vzcywgd2UgaGF2ZSB0byBtYWtlIGEgYmlnDQo+PiBjaGFuZ2UgdG8gcHJlc2VydmUg cnRlX2Vycm5vIGZvciBjYXNlcyB3aGVyZSBhIHZvaWQgZnVuY3Rpb24gaXMgY2FsbGVkIChvciBj YXNlcw0KPj4gd2hlcmUgd2UgZG9uJ3QgY2hlY2sgaXRzIHJldHVybiB2YWx1ZSBvZiBub24tdm9p ZCBmdW5jdGlvbikuDQo+PiANCj4+PiBUaGlzIGlzIGFsc28gdGhlIG1haW4gcmVhc29uIGFsbW9z dCBhbGwgc3lzdGVtIGZ1bmN0aW9uIG9ubHkgdXBkYXRlDQo+Pj4gZXJybm8gd2hlbiBubyBlcnJv ciBpcyBlbmNvdW50ZXJlZC4NCj4+IA0KPj4gJ0FsbW9zdCcgZG9lc24ndCBtZWFuICdhbGwiLCBk b2VzIGl0PyBJdCBpcyB0cnVlIHRoYXQgc3VjaCBmdW5jdGlvbnMgbXVzdCB1cGRhdGUNCj4+IGVy cm5vIHdoZW4gaXQgcmV0dXJucyBlcnJvciBidXQgaXQgZG9lc24ndCBjYXJlIGFib3V0IHRoZSB2 YWx1ZSB3aGVuIGl0IHJldHVybnMNCj4+IHN1Y2Nlc3MuIExpa2UgdGhlIG1hbiBwYWdlIEkgYXR0 YWNoZWQgYWJvdmUsIHRoZSBlcnJubyBpcyBzaWduaWZpY2FudCBvbmx5IHdoZW4NCj4+IGl0IHJl dHVybnMgYW4gZXJyb3IuIEFuZCAiYSBmdW5jdGlvbiB0aGF0IHN1Y2NlZWRzIGlzIGFsbG93ZWQg dG8gY2hhbmdlIGVycm5vLiINCj4gDQo+IEl0IGlzICJhbG1vc3QiIGJlY2F1c2UgYSBzeXN0ZW0g ZnVuY3Rpb24gdG91Y2hpbmcgdGhlIGVycm5vIHdoZW4gdGhlDQo+IGZ1bmN0aW9uIHN1Y2NlZWQg aXQgbm90IGNvbW1vbi4gIEJ1dCBhcyB0aGUgbWFuIHBhZ2Ugc2F5cyBpdCBpcyBub3QNCj4gaW1w b3NzaWJsZS4NCj4gDQo+PiBTbywgdGhlIGRlY2lzaW9uIHBvaW50IGlzIHdoZXRoZXIgd2Ugd2Fu dCB0byBwcmVzZXJ2ZSBydGVfZXJybm8gaW4gY2FzZSBvZg0KPj4gc3VjY2Vzcz8gTXkgb3Bpbmlv biBpcyBuby4NCj4gDQo+IEkgZGlkIG5vdCB1bmRlcnN0b29kIGl0IHdhcyBvbmx5IGEgY29uY2Vy biBhYm91dCB0aGUgc3VjY2VzcyBvZiB0aGUNCj4gZnVuY3Rpb24sIGV2ZW4gaXQgaXMgYmV0dGVy IHRvIGF2b2lkIGFzIG1vc3QgYXMgcG9zc2libGUgYSB1c2VsZXNzDQo+IHN0b3JlLCBpbiB0aGlz IHNwZWNpZmljIGNhc2UsIGFzIGVycm5vIChydGVfZXJybm8pIGhhcyBhIGdhcmJhZ2UgdmFsdWUs DQo+IEkgZnVsbHkgYWdyZWUgd2l0aCB5b3UuDQoNCk5lbGlvLA0KDQpEbyB5b3Ugc3RpbGwgd2Fu dCBtZSB0byBtYWtlIGFueSBjaGFuZ2UgZm9yIHRoaXMgcGF0Y2g/DQpMZXQgbWUga25vdyBpZiBh bnkuDQoNClRoYW5rcywNCllvbmdzZW9r