From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0071.outbound.protection.outlook.com [104.47.1.71]) by dpdk.org (Postfix) with ESMTP id BD53D1B450 for ; Tue, 26 Jun 2018 12:48:31 +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=v2Ai4KILHoTmic9K+RKYB8UCGAo+NrcfPQYNAkeH8DE=; b=Y8cPonJgzyNsruw2iK3VahdWg/hDAztBENW3BcsyMLz/Ndb7Dzc+bZYucr9cdIGBhECRkBrosMnKepCK6tufR8Zf3DJGbDfkiJNtz25v/apIJeBUgDVqneZvEsPb2WX2c8YbDZGsdJsh9xBYKz3cXjHUaiFxLmgS3AUXB4SCeb8= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.187.142) by AM4PR05MB1617.eurprd05.prod.outlook.com (10.165.245.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.884.23; Tue, 26 Jun 2018 10:48:29 +0000 Received: from AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::40df:8a0e:9661:6cf1]) by AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::40df:8a0e:9661:6cf1%3]) with mapi id 15.20.0884.023; Tue, 26 Jun 2018 10:48:29 +0000 From: Ori Kam To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= , "dev@dpdk.org" , Adrien Mazarguil , Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , Mohammad Abdul Awal , Stephen Hemminger Thread-Topic: [PATCH v4 2/2] app/testpmd: add NVGRE encap/decap support Thread-Index: AQHUCS9ihopW5fjzckKVsiusFbfK6KRyYzMQ Date: Tue, 26 Jun 2018 10:48:29 +0000 Message-ID: References: In-Reply-To: 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=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM4PR05MB1617; 7:4CFZidatO6v0OFfVaAL9RkbRkrI0PODurNq+6jQ8XQjrk9P4Ep+XTQkyIQkZls85CV8fU6V9TkFQJG01IvIDxz87/qtGySrZ48VZhbKHM7+6Rs8r7fiQgOnBGOwSq43QWs8WlRyPyG4dd97CMRW2UAuDZ4gNCGb6dLnhJcm2IqafBOvXm40xFUoYfP73mczi5oPu6bRTmQHqJFaPDZ9ROplN8PElWdRjshBQms8CFfXiCeudl9X6H0NZMxOwN1Qt x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: c2b39b45-d576-4320-78d8-08d5db525a84 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:AM4PR05MB1617; x-ms-traffictypediagnostic: AM4PR05MB1617: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(228905959029699)(17755550239193); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231254)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:AM4PR05MB1617; BCL:0; PCL:0; RULEID:; SRVR:AM4PR05MB1617; x-forefront-prvs: 071518EF63 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(376002)(396003)(136003)(39860400002)(346002)(13464003)(199004)(189003)(7696005)(14454004)(9686003)(99286004)(5660300001)(2501003)(105586002)(6116002)(106356001)(5250100002)(3846002)(8676002)(74316002)(7736002)(2906002)(2900100001)(305945005)(86362001)(53946003)(81156014)(68736007)(81166006)(478600001)(6436002)(25786009)(8936002)(186003)(575784001)(66066001)(26005)(6246003)(110136005)(97736004)(53546011)(6506007)(53936002)(55016002)(229853002)(316002)(11346002)(486006)(446003)(33656002)(76176011)(256004)(14444005)(102836004)(476003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB1617; H:AM4PR05MB3425.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: JpMAX+wlyEiB7AxFMFUQ37Uj0LOq7oG+xyyv8dDLF/etZ0RLu5BJcOAh6sXfTLorDjL2dl1kP/WCExMmVtB18elEg7z0J2XWiztQZknpE7jAbyauyfyO9Gn+oMOmAIKergUFtpYyVWFoZA+s+gQaCOxo9cA9k4FvK4aQu03GVpXB4MH+8xp0unaUQSZUgiCP5BCzv4QeCS8S8sQ/s02sJvqfZ/wYwfixxBnfSHh1FCxYgPXX1oOQZIFfpEGW3G13JP70M2iJ1QKdSi86zTJjh1i/gM8c6y06a9I40Qe0BWQjXALeHA+AvqoSLgJFsW31WB+xqkS7Co6HUHScwOSdMUkEXfr3ycYI7WDahLD91Yo= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: c2b39b45-d576-4320-78d8-08d5db525a84 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jun 2018 10:48:29.3663 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB1617 Subject: Re: [dpdk-dev] [PATCH v4 2/2] app/testpmd: add NVGRE encap/decap support 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 10:48:32 -0000 QWNrZWQtYnk6IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT4NCg0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBOZWxpbyBMYXJhbmplaXJvIFttYWlsdG86bmVsaW8ubGFy YW5qZWlyb0A2d2luZC5jb21dDQo+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDIxLCAyMDE4IDEwOjE0 IEFNDQo+IFRvOiBkZXZAZHBkay5vcmc7IEFkcmllbiBNYXphcmd1aWwgPGFkcmllbi5tYXphcmd1 aWxANndpbmQuY29tPjsNCj4gV2Vuemh1byBMdSA8d2Vuemh1by5sdUBpbnRlbC5jb20+OyBKaW5n amluZyBXdQ0KPiA8amluZ2ppbmcud3VAaW50ZWwuY29tPjsgQmVybmFyZCBJcmVtb25nZXINCj4g PGJlcm5hcmQuaXJlbW9uZ2VyQGludGVsLmNvbT47IE1vaGFtbWFkIEFiZHVsIEF3YWwNCj4gPG1v aGFtbWFkLmFiZHVsLmF3YWxAaW50ZWwuY29tPjsgT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29t PjsNCj4gU3RlcGhlbiBIZW1taW5nZXIgPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPg0KPiBT dWJqZWN0OiBbUEFUQ0ggdjQgMi8yXSBhcHAvdGVzdHBtZDogYWRkIE5WR1JFIGVuY2FwL2RlY2Fw IHN1cHBvcnQNCj4gDQo+IER1ZSB0byB0aGUgY29tcGxleCBOVkdSRV9FTkNBUCBmbG93IGFjdGlv biBhbmQgYmFzZWQgb24gdGhlIGZhY3QNCj4gdGVzdHBtZA0KPiBkb2VzIG5vdCBhbGxvY2F0ZSBt ZW1vcnksIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBjb21tYW5kIGluIHRlc3RwbWQgdG8NCj4gaW5p dGlhbGlzZSBhIGdsb2JhbCBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgbmVjZXNzYXJ5IGluZm9y bWF0aW9uIHRvDQo+IG1ha2UgdGhlIG91dGVyIGxheWVyIG9mIHRoZSBwYWNrZXQuICBUaGlzIHNh bWUgZ2xvYmFsIHN0cnVjdHVyZSB3aWxsDQo+IHRoZW4gYmUgdXNlZCBieSB0aGUgZmxvdyBjb21t YW5kIGxpbmUgaW4gdGVzdHBtZCB3aGVuIHRoZSBhY3Rpb24NCj4gbnZncmVfZW5jYXAgd2lsbCBi ZSBwYXJzZWQsIGF0IHRoaXMgcG9pbnQsIHRoZSBjb252ZXJzaW9uIGludG8gc3VjaA0KPiBhY3Rp b24gYmVjb21lcyB0cml2aWFsLg0KPiANCj4gVGhpcyBnbG9iYWwgc3RydWN0dXJlIGlzIG9ubHkg dXNlZCBmb3IgdGhlIGVuY2FwIGFjdGlvbi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE5lbGlvIExh cmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiAtLS0NCj4gIGFwcC90ZXN0 LXBtZC9jbWRsaW5lLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMTggKysrKysrKysrKysrKysr KysrDQo+ICBhcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMgICAgICAgICAgICAgICAgIHwgMTI5 ICsrKysrKysrKysrKysrKysrKysrDQo+ICBhcHAvdGVzdC1wbWQvdGVzdHBtZC5jICAgICAgICAg ICAgICAgICAgICAgIHwgIDE1ICsrKw0KPiAgYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaCAgICAgICAg ICAgICAgICAgICAgICB8ICAxNSArKysNCj4gIGRvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVz dHBtZF9mdW5jcy5yc3QgfCAgMzcgKysrKysrDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDMxNCBpbnNl cnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL2NtZGxpbmUuYyBiL2Fw cC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gaW5kZXggMDQ4ZmZmMmJkLi5hZDdmOWVkYTUgMTAwNjQ0 DQo+IC0tLSBhL2FwcC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gKysrIGIvYXBwL3Rlc3QtcG1kL2Nt ZGxpbmUuYw0KPiBAQCAtNzg5LDYgKzc4OSwxMiBAQCBzdGF0aWMgdm9pZCBjbWRfaGVscF9sb25n X3BhcnNlZCh2b2lkDQo+ICpwYXJzZWRfcmVzdWx0LA0KPiAgCQkJIiB2bGFuLXRjaSBldGgtc3Jj IGV0aC1kc3RcbiINCj4gIAkJCSIgICAgICAgQ29uZmlndXJlIHRoZSBWWExBTiBlbmNhcHN1bGF0 aW9uIGZvcg0KPiBmbG93cy5cblxuIg0KPiANCj4gKwkJCSJudmdyZSBpcHY0fGlwdjYgdG5pIGlw LXNyYyBpcC1kc3QgZXRoLXNyYyBldGgtZHN0XG4iDQo+ICsJCQkiICAgICAgIENvbmZpZ3VyZSB0 aGUgTlZHUkUgZW5jYXBzdWxhdGlvbiBmb3INCj4gZmxvd3MuXG5cbiINCj4gKw0KPiArCQkJIm52 Z3JlLXdpdGgtdmxhbiBpcHY0fGlwdjYgdG5pIGlwLXNyYyBpcC1kc3Qgdmxhbi10Y2kNCj4gZXRo LXNyYyBldGgtZHN0XG4iDQo+ICsJCQkiICAgICAgIENvbmZpZ3VyZSB0aGUgTlZHUkUgZW5jYXBz dWxhdGlvbiBmb3INCj4gZmxvd3MuXG5cbiINCj4gKw0KPiAgCQkJLCBsaXN0X3BrdF9mb3J3YXJk aW5nX21vZGVzKCkNCj4gIAkJKTsNCj4gIAl9DQo+IEBAIC0xNDk3MCw2ICsxNDk3NiwxMTYgQEAg Y21kbGluZV9wYXJzZV9pbnN0X3QNCj4gY21kX3NldF92eGxhbl93aXRoX3ZsYW4gPSB7DQo+ICAJ fSwNCj4gIH07DQo+IA0KPiArLyoqIFNldCBOVkdSRSBlbmNhcHN1bGF0aW9uIGRldGFpbHMgKi8N Cj4gK3N0cnVjdCBjbWRfc2V0X252Z3JlX3Jlc3VsdCB7DQo+ICsJY21kbGluZV9maXhlZF9zdHJp bmdfdCBzZXQ7DQo+ICsJY21kbGluZV9maXhlZF9zdHJpbmdfdCBudmdyZTsNCj4gKwljbWRsaW5l X2ZpeGVkX3N0cmluZ190IGlwX3ZlcnNpb247DQo+ICsJdWludDMyX3QgdG5pOw0KPiArCWNtZGxp bmVfaXBhZGRyX3QgaXBfc3JjOw0KPiArCWNtZGxpbmVfaXBhZGRyX3QgaXBfZHN0Ow0KPiArCXVp bnQxNl90IHRjaTsNCj4gKwlzdHJ1Y3QgZXRoZXJfYWRkciBldGhfc3JjOw0KPiArCXN0cnVjdCBl dGhlcl9hZGRyIGV0aF9kc3Q7DQo+ICt9Ow0KPiArDQo+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX3N0 cmluZ190IGNtZF9zZXRfbnZncmVfc2V0ID0NCj4gKwlUT0tFTl9TVFJJTkdfSU5JVElBTElaRVIo c3RydWN0IGNtZF9zZXRfbnZncmVfcmVzdWx0LCBzZXQsDQo+ICJzZXQiKTsNCj4gK2NtZGxpbmVf cGFyc2VfdG9rZW5fc3RyaW5nX3QgY21kX3NldF9udmdyZV9udmdyZSA9DQo+ICsJVE9LRU5fU1RS SU5HX0lOSVRJQUxJWkVSKHN0cnVjdCBjbWRfc2V0X252Z3JlX3Jlc3VsdCwgbnZncmUsDQo+ICJu dmdyZSIpOw0KPiArY21kbGluZV9wYXJzZV90b2tlbl9zdHJpbmdfdCBjbWRfc2V0X252Z3JlX252 Z3JlX3dpdGhfdmxhbiA9DQo+ICsJVE9LRU5fU1RSSU5HX0lOSVRJQUxJWkVSKHN0cnVjdCBjbWRf c2V0X252Z3JlX3Jlc3VsdCwgbnZncmUsDQo+ICJudmdyZS13aXRoLXZsYW4iKTsNCj4gK2NtZGxp bmVfcGFyc2VfdG9rZW5fc3RyaW5nX3QgY21kX3NldF9udmdyZV9pcF92ZXJzaW9uID0NCj4gKwlU T0tFTl9TVFJJTkdfSU5JVElBTElaRVIoc3RydWN0IGNtZF9zZXRfbnZncmVfcmVzdWx0LA0KPiBp cF92ZXJzaW9uLA0KPiArCQkJCSAiaXB2NCNpcHY2Iik7DQo+ICtjbWRsaW5lX3BhcnNlX3Rva2Vu X251bV90IGNtZF9zZXRfbnZncmVfdG5pID0NCj4gKwlUT0tFTl9OVU1fSU5JVElBTElaRVIoc3Ry dWN0IGNtZF9zZXRfbnZncmVfcmVzdWx0LCB0bmksDQo+IFVJTlQzMik7DQo+ICtjbWRsaW5lX3Bh cnNlX3Rva2VuX251bV90IGNtZF9zZXRfbnZncmVfaXBfc3JjID0NCj4gKwlUT0tFTl9JUEFERFJf SU5JVElBTElaRVIoc3RydWN0IGNtZF9zZXRfbnZncmVfcmVzdWx0LCBpcF9zcmMpOw0KPiArY21k bGluZV9wYXJzZV90b2tlbl9pcGFkZHJfdCBjbWRfc2V0X252Z3JlX2lwX2RzdCA9DQo+ICsJVE9L RU5fSVBBRERSX0lOSVRJQUxJWkVSKHN0cnVjdCBjbWRfc2V0X252Z3JlX3Jlc3VsdCwgaXBfZHN0 KTsNCj4gK2NtZGxpbmVfcGFyc2VfdG9rZW5fbnVtX3QgY21kX3NldF9udmdyZV92bGFuID0NCj4g KwlUT0tFTl9OVU1fSU5JVElBTElaRVIoc3RydWN0IGNtZF9zZXRfbnZncmVfcmVzdWx0LCB0Y2ks DQo+IFVJTlQxNik7DQo+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX2V0aGVyYWRkcl90IGNtZF9zZXRf bnZncmVfZXRoX3NyYyA9DQo+ICsJVE9LRU5fRVRIRVJBRERSX0lOSVRJQUxJWkVSKHN0cnVjdCBj bWRfc2V0X252Z3JlX3Jlc3VsdCwNCj4gZXRoX3NyYyk7DQo+ICtjbWRsaW5lX3BhcnNlX3Rva2Vu X2V0aGVyYWRkcl90IGNtZF9zZXRfbnZncmVfZXRoX2RzdCA9DQo+ICsJVE9LRU5fRVRIRVJBRERS X0lOSVRJQUxJWkVSKHN0cnVjdCBjbWRfc2V0X252Z3JlX3Jlc3VsdCwNCj4gZXRoX2RzdCk7DQo+ ICsNCj4gK3N0YXRpYyB2b2lkIGNtZF9zZXRfbnZncmVfcGFyc2VkKHZvaWQgKnBhcnNlZF9yZXN1 bHQsDQo+ICsJX19hdHRyaWJ1dGVfXygodW51c2VkKSkgc3RydWN0IGNtZGxpbmUgKmNsLA0KPiAr CV9fYXR0cmlidXRlX18oKHVudXNlZCkpIHZvaWQgKmRhdGEpDQo+ICt7DQo+ICsJc3RydWN0IGNt ZF9zZXRfbnZncmVfcmVzdWx0ICpyZXMgPSBwYXJzZWRfcmVzdWx0Ow0KPiArCXVuaW9uIHsNCj4g KwkJdWludDMyX3QgbnZncmVfdG5pOw0KPiArCQl1aW50OF90IHRuaVs0XTsNCj4gKwl9IGlkID0g ew0KPiArCQkubnZncmVfdG5pID0gcnRlX2NwdV90b19iZV8zMihyZXMtPnRuaSkgJg0KPiBSVEVf QkUzMigweDAwZmZmZmZmKSwNCj4gKwl9Ow0KPiArDQo+ICsJaWYgKHN0cmNtcChyZXMtPm52Z3Jl LCAibnZncmUiKSA9PSAwKQ0KPiArCQludmdyZV9lbmNhcF9jb25mLnNlbGVjdF92bGFuID0gMDsN Cj4gKwllbHNlIGlmIChzdHJjbXAocmVzLT5udmdyZSwgIm52Z3JlLXdpdGgtdmxhbiIpID09IDAp DQo+ICsJCW52Z3JlX2VuY2FwX2NvbmYuc2VsZWN0X3ZsYW4gPSAxOw0KPiArCWlmIChzdHJjbXAo cmVzLT5pcF92ZXJzaW9uLCAiaXB2NCIpID09IDApDQo+ICsJCW52Z3JlX2VuY2FwX2NvbmYuc2Vs ZWN0X2lwdjQgPSAxOw0KPiArCWVsc2UgaWYgKHN0cmNtcChyZXMtPmlwX3ZlcnNpb24sICJpcHY2 IikgPT0gMCkNCj4gKwkJbnZncmVfZW5jYXBfY29uZi5zZWxlY3RfaXB2NCA9IDA7DQo+ICsJZWxz ZQ0KPiArCQlyZXR1cm47DQo+ICsJcnRlX21lbWNweShudmdyZV9lbmNhcF9jb25mLnRuaSwgJmlk LnRuaVsxXSwgMyk7DQo+ICsJaWYgKG52Z3JlX2VuY2FwX2NvbmYuc2VsZWN0X2lwdjQpIHsNCj4g KwkJSVBWNF9BRERSX1RPX1VJTlQocmVzLT5pcF9zcmMsDQo+IG52Z3JlX2VuY2FwX2NvbmYuaXB2 NF9zcmMpOw0KPiArCQlJUFY0X0FERFJfVE9fVUlOVChyZXMtPmlwX2RzdCwNCj4gbnZncmVfZW5j YXBfY29uZi5pcHY0X2RzdCk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJSVBWNl9BRERSX1RPX0FSUkFZ KHJlcy0+aXBfc3JjLA0KPiBudmdyZV9lbmNhcF9jb25mLmlwdjZfc3JjKTsNCj4gKwkJSVBWNl9B RERSX1RPX0FSUkFZKHJlcy0+aXBfZHN0LA0KPiBudmdyZV9lbmNhcF9jb25mLmlwdjZfZHN0KTsN Cj4gKwl9DQo+ICsJaWYgKG52Z3JlX2VuY2FwX2NvbmYuc2VsZWN0X3ZsYW4pDQo+ICsJCW52Z3Jl X2VuY2FwX2NvbmYudmxhbl90Y2kgPSBydGVfY3B1X3RvX2JlXzE2KHJlcy0+dGNpKTsNCj4gKwly dGVfbWVtY3B5KG52Z3JlX2VuY2FwX2NvbmYuZXRoX3NyYywgcmVzLT5ldGhfc3JjLmFkZHJfYnl0 ZXMsDQo+ICsJCSAgIEVUSEVSX0FERFJfTEVOKTsNCj4gKwlydGVfbWVtY3B5KG52Z3JlX2VuY2Fw X2NvbmYuZXRoX2RzdCwgcmVzLT5ldGhfZHN0LmFkZHJfYnl0ZXMsDQo+ICsJCSAgIEVUSEVSX0FE RFJfTEVOKTsNCj4gK30NCj4gKw0KPiArY21kbGluZV9wYXJzZV9pbnN0X3QgY21kX3NldF9udmdy ZSA9IHsNCj4gKwkuZiA9IGNtZF9zZXRfbnZncmVfcGFyc2VkLA0KPiArCS5kYXRhID0gTlVMTCwN Cj4gKwkuaGVscF9zdHIgPSAic2V0IG52Z3JlIGlwdjR8aXB2NiA8dm5pPiA8aXAtc3JjPiA8aXAt ZHN0PiA8ZXRoLXNyYz4iDQo+ICsJCSIgPGV0aC1kc3Q+IiwNCj4gKwkudG9rZW5zID0gew0KPiAr CQkodm9pZCAqKSZjbWRfc2V0X252Z3JlX3NldCwNCj4gKwkJKHZvaWQgKikmY21kX3NldF9udmdy ZV9udmdyZSwNCj4gKwkJKHZvaWQgKikmY21kX3NldF9udmdyZV9pcF92ZXJzaW9uLA0KPiArCQko dm9pZCAqKSZjbWRfc2V0X252Z3JlX3RuaSwNCj4gKwkJKHZvaWQgKikmY21kX3NldF9udmdyZV9p cF9zcmMsDQo+ICsJCSh2b2lkICopJmNtZF9zZXRfbnZncmVfaXBfZHN0LA0KPiArCQkodm9pZCAq KSZjbWRfc2V0X252Z3JlX2V0aF9zcmMsDQo+ICsJCSh2b2lkICopJmNtZF9zZXRfbnZncmVfZXRo X2RzdCwNCj4gKwkJTlVMTCwNCj4gKwl9LA0KPiArfTsNCj4gKw0KPiArY21kbGluZV9wYXJzZV9p bnN0X3QgY21kX3NldF9udmdyZV93aXRoX3ZsYW4gPSB7DQo+ICsJLmYgPSBjbWRfc2V0X252Z3Jl X3BhcnNlZCwNCj4gKwkuZGF0YSA9IE5VTEwsDQo+ICsJLmhlbHBfc3RyID0gInNldCBudmdyZS13 aXRoLXZsYW4gaXB2NHxpcHY2IDx2bmk+IDxpcC1zcmM+IDxpcC1kc3Q+Ig0KPiArCQkiIDx2bGFu LXRjaT4gPGV0aC1zcmM+IDxldGgtZHN0PiIsDQo+ICsJLnRva2VucyA9IHsNCj4gKwkJKHZvaWQg KikmY21kX3NldF9udmdyZV9zZXQsDQo+ICsJCSh2b2lkICopJmNtZF9zZXRfbnZncmVfbnZncmVf d2l0aF92bGFuLA0KPiArCQkodm9pZCAqKSZjbWRfc2V0X252Z3JlX2lwX3ZlcnNpb24sDQo+ICsJ CSh2b2lkICopJmNtZF9zZXRfbnZncmVfdG5pLA0KPiArCQkodm9pZCAqKSZjbWRfc2V0X252Z3Jl X2lwX3NyYywNCj4gKwkJKHZvaWQgKikmY21kX3NldF9udmdyZV9pcF9kc3QsDQo+ICsJCSh2b2lk ICopJmNtZF9zZXRfbnZncmVfdmxhbiwNCj4gKwkJKHZvaWQgKikmY21kX3NldF9udmdyZV9ldGhf c3JjLA0KPiArCQkodm9pZCAqKSZjbWRfc2V0X252Z3JlX2V0aF9kc3QsDQo+ICsJCU5VTEwsDQo+ ICsJfSwNCj4gK307DQo+ICsNCj4gIC8qIFN0cmljdCBsaW5rIHByaW9yaXR5IHNjaGVkdWxpbmcg bW9kZSBzZXR0aW5nICovDQo+ICBzdGF0aWMgdm9pZA0KPiAgY21kX3N0cmljdF9saW5rX3ByaW9f cGFyc2VkKA0KPiBAQCAtMTc1OTYsNiArMTc3MTIsOCBAQCBjbWRsaW5lX3BhcnNlX2N0eF90IG1h aW5fY3R4W10gPSB7DQo+ICAjZW5kaWYNCj4gIAkoY21kbGluZV9wYXJzZV9pbnN0X3QgKikmY21k X3NldF92eGxhbiwNCj4gIAkoY21kbGluZV9wYXJzZV9pbnN0X3QgKikmY21kX3NldF92eGxhbl93 aXRoX3ZsYW4sDQo+ICsJKGNtZGxpbmVfcGFyc2VfaW5zdF90ICopJmNtZF9zZXRfbnZncmUsDQo+ ICsJKGNtZGxpbmVfcGFyc2VfaW5zdF90ICopJmNtZF9zZXRfbnZncmVfd2l0aF92bGFuLA0KPiAg CShjbWRsaW5lX3BhcnNlX2luc3RfdCAqKSZjbWRfZGRwX2FkZCwNCj4gIAkoY21kbGluZV9wYXJz ZV9pbnN0X3QgKikmY21kX2RkcF9kZWwsDQo+ICAJKGNtZGxpbmVfcGFyc2VfaW5zdF90ICopJmNt ZF9kZHBfZ2V0X2xpc3QsDQo+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvY21kbGluZV9mbG93 LmMgYi9hcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMNCj4gaW5kZXggNzgyM2FkZGI3Li5mZWE5 MzgwYzQgMTAwNjQ0DQo+IC0tLSBhL2FwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYw0KPiArKysg Yi9hcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMNCj4gQEAgLTI0MSw2ICsyNDEsOCBAQCBlbnVt IGluZGV4IHsNCj4gIAlBQ1RJT05fT0ZfUFVTSF9NUExTX0VUSEVSVFlQRSwNCj4gIAlBQ1RJT05f VlhMQU5fRU5DQVAsDQo+ICAJQUNUSU9OX1ZYTEFOX0RFQ0FQLA0KPiArCUFDVElPTl9OVkdSRV9F TkNBUCwNCj4gKwlBQ1RJT05fTlZHUkVfREVDQVAsDQo+ICB9Ow0KPiANCj4gIC8qKiBNYXhpbXVt IHNpemUgZm9yIHBhdHRlcm4gaW4gc3RydWN0IHJ0ZV9mbG93X2l0ZW1fcmF3LiAqLw0KPiBAQCAt Mjc3LDYgKzI3OSwyMiBAQCBzdHJ1Y3QgYWN0aW9uX3Z4bGFuX2VuY2FwX2RhdGEgew0KPiAgCXN0 cnVjdCBydGVfZmxvd19pdGVtX3Z4bGFuIGl0ZW1fdnhsYW47DQo+ICB9Ow0KPiANCj4gKy8qKiBN YXhpbXVtIG51bWJlciBvZiBpdGVtcyBpbiBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX252Z3JlX2Vu Y2FwLiAqLw0KPiArI2RlZmluZSBBQ1RJT05fTlZHUkVfRU5DQVBfSVRFTVNfTlVNIDUNCj4gKw0K PiArLyoqIFN0b3JhZ2UgZm9yIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fbnZncmVfZW5jYXAgaW5j bHVkaW5nIGV4dGVybmFsDQo+IGRhdGEuICovDQo+ICtzdHJ1Y3QgYWN0aW9uX252Z3JlX2VuY2Fw X2RhdGEgew0KPiArCXN0cnVjdCBydGVfZmxvd19hY3Rpb25fbnZncmVfZW5jYXAgY29uZjsNCj4g KwlzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSBpdGVtc1tBQ1RJT05fTlZHUkVfRU5DQVBfSVRFTVNfTlVN XTsNCj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9ldGggaXRlbV9ldGg7DQo+ICsJc3RydWN0IHJ0 ZV9mbG93X2l0ZW1fdmxhbiBpdGVtX3ZsYW47DQo+ICsJdW5pb24gew0KPiArCQlzdHJ1Y3QgcnRl X2Zsb3dfaXRlbV9pcHY0IGl0ZW1faXB2NDsNCj4gKwkJc3RydWN0IHJ0ZV9mbG93X2l0ZW1faXB2 NiBpdGVtX2lwdjY7DQo+ICsJfTsNCj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9udmdyZSBpdGVt X252Z3JlOw0KPiArfTsNCj4gKw0KPiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIHN1YnNlcXVlbnQg dG9rZW5zIGFuZCBhcmd1bWVudHMgb24gdGhlIHN0YWNrLg0KPiAqLw0KPiAgI2RlZmluZSBDVFhf U1RBQ0tfU0laRSAxNg0KPiANCj4gQEAgLTc5Niw2ICs4MTQsOCBAQCBzdGF0aWMgY29uc3QgZW51 bSBpbmRleCBuZXh0X2FjdGlvbltdID0gew0KPiAgCUFDVElPTl9PRl9QVVNIX01QTFMsDQo+ICAJ QUNUSU9OX1ZYTEFOX0VOQ0FQLA0KPiAgCUFDVElPTl9WWExBTl9ERUNBUCwNCj4gKwlBQ1RJT05f TlZHUkVfRU5DQVAsDQo+ICsJQUNUSU9OX05WR1JFX0RFQ0FQLA0KPiAgCVpFUk8sDQo+ICB9Ow0K PiANCj4gQEAgLTkyOSw2ICs5NDksOSBAQCBzdGF0aWMgaW50IHBhcnNlX3ZjX2FjdGlvbl9yc3Nf cXVldWUoc3RydWN0IGNvbnRleHQNCj4gKiwgY29uc3Qgc3RydWN0IHRva2VuICosDQo+ICBzdGF0 aWMgaW50IHBhcnNlX3ZjX2FjdGlvbl92eGxhbl9lbmNhcChzdHJ1Y3QgY29udGV4dCAqLCBjb25z dCBzdHJ1Y3QgdG9rZW4NCj4gKiwNCj4gIAkJCQkgICAgICAgY29uc3QgY2hhciAqLCB1bnNpZ25l ZCBpbnQsIHZvaWQgKiwNCj4gIAkJCQkgICAgICAgdW5zaWduZWQgaW50KTsNCj4gK3N0YXRpYyBp bnQgcGFyc2VfdmNfYWN0aW9uX252Z3JlX2VuY2FwKHN0cnVjdCBjb250ZXh0ICosIGNvbnN0IHN0 cnVjdCB0b2tlbg0KPiAqLA0KPiArCQkJCSAgICAgICBjb25zdCBjaGFyICosIHVuc2lnbmVkIGlu dCwgdm9pZCAqLA0KPiArCQkJCSAgICAgICB1bnNpZ25lZCBpbnQpOw0KPiAgc3RhdGljIGludCBw YXJzZV9kZXN0cm95KHN0cnVjdCBjb250ZXh0ICosIGNvbnN0IHN0cnVjdCB0b2tlbiAqLA0KPiAg CQkJIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LA0KPiAgCQkJIHZvaWQgKiwgdW5zaWduZWQg aW50KTsNCj4gQEAgLTI0MjksNiArMjQ1MiwyNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRva2Vu IHRva2VuX2xpc3RbXSA9IHsNCj4gIAkJLm5leHQgPSBORVhUKE5FWFRfRU5UUlkoQUNUSU9OX05F WFQpKSwNCj4gIAkJLmNhbGwgPSBwYXJzZV92YywNCj4gIAl9LA0KPiArCVtBQ1RJT05fTlZHUkVf RU5DQVBdID0gew0KPiArCQkubmFtZSA9ICJudmdyZV9lbmNhcCIsDQo+ICsJCS5oZWxwID0gIk5W R1JFIGVuY2Fwc3VsYXRpb24sIHVzZXMgY29uZmlndXJhdGlvbiBzZXQgYnkNCj4gXCJzZXQiDQo+ ICsJCQkiIG52Z3JlXCIiLA0KPiArCQkucHJpdiA9IFBSSVZfQUNUSU9OKE5WR1JFX0VOQ0FQLA0K PiArCQkJCSAgICBzaXplb2Yoc3RydWN0IGFjdGlvbl9udmdyZV9lbmNhcF9kYXRhKSksDQo+ICsJ CS5uZXh0ID0gTkVYVChORVhUX0VOVFJZKEFDVElPTl9ORVhUKSksDQo+ICsJCS5jYWxsID0gcGFy c2VfdmNfYWN0aW9uX252Z3JlX2VuY2FwLA0KPiArCX0sDQo+ICsJW0FDVElPTl9OVkdSRV9ERUNB UF0gPSB7DQo+ICsJCS5uYW1lID0gIm52Z3JlX2RlY2FwIiwNCj4gKwkJLmhlbHAgPSAiUGVyZm9y bXMgYSBkZWNhcHN1bGF0aW9uIGFjdGlvbiBieSBzdHJpcHBpbmcgYWxsIg0KPiArCQkJIiBoZWFk ZXJzIG9mIHRoZSBOVkdSRSB0dW5uZWwgbmV0d29yayBvdmVybGF5IGZyb20NCj4gdGhlIg0KPiAr CQkJIiBtYXRjaGVkIGZsb3cuIiwNCj4gKwkJLnByaXYgPSBQUklWX0FDVElPTihOVkdSRV9ERUNB UCwgMCksDQo+ICsJCS5uZXh0ID0gTkVYVChORVhUX0VOVFJZKEFDVElPTl9ORVhUKSksDQo+ICsJ CS5jYWxsID0gcGFyc2VfdmMsDQo+ICsJfSwNCj4gIH07DQo+IA0KPiAgLyoqIFJlbW92ZSBhbmQg cmV0dXJuIGxhc3QgZW50cnkgZnJvbSBhcmd1bWVudCBzdGFjay4gKi8NCj4gQEAgLTMwOTAsNiAr MzEzMSw5NCBAQCBwYXJzZV92Y19hY3Rpb25fdnhsYW5fZW5jYXAoc3RydWN0IGNvbnRleHQgKmN0 eCwNCj4gY29uc3Qgc3RydWN0IHRva2VuICp0b2tlbiwNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0K PiANCj4gKy8qKiBQYXJzZSBOVkdSRSBlbmNhcCBhY3Rpb24uICovDQo+ICtzdGF0aWMgaW50DQo+ ICtwYXJzZV92Y19hY3Rpb25fbnZncmVfZW5jYXAoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qg c3RydWN0IHRva2VuDQo+ICp0b2tlbiwNCj4gKwkJCSAgICBjb25zdCBjaGFyICpzdHIsIHVuc2ln bmVkIGludCBsZW4sDQo+ICsJCQkgICAgdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSkNCj4g K3sNCj4gKwlzdHJ1Y3QgYnVmZmVyICpvdXQgPSBidWY7DQo+ICsJc3RydWN0IHJ0ZV9mbG93X2Fj dGlvbiAqYWN0aW9uOw0KPiArCXN0cnVjdCBhY3Rpb25fbnZncmVfZW5jYXBfZGF0YSAqYWN0aW9u X252Z3JlX2VuY2FwX2RhdGE7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJldCA9IHBhcnNlX3Zj KGN0eCwgdG9rZW4sIHN0ciwgbGVuLCBidWYsIHNpemUpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiAr CQlyZXR1cm4gcmV0Ow0KPiArCS8qIE5vdGhpbmcgZWxzZSB0byBkbyBpZiB0aGVyZSBpcyBubyBi dWZmZXIuICovDQo+ICsJaWYgKCFvdXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsJaWYgKCFvdXQt PmFyZ3MudmMuYWN0aW9uc19uKQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsJYWN0aW9uID0gJm91dC0+ YXJncy52Yy5hY3Rpb25zW291dC0+YXJncy52Yy5hY3Rpb25zX24gLSAxXTsNCj4gKwkvKiBQb2lu dCB0byBzZWxlY3RlZCBvYmplY3QuICovDQo+ICsJY3R4LT5vYmplY3QgPSBvdXQtPmFyZ3MudmMu ZGF0YTsNCj4gKwljdHgtPm9iam1hc2sgPSBOVUxMOw0KPiArCS8qIFNldCB1cCBkZWZhdWx0IGNv bmZpZ3VyYXRpb24uICovDQo+ICsJYWN0aW9uX252Z3JlX2VuY2FwX2RhdGEgPSBjdHgtPm9iamVj dDsNCj4gKwkqYWN0aW9uX252Z3JlX2VuY2FwX2RhdGEgPSAoc3RydWN0IGFjdGlvbl9udmdyZV9l bmNhcF9kYXRhKXsNCj4gKwkJLmNvbmYgPSAoc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9udmdyZV9l bmNhcCl7DQo+ICsJCQkuZGVmaW5pdGlvbiA9IGFjdGlvbl9udmdyZV9lbmNhcF9kYXRhLT5pdGVt cywNCj4gKwkJfSwNCj4gKwkJLml0ZW1zID0gew0KPiArCQkJew0KPiArCQkJCS50eXBlID0gUlRF X0ZMT1dfSVRFTV9UWVBFX0VUSCwNCj4gKwkJCQkuc3BlYyA9ICZhY3Rpb25fbnZncmVfZW5jYXBf ZGF0YS0NCj4gPml0ZW1fZXRoLA0KPiArCQkJCS5tYXNrID0gJnJ0ZV9mbG93X2l0ZW1fZXRoX21h c2ssDQo+ICsJCQl9LA0KPiArCQkJew0KPiArCQkJCS50eXBlID0gUlRFX0ZMT1dfSVRFTV9UWVBF X1ZMQU4sDQo+ICsJCQkJLnNwZWMgPSAmYWN0aW9uX252Z3JlX2VuY2FwX2RhdGEtDQo+ID5pdGVt X3ZsYW4sDQo+ICsJCQkJLm1hc2sgPSAmcnRlX2Zsb3dfaXRlbV92bGFuX21hc2ssDQo+ICsJCQl9 LA0KPiArCQkJew0KPiArCQkJCS50eXBlID0gUlRFX0ZMT1dfSVRFTV9UWVBFX0lQVjQsDQo+ICsJ CQkJLnNwZWMgPSAmYWN0aW9uX252Z3JlX2VuY2FwX2RhdGEtDQo+ID5pdGVtX2lwdjQsDQo+ICsJ CQkJLm1hc2sgPSAmcnRlX2Zsb3dfaXRlbV9pcHY0X21hc2ssDQo+ICsJCQl9LA0KPiArCQkJew0K PiArCQkJCS50eXBlID0gUlRFX0ZMT1dfSVRFTV9UWVBFX05WR1JFLA0KPiArCQkJCS5zcGVjID0g JmFjdGlvbl9udmdyZV9lbmNhcF9kYXRhLQ0KPiA+aXRlbV9udmdyZSwNCj4gKwkJCQkubWFzayA9 ICZydGVfZmxvd19pdGVtX252Z3JlX21hc2ssDQo+ICsJCQl9LA0KPiArCQkJew0KPiArCQkJCS50 eXBlID0gUlRFX0ZMT1dfSVRFTV9UWVBFX0VORCwNCj4gKwkJCX0sDQo+ICsJCX0sDQo+ICsJCS5p dGVtX2V0aC50eXBlID0gMCwNCj4gKwkJLml0ZW1fdmxhbi50Y2kgPSBudmdyZV9lbmNhcF9jb25m LnZsYW5fdGNpLA0KPiArCQkuaXRlbV9pcHY0LmhkciA9IHsNCj4gKwkJICAgICAgIC5zcmNfYWRk ciA9IG52Z3JlX2VuY2FwX2NvbmYuaXB2NF9zcmMsDQo+ICsJCSAgICAgICAuZHN0X2FkZHIgPSBu dmdyZV9lbmNhcF9jb25mLmlwdjRfZHN0LA0KPiArCQl9LA0KPiArCQkuaXRlbV9udmdyZS5mbG93 X2lkID0gMCwNCj4gKwl9Ow0KPiArCW1lbWNweShhY3Rpb25fbnZncmVfZW5jYXBfZGF0YS0+aXRl bV9ldGguZHN0LmFkZHJfYnl0ZXMsDQo+ICsJICAgICAgIG52Z3JlX2VuY2FwX2NvbmYuZXRoX2Rz dCwgRVRIRVJfQUREUl9MRU4pOw0KPiArCW1lbWNweShhY3Rpb25fbnZncmVfZW5jYXBfZGF0YS0+ aXRlbV9ldGguc3JjLmFkZHJfYnl0ZXMsDQo+ICsJICAgICAgIG52Z3JlX2VuY2FwX2NvbmYuZXRo X3NyYywgRVRIRVJfQUREUl9MRU4pOw0KPiArCWlmICghbnZncmVfZW5jYXBfY29uZi5zZWxlY3Rf aXB2NCkgew0KPiArCQltZW1jcHkoJmFjdGlvbl9udmdyZV9lbmNhcF9kYXRhLQ0KPiA+aXRlbV9p cHY2Lmhkci5zcmNfYWRkciwNCj4gKwkJICAgICAgICZudmdyZV9lbmNhcF9jb25mLmlwdjZfc3Jj LA0KPiArCQkgICAgICAgc2l6ZW9mKG52Z3JlX2VuY2FwX2NvbmYuaXB2Nl9zcmMpKTsNCj4gKwkJ bWVtY3B5KCZhY3Rpb25fbnZncmVfZW5jYXBfZGF0YS0NCj4gPml0ZW1faXB2Ni5oZHIuZHN0X2Fk ZHIsDQo+ICsJCSAgICAgICAmbnZncmVfZW5jYXBfY29uZi5pcHY2X2RzdCwNCj4gKwkJICAgICAg IHNpemVvZihudmdyZV9lbmNhcF9jb25mLmlwdjZfZHN0KSk7DQo+ICsJCWFjdGlvbl9udmdyZV9l bmNhcF9kYXRhLT5pdGVtc1syXSA9IChzdHJ1Y3QNCj4gcnRlX2Zsb3dfaXRlbSl7DQo+ICsJCQku dHlwZSA9IFJURV9GTE9XX0lURU1fVFlQRV9JUFY2LA0KPiArCQkJLnNwZWMgPSAmYWN0aW9uX252 Z3JlX2VuY2FwX2RhdGEtPml0ZW1faXB2NiwNCj4gKwkJCS5tYXNrID0gJnJ0ZV9mbG93X2l0ZW1f aXB2Nl9tYXNrLA0KPiArCQl9Ow0KPiArCX0NCj4gKwlpZiAoIW52Z3JlX2VuY2FwX2NvbmYuc2Vs ZWN0X3ZsYW4pDQo+ICsJCWFjdGlvbl9udmdyZV9lbmNhcF9kYXRhLT5pdGVtc1sxXS50eXBlID0N Cj4gKwkJCVJURV9GTE9XX0lURU1fVFlQRV9WT0lEOw0KPiArCW1lbWNweShhY3Rpb25fbnZncmVf ZW5jYXBfZGF0YS0+aXRlbV9udmdyZS50bmksDQo+IG52Z3JlX2VuY2FwX2NvbmYudG5pLA0KPiAr CSAgICAgICBSVEVfRElNKG52Z3JlX2VuY2FwX2NvbmYudG5pKSk7DQo+ICsJYWN0aW9uLT5jb25m ID0gJmFjdGlvbl9udmdyZV9lbmNhcF9kYXRhLT5jb25mOw0KPiArCXJldHVybiByZXQ7DQo+ICt9 DQo+ICsNCj4gIC8qKiBQYXJzZSB0b2tlbnMgZm9yIGRlc3Ryb3kgY29tbWFuZC4gKi8NCj4gIHN0 YXRpYyBpbnQNCj4gIHBhcnNlX2Rlc3Ryb3koc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qgc3Ry dWN0IHRva2VuICp0b2tlbiwNCj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMg Yi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+IGluZGV4IDVmNTgxYzM2MC4uYzYwYjUwN2EwIDEw MDY0NA0KPiAtLS0gYS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+ICsrKyBiL2FwcC90ZXN0LXBt ZC90ZXN0cG1kLmMNCj4gQEAgLTQxMCw2ICs0MTAsMjEgQEAgc3RydWN0IHZ4bGFuX2VuY2FwX2Nv bmYgdnhsYW5fZW5jYXBfY29uZiA9IHsNCj4gIAkuZXRoX2RzdCA9ICJceGZmXHhmZlx4ZmZceGZm XHhmZlx4ZmYiLA0KPiAgfTsNCj4gDQo+ICtzdHJ1Y3QgbnZncmVfZW5jYXBfY29uZiBudmdyZV9l bmNhcF9jb25mID0gew0KPiArCS5zZWxlY3RfaXB2NCA9IDEsDQo+ICsJLnNlbGVjdF92bGFuID0g MCwNCj4gKwkudG5pID0gIlx4MDBceDAwXHgwMCIsDQo+ICsJLmlwdjRfc3JjID0gSVB2NCgxMjcs IDAsIDAsIDEpLA0KPiArCS5pcHY0X2RzdCA9IElQdjQoMjU1LCAyNTUsIDI1NSwgMjU1KSwNCj4g KwkuaXB2Nl9zcmMgPSAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiDQo+ICsJCSJc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMSIsDQo+ICsJLmlwdjZfZHN0ID0gIlx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIg0KPiArCQkiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgxMVx4MTEiLA0KPiArCS52bGFuX3RjaSA9IDAsDQo+ICsJLmV0aF9zcmMgPSAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIiwNCj4gKwkuZXRoX2RzdCA9ICJceGZmXHhmZlx4ZmZceGZmXHhm Zlx4ZmYiLA0KPiArfTsNCj4gKw0KPiAgLyogRm9yd2FyZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMg Ki8NCj4gIHN0YXRpYyB2b2lkIG1hcF9wb3J0X3F1ZXVlX3N0YXRzX21hcHBpbmdfcmVnaXN0ZXJz KHBvcnRpZF90IHBpLA0KPiAgCQkJCQkJICAgc3RydWN0IHJ0ZV9wb3J0ICpwb3J0KTsNCj4gZGlm ZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmggYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5o DQo+IGluZGV4IDBkNjYxODc4OC4uMmIxZTQ0OGIwIDEwMDY0NA0KPiAtLS0gYS9hcHAvdGVzdC1w bWQvdGVzdHBtZC5oDQo+ICsrKyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmgNCj4gQEAgLTQ5Niw2 ICs0OTYsMjEgQEAgc3RydWN0IHZ4bGFuX2VuY2FwX2NvbmYgew0KPiAgfTsNCj4gIHN0cnVjdCB2 eGxhbl9lbmNhcF9jb25mIHZ4bGFuX2VuY2FwX2NvbmY7DQo+IA0KPiArLyogTlZHUkUgZW5jYXAv ZGVjYXAgcGFyYW1ldGVycy4gKi8NCj4gK3N0cnVjdCBudmdyZV9lbmNhcF9jb25mIHsNCj4gKwl1 aW50MzJfdCBzZWxlY3RfaXB2NDoxOw0KPiArCXVpbnQzMl90IHNlbGVjdF92bGFuOjE7DQo+ICsJ dWludDhfdCB0bmlbM107DQo+ICsJcnRlX2JlMzJfdCBpcHY0X3NyYzsNCj4gKwlydGVfYmUzMl90 IGlwdjRfZHN0Ow0KPiArCXVpbnQ4X3QgaXB2Nl9zcmNbMTZdOw0KPiArCXVpbnQ4X3QgaXB2Nl9k c3RbMTZdOw0KPiArCXJ0ZV9iZTE2X3Qgdmxhbl90Y2k7DQo+ICsJdWludDhfdCBldGhfc3JjW0VU SEVSX0FERFJfTEVOXTsNCj4gKwl1aW50OF90IGV0aF9kc3RbRVRIRVJfQUREUl9MRU5dOw0KPiAr fTsNCj4gK3N0cnVjdCBudmdyZV9lbmNhcF9jb25mIG52Z3JlX2VuY2FwX2NvbmY7DQo+ICsNCj4g IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50DQo+ICBsY29yZV9udW0odm9pZCkNCj4gIHsNCj4g ZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVzdHBtZF9mdW5jcy5yc3QN Cj4gYi9kb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3VnL3Rlc3RwbWRfZnVuY3MucnN0DQo+IGluZGV4 IDI3NDMwNDNkMy4uMTdlMGZlZjYzIDEwMDY0NA0KPiAtLS0gYS9kb2MvZ3VpZGVzL3Rlc3RwbWRf YXBwX3VnL3Rlc3RwbWRfZnVuY3MucnN0DQo+ICsrKyBiL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBf dWcvdGVzdHBtZF9mdW5jcy5yc3QNCj4gQEAgLTE1NDIsNiArMTU0MiwxNCBAQCBDb25maWd1cmUg dGhlIG91dGVyIGxheWVyIHRvIGVuY2Fwc3VsYXRlIGEgcGFja2V0DQo+IGluc2lkZSBhIFZYTEFO IHR1bm5lbDo6DQo+ICAgdGVzdHBtZD4gc2V0IHZ4bGFuIGlwdjR8aXB2NiAodm5pKSAodWRwLXNy YykgKHVkcC1kc3QpIChpcC1zcmMpIChpcC1kc3QpIChtYWMtDQo+IHNyYykgKG1hYy1kc3QpDQo+ ICAgdGVzdHBtZD4gc2V0IHZ4bGFuLXdpdGgtdmxhbiBpcHY0fGlwdjYgKHZuaSkgKHVkcC1zcmMp ICh1ZHAtZHN0KSAoaXAtc3JjKSAoaXAtDQo+IGRzdCkgKHZsYW4tdGNpKSAobWFjLXNyYykgKG1h Yy1kc3QpDQo+IA0KPiArQ29uZmlnIE5WR1JFIEVuY2FwIG91dGVyIGxheWVycw0KPiArfn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiArDQo+ICtDb25maWd1cmUgdGhlIG91dGVyIGxh eWVyIHRvIGVuY2Fwc3VsYXRlIGEgcGFja2V0IGluc2lkZSBhIE5WR1JFIHR1bm5lbDo6DQo+ICsN Cj4gKyB0ZXN0cG1kPiBzZXQgbnZncmUgaXB2NHxpcHY2ICh0bmkpIChpcC1zcmMpIChpcC1kc3Qp IChtYWMtc3JjKSAobWFjLWRzdCkNCj4gKyB0ZXN0cG1kPiBzZXQgbnZncmUtd2l0aC12bGFuIGlw djR8aXB2NiAodG5pKSAoaXAtc3JjKSAoaXAtZHN0KSAodmxhbi10Y2kpDQo+IChtYWMtc3JjKSAo bWFjLWRzdCkNCj4gKw0KPiAgUG9ydCBGdW5jdGlvbnMNCj4gIC0tLS0tLS0tLS0tLS0tDQo+IA0K PiBAQCAtMzY2Myw2ICszNjcxLDEyIEBAIFRoaXMgc2VjdGlvbiBsaXN0cyBzdXBwb3J0ZWQgYWN0 aW9ucyBhbmQgdGhlaXINCj4gYXR0cmlidXRlcywgaWYgYW55Lg0KPiAgLSBgYHZ4bGFuX2RlY2Fw YGA6IFBlcmZvcm1zIGEgZGVjYXBzdWxhdGlvbiBhY3Rpb24gYnkgc3RyaXBwaW5nIGFsbCBoZWFk ZXJzIG9mDQo+ICAgIHRoZSBWWExBTiB0dW5uZWwgbmV0d29yayBvdmVybGF5IGZyb20gdGhlIG1h dGNoZWQgZmxvdy4NCj4gDQo+ICstIGBgbnZncmVfZW5jYXBgYDogUGVyZm9ybXMgYSBOVkdSRSBl bmNhcHN1bGF0aW9uLCBvdXRlciBsYXllcg0KPiBjb25maWd1cmF0aW9uDQo+ICsgIGlzIGRvbmUg dGhyb3VnaCBgQ29uZmlnIE5WR1JFIEVuY2FwIG91dGVyIGxheWVyc2BfLg0KPiArDQo+ICstIGBg bnZncmVfZGVjYXBgYDogUGVyZm9ybXMgYSBkZWNhcHN1bGF0aW9uIGFjdGlvbiBieSBzdHJpcHBp bmcgYWxsIGhlYWRlcnMNCj4gb2YNCj4gKyAgdGhlIE5WR1JFIHR1bm5lbCBuZXR3b3JrIG92ZXJs YXkgZnJvbSB0aGUgbWF0Y2hlZCBmbG93Lg0KPiArDQo+ICBEZXN0cm95aW5nIGZsb3cgcnVsZXMN Cj4gIH5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4gQEAgLTM5NTAsNiArMzk2NCwyOSBAQCBJ UHY2IFZYTEFOIG91dGVyIGhlYWRlcjo6DQo+ICAgIHRlc3RwbWQ+IHNldCB2eGxhbi13aXRoLXZs YW4gaXB2NiA0IDQgNCA6OjEgOjoyMjIyIDM0IDExOjExOjExOjExOjExOjExDQo+IDIyOjIyOjIy OjIyOjIyOjIyDQo+ICAgIHRlc3RwbWQ+IGZsb3cgY3JlYXRlIDAgaW5ncmVzcyBwYXR0ZXJuIGVu ZCBhY3Rpb25zIHZ4bGFuX2VuY2FwIC8gcXVldWUNCj4gaW5kZXggMCAvIGVuZA0KPiANCj4gK1Nh bXBsZSBOVkdSRSBlbmNhcHN1bGF0aW9uIHJ1bGUNCj4gK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn4NCj4gKw0KPiArTlZHUkUgZW5jYXBzdWxhdGlvbiBvdXRlciBsYXllciBoYXMgZGVm YXVsdCB2YWx1ZSBwcmUtY29uZmlndXJlZCBpbg0KPiB0ZXN0cG1kDQo+ICtzb3VyY2UgY29kZSwg dGhvc2UgY2FuIGJlIGNoYW5nZWQgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kczo6DQo+ ICsNCj4gK0lQdjQgTlZHUkUgb3V0ZXIgaGVhZGVyOjoNCj4gKw0KPiArICB0ZXN0cG1kPiBzZXQg bnZncmUgaXB2NCA0IDEyNy4wLjAuMSAxMjguMC4wLjEgMTE6MTE6MTE6MTE6MTE6MTENCj4gMjI6 MjI6MjI6MjI6MjI6MjINCj4gKyAgdGVzdHBtZD4gZmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRl cm4gZW5kIGFjdGlvbnMgbnZncmVfZW5jYXAgLyBxdWV1ZQ0KPiBpbmRleCAwIC8gZW5kDQo+ICsN Cj4gKyAgdGVzdHBtZD4gc2V0IG52Z3JlLXdpdGgtdmxhbiA0IDEyNy4wLjAuMSAxMjguMC4wLjEg MzQgMTE6MTE6MTE6MTE6MTE6MTENCj4gMjI6MjI6MjI6MjI6MjI6MjINCj4gKyAgdGVzdHBtZD4g ZmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4gZW5kIGFjdGlvbnMgdnhsYW5fZW5jYXAgLyBx dWV1ZQ0KPiBpbmRleCAwIC8gZW5kDQo+ICsNCj4gK0lQdjYgTlZHUkUgb3V0ZXIgaGVhZGVyOjoN Cj4gKw0KPiArICB0ZXN0cG1kPiBzZXQgbnZncmUgaXB2NiA0IDo6MSA6OjIyMjIgMTE6MTE6MTE6 MTE6MTE6MTEgMjI6MjI6MjI6MjI6MjI6MjINCj4gKyAgdGVzdHBtZD4gZmxvdyBjcmVhdGUgMCBp bmdyZXNzIHBhdHRlcm4gZW5kIGFjdGlvbnMgdnhsYW5fZW5jYXAgLyBxdWV1ZQ0KPiBpbmRleCAw IC8gZW5kDQo+ICsNCj4gKyAgdGVzdHBtZD4gc2V0IG52Z3JlLXdpdGgtdmxhbiBpcHY2IDQgOjox IDo6MjIyMiAzNCAxMToxMToxMToxMToxMToxMQ0KPiAyMjoyMjoyMjoyMjoyMjoyMg0KPiArICB0 ZXN0cG1kPiBmbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBlbmQgYWN0aW9ucyB2eGxhbl9l bmNhcCAvIHF1ZXVlDQo+IGluZGV4IDAgLyBlbmQNCj4gKw0KPiArDQo+ICBCUEYgRnVuY3Rpb25z DQo+ICAtLS0tLS0tLS0tLS0tLQ0KPiANCj4gLS0NCj4gMi4xOC4wLnJjMg0KDQo=