From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BFCC9C83000 for ; Wed, 29 Apr 2020 01:08:05 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 2F8F420737 for ; Wed, 29 Apr 2020 01:08:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2F8F420737 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9A3381D6C4; Wed, 29 Apr 2020 03:08:04 +0200 (CEST) Received: from huawei.com (szxga03-in.huawei.com [45.249.212.189]) by dpdk.org (Postfix) with ESMTP id 301F11D6B9; Wed, 29 Apr 2020 03:08:02 +0200 (CEST) Received: from dggeml406-hub.china.huawei.com (unknown [172.30.72.56]) by Forcepoint Email with ESMTP id 395905D4A3C90648D4EC; Wed, 29 Apr 2020 09:08:00 +0800 (CST) Received: from DGGEML422-HUB.china.huawei.com (10.1.199.39) by dggeml406-hub.china.huawei.com (10.3.17.50) with Microsoft SMTP Server (TLS) id 14.3.487.0; Wed, 29 Apr 2020 09:07:59 +0800 Received: from DGGEML529-MBX.china.huawei.com ([169.254.6.203]) by dggeml422-hub.china.huawei.com ([10.1.199.39]) with mapi id 14.03.0487.000; Wed, 29 Apr 2020 09:07:51 +0800 From: "Lilijun (Jerry)" To: Honnappa Nagarahalli , "'dev@dpdk.org'" CC: wangyunjian , xudingke , "'stable@dpdk.org'" , nd , nd Thread-Topic: [dpdk-dev] [PATCH] lib/librte_hash: add rte_hash_del_key_fixed without compact Thread-Index: AdYcO135HJmvjYM1Q2CGkNRR8o1T1wBYjpkQAAj59vA= Date: Wed, 29 Apr 2020 01:07:51 +0000 Message-ID: <40280F65B1B0B44E8089ED31C01616EBA4997CD9@dggeml529-mbx.china.huawei.com> References: <40280F65B1B0B44E8089ED31C01616EBA49921F2@dggeml529-mbx.china.huawei.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.173.251.98] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Subject: [dpdk-dev] =?utf-8?b?562U5aSNOiAgW1BBVENIXSBsaWIvbGlicnRlX2hhc2g6?= =?utf-8?q?_add_rte=5Fhash=5Fdel=5Fkey=5Ffixed_without_compact?= 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" VGhhbmtzIGZvciB5b3VyIHJlcGx5Lg0KDQpVc2luZyBydGVfaGFzaCBpdGVyYXRlIGFuZCBkZWxl dGUga2V5cyBpcyB0byBmcmVlIHRoZSByZWxhdGVkIGRhdGEncyBtZW1vcnkuIA0KVGhlcmUgYXJl IHR3byByZWFzb25zIHdoeSBydGVfaGFzaF9yZXNldCgpIGlzIG5vdCBwcm9wZXJseToNCjEpICB0 aGUgcmVzZXQgZnVuY3Rpb24ganVzdCBjbGVhciBhbGwga2V5cywgdGhlIGtleSdzIHJlbGF0ZWQg ZGF0YSBhcmUgbGVha2VkLg0KMikgIEluIHNvbWUgY2FzZXMsIEkgZG9uJ3QgbmVlZCBkZWxldGUg YWxsIGtleXMuIEp1c3Qgc29tZSBzZWxlY3RlZCBrZXlzIGFuZCBkYXRhIGFyZSBkZWxldGVkIGFu ZCByZWxlYXNlZC4NCg0KSmVycnkuDQoNCi0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCuWPkeS7tuS6 ujogSG9ubmFwcGEgTmFnYXJhaGFsbGkgW21haWx0bzpIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0u Y29tXSANCuWPkemAgeaXtumXtDogMjAyMOW5tDTmnIgyOeaXpSA0OjQ2DQrmlLbku7bkuro6IExp bGlqdW4gKEplcnJ5KSA8amVycnkubGlsaWp1bkBodWF3ZWkuY29tPjsgJ2RldkBkcGRrLm9yZycg PGRldkBkcGRrLm9yZz4NCuaKhOmAgTogd2FuZ3l1bmppYW4gPHdhbmd5dW5qaWFuQGh1YXdlaS5j b20+OyB4dWRpbmdrZSA8eHVkaW5na2VAaHVhd2VpLmNvbT47ICdzdGFibGVAZHBkay5vcmcnIDxz dGFibGVAZHBkay5vcmc+OyBuZCA8bmRAYXJtLmNvbT47IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxI b25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQrkuLvpopg6IFJF OiBbZHBkay1kZXZdIFtQQVRDSF0gbGliL2xpYnJ0ZV9oYXNoOiBhZGQgcnRlX2hhc2hfZGVsX2tl eV9maXhlZCB3aXRob3V0IGNvbXBhY3QNCg0KPHNuaXA+DQoNCkhpIEplcnJ5LA0KCUZldyBxdWVz dGlvbnMgaW5saW5lLg0KDQo+IFN1YmplY3Q6IFtkcGRrLWRldl0gW1BBVENIXSBsaWIvbGlicnRl X2hhc2g6IGFkZCANCj4gcnRlX2hhc2hfZGVsX2tleV9maXhlZCB3aXRob3V0IGNvbXBhY3QNCj4g DQo+IFRoZSBrZXlzIGlkeCBhcmUgc3RvcmVkIGluIHJ0ZV9oYXNoIG1haW4gYnVja2V0IGtleSBz bG90cyBhbmQgZXh0ZW5kIA0KPiBidWNrZXQga2V5IHN0b3RzLg0KPiBXZSBpdGVyYXRlIGV2ZXJ5 IG5vIGVtcHR5IEtleXMgaW4gaC0+YnVja2V0cyBhbmQgaC0+YnVja2V0c19leHQgZnJvbSANCj4g c3RhcnQgdG8gbGFzdC4NCj4gV2hlbiBkZWxldGluZyBrZXlzIHRoZSBmdW5jdGlvbiBfX3J0ZV9o YXNoX2NvbXBhY3RfbGwoKSBtYXkgbW92ZSANCj4gbGFzdF9ia3QncyBrZXkgdG8gcHJldmlvdXMg YnVja2V0IGluIG9yZGVyIHRvIGNvbXBhY3QgZXh0ZW5kIGJ1Y2tldCBsaXN0Lg0KPiBJZiB0aGUg cHJldmlvdXMgYnVja2V0IGhhcyBiZWVuIGl0ZXJhdGVkLCB0aGUgbW92ZWQga2V5IG1heSBiZSBt aXNzZWQgDQo+IGZvciB1c2Vycy4NCj4gVGhlbiB0aG9zZSBtaXNzZWQga2V5cyBhcmUgbGVha2Vk IGFuZCBydGVfaGFzaCB0YWJsZSBjYW4ndCBiZSBjbGVhbnVwLg0KPiBTbyB3ZSBhZGQgYSBuZXcg QVBJIHJ0ZV9oYXNoX2RlbF9rZXlfZml4ZWQoKSB1c2VkIGluIGl0ZXJhdGUgbG9vcCB0byANCj4g YXZvaWQgdGhpcyBidWdzLg0KPiANCj4gLS0tDQo+ICBsaWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tv b19oYXNoLmMgICAgfCAxOSArKysrKysrKysrKysrKy0tLS0tDQo+ICBsaWIvbGlicnRlX2hhc2gv cnRlX2hhc2guaCAgICAgICAgICAgfCAgNSArKysrKw0KPiAgbGliL2xpYnJ0ZV9oYXNoL3J0ZV9o YXNoX3ZlcnNpb24ubWFwIHwgIDEgKw0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfaGFzaC9y dGVfY3Vja29vX2hhc2guYw0KPiBiL2xpYi9saWJydGVfaGFzaC9ydGVfY3Vja29vX2hhc2guYw0K PiBpbmRleCBiNTI2MzBiLi4yZGEzYzFkIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX2hhc2gv cnRlX2N1Y2tvb19oYXNoLmMNCj4gKysrIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFz aC5jDQo+IEBAIC0xNTIzLDcgKzE1MjMsNyBAQCBzZWFyY2hfYW5kX3JlbW92ZShjb25zdCBzdHJ1 Y3QgcnRlX2hhc2ggKmgsIA0KPiBjb25zdCB2b2lkICprZXksDQo+IA0KPiAgc3RhdGljIGlubGlu ZSBpbnQzMl90DQo+ICBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKGNvbnN0IHN0cnVjdCBy dGVfaGFzaCAqaCwgY29uc3Qgdm9pZCAqa2V5LA0KPiAtCQkJCQkJaGFzaF9zaWdfdCBzaWcpDQo+ ICsJCQkJCQloYXNoX3NpZ190IHNpZywgdWludDhfdA0KPiBjb21wYWN0KQ0KPiAgew0KPiAgCXVp bnQzMl90IHByaW1fYnVja2V0X2lkeCwgc2VjX2J1Y2tldF9pZHg7DQo+ICAJc3RydWN0IHJ0ZV9o YXNoX2J1Y2tldCAqcHJpbV9ia3QsICpzZWNfYmt0LCAqcHJldl9ia3QsICpsYXN0X2JrdDsgQEAg DQo+IC0xNTQxLDcgKzE1NDEsOCBAQCBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKGNvbnN0 IHN0cnVjdCBydGVfaGFzaCANCj4gKmgsIGNvbnN0IHZvaWQgKmtleSwNCj4gIAkvKiBsb29rIGZv ciBrZXkgaW4gcHJpbWFyeSBidWNrZXQgKi8NCj4gIAlyZXQgPSBzZWFyY2hfYW5kX3JlbW92ZSho LCBrZXksIHByaW1fYmt0LCBzaG9ydF9zaWcsICZwb3MpOw0KPiAgCWlmIChyZXQgIT0gLTEpIHsN Cj4gLQkJX19ydGVfaGFzaF9jb21wYWN0X2xsKGgsIHByaW1fYmt0LCBwb3MpOw0KPiArCQlpZiAo Y29tcGFjdCkNCj4gKwkJCV9fcnRlX2hhc2hfY29tcGFjdF9sbChoLCBwcmltX2JrdCwgcG9zKTsN Cj4gIAkJbGFzdF9ia3QgPSBwcmltX2JrdC0+bmV4dDsNCj4gIAkJcHJldl9ia3QgPSBwcmltX2Jr dDsNCj4gIAkJZ290byByZXR1cm5fYmt0Ow0KPiBAQCAtMTU1Myw3ICsxNTU0LDggQEAgX19ydGVf aGFzaF9kZWxfa2V5X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QgDQo+IHJ0ZV9oYXNoICpoLCBjb25z dCB2b2lkICprZXksDQo+ICAJRk9SX0VBQ0hfQlVDS0VUKGN1cl9ia3QsIHNlY19ia3QpIHsNCj4g IAkJcmV0ID0gc2VhcmNoX2FuZF9yZW1vdmUoaCwga2V5LCBjdXJfYmt0LCBzaG9ydF9zaWcsICZw b3MpOw0KPiAgCQlpZiAocmV0ICE9IC0xKSB7DQo+IC0JCQlfX3J0ZV9oYXNoX2NvbXBhY3RfbGwo aCwgY3VyX2JrdCwgcG9zKTsNCj4gKwkJCWlmIChjb21wYWN0KQ0KPiArCQkJCV9fcnRlX2hhc2hf Y29tcGFjdF9sbChoLCBjdXJfYmt0LCBwb3MpOw0KPiAgCQkJbGFzdF9ia3QgPSBzZWNfYmt0LT5u ZXh0Ow0KPiAgCQkJcHJldl9ia3QgPSBzZWNfYmt0Ow0KPiAgCQkJZ290byByZXR1cm5fYmt0Ow0K PiBAQCAtMTYwNywxNCArMTYwOSwyMSBAQCBydGVfaGFzaF9kZWxfa2V5X3dpdGhfaGFzaChjb25z dCBzdHJ1Y3QgDQo+IHJ0ZV9oYXNoICpoLA0KPiAgCQkJY29uc3Qgdm9pZCAqa2V5LCBoYXNoX3Np Z190IHNpZykNCj4gIHsNCj4gIAlSRVRVUk5fSUZfVFJVRSgoKGggPT0gTlVMTCkgfHwgKGtleSA9 PSBOVUxMKSksIC1FSU5WQUwpOw0KPiAtCXJldHVybiBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0aF9o YXNoKGgsIGtleSwgc2lnKTsNCj4gKwlyZXR1cm4gX19ydGVfaGFzaF9kZWxfa2V5X3dpdGhfaGFz aChoLCBrZXksIHNpZywgMSk7DQo+ICB9DQo+IA0KPiAgaW50MzJfdA0KPiAgcnRlX2hhc2hfZGVs X2tleShjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSkgIHsNCj4gIAlS RVRVUk5fSUZfVFJVRSgoKGggPT0gTlVMTCkgfHwgKGtleSA9PSBOVUxMKSksIC1FSU5WQUwpOw0K PiAtCXJldHVybiBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKGgsIGtleSwgcnRlX2hhc2hf aGFzaChoLCBrZXkpKTsNCj4gKwlyZXR1cm4gX19ydGVfaGFzaF9kZWxfa2V5X3dpdGhfaGFzaCho LCBrZXksIHJ0ZV9oYXNoX2hhc2goaCwga2V5KSwNCj4gMSk7DQo+ICt9DQo+ICsNCj4gK2ludDMy X3QNCj4gK3J0ZV9oYXNoX2RlbF9rZXlfZml4ZWQoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBj b25zdCB2b2lkICprZXkpIHsNCj4gKwlSRVRVUk5fSUZfVFJVRSgoKGggPT0gTlVMTCkgfHwgKGtl eSA9PSBOVUxMKSksIC1FSU5WQUwpOw0KPiArCXJldHVybiBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0 aF9oYXNoKGgsIGtleSwgcnRlX2hhc2hfaGFzaChoLCBrZXkpLA0KPiAwKTsNCj4gIH0NCj4gDQo+ ICBpbnQNCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oIGIvbGliL2xp YnJ0ZV9oYXNoL3J0ZV9oYXNoLmggDQo+IGluZGV4IGVjZWIzNjUuLjliNzFkOGEgMTAwNjQ0DQo+ IC0tLSBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oDQo+ICsrKyBiL2xpYi9saWJydGVfaGFz aC9ydGVfaGFzaC5oDQo+IEBAIC0yOTcsNiArMjk3LDExIEBAIHJ0ZV9oYXNoX2FkZF9rZXlfd2l0 aF9oYXNoKGNvbnN0IHN0cnVjdCBydGVfaGFzaCANCj4gKmgsIGNvbnN0IHZvaWQgKmtleSwgaGFz aF9zaWdfdCAgaW50MzJfdCAgcnRlX2hhc2hfZGVsX2tleShjb25zdCANCj4gc3RydWN0IHJ0ZV9o YXNoICpoLCBjb25zdCB2b2lkICprZXkpOw0KPiANCj4gKw0KPiArLyogZm9yIHdpdGhvdXQgY29t cGFjdCAqLw0KPiAraW50MzJfdA0KPiArcnRlX2hhc2hfZGVsX2tleV9maXhlZChjb25zdCBzdHJ1 Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSk7DQo+ICsNCj4gIC8qKg0KPiAgICogUmVt b3ZlIGEga2V5IGZyb20gYW4gZXhpc3RpbmcgaGFzaCB0YWJsZS4NCj4gICAqIFRoaXMgb3BlcmF0 aW9uIGlzIG5vdCBtdWx0aS10aHJlYWQgc2FmZSBkaWZmIC0tZ2l0IA0KPiBhL2xpYi9saWJydGVf aGFzaC9ydGVfaGFzaF92ZXJzaW9uLm1hcA0KPiBiL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaF92 ZXJzaW9uLm1hcA0KPiBpbmRleCAzMGNjMDg2Li4xOTQxZDE3IDEwMDY0NA0KPiAtLS0gYS9saWIv bGlicnRlX2hhc2gvcnRlX2hhc2hfdmVyc2lvbi5tYXANCj4gKysrIGIvbGliL2xpYnJ0ZV9oYXNo L3J0ZV9oYXNoX3ZlcnNpb24ubWFwDQo+IEBAIC0xMSw2ICsxMSw3IEBAIERQREtfMjAuMCB7DQo+ ICAJcnRlX2hhc2hfY291bnQ7DQo+ICAJcnRlX2hhc2hfY3JlYXRlOw0KPiAgCXJ0ZV9oYXNoX2Rl bF9rZXk7DQo+ICsJcnRlX2hhc2hfZGVsX2tleV9maXhlZDsNCj4gIAlydGVfaGFzaF9kZWxfa2V5 X3dpdGhfaGFzaDsNCj4gIAlydGVfaGFzaF9maW5kX2V4aXN0aW5nOw0KPiAgCXJ0ZV9oYXNoX2Zy ZWU7DQo+IC0tDQo+IDIuMTkuMQ0KPiANCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hk u7bkuro6IExpbGlqdW4gKEplcnJ5KQ0KPiDlj5HpgIHml7bpl7Q6IDIwMjDlubQ05pyIMTjml6Ug MTg6MDANCj4g5pS25Lu25Lq6OiAnZGV2QGRwZGsub3JnJyA8ZGV2QGRwZGsub3JnPjsgJ3N0YWJs ZUBkcGRrLm9yZycNCj4gPHN0YWJsZUBkcGRrLm9yZz4NCj4g5Li76aKYOiBydGVfaGFzaCBidWc6 IGNhbid0IGl0ZXJhdGUgYWxsIGVudHJpZXMgd2hlbiBkZWxldGluZyBrZXlzIGluIA0KPiBydGVf aGFzaCBpdGVyYXRlIGxvb3AuDQo+IA0KPiBIaSBhbGwsDQo+IA0KPiAgICAgSW4gbXkgdGVzdCwg ZW50cmllcyBjYW4ndCBiZSBjbGVhbnVwIGluIHJ0ZV9oYXNoIHRhYmxlIHdoZW4gDQo+IGRlbGV0 aW5nIGtleXMgaW4gcnRlX2hhc2ggaXRlcmF0ZSBsb29wLiBUaGUgdGVzdCBzdGVwczoNCj4gICAg IDEuICBjcmVhdGUgYSBoYXNoIHRhYmxlIHRhYmxlMSB3aXRoIGxpbWl0IDMwMDAwLCBleHQgYnVj a2V0IA0KPiBlbmFibGVkLCAgYW5kIGluc2VydCAzMDAwMCBlbnRyaWVzIGludG8gdGhpcyBoYXNo IHRhYmxlLg0KPiAgICAgMi4gIGNyZWF0ZSBhIGxhcmdlciBoYXNoIHRhYmxlIHRhYmxlMiB3aXRo IGxpbWl0IDYwMDAwLCAsIGV4dCBidWNrZXQgZW5hYmxlZC4NCj4gICAgIDMuICBpdGVyYXRlIGFs bCBlbnRyaWVzIG9mIHRhYmxlMSBhbmQgaW5zZXJ0IHRoZW0gdG8gdGhlIHRhYmxlMi4gDQo+IElu c2VydCBuZXcNCj4gMTAwMDAgZW50cmllcyB0byB0aGlzIHRhYmxlMi4NCj4gICAgIDQuICBUaGVu IGZsdXNoIGFsbCBlbnRyaWVzIGZyb20gdGFibGUyIGJ5IGRlbGV0aW5nIGtleXMgaW4gDQo+IHJ0 ZV9oYXNoIGl0ZXJhdGUgbG9vcC4gQnV0IHRoZXJlIGFyZSBzdGlsbCBzb21lIGtleXMgbGVha2Vk IGluIHRhYmxlMi4NCklzIHRoZXJlIGFueSByZWFzb24gZm9yIGZsdXNoaW5nIHRhYmxlMiBpbiB0 aGlzIG1hbm5lcj8NCklzIGl0IHBvc3NpYmxlIHRvIHVzZSAncnRlX2hhc2hfcmVzZXQnIGluc3Rl YWQ/DQoNCj4gDQo+ICAgICBGcm9tIG15IGFuYWx5c2lzLCB0aGUga2V5cyBpZHggYXJlIHN0b3Jl ZCBpbiBydGVfaGFzaCBtYWluIGJ1Y2tldCANCj4ga2V5IHNsb3RzIGFuZCBleHRlbmQgYnVja2V0 IGtleSBzdG90cy4NCj4gICAgIFdlIGl0ZXJhdGUgZXZlcnkgbm8gZW1wdHkgS2V5cyBpbiBoLT5i dWNrZXRzIGFuZCBoLT5idWNrZXRzX2V4dCANCj4gZnJvbSBzdGFydCB0byBsYXN0Lg0KPiAgICAg V2hlbiBkZWxldGluZyBrZXlzIHRoZSBmdW5jdGlvbiBfX3J0ZV9oYXNoX2NvbXBhY3RfbGwoKSBt YXkgbW92ZSANCj4gbGFzdF9ia3QncyBrZXkgdG8gcHJldmlvdXMgYnVja2V0IGluIG9yZGVyIHRv IGNvbXBhY3QgZXh0ZW5kIGJ1Y2tldCBsaXN0Lg0KPiAgICAgSWYgdGhlIHByZXZpb3VzIGJ1Y2tl dCBoYXMgYmVlbiBpdGVyYXRlZCwgdGhlIG1vdmVkIGtleSBtYXkgYmUgDQo+IG1pc3NlZCBmb3Ig dXNlcnMuDQo+ICAgICBUaGVuIHRob3NlIG1pc3NlZCBrZXlzIGFyZSBsZWFrZWQgYW5kIHJ0ZV9o YXNoIHRhYmxlIGNhbid0IGJlIGNsZWFudXAuDQo+IA0KPiAgICAgTm93IEkgcmV0cnkgdGhlIGl0 ZXJhdGUgYW5kIGRlbGV0ZSBrZXlzLCB0aGF0IGNhbiBhdm9pZCB0aGlzIGJ1Zy4NCj4gDQo+ICAg ICBJcyB0aGVyZSBhbnkgaWRlYXMgb3Igc29sdXRpb25zIG9uIHRoaXMgYnVnPyAgIFRoYW5rcy4N Cj4gDQo+IEplcnJ5Lg0K