From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10051.outbound.protection.outlook.com [40.107.1.51]) by dpdk.org (Postfix) with ESMTP id 4EEAE1C332 for ; Fri, 13 Apr 2018 16:48:21 +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; bh=KQDPB0dx/38sivQhu7cKbDiZ+wXIpKeamBZzIxGCUUY=; b=Kz+/ira6g2qOOvyJCP1mugGjMV3P/MnOsBZUV0HxO/jtBNqtPtrASfKuKnAMBLRdu/xpnwN4wJtAWprM3c/E+pLpKvscTmiXpPy+qdUA3Che1nxV1bsbP972LOErDmbeCncXnprx3JKNkF0fwVmlM8W8oOAr0xFxPE9TvH9rXbI= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB4208.eurprd05.prod.outlook.com (10.171.183.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.11; Fri, 13 Apr 2018 14:48:17 +0000 Received: from VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a]) by VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a%14]) with mapi id 15.20.0675.014; Fri, 13 Apr 2018 14:48:17 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v3 11/14] net/mlx5: support MPLS-in-GRE and MPLS-in-UDP Thread-Index: AQHT0xmHuPHB/gJvUUWwkBY/8wvVIKP+suCAgAASw1A= Date: Fri, 13 Apr 2018 14:48:17 +0000 Message-ID: References: <20180410133415.189905-1-xuemingl%40mellanox.com> <20180413112023.106420-12-xuemingl@mellanox.com> <20180413133717.afxaqj6i6pr53vdh@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180413133717.afxaqj6i6pr53vdh@laranjeiro-vm.dev.6wind.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=xuemingl@mellanox.com; x-originating-ip: [114.83.166.179] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB4208; 7:2PezZ08cf9/wbEGHftbP1IC2Hh9kqL9WqRE99FzC1OE95aPgsyk5cx6v6Ki/be6pCdN1SJAra170TYiKs0J5Xp+W3yjOqPlJiRJMx5IXQBWeaLAUEB/Ur4UebALhs429K9Ez3gHuRRboTBV6Kvr0aADf+6tyeBPa05zfeqGvkuc6HFAid3wwCQL+PqmyW7RiMAN0xTGNMLrrZwCRC/KJ1SS5iprBFPPOBg8jycwPuYlR9mxf/q+5PEn8eX3EUdNm x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB4208; x-ms-traffictypediagnostic: VI1PR05MB4208: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231232)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR05MB4208; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB4208; x-forefront-prvs: 0641678E68 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(376002)(39860400002)(366004)(39380400002)(396003)(13464003)(189003)(199004)(97736004)(478600001)(4326008)(5660300001)(3280700002)(11346002)(59450400001)(486006)(105586002)(6246003)(3846002)(86362001)(6116002)(305945005)(74316002)(7736002)(476003)(14454004)(3660700001)(54906003)(446003)(53936002)(68736007)(76176011)(8936002)(33656002)(99286004)(9686003)(25786009)(55016002)(7696005)(229853002)(5250100002)(26005)(53546011)(2906002)(2900100001)(186003)(106356001)(6436002)(8676002)(66066001)(316002)(6506007)(81166006)(81156014)(102836004)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB4208; H:VI1PR05MB1678.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: GtvbifS2E9zpL+XE/01IJ0zMgS5JKv0I3IF2cFC6wPhDxvkFu3JSWK4hFDxxxTfXnhA9iDD+mVAFJdVkd91wZGazGGMtq0nMpihPkPucRIax05+onNex/8DDfI8DwJYqJ4XkZynvghfWnPclbzAk1rZADdyDUpyBJm21RxF0pAexgj26OkB3ig/h8pGgLIUt spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 89254708-dd8e-47b8-b702-08d5a14d97da X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89254708-dd8e-47b8-b702-08d5a14d97da X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2018 14:48:17.3633 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4208 Subject: Re: [dpdk-dev] [PATCH v3 11/14] net/mlx5: support MPLS-in-GRE and MPLS-in-UDP 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: Fri, 13 Apr 2018 14:48:21 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlvIExhcmFuamVp cm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDEz LCAyMDE4IDk6MzcgUE0NCj4gVG86IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWluZ2xAbWVsbGFu b3guY29tPg0KPiBDYzogU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+OyBkZXZA ZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAxMS8xNF0gbmV0L21seDU6IHN1cHBv cnQgTVBMUy1pbi1HUkUgYW5kIE1QTFMtaW4tDQo+IFVEUA0KPiANCj4gU29tZSBuaXRzLA0KPiAN Cj4gT24gRnJpLCBBcHIgMTMsIDIwMTggYXQgMDc6MjA6MjBQTSArMDgwMCwgWHVlbWluZyBMaSB3 cm90ZToNCj4gPiBUaGlzIHBhdGNoIHN1cHBvcnRzIG5ldyB0dW5uZWwgdHlwZSBNUExTLWluLUdS RSBhbmQgTVBMUy1pbi1VRFAuDQo+ID4gRmxvdyBwYXR0ZXJuIGV4YW1wbGU6DQo+ID4gICBpcHY0 IHByb3RvIGlzIDQ3IC8gZ3JlIHByb3RvIGlzIDB4ODg0NyAvIG1wbHMNCj4gPiAgIGlwdjQgLyB1 ZHAgZHN0IGlzIDY2MzUgLyBtcGxzIC8gZW5kDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBYdWVt aW5nIExpIDx4dWVtaW5nbEBtZWxsYW5veC5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvbmV0 L21seDUvTWFrZWZpbGUgICAgfCAgIDUgKysNCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1LmMg ICAgICB8ICAxNSArKysrKw0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L21seDUuaCAgICAgIHwgICAx ICsNCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyB8IDE0OA0KPiA+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgNCBmaWxlcyBjaGFuZ2Vk LCAxNjYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9tbHg1L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvbWx4NS9NYWtlZmlsZQ0K PiA+IGluZGV4IGY5YTZjNDYwYi4uMzM1NTM0ODNlIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv bmV0L21seDUvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L01ha2VmaWxlDQo+ ID4gQEAgLTEzMSw2ICsxMzEsMTEgQEAgbWx4NV9hdXRvY29uZi5oLm5ldzogJChSVEVfU0RLKS9i dWlsZHRvb2xzL2F1dG8tDQo+IGNvbmZpZy1oLnNoDQo+ID4gIAkJZW51bSBNTFg1RFZfQ09OVEVY VF9NQVNLX1RVTk5FTF9PRkZMT0FEUyBcDQo+ID4gIAkJJChBVVRPQ09ORl9PVVRQVVQpDQo+ID4g IAkkUSBzaCAtLSAnJDwnICckQCcgXA0KPiA+ICsJCUhBVkVfSUJWX0RFVklDRV9NUExTX1NVUFBP UlQgXA0KPiA+ICsJCWluZmluaWJhbmQvdmVyYnMuaCBcDQo+ID4gKwkJZW51bSBJQlZfRkxPV19T UEVDX01QTFMgXA0KPiA+ICsJCSQoQVVUT0NPTkZfT1VUUFVUKQ0KPiA+ICsJJFEgc2ggLS0gJyQ8 JyAnJEAnIFwNCj4gPiAgCQlIQVZFX0lCVl9XUV9GTEFHX1JYX0VORF9QQURESU5HIFwNCj4gPiAg CQlpbmZpbmliYW5kL3ZlcmJzLmggXA0KPiA+ICAJCWVudW0gSUJWX1dRX0ZMQUdfUlhfRU5EX1BB RERJTkcgXA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDUuYyBiL2RyaXZl cnMvbmV0L21seDUvbWx4NS5jIGluZGV4DQo+ID4gMzgxMThlNTI0Li44OWI2ODNkNmUgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmMNCj4gPiArKysgYi9kcml2ZXJzL25l dC9tbHg1L21seDUuYw0KPiA+IEBAIC02MTQsNiArNjE0LDcgQEAgbWx4NV9wY2lfcHJvYmUoc3Ry dWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2DQo+IF9fcnRlX3VudXNlZCwNCj4gPiAgCXVuc2ln bmVkIGludCBjcWVfY29tcDsNCj4gPiAgCXVuc2lnbmVkIGludCB0dW5uZWxfZW4gPSAwOw0KPiA+ ICAJdW5zaWduZWQgaW50IHZlcmJfcHJpb3JpdGllcyA9IDA7DQo+ID4gKwl1bnNpZ25lZCBpbnQg bXBsc19lbiA9IDA7DQo+ID4gIAlpbnQgaWR4Ow0KPiA+ICAJaW50IGk7DQo+ID4gIAlzdHJ1Y3Qg bWx4NWR2X2NvbnRleHQgYXR0cnNfb3V0ID0gezB9OyBAQCAtNzIwLDEyICs3MjEsMjUgQEANCj4g PiBtbHg1X3BjaV9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kcml2ZXIgKnBjaV9kcnYgX19ydGVfdW51 c2VkLA0KPiA+ICAJCQkgICAgICBNTFg1RFZfUkFXX1BBQ0tFVF9DQVBfVFVOTkVMRURfT0ZGTE9B RF9WWExBTikgJiYNCj4gPiAgCQkJICAgICAoYXR0cnNfb3V0LnR1bm5lbF9vZmZsb2Fkc19jYXBz ICYNCj4gPiAgCQkJICAgICAgTUxYNURWX1JBV19QQUNLRVRfQ0FQX1RVTk5FTEVEX09GRkxPQURf R1JFKSk7DQo+ID4gKyNpZmRlZiBIQVZFX0lCVl9ERVZJQ0VfTVBMU19TVVBQT1JUDQo+ID4gKwkJ bXBsc19lbiA9ICgoYXR0cnNfb3V0LnR1bm5lbF9vZmZsb2Fkc19jYXBzICYNCj4gPiArCQkJICAg IE1MWDVEVl9SQVdfUEFDS0VUX0NBUF9UVU5ORUxFRF9PRkZMT0FEX01QTFNfR1JFKSAmJg0KPiA+ ICsJCQkgICAoYXR0cnNfb3V0LnR1bm5lbF9vZmZsb2Fkc19jYXBzICYNCj4gPiArCQkJICAgIE1M WDVEVl9SQVdfUEFDS0VUX0NBUF9UVU5ORUxFRF9PRkZMT0FEX01QTFNfVURQKSAmJg0KPiA+ICsJ CQkgICAoYXR0cnNfb3V0LnR1bm5lbF9vZmZsb2Fkc19jYXBzICYNCj4gPiArCQkJICBNTFg1RFZf UkFXX1BBQ0tFVF9DQVBfVFVOTkVMRURfT0ZGTE9BRF9DVFJMX0RXX01QTFMpKTsNCj4gPiArI2Vu ZGlmDQo+ID4gIAl9DQo+ID4gIAlEUlZfTE9HKERFQlVHLCAidHVubmVsIG9mZmxvYWRpbmcgaXMg JXNzdXBwb3J0ZWQiLA0KPiA+ICAJCXR1bm5lbF9lbiA/ICIiIDogIm5vdCAiKTsNCj4gPiArCURS Vl9MT0coREVCVUcsICJNUExTIG92ZXIgR1JFL1VEUCBvZmZsb2FkaW5nIGlzICVzc3VwcG9ydGVk IiwNCj4gPiArCQltcGxzX2VuID8gIiIgOiAibm90ICIpOw0KPiA+ICAjZWxzZQ0KPiA+ICAJRFJW X0xPRyhXQVJOSU5HLA0KPiA+ICAJCSJ0dW5uZWwgb2ZmbG9hZGluZyBkaXNhYmxlZCBkdWUgdG8g b2xkIE9GRUQvcmRtYS1jb3JlDQo+IHZlcnNpb24iKTsNCj4gPiArCURSVl9MT0coV0FSTklORywN Cj4gPiArCQkiTVBMUyBvdmVyIEdSRS9VRFAgb2ZmbG9hZGluZyBkaXNhYmxlZCBkdWUgdG8gb2xk Ig0KPiA+ICsJCSIgT0ZFRC9yZG1hLWNvcmUgdmVyc2lvbiBvciBmaXJtd2FyZSBjb25maWd1cmF0 aW9uIik7DQo+ID4gICNlbmRpZg0KPiA+ICAJaWYgKG1seDVfZ2x1ZS0+cXVlcnlfZGV2aWNlX2V4 KGF0dHJfY3R4LCBOVUxMLCAmZGV2aWNlX2F0dHIpKSB7DQo+ID4gIAkJZXJyID0gZXJybm87DQo+ ID4gQEAgLTc0OSw2ICs3NjMsNyBAQCBtbHg1X3BjaV9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kcml2 ZXIgKnBjaV9kcnYNCj4gX19ydGVfdW51c2VkLA0KPiA+ICAJCQkuY3FlX2NvbXAgPSBjcWVfY29t cCwNCj4gPiAgCQkJLm1wcyA9IG1wcywNCj4gPiAgCQkJLnR1bm5lbF9lbiA9IHR1bm5lbF9lbiwN Cj4gPiArCQkJLm1wbHNfZW4gPSBtcGxzX2VuLA0KPiA+ICAJCQkudHhfdmVjX2VuID0gMSwNCj4g PiAgCQkJLnJ4X3ZlY19lbiA9IDEsDQo+ID4gIAkJCS5tcHdfaGRyX2RzZWcgPSAwLA0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDUuaCBiL2RyaXZlcnMvbmV0L21seDUvbWx4 NS5oIGluZGV4DQo+ID4gNmU0NjEzZmUwLi5lZmJjYjIxNTYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy9uZXQvbWx4NS9tbHg1LmgNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDUuaA0K PiA+IEBAIC04MSw2ICs4MSw3IEBAIHN0cnVjdCBtbHg1X2Rldl9jb25maWcgew0KPiA+ICAJdW5z aWduZWQgaW50IHZmOjE7IC8qIFRoaXMgaXMgYSBWRi4gKi8NCj4gPiAgCXVuc2lnbmVkIGludCBt cHM6MjsgLyogTXVsdGktcGFja2V0IHNlbmQgc3VwcG9ydGVkIG1vZGUuICovDQo+ID4gIAl1bnNp Z25lZCBpbnQgdHVubmVsX2VuOjE7DQo+ID4gKwl1bnNpZ25lZCBpbnQgbXBsc19lbjoxOyAvKiBN UExTIG92ZXIgR1JFL1VEUCBpcyBlbmFibGVkLiAqLw0KPiA+ICAJLyogV2hldGhlciB0dW5uZWwg c3RhdGVsZXNzIG9mZmxvYWRzIGFyZSBzdXBwb3J0ZWQuICovDQo+ID4gIAl1bnNpZ25lZCBpbnQg Zmxvd19jb3VudGVyX2VuOjE7IC8qIFdoZXRoZXIgZmxvdyBjb3VudGVyIGlzIHN1cHBvcnRlZC4N Cj4gKi8NCj4gPiAgCXVuc2lnbmVkIGludCBjcWVfY29tcDoxOyAvKiBDUUUgY29tcHJlc3Npb24g aXMgZW5hYmxlZC4gKi8gZGlmZg0KPiA+IC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zs b3cuYyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMNCj4gPiBpbmRleCAwZmNjZDM5YjMu Ljk4ZWRmMTg4MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5j DQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYw0KPiA+IEBAIC0xMDAsNiAr MTAwLDExIEBAIG1seDVfZmxvd19jcmVhdGVfZ3JlKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVt DQo+ICppdGVtLA0KPiA+ICAJCSAgICAgICBjb25zdCB2b2lkICpkZWZhdWx0X21hc2ssDQo+ID4g IAkJICAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfZGF0YSAqZGF0YSk7DQo+ID4NCj4gPiArc3RhdGlj IGludA0KPiA+ICttbHg1X2Zsb3dfY3JlYXRlX21wbHMoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0 ZW0gKml0ZW0sDQo+ID4gKwkJICAgICAgY29uc3Qgdm9pZCAqZGVmYXVsdF9tYXNrLA0KPiA+ICsJ CSAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfZGF0YSAqZGF0YSk7DQo+ID4gKw0KPiA+ICBzdHJ1Y3Qg bWx4NV9mbG93X3BhcnNlOw0KPiA+DQo+ID4gIHN0YXRpYyB2b2lkDQo+ID4gQEAgLTI0NywxMiAr MjUyLDE0IEBAIHN0cnVjdCBydGVfZmxvdyB7ICAjZGVmaW5lIElTX1RVTk5FTCh0eXBlKSAoIFwN Cj4gPiAgCSh0eXBlKSA9PSBSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU4gfHwgXA0KPiA+ICAJKHR5 cGUpID09IFJURV9GTE9XX0lURU1fVFlQRV9WWExBTl9HUEUgfHwgXA0KPiA+ICsJKHR5cGUpID09 IFJURV9GTE9XX0lURU1fVFlQRV9NUExTIHx8IFwNCj4gPiAgCSh0eXBlKSA9PSBSVEVfRkxPV19J VEVNX1RZUEVfR1JFKQ0KPiA+DQo+ID4gIGNvbnN0IHVpbnQzMl90IGZsb3dfcHR5cGVbXSA9IHsN Cj4gPiAgCVtSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU5dID0gUlRFX1BUWVBFX1RVTk5FTF9WWExB TiwNCj4gPiAgCVtSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU5fR1BFXSA9IFJURV9QVFlQRV9UVU5O RUxfVlhMQU5fR1BFLA0KPiA+ICAJW1JURV9GTE9XX0lURU1fVFlQRV9HUkVdID0gUlRFX1BUWVBF X1RVTk5FTF9HUkUsDQo+ID4gKwlbUlRFX0ZMT1dfSVRFTV9UWVBFX01QTFNdID0gUlRFX1BUWVBF X1RVTk5FTF9NUExTX0lOX0dSRSwNCj4gPiAgfTsNCj4gPg0KPiA+ICAjZGVmaW5lIFBUWVBFX0lE WCh0KSAoKFJURV9QVFlQRV9UVU5ORUxfTUFTSyAmICh0KSkgPj4gMTIpIEBAIC0yNjMsNg0KPiA+ ICsyNzAsMTAgQEAgY29uc3QgdWludDMyX3QgcHR5cGVfZXh0W10gPSB7DQo+ID4gIAlbUFRZUEVf SURYKFJURV9QVFlQRV9UVU5ORUxfVlhMQU5fR1BFKV0JPQ0KPiBSVEVfUFRZUEVfVFVOTkVMX1ZY TEFOX0dQRSB8DQo+ID4gIAkJCQkJCSAgUlRFX1BUWVBFX0w0X1VEUCwNCj4gPiAgCVtQVFlQRV9J RFgoUlRFX1BUWVBFX1RVTk5FTF9HUkUpXSA9IFJURV9QVFlQRV9UVU5ORUxfR1JFLA0KPiA+ICsJ W1BUWVBFX0lEWChSVEVfUFRZUEVfVFVOTkVMX01QTFNfSU5fR1JFKV0gPQ0KPiA+ICsJCVJURV9Q VFlQRV9UVU5ORUxfTVBMU19JTl9HUkUsDQo+ID4gKwlbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5O RUxfTVBMU19JTl9VRFApXSA9DQo+ID4gKwkJUlRFX1BUWVBFX1RVTk5FTF9NUExTX0lOX0dSRSB8 IFJURV9QVFlQRV9MNF9VRFAsDQo+ID4gIH07DQo+ID4NCj4gPiAgLyoqIFN0cnVjdHVyZSB0byBn ZW5lcmF0ZSBhIHNpbXBsZSBncmFwaCBvZiBsYXllcnMgc3VwcG9ydGVkIGJ5IHRoZQ0KPiA+IE5J Qy4gKi8gQEAgLTM5OSw3ICs0MTAsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVfZmxvd19p dGVtcw0KPiBtbHg1X2Zsb3dfaXRlbXNbXSA9IHsNCj4gPiAgCX0sDQo+ID4gIAlbUlRFX0ZMT1df SVRFTV9UWVBFX1VEUF0gPSB7DQo+ID4gIAkJLml0ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9U WVBFX1ZYTEFOLA0KPiA+IC0JCQkgICAgICAgUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOX0dQRSks DQo+ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU5fR1BFLA0KPiA+ICsJCQkg ICAgICAgUlRFX0ZMT1dfSVRFTV9UWVBFX01QTFMpLA0KPiA+ICAJCS5hY3Rpb25zID0gdmFsaWRf YWN0aW9ucywNCj4gPiAgCQkubWFzayA9ICYoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fdWRw KXsNCj4gPiAgCQkJLmhkciA9IHsNCj4gPiBAQCAtNDI4LDcgKzQ0MCw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgbWx4NV9mbG93X2l0ZW1zIG1seDVfZmxvd19pdGVtc1tdDQo+ID0gew0KPiA+ICAJ W1JURV9GTE9XX0lURU1fVFlQRV9HUkVdID0gew0KPiA+ICAJCS5pdGVtcyA9IElURU1TKFJURV9G TE9XX0lURU1fVFlQRV9FVEgsDQo+ID4gIAkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfSVBW NCwNCj4gPiAtCQkJICAgICAgIFJURV9GTE9XX0lURU1fVFlQRV9JUFY2KSwNCj4gPiArCQkJICAg ICAgIFJURV9GTE9XX0lURU1fVFlQRV9JUFY2LA0KPiA+ICsJCQkgICAgICAgUlRFX0ZMT1dfSVRF TV9UWVBFX01QTFMpLA0KPiA+ICAJCS5hY3Rpb25zID0gdmFsaWRfYWN0aW9ucywNCj4gPiAgCQku bWFzayA9ICYoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fZ3JlKXsNCj4gPiAgCQkJLnByb3Rv Y29sID0gLTEsDQo+ID4gQEAgLTQzNiw3ICs0NDksMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBt bHg1X2Zsb3dfaXRlbXMNCj4gbWx4NV9mbG93X2l0ZW1zW10gPSB7DQo+ID4gIAkJLmRlZmF1bHRf bWFzayA9ICZydGVfZmxvd19pdGVtX2dyZV9tYXNrLA0KPiA+ICAJCS5tYXNrX3N6ID0gc2l6ZW9m KHN0cnVjdCBydGVfZmxvd19pdGVtX2dyZSksDQo+ID4gIAkJLmNvbnZlcnQgPSBtbHg1X2Zsb3df Y3JlYXRlX2dyZSwNCj4gPiArI2lmZGVmIEhBVkVfSUJWX0RFVklDRV9NUExTX1NVUFBPUlQNCj4g PiArCQkuZHN0X3N6ID0gc2l6ZW9mKHN0cnVjdCBpYnZfZmxvd19zcGVjX2dyZSksICNlbHNlDQo+ ID4gIAkJLmRzdF9zeiA9IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY190dW5uZWwpLA0KPiA+ ICsjZW5kaWYNCj4gPiAgCX0sDQo+ID4gIAlbUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOXSA9IHsN Cj4gPiAgCQkuaXRlbXMgPSBJVEVNUyhSVEVfRkxPV19JVEVNX1RZUEVfRVRILCBAQCAtNDY0LDYg KzQ4MSwyMSBAQA0KPiBzdGF0aWMNCj4gPiBjb25zdCBzdHJ1Y3QgbWx4NV9mbG93X2l0ZW1zIG1s eDVfZmxvd19pdGVtc1tdID0gew0KPiA+ICAJCS5jb252ZXJ0ID0gbWx4NV9mbG93X2NyZWF0ZV92 eGxhbl9ncGUsDQo+ID4gIAkJLmRzdF9zeiA9IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY190 dW5uZWwpLA0KPiA+ICAJfSwNCj4gPiArCVtSVEVfRkxPV19JVEVNX1RZUEVfTVBMU10gPSB7DQo+ ID4gKwkJLml0ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9UWVBFX0VUSCwNCj4gPiArCQkJICAg ICAgIFJURV9GTE9XX0lURU1fVFlQRV9JUFY0LA0KPiA+ICsJCQkgICAgICAgUlRFX0ZMT1dfSVRF TV9UWVBFX0lQVjYpLA0KPiA+ICsJCS5hY3Rpb25zID0gdmFsaWRfYWN0aW9ucywNCj4gPiArCQku bWFzayA9ICYoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fbXBscyl7DQo+ID4gKwkJCS5sYWJl bF90Y19zID0gIlx4ZmZceGZmXHhmMCIsDQo+ID4gKwkJfSwNCj4gPiArCQkuZGVmYXVsdF9tYXNr ID0gJnJ0ZV9mbG93X2l0ZW1fbXBsc19tYXNrLA0KPiA+ICsJCS5tYXNrX3N6ID0gc2l6ZW9mKHN0 cnVjdCBydGVfZmxvd19pdGVtX21wbHMpLA0KPiA+ICsJCS5jb252ZXJ0ID0gbWx4NV9mbG93X2Ny ZWF0ZV9tcGxzLA0KPiA+ICsjaWZkZWYgSEFWRV9JQlZfREVWSUNFX01QTFNfU1VQUE9SVA0KPiA+ ICsJCS5kc3Rfc3ogPSBzaXplb2Yoc3RydWN0IGlidl9mbG93X3NwZWNfbXBscyksICNlbmRpZg0K PiA+ICsJfSwNCj4gDQo+IFdoeSB0aGUgd2hvbGUgaXRlbSBpcyBub3QgdW5kZXIgaWZkZWY/DQoN CklmIGFwcGx5IG1hY3JvIHRvIHdob2xlIGl0ZW0sIHRoZXJlIHdpbGwgYmUgYSBudWxsIHBvaW50 ZXIgaWYgY3JlYXRlIG1wbHMgZmxvdy4NClRoZXJlIGlzIGEgbWFjcm8gaW4gZnVuY3Rpb24gbWx4 NV9mbG93X2NyZWF0ZV9tcGxzKCkgdG8gYXZvaWQgdXNpbmcgdGhpcyBpbnZhbGlkIGRhdGEuDQoN Cj4gDQo+ID4gIH07DQo+ID4NCj4gPiAgLyoqIFN0cnVjdHVyZSB0byBwYXNzIHRvIHRoZSBjb252 ZXJzaW9uIGZ1bmN0aW9uLiAqLyBAQCAtOTEyLDcgKzk0NCw5DQo+ID4gQEAgbWx4NV9mbG93X2Nv bnZlcnRfaXRlbXNfdmFsaWRhdGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkJaWYg KHJldCkNCj4gPiAgCQkJZ290byBleGl0X2l0ZW1fbm90X3N1cHBvcnRlZDsNCj4gPiAgCQlpZiAo SVNfVFVOTkVMKGl0ZW1zLT50eXBlKSkgew0KPiA+IC0JCQlpZiAocGFyc2VyLT50dW5uZWwpIHsN Cj4gPiArCQkJaWYgKHBhcnNlci0+dHVubmVsICYmDQo+ID4gKwkJCSAgICEocGFyc2VyLT50dW5u ZWwgPT0gUlRFX1BUWVBFX1RVTk5FTF9HUkUgJiYNCj4gPiArCQkJICAgICBpdGVtcy0+dHlwZSA9 PSBSVEVfRkxPV19JVEVNX1RZUEVfTVBMUykpIHsNCj4gPiAgCQkJCXJ0ZV9mbG93X2Vycm9yX3Nl dChlcnJvciwgRU5PVFNVUCwNCj4gPiAgCQkJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9JVEVN LA0KPiA+ICAJCQkJCQkgICBpdGVtcywNCj4gPiBAQCAtOTIwLDYgKzk1NCwxNiBAQCBtbHg1X2Zs b3dfY29udmVydF9pdGVtc192YWxpZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gKmRldiwNCj4g PiAgCQkJCQkJICAgIiB0dW5uZWwgZW5jYXBzdWxhdGlvbnMuIik7DQo+ID4gIAkJCQlyZXR1cm4g LXJ0ZV9lcnJubzsNCj4gPiAgCQkJfQ0KPiA+ICsJCQlpZiAoaXRlbXMtPnR5cGUgPT0gUlRFX0ZM T1dfSVRFTV9UWVBFX01QTFMgJiYNCj4gPiArCQkJICAgICFwcml2LT5jb25maWcubXBsc19lbikg ew0KPiA+ICsJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICsJCQkJ CQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJCSAgIGl0ZW1zLA0KPiA+ ICsJCQkJCQkgICAiTVBMUyBub3Qgc3VwcG9ydGVkIG9yIg0KPiA+ICsJCQkJCQkgICAiIGRpc2Fi bGVkIGluIGZpcm13YXJlIg0KPiA+ICsJCQkJCQkgICAiIGNvbmZpZ3VyYXRpb24uIik7DQo+ID4g KwkJCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCQkJfQ0KPiA+ICAJCQlpZiAoIXByaXYtPmNv bmZpZy50dW5uZWxfZW4gJiYNCj4gPiAgCQkJICAgIHBhcnNlci0+cnNzX2NvbmYubGV2ZWwpIHsN Cj4gPiAgCQkJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwgQEAgLTE4ODAsNg0K PiArMTkyNCw4MCBAQA0KPiA+IG1seDVfZmxvd19jcmVhdGVfdnhsYW5fZ3BlKGNvbnN0IHN0cnVj dCBydGVfZmxvd19pdGVtICppdGVtLCAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+ICsgKiBDb252ZXJ0 IE1QTFMgaXRlbSB0byBWZXJicyBzcGVjaWZpY2F0aW9uLg0KPiA+ICsgKiBUdW5uZWwgdHlwZXMg Y3VycmVudGx5IHN1cHBvcnRlZCBhcmUgTVBMUy1pbi1HUkUgYW5kIE1QTFMtaW4tVURQLg0KPiA+ ICsgKg0KPiA+ICsgKiBAcGFyYW0gaXRlbVtpbl0NCj4gPiArICogICBJdGVtIHNwZWNpZmljYXRp b24uDQo+ID4gKyAqIEBwYXJhbSBkZWZhdWx0X21hc2tbaW5dDQo+ID4gKyAqICAgRGVmYXVsdCBi aXQtbWFza3MgdG8gdXNlIHdoZW4gaXRlbS0+bWFzayBpcyBub3QgcHJvdmlkZWQuDQo+ID4gKyAq IEBwYXJhbSBkYXRhW2luLCBvdXRdDQo+ID4gKyAqICAgVXNlciBzdHJ1Y3R1cmUuDQo+ID4gKyAq DQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJy bm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMNCj4gc2V0Lg0KPiA+ICsgKi8NCj4g PiArc3RhdGljIGludA0KPiA+ICttbHg1X2Zsb3dfY3JlYXRlX21wbHMoY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X2l0ZW0gKml0ZW0gX19ydGVfdW51c2VkLA0KPiA+ICsJCSAgICAgIGNvbnN0IHZvaWQg KmRlZmF1bHRfbWFzayBfX3J0ZV91bnVzZWQsDQo+ID4gKwkJICAgICAgc3RydWN0IG1seDVfZmxv d19kYXRhICpkYXRhIF9fcnRlX3VudXNlZCkgeyAjaWZuZGVmDQo+ID4gK0hBVkVfSUJWX0RFVklD RV9NUExTX1NVUFBPUlQNCj4gPiArCXJldHVybiBydGVfZmxvd19lcnJvcl9zZXQoZGF0YS0+ZXJy b3IsIEVJTlZBTCwNCj4gDQo+IEVOT1RTVVAgaXMgbW9yZSBhY2N1cmF0ZSB0byBrZWVwIGEgY29u c2lzdGVuY3kgYW1vbmcgdGhlIGVycm9ycy4NCj4gDQo+ID4gKwkJCQkgIFJURV9GTE9XX0VSUk9S X1RZUEVfSVRFTSwNCj4gPiArCQkJCSAgaXRlbSwNCj4gPiArCQkJCSAgIk1QTFMgbm90IHN1cHBv cnRlZCBieSBkcml2ZXIiKTsgI2Vsc2UNCj4gPiArCXVuc2lnbmVkIGludCBpOw0KPiA+ICsJY29u c3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fbXBscyAqc3BlYyA9IGl0ZW0tPnNwZWM7DQo+ID4gKwlj b25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9tcGxzICptYXNrID0gaXRlbS0+bWFzazsNCj4gPiAr CXN0cnVjdCBtbHg1X2Zsb3dfcGFyc2UgKnBhcnNlciA9IGRhdGEtPnBhcnNlcjsNCj4gPiArCXVu c2lnbmVkIGludCBzaXplID0gc2l6ZW9mKHN0cnVjdCBpYnZfZmxvd19zcGVjX21wbHMpOw0KPiA+ ICsJc3RydWN0IGlidl9mbG93X3NwZWNfbXBscyBtcGxzID0gew0KPiA+ICsJCS50eXBlID0gSUJW X0ZMT1dfU1BFQ19NUExTLA0KPiA+ICsJCS5zaXplID0gc2l6ZSwNCj4gPiArCX07DQo+ID4gKwl1 bmlvbiB0YWcgew0KPiA+ICsJCXVpbnQzMl90IHRhZzsNCj4gPiArCQl1aW50OF90IGxhYmVsWzRd Ow0KPiA+ICsJfSBpZDsNCj4gPiArDQo+ID4gKwlpZC50YWcgPSAwOw0KPiA+ICsJcGFyc2VyLT5p bm5lciA9IElCVl9GTE9XX1NQRUNfSU5ORVI7DQo+ID4gKwlpZiAocGFyc2VyLT5sYXllciA9PSBI QVNIX1JYUV9VRFBWNCB8fA0KPiA+ICsJICAgIHBhcnNlci0+bGF5ZXIgPT0gSEFTSF9SWFFfVURQ VjYpIHsNCj4gPiArCQlwYXJzZXItPnR1bm5lbCA9DQo+ID4gKwkJCXB0eXBlX2V4dFtQVFlQRV9J RFgoUlRFX1BUWVBFX1RVTk5FTF9NUExTX0lOX1VEUCldOw0KPiA+ICsJCXBhcnNlci0+b3V0X2xh eWVyID0gcGFyc2VyLT5sYXllcjsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcGFyc2VyLT50dW5u ZWwgPQ0KPiA+ICsJCQlwdHlwZV9leHRbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfTVBMU19J Tl9HUkUpXTsNCj4gPiArCX0NCj4gPiArCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9UVU5ORUw7 DQo+ID4gKwlpZiAoc3BlYykgew0KPiA+ICsJCWlmICghbWFzaykNCj4gPiArCQkJbWFzayA9IGRl ZmF1bHRfbWFzazsNCj4gPiArCQltZW1jcHkoJmlkLmxhYmVsWzFdLCBzcGVjLT5sYWJlbF90Y19z LCAzKTsNCj4gPiArCQlpZC5sYWJlbFswXSA9IHNwZWMtPnR0bDsNCj4gPiArCQltcGxzLnZhbC50 YWcgPSBpZC50YWc7DQo+ID4gKwkJbWVtY3B5KCZpZC5sYWJlbFsxXSwgbWFzay0+bGFiZWxfdGNf cywgMyk7DQo+ID4gKwkJaWQubGFiZWxbMF0gPSBtYXNrLT50dGw7DQo+ID4gKwkJbXBscy5tYXNr LnRhZyA9IGlkLnRhZzsNCj4gPiArCQkvKiBSZW1vdmUgdW53YW50ZWQgYml0cyBmcm9tIHZhbHVl cy4gKi8NCj4gPiArCQltcGxzLnZhbC50YWcgJj0gbXBscy5tYXNrLnRhZzsNCj4gPiArCX0NCj4g PiArCW1seDVfZmxvd19jcmVhdGVfY29weShwYXJzZXIsICZtcGxzLCBzaXplKTsNCj4gPiArCWZv ciAoaSA9IDA7IGkgIT0gaGFzaF9yeHFfaW5pdF9uOyArK2kpIHsNCj4gPiArCQlpZiAoIXBhcnNl ci0+cXVldWVbaV0uaWJ2X2F0dHIpDQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsJCXBhcnNlci0+ cXVldWVbaV0uaWJ2X2F0dHItPmZsYWdzIHw9DQo+ID4gKwkJCUlCVl9GTE9XX0FUVFJfRkxBR1Nf T1JERVJFRF9TUEVDX0xJU1Q7DQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArI2VuZGlm DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICAgKiBDb252ZXJ0IEdSRSBpdGVtIHRvIFZl cmJzIHNwZWNpZmljYXRpb24uDQo+ID4gICAqDQo+ID4gICAqIEBwYXJhbSBpdGVtW2luXQ0KPiA+ IEBAIC0xODk4LDE2ICsyMDE2LDQwIEBAIG1seDVfZmxvd19jcmVhdGVfZ3JlKGNvbnN0IHN0cnVj dCBydGVfZmxvd19pdGVtDQo+ICppdGVtIF9fcnRlX3VudXNlZCwNCj4gPiAgCQkgICAgIHN0cnVj dCBtbHg1X2Zsb3dfZGF0YSAqZGF0YSkNCj4gPiAgew0KPiA+ICAJc3RydWN0IG1seDVfZmxvd19w YXJzZSAqcGFyc2VyID0gZGF0YS0+cGFyc2VyOw0KPiA+ICsjaWZuZGVmIEhBVkVfSUJWX0RFVklD RV9NUExTX1NVUFBPUlQNCj4gPiAgCXVuc2lnbmVkIGludCBzaXplID0gc2l6ZW9mKHN0cnVjdCBp YnZfZmxvd19zcGVjX3R1bm5lbCk7DQo+ID4gIAlzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY190dW5uZWwg dHVubmVsID0gew0KPiA+ICAJCS50eXBlID0gcGFyc2VyLT5pbm5lciB8IElCVl9GTE9XX1NQRUNf VlhMQU5fVFVOTkVMLA0KPiA+ICAJCS5zaXplID0gc2l6ZSwNCj4gPiAgCX07DQo+ID4gKyNlbHNl DQo+ID4gKwljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9ncmUgKnNwZWMgPSBpdGVtLT5zcGVj Ow0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fZ3JlICptYXNrID0gaXRlbS0+bWFz azsNCj4gPiArCXVuc2lnbmVkIGludCBzaXplID0gc2l6ZW9mKHN0cnVjdCBpYnZfZmxvd19zcGVj X2dyZSk7DQo+ID4gKwlzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19ncmUgdHVubmVsID0gew0KPiA+ICsJ CS50eXBlID0gcGFyc2VyLT5pbm5lciB8IElCVl9GTE9XX1NQRUNfR1JFLA0KPiA+ICsJCS5zaXpl ID0gc2l6ZSwNCj4gPiArCX07DQo+ID4gKyNlbmRpZg0KPiA+DQo+ID4gIAlwYXJzZXItPmlubmVy ID0gSUJWX0ZMT1dfU1BFQ19JTk5FUjsNCj4gPiAgCXBhcnNlci0+dHVubmVsID0gcHR5cGVfZXh0 W1BUWVBFX0lEWChSVEVfUFRZUEVfVFVOTkVMX0dSRSldOw0KPiA+ICAJcGFyc2VyLT5vdXRfbGF5 ZXIgPSBwYXJzZXItPmxheWVyOw0KPiA+ICAJcGFyc2VyLT5sYXllciA9IEhBU0hfUlhRX1RVTk5F TDsNCj4gPiArI2lmZGVmIEhBVkVfSUJWX0RFVklDRV9NUExTX1NVUFBPUlQNCj4gPiArCWlmIChz cGVjKSB7DQo+ID4gKwkJaWYgKCFtYXNrKQ0KPiA+ICsJCQltYXNrID0gZGVmYXVsdF9tYXNrOw0K PiA+ICsJCXR1bm5lbC52YWwuY19rc19yZXMwX3ZlciA9IHNwZWMtPmNfcnN2ZDBfdmVyOw0KPiA+ ICsJCXR1bm5lbC52YWwucHJvdG9jb2wgPSBzcGVjLT5wcm90b2NvbDsNCj4gPiArCQl0dW5uZWwu dmFsLmNfa3NfcmVzMF92ZXIgPSBtYXNrLT5jX3JzdmQwX3ZlcjsNCj4gPiArCQl0dW5uZWwudmFs LnByb3RvY29sID0gbWFzay0+cHJvdG9jb2w7DQo+ID4gKwkJLyogUmVtb3ZlIHVud2FudGVkIGJp dHMgZnJvbSB2YWx1ZXMuICovDQo+ID4gKwkJdHVubmVsLnZhbC5jX2tzX3JlczBfdmVyICY9IHR1 bm5lbC5tYXNrLmNfa3NfcmVzMF92ZXI7DQo+ID4gKwkJdHVubmVsLnZhbC5wcm90b2NvbCAmPSB0 dW5uZWwubWFzay5wcm90b2NvbDsNCj4gPiArCQl0dW5uZWwudmFsLmtleSAmPSB0dW5uZWwubWFz ay5rZXk7DQo+ID4gKwl9DQo+ID4gKyNlbmRpZg0KPiA+ICAJbWx4NV9mbG93X2NyZWF0ZV9jb3B5 KHBhcnNlciwgJnR1bm5lbCwgc2l6ZSk7DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+IC0t DQo+ID4gMi4xMy4zDQo+ID4NCj4gDQo+IFRoYW5rcywNCj4gDQo+IC0tDQo+IE7DqWxpbyBMYXJh bmplaXJvDQo+IDZXSU5EDQo=