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 88D79A0352; Wed, 6 May 2020 03:11:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 372951D68B; Wed, 6 May 2020 03:11:16 +0200 (CEST) Received: from huawei.com (szxga03-in.huawei.com [45.249.212.189]) by dpdk.org (Postfix) with ESMTP id 802601D687; Wed, 6 May 2020 03:11:14 +0200 (CEST) Received: from DGGEML403-HUB.china.huawei.com (unknown [172.30.72.55]) by Forcepoint Email with ESMTP id 8C67D98427DD8F6A9CA5; Wed, 6 May 2020 09:11:10 +0800 (CST) Received: from DGGEML529-MBX.china.huawei.com ([169.254.6.203]) by DGGEML403-HUB.china.huawei.com ([fe80::74d9:c659:fbec:21fa%31]) with mapi id 14.03.0487.000; Wed, 6 May 2020 09:09:41 +0800 From: "Lilijun (Jerry)" To: Honnappa Nagarahalli , "'dev@dpdk.org'" CC: wangyunjian , xudingke , "'stable@dpdk.org'" , nd , "yipeng1.wang@intel.com" , nd Thread-Topic: [dpdk-dev] [PATCH] lib/librte_hash: add rte_hash_del_key_fixed without compact Thread-Index: AdYcO135HJmvjYM1Q2CGkNRR8o1T1wBYjpkQAAj59vABXEemcAADnGyA Date: Wed, 6 May 2020 01:09:41 +0000 Message-ID: <40280F65B1B0B44E8089ED31C01616EBA49A19CE@dggeml529-mbx.china.huawei.com> References: <40280F65B1B0B44E8089ED31C01616EBA49921F2@dggeml529-mbx.china.huawei.com> <40280F65B1B0B44E8089ED31C01616EBA4997CD9@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" PiAtLS0tLemCruS7tuWOn+S7ti0tLS0tDQo+IOWPkeS7tuS6ujogSG9ubmFwcGEgTmFnYXJhaGFs bGkgW21haWx0bzpIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tXQ0KPiDlj5HpgIHml7bpl7Q6 IDIwMjDlubQ15pyINuaXpSA3OjE4DQo+IOaUtuS7tuS6ujogTGlsaWp1biAoSmVycnkpIDxqZXJy eS5saWxpanVuQGh1YXdlaS5jb20+OyAnZGV2QGRwZGsub3JnJw0KPiA8ZGV2QGRwZGsub3JnPg0K PiDmioTpgIE6IHdhbmd5dW5qaWFuIDx3YW5neXVuamlhbkBodWF3ZWkuY29tPjsgeHVkaW5na2UN Cj4gPHh1ZGluZ2tlQGh1YXdlaS5jb20+OyAnc3RhYmxlQGRwZGsub3JnJyA8c3RhYmxlQGRwZGsu b3JnPjsgbmQNCj4gPG5kQGFybS5jb20+OyBIb25uYXBwYSBOYWdhcmFoYWxsaSA8SG9ubmFwcGEu TmFnYXJhaGFsbGlAYXJtLmNvbT47DQo+IHlpcGVuZzEud2FuZ0BpbnRlbC5jb207IG5kIDxuZEBh cm0uY29tPg0KPiDkuLvpopg6IFJFOiBbZHBkay1kZXZdIFtQQVRDSF0gbGliL2xpYnJ0ZV9oYXNo OiBhZGQgcnRlX2hhc2hfZGVsX2tleV9maXhlZA0KPiB3aXRob3V0IGNvbXBhY3QNCj4gDQo+IDxz bmlwPg0KPiANCj4gQWRkaW5nIFlpcGVuZywgbWFpbnRhaW5lciBmb3IgaGFzaCBsaWJyYXJ5DQo+ IA0KPiA+DQo+ID4gVGhhbmtzIGZvciB5b3VyIHJlcGx5Lg0KPiA+DQo+ID4gVXNpbmcgcnRlX2hh c2ggaXRlcmF0ZSBhbmQgZGVsZXRlIGtleXMgaXMgdG8gZnJlZSB0aGUgcmVsYXRlZCBkYXRhJ3Mg bWVtb3J5Lg0KPiA+IFRoZXJlIGFyZSB0d28gcmVhc29ucyB3aHkgcnRlX2hhc2hfcmVzZXQoKSBp cyBub3QgcHJvcGVybHk6DQo+ID4gMSkgIHRoZSByZXNldCBmdW5jdGlvbiBqdXN0IGNsZWFyIGFs bCBrZXlzLCB0aGUga2V5J3MgcmVsYXRlZCBkYXRhIGFyZSBsZWFrZWQuDQo+IFRoYXQgaXMgYSBn b29kIHBvaW50LiBJIHRoaW5rIHRoaXMgc2hvdWxkIGJlIGRvY3VtZW50ZWQgaW4gdGhlIEFQSS4N Cj4gDQo+ID4gMikgIEluIHNvbWUgY2FzZXMsIEkgZG9uJ3QgbmVlZCBkZWxldGUgYWxsIGtleXMu IEp1c3Qgc29tZSBzZWxlY3RlZA0KPiA+IGtleXMgYW5kIGRhdGEgYXJlIGRlbGV0ZWQgYW5kIHJl bGVhc2VkLg0KPiBJIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0geW91IGhhdmUgcG9pbnRlZCBvdXQg YW5kIHVuZGVyc3RhbmQgaG93IHRvDQo+IHJlcHJvZHVjZSBpdC4gQnV0LCB0aGUgdXNlIGNhc2Ug aXMgbm90IGNsZWFyIHRvIG1lLiBDYW4geW91IHBsZWFzZSBleHBsYWluIHRoZQ0KPiB1c2UgY2Fz ZT8NCltMaWxpanVuIChKZXJyeSldIA0KDQpBcyB5b3Uga25vdywgdGhlIGRwZGsgcnRlX2hhc2gg dXNlIGEgZml4ZWQgc2l6ZSB0YWJsZSB0byBzdG9yZSBhbGwga2V5cy9kYXRhcy4gVGhlIG1lbW9y eSB1c2VkIGJ5IGhhc2ggdGFibGUgaXMgcmVsYXRlZCB3aXRoIHRoaXMgZml4ZWQgc2l6ZS4NCklu IG15IGNhc2UsIG5vcm1hbGx5IHRoZSBjb3VudCBvZiBrZXlzIGlzIGFib3V0IDEwMCwwMDAgYnV0 IHNvbWV0aW1lcyB0aGUgY291bnQgbWF5IGJ1cnN0IHVwIHRvIDMwLDAwMCwwMDAuDQpJbiBvcmRl ciB0byBzYXZlIG1lbW9yeSB1c2FnZSwgSSBjcmVhdGUgYSBzbWFsbCBoYXNoIHRhYmxlIHdpdGgg MTAwLDAwMCBzaXplIGFuZCByZXBsYWNlIHRvIGEgYmlnZ2VyIG9uZSB3aXRoIDMwLDAwMCwwMDAg c2l6ZSB3aGVuDQp0aGVyZSBhcmUgbW9yZSBrZXlzIHRvIGJlIHN0b3JlZC4gQWxzbyB3aGVuIHRo ZSBrZXkncyBjb3VudCByZWR1Y2VkIHRvIGxlc3MgdGhhbiAxMDAsMDAwLCBJIHJlcGxhY2UgdGhl IGhhc2ggdGFibGUgd2l0aCBhIHNtYWxsIG9uZSB0bw0Kc2F2ZSB0aGUgbWVtb3J5Lg0KDQo+IA0K PiA+DQo+ID4gSmVycnkuDQo+ID4NCj4gPiAtLS0tLemCruS7tuWOn+S7ti0tLS0tDQo+ID4g5Y+R 5Lu25Lq6OiBIb25uYXBwYSBOYWdhcmFoYWxsaSBbbWFpbHRvOkhvbm5hcHBhLk5hZ2FyYWhhbGxp QGFybS5jb21dDQo+ID4g5Y+R6YCB5pe26Ze0OiAyMDIw5bm0NOaciDI55pelIDQ6NDYNCj4gPiDm lLbku7bkuro6IExpbGlqdW4gKEplcnJ5KSA8amVycnkubGlsaWp1bkBodWF3ZWkuY29tPjsgJ2Rl dkBkcGRrLm9yZycNCj4gPiA8ZGV2QGRwZGsub3JnPg0KPiA+IOaKhOmAgTogd2FuZ3l1bmppYW4g PHdhbmd5dW5qaWFuQGh1YXdlaS5jb20+OyB4dWRpbmdrZQ0KPiA+IDx4dWRpbmdrZUBodWF3ZWku Y29tPjsgJ3N0YWJsZUBkcGRrLm9yZycgPHN0YWJsZUBkcGRrLm9yZz47IG5kDQo+ID4gPG5kQGFy bS5jb20+OyBIb25uYXBwYSBOYWdhcmFoYWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNv bT47DQo+IG5kDQo+ID4gPG5kQGFybS5jb20+DQo+ID4g5Li76aKYOiBSRTogW2RwZGstZGV2XSBb UEFUQ0hdIGxpYi9saWJydGVfaGFzaDogYWRkIHJ0ZV9oYXNoX2RlbF9rZXlfZml4ZWQNCj4gPiB3 aXRob3V0IGNvbXBhY3QNCj4gPg0KPiA+IDxzbmlwPg0KPiA+DQo+ID4gSGkgSmVycnksDQo+ID4g CUZldyBxdWVzdGlvbnMgaW5saW5lLg0KPiA+DQo+ID4gPiBTdWJqZWN0OiBbZHBkay1kZXZdIFtQ QVRDSF0gbGliL2xpYnJ0ZV9oYXNoOiBhZGQNCj4gPiA+IHJ0ZV9oYXNoX2RlbF9rZXlfZml4ZWQg d2l0aG91dCBjb21wYWN0DQo+ID4gPg0KPiA+ID4gVGhlIGtleXMgaWR4IGFyZSBzdG9yZWQgaW4g cnRlX2hhc2ggbWFpbiBidWNrZXQga2V5IHNsb3RzIGFuZCBleHRlbmQNCj4gPiA+IGJ1Y2tldCBr ZXkgc3RvdHMuDQo+ID4gPiBXZSBpdGVyYXRlIGV2ZXJ5IG5vIGVtcHR5IEtleXMgaW4gaC0+YnVj a2V0cyBhbmQgaC0+YnVja2V0c19leHQgZnJvbQ0KPiA+ID4gc3RhcnQgdG8gbGFzdC4NCj4gPiA+ IFdoZW4gZGVsZXRpbmcga2V5cyB0aGUgZnVuY3Rpb24gX19ydGVfaGFzaF9jb21wYWN0X2xsKCkg bWF5IG1vdmUNCj4gPiA+IGxhc3RfYmt0J3Mga2V5IHRvIHByZXZpb3VzIGJ1Y2tldCBpbiBvcmRl ciB0byBjb21wYWN0IGV4dGVuZCBidWNrZXQgbGlzdC4NCj4gPiA+IElmIHRoZSBwcmV2aW91cyBi dWNrZXQgaGFzIGJlZW4gaXRlcmF0ZWQsIHRoZSBtb3ZlZCBrZXkgbWF5IGJlDQo+ID4gPiBtaXNz ZWQgZm9yIHVzZXJzLg0KPiA+ID4gVGhlbiB0aG9zZSBtaXNzZWQga2V5cyBhcmUgbGVha2VkIGFu ZCBydGVfaGFzaCB0YWJsZSBjYW4ndCBiZSBjbGVhbnVwLg0KPiA+ID4gU28gd2UgYWRkIGEgbmV3 IEFQSSBydGVfaGFzaF9kZWxfa2V5X2ZpeGVkKCkgdXNlZCBpbiBpdGVyYXRlIGxvb3AgdG8NCj4g PiA+IGF2b2lkIHRoaXMgYnVncy4NCj4gPiA+DQo+ID4gPiAtLS0NCj4gPiA+ICBsaWIvbGlicnRl X2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMgICAgfCAxOSArKysrKysrKysrKysrKy0tLS0tDQo+ID4g PiAgbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmggICAgICAgICAgIHwgIDUgKysrKysNCj4gPiA+ ICBsaWIvbGlicnRlX2hhc2gvcnRlX2hhc2hfdmVyc2lvbi5tYXAgfCAgMSArDQo+ID4gPiAgMyBm aWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4g PiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMNCj4gPiA+ IGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5jDQo+ID4gPiBpbmRleCBiNTI2MzBi Li4yZGEzYzFkIDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29f aGFzaC5jDQo+ID4gPiArKysgYi9saWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMNCj4g PiA+IEBAIC0xNTIzLDcgKzE1MjMsNyBAQCBzZWFyY2hfYW5kX3JlbW92ZShjb25zdCBzdHJ1Y3Qg cnRlX2hhc2ggKmgsDQo+ID4gPiBjb25zdCB2b2lkICprZXksDQo+ID4gPg0KPiA+ID4gIHN0YXRp YyBpbmxpbmUgaW50MzJfdA0KPiA+ID4gIF9fcnRlX2hhc2hfZGVsX2tleV93aXRoX2hhc2goY29u c3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkDQo+ICprZXksDQo+ID4gPiAtCQkJCQkJ aGFzaF9zaWdfdCBzaWcpDQo+ID4gPiArCQkJCQkJaGFzaF9zaWdfdCBzaWcsIHVpbnQ4X3QNCj4g PiA+IGNvbXBhY3QpDQo+ID4gPiAgew0KPiA+ID4gIAl1aW50MzJfdCBwcmltX2J1Y2tldF9pZHgs IHNlY19idWNrZXRfaWR4Ow0KPiA+ID4gIAlzdHJ1Y3QgcnRlX2hhc2hfYnVja2V0ICpwcmltX2Jr dCwgKnNlY19ia3QsICpwcmV2X2JrdCwgKmxhc3RfYmt0Ow0KPiA+IEBADQo+ID4gPiAtMTU0MSw3 ICsxNTQxLDggQEAgX19ydGVfaGFzaF9kZWxfa2V5X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QNCj4g PiA+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICprZXksDQo+ID4gPiAgCS8qIGxvb2sgZm9yIGtl eSBpbiBwcmltYXJ5IGJ1Y2tldCAqLw0KPiA+ID4gIAlyZXQgPSBzZWFyY2hfYW5kX3JlbW92ZSho LCBrZXksIHByaW1fYmt0LCBzaG9ydF9zaWcsICZwb3MpOw0KPiA+ID4gIAlpZiAocmV0ICE9IC0x KSB7DQo+ID4gPiAtCQlfX3J0ZV9oYXNoX2NvbXBhY3RfbGwoaCwgcHJpbV9ia3QsIHBvcyk7DQo+ ID4gPiArCQlpZiAoY29tcGFjdCkNCj4gPiA+ICsJCQlfX3J0ZV9oYXNoX2NvbXBhY3RfbGwoaCwg cHJpbV9ia3QsIHBvcyk7DQo+ID4gPiAgCQlsYXN0X2JrdCA9IHByaW1fYmt0LT5uZXh0Ow0KPiA+ ID4gIAkJcHJldl9ia3QgPSBwcmltX2JrdDsNCj4gPiA+ICAJCWdvdG8gcmV0dXJuX2JrdDsNCj4g PiA+IEBAIC0xNTUzLDcgKzE1NTQsOCBAQCBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKGNv bnN0IHN0cnVjdA0KPiA+ID4gcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSwNCj4gPiA+ICAJ Rk9SX0VBQ0hfQlVDS0VUKGN1cl9ia3QsIHNlY19ia3QpIHsNCj4gPiA+ICAJCXJldCA9IHNlYXJj aF9hbmRfcmVtb3ZlKGgsIGtleSwgY3VyX2JrdCwgc2hvcnRfc2lnLCAmcG9zKTsNCj4gPiA+ICAJ CWlmIChyZXQgIT0gLTEpIHsNCj4gPiA+IC0JCQlfX3J0ZV9oYXNoX2NvbXBhY3RfbGwoaCwgY3Vy X2JrdCwgcG9zKTsNCj4gPiA+ICsJCQlpZiAoY29tcGFjdCkNCj4gPiA+ICsJCQkJX19ydGVfaGFz aF9jb21wYWN0X2xsKGgsIGN1cl9ia3QsIHBvcyk7DQo+ID4gPiAgCQkJbGFzdF9ia3QgPSBzZWNf Ymt0LT5uZXh0Ow0KPiA+ID4gIAkJCXByZXZfYmt0ID0gc2VjX2JrdDsNCj4gPiA+ICAJCQlnb3Rv IHJldHVybl9ia3Q7DQo+ID4gPiBAQCAtMTYwNywxNCArMTYwOSwyMSBAQCBydGVfaGFzaF9kZWxf a2V5X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QNCj4gPiA+IHJ0ZV9oYXNoICpoLA0KPiA+ID4gIAkJ CWNvbnN0IHZvaWQgKmtleSwgaGFzaF9zaWdfdCBzaWcpICB7DQo+ID4gPiAgCVJFVFVSTl9JRl9U UlVFKCgoaCA9PSBOVUxMKSB8fCAoa2V5ID09IE5VTEwpKSwgLUVJTlZBTCk7DQo+ID4gPiAtCXJl dHVybiBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKGgsIGtleSwgc2lnKTsNCj4gPiA+ICsJ cmV0dXJuIF9fcnRlX2hhc2hfZGVsX2tleV93aXRoX2hhc2goaCwga2V5LCBzaWcsIDEpOw0KPiA+ ID4gIH0NCj4gPiA+DQo+ID4gPiAgaW50MzJfdA0KPiA+ID4gIHJ0ZV9oYXNoX2RlbF9rZXkoY29u c3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICprZXkpICB7DQo+ID4gPiAgCVJFVFVS Tl9JRl9UUlVFKCgoaCA9PSBOVUxMKSB8fCAoa2V5ID09IE5VTEwpKSwgLUVJTlZBTCk7DQo+ID4g PiAtCXJldHVybiBfX3J0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKGgsIGtleSwgcnRlX2hhc2hf aGFzaChoLA0KPiBrZXkpKTsNCj4gPiA+ICsJcmV0dXJuIF9fcnRlX2hhc2hfZGVsX2tleV93aXRo X2hhc2goaCwga2V5LCBydGVfaGFzaF9oYXNoKGgsDQo+IGtleSksDQo+ID4gPiAxKTsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiAraW50MzJfdA0KPiA+ID4gK3J0ZV9oYXNoX2RlbF9rZXlfZml4 ZWQoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICprZXkpIHsNCj4gPiA+ICsJ UkVUVVJOX0lGX1RSVUUoKChoID09IE5VTEwpIHx8IChrZXkgPT0gTlVMTCkpLCAtRUlOVkFMKTsN Cj4gPiA+ICsJcmV0dXJuIF9fcnRlX2hhc2hfZGVsX2tleV93aXRoX2hhc2goaCwga2V5LCBydGVf aGFzaF9oYXNoKGgsDQo+IGtleSksDQo+ID4gPiAwKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4g IGludA0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oIGIvbGli L2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmgNCj4gPiA+IGluZGV4IGVjZWIzNjUuLjliNzFkOGEgMTAw NjQ0DQo+ID4gPiAtLS0gYS9saWIvbGlicnRlX2hhc2gvcnRlX2hhc2guaA0KPiA+ID4gKysrIGIv bGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmgNCj4gPiA+IEBAIC0yOTcsNiArMjk3LDExIEBAIHJ0 ZV9oYXNoX2FkZF9rZXlfd2l0aF9oYXNoKGNvbnN0IHN0cnVjdA0KPiA+IHJ0ZV9oYXNoDQo+ID4g PiAqaCwgY29uc3Qgdm9pZCAqa2V5LCBoYXNoX3NpZ190ICBpbnQzMl90ICBydGVfaGFzaF9kZWxf a2V5KGNvbnN0DQo+ID4gPiBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSk7DQo+ ID4gPg0KPiA+ID4gKw0KPiA+ID4gKy8qIGZvciB3aXRob3V0IGNvbXBhY3QgKi8NCj4gPiA+ICtp bnQzMl90DQo+ID4gPiArcnRlX2hhc2hfZGVsX2tleV9maXhlZChjb25zdCBzdHJ1Y3QgcnRlX2hh c2ggKmgsIGNvbnN0IHZvaWQgKmtleSk7DQo+ID4gPiArDQo+ID4gPiAgLyoqDQo+ID4gPiAgICog UmVtb3ZlIGEga2V5IGZyb20gYW4gZXhpc3RpbmcgaGFzaCB0YWJsZS4NCj4gPiA+ICAgKiBUaGlz IG9wZXJhdGlvbiBpcyBub3QgbXVsdGktdGhyZWFkIHNhZmUgZGlmZiAtLWdpdA0KPiA+ID4gYS9s aWIvbGlicnRlX2hhc2gvcnRlX2hhc2hfdmVyc2lvbi5tYXANCj4gPiA+IGIvbGliL2xpYnJ0ZV9o YXNoL3J0ZV9oYXNoX3ZlcnNpb24ubWFwDQo+ID4gPiBpbmRleCAzMGNjMDg2Li4xOTQxZDE3IDEw MDY0NA0KPiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoX3ZlcnNpb24ubWFwDQo+ ID4gPiArKysgYi9saWIvbGlicnRlX2hhc2gvcnRlX2hhc2hfdmVyc2lvbi5tYXANCj4gPiA+IEBA IC0xMSw2ICsxMSw3IEBAIERQREtfMjAuMCB7DQo+ID4gPiAgCXJ0ZV9oYXNoX2NvdW50Ow0KPiA+ ID4gIAlydGVfaGFzaF9jcmVhdGU7DQo+ID4gPiAgCXJ0ZV9oYXNoX2RlbF9rZXk7DQo+ID4gPiAr CXJ0ZV9oYXNoX2RlbF9rZXlfZml4ZWQ7DQo+ID4gPiAgCXJ0ZV9oYXNoX2RlbF9rZXlfd2l0aF9o YXNoOw0KPiA+ID4gIAlydGVfaGFzaF9maW5kX2V4aXN0aW5nOw0KPiA+ID4gIAlydGVfaGFzaF9m cmVlOw0KPiA+ID4gLS0NCj4gPiA+IDIuMTkuMQ0KPiA+ID4NCj4gPiA+IC0tLS0t6YKu5Lu25Y6f 5Lu2LS0tLS0NCj4gPiA+IOWPkeS7tuS6ujogTGlsaWp1biAoSmVycnkpDQo+ID4gPiDlj5HpgIHm l7bpl7Q6IDIwMjDlubQ05pyIMTjml6UgMTg6MDANCj4gPiA+IOaUtuS7tuS6ujogJ2RldkBkcGRr Lm9yZycgPGRldkBkcGRrLm9yZz47ICdzdGFibGVAZHBkay5vcmcnDQo+ID4gPiA8c3RhYmxlQGRw ZGsub3JnPg0KPiA+ID4g5Li76aKYOiBydGVfaGFzaCBidWc6IGNhbid0IGl0ZXJhdGUgYWxsIGVu dHJpZXMgd2hlbiBkZWxldGluZyBrZXlzIGluDQo+ID4gPiBydGVfaGFzaCBpdGVyYXRlIGxvb3Au DQo+ID4gPg0KPiA+ID4gSGkgYWxsLA0KPiA+ID4NCj4gPiA+ICAgICBJbiBteSB0ZXN0LCBlbnRy aWVzIGNhbid0IGJlIGNsZWFudXAgaW4gcnRlX2hhc2ggdGFibGUgd2hlbg0KPiA+ID4gZGVsZXRp bmcga2V5cyBpbiBydGVfaGFzaCBpdGVyYXRlIGxvb3AuIFRoZSB0ZXN0IHN0ZXBzOg0KPiA+ID4g ICAgIDEuICBjcmVhdGUgYSBoYXNoIHRhYmxlIHRhYmxlMSB3aXRoIGxpbWl0IDMwMDAwLCBleHQg YnVja2V0DQo+ID4gPiBlbmFibGVkLCAgYW5kIGluc2VydCAzMDAwMCBlbnRyaWVzIGludG8gdGhp cyBoYXNoIHRhYmxlLg0KPiA+ID4gICAgIDIuICBjcmVhdGUgYSBsYXJnZXIgaGFzaCB0YWJsZSB0 YWJsZTIgd2l0aCBsaW1pdCA2MDAwMCwgLCBleHQNCj4gPiA+IGJ1Y2tldA0KPiA+IGVuYWJsZWQu DQo+ID4gPiAgICAgMy4gIGl0ZXJhdGUgYWxsIGVudHJpZXMgb2YgdGFibGUxIGFuZCBpbnNlcnQg dGhlbSB0byB0aGUgdGFibGUyLg0KPiA+ID4gSW5zZXJ0IG5ldw0KPiA+ID4gMTAwMDAgZW50cmll cyB0byB0aGlzIHRhYmxlMi4NCj4gPiA+ICAgICA0LiAgVGhlbiBmbHVzaCBhbGwgZW50cmllcyBm cm9tIHRhYmxlMiBieSBkZWxldGluZyBrZXlzIGluDQo+ID4gPiBydGVfaGFzaCBpdGVyYXRlIGxv b3AuIEJ1dCB0aGVyZSBhcmUgc3RpbGwgc29tZSBrZXlzIGxlYWtlZCBpbiB0YWJsZTIuDQo+ID4g SXMgdGhlcmUgYW55IHJlYXNvbiBmb3IgZmx1c2hpbmcgdGFibGUyIGluIHRoaXMgbWFubmVyPw0K PiA+IElzIGl0IHBvc3NpYmxlIHRvIHVzZSAncnRlX2hhc2hfcmVzZXQnIGluc3RlYWQ/DQo+ID4N Cj4gPiA+DQo+ID4gPiAgICAgRnJvbSBteSBhbmFseXNpcywgdGhlIGtleXMgaWR4IGFyZSBzdG9y ZWQgaW4gcnRlX2hhc2ggbWFpbg0KPiA+ID4gYnVja2V0IGtleSBzbG90cyBhbmQgZXh0ZW5kIGJ1 Y2tldCBrZXkgc3RvdHMuDQo+ID4gPiAgICAgV2UgaXRlcmF0ZSBldmVyeSBubyBlbXB0eSBLZXlz IGluIGgtPmJ1Y2tldHMgYW5kIGgtPmJ1Y2tldHNfZXh0DQo+ID4gPiBmcm9tIHN0YXJ0IHRvIGxh c3QuDQo+ID4gPiAgICAgV2hlbiBkZWxldGluZyBrZXlzIHRoZSBmdW5jdGlvbiBfX3J0ZV9oYXNo X2NvbXBhY3RfbGwoKSBtYXkgbW92ZQ0KPiA+ID4gbGFzdF9ia3QncyBrZXkgdG8gcHJldmlvdXMg YnVja2V0IGluIG9yZGVyIHRvIGNvbXBhY3QgZXh0ZW5kIGJ1Y2tldCBsaXN0Lg0KPiA+ID4gICAg IElmIHRoZSBwcmV2aW91cyBidWNrZXQgaGFzIGJlZW4gaXRlcmF0ZWQsIHRoZSBtb3ZlZCBrZXkg bWF5IGJlDQo+ID4gPiBtaXNzZWQgZm9yIHVzZXJzLg0KPiA+ID4gICAgIFRoZW4gdGhvc2UgbWlz c2VkIGtleXMgYXJlIGxlYWtlZCBhbmQgcnRlX2hhc2ggdGFibGUgY2FuJ3QgYmUgY2xlYW51cC4N Cj4gPiA+DQo+ID4gPiAgICAgTm93IEkgcmV0cnkgdGhlIGl0ZXJhdGUgYW5kIGRlbGV0ZSBrZXlz LCB0aGF0IGNhbiBhdm9pZCB0aGlzIGJ1Zy4NCj4gPiA+DQo+ID4gPiAgICAgSXMgdGhlcmUgYW55 IGlkZWFzIG9yIHNvbHV0aW9ucyBvbiB0aGlzIGJ1Zz8gICBUaGFua3MuDQo+ID4gPg0KPiA+ID4g SmVycnkuDQo=