From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0081.outbound.protection.outlook.com [104.47.1.81]) by dpdk.org (Postfix) with ESMTP id BCD441B75B for ; Sat, 14 Apr 2018 14:25:15 +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=mfsNkKXMzV40sYb6ufDXd/sg1oDHUb+Xm8T93bBjI98=; b=Qys79jRz6kosSOzlm1+p/Q/BtQYn+E9AMKXWsmWKDck5/yrgYfbJ8mWXU1wSBRPoJDnh++p4oGs7ByDnnSPj1fUmdm4ITW1vAMD0l2FxZ5ulGQyPbqPlbrKjO8o4rj3E9cD8dClcuydEm4+f9xiMKcxN9PJ7uMzKcg/o+LBVffs= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB1278.eurprd05.prod.outlook.com (10.162.122.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.11; Sat, 14 Apr 2018 12:25:12 +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; Sat, 14 Apr 2018 12:25:12 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v2 07/15] net/mlx5: support tunnel RSS level Thread-Index: AQHT0NC4rjbU5d76WUGK0Y+sp03Ih6P7RAyAgATQhLA= Date: Sat, 14 Apr 2018 12:25:12 +0000 Message-ID: References: <20180410133415.189905-1-xuemingl@mellanox.com> <20180410133415.189905-8-xuemingl@mellanox.com> <20180411085529.ecxuku77hg3mkybl@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180411085529.ecxuku77hg3mkybl@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: [183.232.227.24] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB1278; 7:cpyYcIKwXNfPvjlwSxrVnyLijQR3ZPXmOREbVa0lzYqsN0QWdZ9kYuLCmrUcf5CWaS/3YYEaP8yUOD8nev7plYGJeEfA1AFTN1gQVnUtHbt58Nmxyy2gaao/+hzYf+HVjEuur3zbgsOUOz1W5pHdrIos9vz7j5HPwDdAIwrjf52TVVCdRFWG+bAwsfFThK29cPBO0Ip5TAbYcpmdYkpLb4EMnIgxIL+5jJ8AQfQE1O853rIXTzKwFa45MaBiwu43 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:VI1PR05MB1278; x-ms-traffictypediagnostic: VI1PR05MB1278: 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)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3231232)(944501327)(52105095)(3002001)(6055026)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:VI1PR05MB1278; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB1278; x-forefront-prvs: 0642A5E7BA x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(396003)(376002)(39380400002)(39860400002)(346002)(189003)(199004)(13464003)(6916009)(6436002)(9686003)(2906002)(53946003)(16200700003)(55016002)(53936002)(26005)(446003)(8676002)(486006)(68736007)(575784001)(476003)(11346002)(81166006)(186003)(66066001)(8936002)(81156014)(5660300001)(14454004)(86362001)(478600001)(106356001)(105586002)(3280700002)(6246003)(6116002)(97736004)(4326008)(7736002)(5250100002)(25786009)(3846002)(3660700001)(74316002)(76176011)(7696005)(305945005)(33656002)(53546011)(229853002)(59450400001)(102836004)(2900100001)(6506007)(316002)(99286004)(54906003)(21314002)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB1278; 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: BLkzd61GZDSyn2dBdnDdZnRN3neXUt3AVYw/a+W1RgQghPRPwSsdgNyhfLDAi5rwqBvbjiiPRVtqg6iQEiHkhy30FvSGvoz4OxL+TqwOrijL+8lh/zrM6Ijh2bqcdcglonjnEn74Y5jA8RnehLqJl+aWM9BuL6eKGHoMTMRnfZWX5+VrHkBKFZNm1xd2oBiU 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: 7b5f0f94-1adc-4b08-bda0-08d5a202c54a X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b5f0f94-1adc-4b08-bda0-08d5a202c54a X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2018 12:25:12.4718 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB1278 Subject: Re: [dpdk-dev] [PATCH v2 07/15] net/mlx5: support tunnel RSS level 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: Sat, 14 Apr 2018 12:25:16 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlvIExhcmFuamVp cm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEFwcmls IDExLCAyMDE4IDQ6NTUgUE0NCj4gVG86IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWluZ2xAbWVs bGFub3guY29tPg0KPiBDYzogU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+OyBk ZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAwNy8xNV0gbmV0L21seDU6IHN1 cHBvcnQgdHVubmVsIFJTUyBsZXZlbA0KPiANCj4gT24gVHVlLCBBcHIgMTAsIDIwMTggYXQgMDk6 MzQ6MDdQTSArMDgwMCwgWHVlbWluZyBMaSB3cm90ZToNCj4gPiBUdW5uZWwgUlNTIGxldmVsIG9m IGZsb3cgUlNTIGFjdGlvbiBvZmZlcnMgdXNlciBhIGNob2ljZSB0byBkbyBSU1MNCj4gPiBoYXNo IGNhbGN1bGF0aW9uIG9uIGlubmVyIG9yIG91dGVyIFJTUyBmaWVsZHMuIFRlc3RwbWQgZmxvdyBj b21tYW5kDQo+IGV4YW1wbGVzOg0KPiA+DQo+ID4gR1JFIGZsb3cgaW5uZXIgUlNTOg0KPiA+ICAg ZmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4gZXRoIC8gaXB2NCBwcm90byBpcyA0NyAvIGdy ZSAvIGVuZA0KPiA+IGFjdGlvbnMgcnNzIHF1ZXVlcyAxIDIgZW5kIGxldmVsIDEgLyBlbmQNCj4g Pg0KPiA+IEdSRSB0dW5uZWwgZmxvdyBvdXRlciBSU1M6DQo+ID4gICBmbG93IGNyZWF0ZSAwIGlu Z3Jlc3MgcGF0dGVybiBldGggIC8gaXB2NCBwcm90byBpcyA0NyAvIGdyZSAvIGVuZA0KPiA+IGFj dGlvbnMgcnNzIHF1ZXVlcyAxIDIgZW5kIGxldmVsIDAgLyBlbmQNCj4gPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IFh1ZW1pbmcgTGkgPHh1ZW1pbmdsQG1lbGxhbm94LmNvbT4NCj4gPiAtLS0NCj4gPiAg ZHJpdmVycy9uZXQvbWx4NS9NYWtlZmlsZSAgICB8ICAgMiArLQ0KPiA+ICBkcml2ZXJzL25ldC9t bHg1L21seDVfZmxvdy5jIHwgMjQ5DQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQ0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5jIHwgIDE2ICsr Kw0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5oIHwgICA4ICsrDQo+ID4gIGRyaXZl cnMvbmV0L21seDUvbWx4NV9yeHEuYyAgfCAgNDYgKysrKysrKy0NCj4gPiAgZHJpdmVycy9uZXQv bWx4NS9tbHg1X3J4dHguaCB8ICAgNSArLQ0KPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDI0NiBpbnNl cnRpb25zKCspLCA4MCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9tbHg1L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvbWx4NS9NYWtlZmlsZQ0KPiA+IGluZGV4 IGFlMTE4YWQzMy4uZjlhNmM0NjBiIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUv TWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L01ha2VmaWxlDQo+ID4gQEAgLTM1 LDcgKzM1LDcgQEAgaW5jbHVkZSAkKFJURV9TREspL21rL3J0ZS52YXJzLm1rICBMSUIgPQ0KPiA+ IGxpYnJ0ZV9wbWRfbWx4NS5hICBMSUJfR0xVRSA9ICQoTElCX0dMVUVfQkFTRSkuJChMSUJfR0xV RV9WRVJTSU9OKQ0KPiA+ICBMSUJfR0xVRV9CQVNFID0gbGlicnRlX3BtZF9tbHg1X2dsdWUuc28g LUxJQl9HTFVFX1ZFUlNJT04gPSAxOC4wMi4wDQo+ID4gK0xJQl9HTFVFX1ZFUlNJT04gPSAxOC4w NS4wDQo+ID4NCj4gPiAgIyBTb3VyY2VzLg0KPiA+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVf TUxYNV9QTUQpICs9IG1seDUuYyBkaWZmIC0tZ2l0DQo+ID4gYS9kcml2ZXJzL25ldC9tbHg1L21s eDVfZmxvdy5jIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyBpbmRleA0KPiA+IDY0NjU4 YmMwZS4uNjZjN2Q3OTkzIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9m bG93LmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ID4gQEAgLTEx Myw2ICsxMTMsNyBAQCBlbnVtIGhhc2hfcnhxX3R5cGUgew0KPiA+ICAJSEFTSF9SWFFfVURQVjYs DQo+ID4gIAlIQVNIX1JYUV9JUFY2LA0KPiA+ICAJSEFTSF9SWFFfRVRILA0KPiA+ICsJSEFTSF9S WFFfVFVOTkVMLA0KPiA+ICB9Ow0KPiA+DQo+ID4gIC8qIEluaXRpYWxpemF0aW9uIGRhdGEgZm9y IGhhc2ggUlggcXVldWUuICovIEBAIC00NTEsNiArNDUyLDcgQEANCj4gPiBzdHJ1Y3QgbWx4NV9m bG93X3BhcnNlIHsNCj4gPiAgCXVpbnQxNl90IHF1ZXVlc1tSVEVfTUFYX1FVRVVFU19QRVJfUE9S VF07IC8qKjwgUXVldWVzIGluZGV4ZXMgdG8gdXNlLg0KPiAqLw0KPiA+ICAJdWludDhfdCByc3Nf a2V5WzQwXTsgLyoqPCBjb3B5IG9mIHRoZSBSU1Mga2V5LiAqLw0KPiA+ICAJZW51bSBoYXNoX3J4 cV90eXBlIGxheWVyOyAvKio8IExhc3QgcGF0dGVybiBsYXllciBkZXRlY3RlZC4gKi8NCj4gPiAr CWVudW0gaGFzaF9yeHFfdHlwZSBvdXRfbGF5ZXI7IC8qKjwgTGFzdCBvdXRlciBwYXR0ZXJuIGxh eWVyDQo+ID4gK2RldGVjdGVkLiAqLw0KPiA+ICAJdWludDMyX3QgdHVubmVsOyAvKio8IFR1bm5l bCB0eXBlIG9mIFJURV9QVFlQRV9UVU5ORUxfWFhYLiAqLw0KPiA+ICAJc3RydWN0IGlidl9jb3Vu dGVyX3NldCAqY3M7IC8qKjwgSG9sZHMgdGhlIGNvdW50ZXIgc2V0IGZvciB0aGUgcnVsZQ0KPiAq Lw0KPiA+ICAJc3RydWN0IHsNCj4gPiBAQCAtNDU4LDYgKzQ2MCw3IEBAIHN0cnVjdCBtbHg1X2Zs b3dfcGFyc2Ugew0KPiA+ICAJCS8qKjwgUG9pbnRlciB0byBWZXJicyBhdHRyaWJ1dGVzLiAqLw0K PiA+ICAJCXVuc2lnbmVkIGludCBvZmZzZXQ7DQo+ID4gIAkJLyoqPCBDdXJyZW50IHBvc2l0aW9u IG9yIHRvdGFsIHNpemUgb2YgdGhlIGF0dHJpYnV0ZS4gKi8NCj4gPiArCQl1aW50NjRfdCBoYXNo X2ZpZWxkczsgLyoqPCBWZXJicyBoYXNoIGZpZWxkcy4gKi8NCj4gPiAgCX0gcXVldWVbUlRFX0RJ TShoYXNoX3J4cV9pbml0KV07DQo+ID4gIH07DQo+ID4NCj4gPiBAQCAtNjk4LDcgKzcwMSw4IEBA IG1seDVfZmxvd19jb252ZXJ0X2FjdGlvbnMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4g IAkJCQkJCSAgICIgZnVuY3Rpb24gaXMgVG9lcGxpdHoiKTsNCj4gPiAgCQkJCXJldHVybiAtcnRl X2Vycm5vOw0KPiA+ICAJCQl9DQo+ID4gLQkJCWlmIChyc3MtPmxldmVsKSB7DQo+ID4gKyNpZm5k ZWYgSEFWRV9JQlZfREVWSUNFX1RVTk5FTF9TVVBQT1JUDQo+ID4gKwkJCWlmIChwYXJzZXItPnJz c19jb25mLmxldmVsID4gMCkgew0KPiANCj4gQWNjb3JkaW5nIHRvIEFkcmllbidzIEFQSSBsZXZl bCAwIG1lYW5zIGRvIHdoYXRldmVyIHlvdSB3YW50IGFuZCAxIG1lYW5zDQo+IG91dGVyLg0KPiBU aGlzIGlzIHJlbW92aW5nIHRoZSBvdXRlciBSU1Mgc3VwcG9ydC4NCj4gDQo+ID4gIAkJCQlydGVf Zmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiAgCQkJCQkJICAgUlRFX0ZMT1dfRVJS T1JfVFlQRV9BQ1RJT04sDQo+ID4gIAkJCQkJCSAgIGFjdGlvbnMsDQo+ID4gQEAgLTcwNiw2ICs3 MTAsMTUgQEAgbWx4NV9mbG93X2NvbnZlcnRfYWN0aW9ucyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diwNCj4gPiAgCQkJCQkJICAgIiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkIik7DQo+ID4gIAkJCQly ZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAgCQkJfQ0KPiA+ICsjZW5kaWYNCj4gPiArCQkJaWYgKHBh cnNlci0+cnNzX2NvbmYubGV2ZWwgPiAxKSB7DQo+ID4gKwkJCQlydGVfZmxvd19lcnJvcl9zZXQo ZXJyb3IsIEVJTlZBTCwNCj4gPiArCQkJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9BQ1RJT04s DQo+ID4gKwkJCQkJCSAgIGFjdGlvbnMsDQo+ID4gKwkJCQkJCSAgICJSU1MgZW5jYXBzdWxhdGlv biBsZXZlbCINCj4gPiArCQkJCQkJICAgIiA+IDEgaXMgbm90IHN1cHBvcnRlZCIpOw0KPiA+ICsJ CQkJcmV0dXJuIC1ydGVfZXJybm87DQo+ID4gKwkJCX0NCj4gDQo+IFNlZW1zIHRoZSBsZXZlbHMg YXJlIHdyb25nbHkgdXNlZC4NCg0KVGhhbmtzLCB1cGRhdGVkLg0KDQo+IA0KPiA+ICAJCQlpZiAo cnNzLT50eXBlcyAmIE1MWDVfUlNTX0hGX01BU0spIHsNCj4gPiAgCQkJCXJ0ZV9mbG93X2Vycm9y X3NldChlcnJvciwgRUlOVkFMLA0KPiA+ICAJCQkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0FD VElPTiwNCj4gPiBAQCAtNzU2LDcgKzc2OSw3IEBAIG1seDVfZmxvd19jb252ZXJ0X2FjdGlvbnMo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkJCX0NCj4gPiAgCQkJcGFyc2VyLT5yc3Nf Y29uZiA9IChzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3Jzcyl7DQo+ID4gIAkJCQkuZnVuYyA9IFJU RV9FVEhfSEFTSF9GVU5DVElPTl9ERUZBVUxULA0KPiA+IC0JCQkJLmxldmVsID0gMCwNCj4gPiAr CQkJCS5sZXZlbCA9IHJzcy0+bGV2ZWwsDQo+ID4gIAkJCQkudHlwZXMgPSByc3MtPnR5cGVzLA0K PiA+ICAJCQkJLmtleV9sZW4gPSByc3Nfa2V5X2xlbiwNCj4gPiAgCQkJCS5xdWV1ZV9udW0gPSBy c3MtPnF1ZXVlX251bSwNCj4gPiBAQCAtODQyLDExICs4NTUsMTIgQEAgbWx4NV9mbG93X2NvbnZl cnRfYWN0aW9ucyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgICogICAwIG9uIHN1Y2Nl c3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMNCj4g c2V0Lg0KPiA+ICAgKi8NCj4gPiAgc3RhdGljIGludA0KPiA+IC1tbHg1X2Zsb3dfY29udmVydF9p dGVtc192YWxpZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldg0KPiA+IF9fcnRlX3VudXNlZCwN Cj4gPiArbWx4NV9mbG93X2NvbnZlcnRfaXRlbXNfdmFsaWRhdGUoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsDQo+ID4gIAkJCQkgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gaXRlbXNbXSwNCj4g PiAgCQkJCSBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yLA0KPiA+ICAJCQkJIHN0cnVjdCBt bHg1X2Zsb3dfcGFyc2UgKnBhcnNlcikNCj4gPiAgew0KPiA+ICsJc3RydWN0IHByaXYgKnByaXYg PSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICAJY29uc3Qgc3RydWN0IG1seDVfZmxvd19p dGVtcyAqY3VyX2l0ZW0gPSBtbHg1X2Zsb3dfaXRlbXM7DQo+ID4gIAl1bnNpZ25lZCBpbnQgaTsN Cj4gPiAgCWludCByZXQgPSAwOw0KPiA+IEBAIC04ODYsNiArOTAwLDE0IEBAIG1seDVfZmxvd19j b252ZXJ0X2l0ZW1zX3ZhbGlkYXRlKHN0cnVjdCBydGVfZXRoX2Rldg0KPiAqZGV2IF9fcnRlX3Vu dXNlZCwNCj4gPiAgCQkJCQkJICAgIiB0dW5uZWwgZW5jYXBzdWxhdGlvbnMuIik7DQo+ID4gIAkJ CQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAgCQkJfQ0KPiA+ICsJCQlpZiAoIXByaXYtPmNvbmZp Zy50dW5uZWxfZW4gJiYNCj4gPiArCQkJICAgIHBhcnNlci0+cnNzX2NvbmYubGV2ZWwpIHsNCj4g PiArCQkJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwNCj4gPiArCQkJCQlSVEVf RkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJaXRlbXMsDQo+ID4gKwkJCQkJIlR1bm5l bCBvZmZsb2FkaW5nIG5vdCBlbmFibGVkIik7DQo+IA0KPiBJIHdvdWxkIHN1Z2dlc3QgIlJTUyBv biB0dW5uZWwgaXMgbm90IHN1cHBvcnRlZCIuDQoNClRoYW5rcywgdXBkYXRlZC4NCg0KPiANCj4g PiArCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPiA+ICsJCQl9DQo+ID4gIAkJCXBhcnNlci0+aW5u ZXIgPSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICAJCQlwYXJzZXItPnR1bm5lbCA9IGZsb3df cHR5cGVbaXRlbXMtPnR5cGVdOw0KPiA+ICAJCX0NCj4gPiBAQCAtOTkzLDcgKzEwMTUsMTEgQEAg c3RhdGljIHZvaWQNCj4gPiAgbWx4NV9mbG93X2NvbnZlcnRfZmluYWxpc2Uoc3RydWN0IG1seDVf Zmxvd19wYXJzZSAqcGFyc2VyKSAgew0KPiA+ICAJdW5zaWduZWQgaW50IGk7DQo+ID4gKwl1aW50 MzJfdCBpbm5lciA9IHBhcnNlci0+aW5uZXI7DQo+ID4NCj4gPiArCS8qIERvbid0IGNyZWF0ZSBl eHRyYSBmbG93cyBmb3Igb3V0ZXIgUlNTLiAqLw0KPiA+ICsJaWYgKHBhcnNlci0+dHVubmVsICYm ICFwYXJzZXItPnJzc19jb25mLmxldmVsKQ0KPiA+ICsJCXJldHVybjsNCj4gPiAgCS8qIFJlbW92 ZSBhbnkgb3RoZXIgZmxvdyBub3QgbWF0Y2hpbmcgdGhlIHBhdHRlcm4uICovDQo+ID4gIAlpZiAo cGFyc2VyLT5yc3NfY29uZi5xdWV1ZV9udW0gPT0gMSAmJiAhcGFyc2VyLT5yc3NfY29uZi50eXBl cykgew0KPiA+ICAJCWZvciAoaSA9IDA7IGkgIT0gaGFzaF9yeHFfaW5pdF9uOyArK2kpIHsgQEAg LTEwMTQsMjMgKzEwNDAsMjUNCj4gQEANCj4gPiBtbHg1X2Zsb3dfY29udmVydF9maW5hbGlzZShz dHJ1Y3QgbWx4NV9mbG93X3BhcnNlICpwYXJzZXIpDQo+ID4gIAkJCXN0cnVjdCBpYnZfZmxvd19z cGVjX2lwdjRfZXh0IGlwdjQ7DQo+ID4gIAkJCXN0cnVjdCBpYnZfZmxvd19zcGVjX2lwdjYgaXB2 NjsNCj4gPiAgCQkJc3RydWN0IGlidl9mbG93X3NwZWNfdGNwX3VkcCB1ZHBfdGNwOw0KPiA+ICsJ CQlzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19ldGggZXRoOw0KPiA+ICAJCX0gc3BlY3M7DQo+ID4gIAkJ dm9pZCAqZHN0Ow0KPiA+ICAJCXVpbnQxNl90IHNpemU7DQo+ID4NCj4gPiAgCQlpZiAoaSA9PSBw YXJzZXItPmxheWVyKQ0KPiA+ICAJCQljb250aW51ZTsNCj4gPiAtCQlpZiAocGFyc2VyLT5sYXll ciA9PSBIQVNIX1JYUV9FVEgpIHsNCj4gPiArCQlpZiAocGFyc2VyLT5sYXllciA9PSBIQVNIX1JY UV9FVEggfHwNCj4gPiArCQkgICAgcGFyc2VyLT5sYXllciA9PSBIQVNIX1JYUV9UVU5ORUwpIHsN Cj4gPiAgCQkJaWYgKGhhc2hfcnhxX2luaXRbaV0uaXBfdmVyc2lvbiA9PSBNTFg1X0lQVjQpIHsN Cj4gPiAgCQkJCXNpemUgPSBzaXplb2Yoc3RydWN0IGlidl9mbG93X3NwZWNfaXB2NF9leHQpOw0K PiA+ICAJCQkJc3BlY3MuaXB2NCA9IChzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19pcHY0X2V4dCl7DQo+ ID4gLQkJCQkJLnR5cGUgPSBJQlZfRkxPV19TUEVDX0lQVjRfRVhULA0KPiA+ICsJCQkJCS50eXBl ID0gaW5uZXIgfCBJQlZfRkxPV19TUEVDX0lQVjRfRVhULA0KPiA+ICAJCQkJCS5zaXplID0gc2l6 ZSwNCj4gPiAgCQkJCX07DQo+ID4gIAkJCX0gZWxzZSB7DQo+ID4gIAkJCQlzaXplID0gc2l6ZW9m KHN0cnVjdCBpYnZfZmxvd19zcGVjX2lwdjYpOw0KPiA+ICAJCQkJc3BlY3MuaXB2NiA9IChzdHJ1 Y3QgaWJ2X2Zsb3dfc3BlY19pcHY2KXsNCj4gPiAtCQkJCQkudHlwZSA9IElCVl9GTE9XX1NQRUNf SVBWNiwNCj4gPiArCQkJCQkudHlwZSA9IGlubmVyIHwgSUJWX0ZMT1dfU1BFQ19JUFY2LA0KPiA+ ICAJCQkJCS5zaXplID0gc2l6ZSwNCj4gPiAgCQkJCX07DQo+ID4gIAkJCX0NCj4gPiBAQCAtMTA0 Nyw3ICsxMDc1LDcgQEAgbWx4NV9mbG93X2NvbnZlcnRfZmluYWxpc2Uoc3RydWN0IG1seDVfZmxv d19wYXJzZQ0KPiAqcGFyc2VyKQ0KPiA+ICAJCSAgICAoaSA9PSBIQVNIX1JYUV9VRFBWNikgfHwg KGkgPT0gSEFTSF9SWFFfVENQVjYpKSB7DQo+ID4gIAkJCXNpemUgPSBzaXplb2Yoc3RydWN0IGli dl9mbG93X3NwZWNfdGNwX3VkcCk7DQo+ID4gIAkJCXNwZWNzLnVkcF90Y3AgPSAoc3RydWN0IGli dl9mbG93X3NwZWNfdGNwX3VkcCkgew0KPiA+IC0JCQkJLnR5cGUgPSAoKGkgPT0gSEFTSF9SWFFf VURQVjQgfHwNCj4gPiArCQkJCS50eXBlID0gaW5uZXIgfCAoKGkgPT0gSEFTSF9SWFFfVURQVjQg fHwNCj4gPiAgCQkJCQkgIGkgPT0gSEFTSF9SWFFfVURQVjYpID8NCj4gPiAgCQkJCQkgSUJWX0ZM T1dfU1BFQ19VRFAgOg0KPiA+ICAJCQkJCSBJQlZfRkxPV19TUEVDX1RDUCksDQo+ID4gQEAgLTEw NjgsNiArMTA5Niw4IEBAIG1seDVfZmxvd19jb252ZXJ0X2ZpbmFsaXNlKHN0cnVjdA0KPiA+IG1s eDVfZmxvd19wYXJzZSAqcGFyc2VyKQ0KPiA+ICAvKioNCj4gPiAgICogVXBkYXRlIGZsb3dzIGFj Y29yZGluZyB0byBwYXR0ZXJuIGFuZCBSU1MgaGFzaCBmaWVsZHMuDQo+ID4gICAqDQo+ID4gKyAq IEBwYXJhbSBkZXYNCj4gPiArICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZS4NCj4gPiAg ICogQHBhcmFtW2luLCBvdXRdIHBhcnNlcg0KPiA+ICAgKiAgIEludGVybmFsIHBhcnNlciBzdHJ1 Y3R1cmUuDQo+ID4gICAqDQo+ID4gQEAgLTEwNzUsMjAgKzExMDUsNjMgQEAgbWx4NV9mbG93X2Nv bnZlcnRfZmluYWxpc2Uoc3RydWN0DQo+IG1seDVfZmxvd19wYXJzZSAqcGFyc2VyKQ0KPiA+ICAg KiAgIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0 ZV9lcnJubyBpcw0KPiBzZXQuDQo+ID4gICAqLw0KPiA+ICBzdGF0aWMgaW50DQo+ID4gLW1seDVf Zmxvd19jb252ZXJ0X3JzcyhzdHJ1Y3QgbWx4NV9mbG93X3BhcnNlICpwYXJzZXIpDQo+ID4gK21s eDVfZmxvd19jb252ZXJ0X3JzcyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IG1seDVf Zmxvd19wYXJzZQ0KPiA+ICsqcGFyc2VyKQ0KPiA+ICB7DQo+ID4gLQljb25zdCB1bnNpZ25lZCBp bnQgaXB2NCA9DQo+ID4gKwl1bnNpZ25lZCBpbnQgaXB2NCA9DQo+ID4gIAkJaGFzaF9yeHFfaW5p dFtwYXJzZXItPmxheWVyXS5pcF92ZXJzaW9uID09IE1MWDVfSVBWNDsNCj4gPiAgCWNvbnN0IGVu dW0gaGFzaF9yeHFfdHlwZSBobWluID0gaXB2NCA/IEhBU0hfUlhRX1RDUFY0IDoNCj4gSEFTSF9S WFFfVENQVjY7DQo+ID4gIAljb25zdCBlbnVtIGhhc2hfcnhxX3R5cGUgaG1heCA9IGlwdjQgPyBI QVNIX1JYUV9JUFY0IDogSEFTSF9SWFFfSVBWNjsNCj4gPiAgCWNvbnN0IGVudW0gaGFzaF9yeHFf dHlwZSBvaG1pbiA9IGlwdjQgPyBIQVNIX1JYUV9UQ1BWNiA6DQo+IEhBU0hfUlhRX1RDUFY0Ow0K PiA+ICAJY29uc3QgZW51bSBoYXNoX3J4cV90eXBlIG9obWF4ID0gaXB2NCA/IEhBU0hfUlhRX0lQ VjYgOg0KPiBIQVNIX1JYUV9JUFY0Ow0KPiA+IC0JY29uc3QgZW51bSBoYXNoX3J4cV90eXBlIGlw ID0gaXB2NCA/IEhBU0hfUlhRX0lQVjQgOiBIQVNIX1JYUV9JUFY2Ow0KPiA+ICsJZW51bSBoYXNo X3J4cV90eXBlIGlwID0gaXB2NCA/IEhBU0hfUlhRX0lQVjQgOiBIQVNIX1JYUV9JUFY2Ow0KPiA+ ICAJdW5zaWduZWQgaW50IGk7DQo+ID4gKwlpbnQgZm91bmQgPSAwOw0KPiA+DQo+ID4gLQlpZiAo cGFyc2VyLT5sYXllciA9PSBIQVNIX1JYUV9FVEgpDQo+ID4gKwkvKg0KPiA+ICsJICogT3V0ZXIg UlNTLg0KPiA+ICsJICogSEFTSF9SWFFfRVRIIGlzIHRoZSBvbmx5IHJ1bGUgc2luY2UgdHVubmVs IHBhY2tldCBtYXRjaCB0aGlzDQo+ID4gKwkgKiBydWxlIG11c3QgbWF0Y2ggb3V0ZXIgcGF0dGVy bi4NCj4gPiArCSAqLw0KPiA+ICsJaWYgKHBhcnNlci0+dHVubmVsICYmICFwYXJzZXItPnJzc19j b25mLmxldmVsKSB7DQo+ID4gKwkJLyogUmVtb3ZlIGZsb3dzIG90aGVyIHRoYW4gZGVmYXVsdC4g Ki8NCj4gPiArCQlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbiAtIDE7ICsraSkgew0K PiA+ICsJCQlydGVfZnJlZShwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyKTsNCj4gPiArCQkJcGFy c2VyLT5xdWV1ZVtpXS5pYnZfYXR0ciA9IE5VTEw7DQo+ID4gKwkJfQ0KPiA+ICsJCWlwdjQgPSBo YXNoX3J4cV9pbml0W3BhcnNlci0+b3V0X2xheWVyXS5pcF92ZXJzaW9uID09DQo+IE1MWDVfSVBW NDsNCj4gPiArCQlpcCA9IGlwdjQgPyBIQVNIX1JYUV9JUFY0IDogSEFTSF9SWFFfSVBWNjsNCj4g PiArCQlpZiAoaGFzaF9yeHFfaW5pdFtwYXJzZXItPm91dF9sYXllcl0uZHBka19yc3NfaGYgJg0K PiA+ICsJCSAgICBwYXJzZXItPnJzc19jb25mLnR5cGVzKSB7DQo+ID4gKwkJCXBhcnNlci0+cXVl dWVbSEFTSF9SWFFfRVRIXS5oYXNoX2ZpZWxkcyA9DQo+ID4gKwkJCQloYXNoX3J4cV9pbml0W3Bh cnNlci0+b3V0X2xheWVyXS5oYXNoX2ZpZWxkczsNCj4gPiArCQl9IGVsc2UgaWYgKGlwICYmICho YXNoX3J4cV9pbml0W2lwXS5kcGRrX3Jzc19oZiAmDQo+ID4gKwkJICAgIHBhcnNlci0+cnNzX2Nv bmYudHlwZXMpKSB7DQo+ID4gKwkJCXBhcnNlci0+cXVldWVbSEFTSF9SWFFfRVRIXS5oYXNoX2Zp ZWxkcyA9DQo+ID4gKwkJCQloYXNoX3J4cV9pbml0W2lwXS5oYXNoX2ZpZWxkczsNCj4gPiArCQl9 IGVsc2UgaWYgKHBhcnNlci0+cnNzX2NvbmYudHlwZXMpIHsNCj4gPiArCQkJRFJWX0xPRyhXQVJO SU5HLA0KPiA+ICsJCQkJInBvcnQgJXUgcnNzIG91dGVyIGhhc2ggZnVuY3Rpb24gZG9lc24ndCBt YXRjaCINCj4gPiArCQkJCSIgcGF0dGVybiIsIGRldi0+ZGF0YS0+cG9ydF9pZCk7DQo+IA0KPiBI YXNoIGZ1bmN0aW9uLCB3aGF0IGRvIHlvdSBtZWFuID8gIEl0IHNlZW1zIHRvIGJlIHRoZSBsYXll cnMgb24gdGhlIG9uZXMNCj4gdGhlIFJTUyBpcyBjb25maWd1cmVkIHdoaWNoIGRvZXMgbm90IG1h dGNoIHRoZSBQYXR0ZXJuLg0KPiANCj4gU2luY2VyZWx5LCBJIHNlZSBzdWNoIHdhcm5pbmcgaGFw cGVuaW5nIEkgd2lsbCBmdWxseSBkb3VidCBvbiB0aGUgZmFjdCB0aGUNCj4gcnVsZSBoYXMgYmVl biB0YWtlbiBhbmQgYXBwbGllZC4NCj4gInBvcnQgMCByc3Mgb3V0ZXIgaGFzaCBmdW5jdGlvbiBk b2Vzbid0IG1hdGNoIHBhdHRlcm4iIC0tPiB3aGF0IHdpbGwNCj4gaGFwcGVuIHRvIHRoZSBwYWNr ZXRzIG1hdGNoaW5nIHN1Y2ggZmxvdz8gIFdpbGwgdGhleSBiZSBkcm9wcGVkPw0KPiBUaGlzIGlz IG5vdCBoZWxwaW5nIGF0IGFsbCwgc28gcGxlYXNlIHJlbW92ZSBpdC4NCj4gDQo+ID4gKwkJfQ0K PiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHBhcnNlci0+bGF5ZXIgPT0gSEFT SF9SWFFfRVRIIHx8IHBhcnNlci0+bGF5ZXIgPT0NCj4gSEFTSF9SWFFfVFVOTkVMKSB7DQo+ID4g KwkJLyogUmVtb3ZlIHVudXNlZCBmbG93cyBhY2NvcmRpbmcgdG8gaGFzaCBmdW5jdGlvbi4gKi8N Cj4gPiArCQlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbiAtIDE7ICsraSkgew0KPiA+ ICsJCQlpZiAoIXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHIpDQo+ID4gKwkJCQljb250aW51ZTsN Cj4gPiArCQkJaWYgKGhhc2hfcnhxX2luaXRbaV0uZHBka19yc3NfaGYgJg0KPiA+ICsJCQkgICAg cGFyc2VyLT5yc3NfY29uZi50eXBlcykgew0KPiA+ICsJCQkJcGFyc2VyLT5xdWV1ZVtpXS5oYXNo X2ZpZWxkcyA9DQo+ID4gKwkJCQkJaGFzaF9yeHFfaW5pdFtpXS5oYXNoX2ZpZWxkczsNCj4gPiAr CQkJCWNvbnRpbnVlOw0KPiA+ICsJCQl9DQo+ID4gKwkJCXJ0ZV9mcmVlKHBhcnNlci0+cXVldWVb aV0uaWJ2X2F0dHIpOw0KPiA+ICsJCQlwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyID0gTlVMTDsN Cj4gPiArCQl9DQo+ID4gIAkJcmV0dXJuIDA7DQo+ID4gLQkvKiBUaGlzIGxheWVyIGJlY29tZXMg dXNlbGVzcyBhcyB0aGUgcGF0dGVybiBkZWZpbmUgdW5kZXIgbGF5ZXJzLiAqLw0KPiA+ICsJfQ0K PiA+ICsJLyogUmVtb3ZlIEVUSCBsYXllciBmbG93LiAqLw0KPiA+ICAJcnRlX2ZyZWUocGFyc2Vy LT5xdWV1ZVtIQVNIX1JYUV9FVEhdLmlidl9hdHRyKTsNCj4gPiAgCXBhcnNlci0+cXVldWVbSEFT SF9SWFFfRVRIXS5pYnZfYXR0ciA9IE5VTEw7DQo+ID4gIAkvKiBSZW1vdmUgb3Bwb3NpdGUga2lu ZCBvZiBsYXllciBlLmcuIElQdjYgaWYgdGhlIHBhdHRlcm4gaXMgSVB2NC4NCj4gPiAqLyBAQCAt MTA5OCw5ICsxMTcxLDUyIEBAIG1seDVfZmxvd19jb252ZXJ0X3JzcyhzdHJ1Y3QgbWx4NV9mbG93 X3BhcnNlDQo+ICpwYXJzZXIpDQo+ID4gIAkJcnRlX2ZyZWUocGFyc2VyLT5xdWV1ZVtpXS5pYnZf YXR0cik7DQo+ID4gIAkJcGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0ciA9IE5VTEw7DQo+ID4gIAl9 DQo+ID4gLQkvKiBSZW1vdmUgaW1wb3NzaWJsZSBmbG93IGFjY29yZGluZyB0byB0aGUgUlNTIGNv bmZpZ3VyYXRpb24uICovDQo+ID4gLQlpZiAoaGFzaF9yeHFfaW5pdFtwYXJzZXItPmxheWVyXS5k cGRrX3Jzc19oZiAmDQo+ID4gLQkgICAgcGFyc2VyLT5yc3NfY29uZi50eXBlcykgew0KPiA+ICsJ LyoNCj4gPiArCSAqIEtlZXAgTDQgZmxvd3MgYXMgSVAgcGF0dGVybiBoYXMgdG8gc3VwcG9ydCBM NCBSU1MuDQo+ID4gKwkgKiBPdGhlcndpc2UsIG9ubHkga2VlcCB0aGUgZmxvdyB0aGF0IG1hdGNo IHRoZSBwYXR0ZXJuLg0KPiA+ICsJICovDQo+IA0KPiBUaGlzIGNvbW1lbnQgaXMgbm90IGNsZWFy LCBwbGVhc2UgcmUtd29yZCBpdC4NCj4gDQo+ID4gKwlpZiAocGFyc2VyLT5sYXllciAhPSBpcCkg ew0KPiA+ICsJCS8qIE9ubHkga2VlcCB0aGUgZmxvdyB0aGF0IG1hdGNoIHRoZSBwYXR0ZXJuLiAq Lw0KPiA+ICsJCWZvciAoaSA9IGhtaW47IGkgIT0gKGhtYXggKyAxKTsgKytpKSB7DQo+ID4gKwkJ CWlmIChpID09IHBhcnNlci0+bGF5ZXIpDQo+ID4gKwkJCQljb250aW51ZTsNCj4gPiArCQkJcnRl X2ZyZWUocGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0cik7DQo+ID4gKwkJCXBhcnNlci0+cXVldWVb aV0uaWJ2X2F0dHIgPSBOVUxMOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArCWlmIChwYXJzZXIt PnJzc19jb25mLnR5cGVzKSB7DQo+ID4gKwkJLyogUmVtb3ZlIGltcG9zc2libGUgZmxvdyBhY2Nv cmRpbmcgdG8gdGhlIFJTUyBjb25maWd1cmF0aW9uLg0KPiAqLw0KPiA+ICsJCWZvciAoaSA9IGht aW47IGkgIT0gKGhtYXggKyAxKTsgKytpKSB7DQo+ID4gKwkJCWlmICghcGFyc2VyLT5xdWV1ZVtp XS5pYnZfYXR0cikNCj4gPiArCQkJCWNvbnRpbnVlOw0KPiA+ICsJCQlpZiAocGFyc2VyLT5yc3Nf Y29uZi50eXBlcyAmDQo+ID4gKwkJCSAgICBoYXNoX3J4cV9pbml0W2ldLmRwZGtfcnNzX2hmKSB7 DQo+ID4gKwkJCQlwYXJzZXItPnF1ZXVlW2ldLmhhc2hfZmllbGRzID0NCj4gPiArCQkJCQloYXNo X3J4cV9pbml0W2ldLmhhc2hfZmllbGRzOw0KPiA+ICsJCQkJZm91bmQgPSAxOw0KPiA+ICsJCQkJ Y29udGludWU7DQo+ID4gKwkJCX0NCj4gPiArCQkJLyogTDQgZmxvdyBjb3VsZCBiZSB1c2VkIGZv ciBMMyBSU1MuICovDQo+ID4gKwkJCWlmIChpID09IHBhcnNlci0+bGF5ZXIgJiYgaSA8IGlwICYm DQo+ID4gKwkJCSAgICAoaGFzaF9yeHFfaW5pdFtpcF0uZHBka19yc3NfaGYgJg0KPiA+ICsJCQkg ICAgIHBhcnNlci0+cnNzX2NvbmYudHlwZXMpKSB7DQo+ID4gKwkJCQlwYXJzZXItPnF1ZXVlW2ld Lmhhc2hfZmllbGRzID0NCj4gPiArCQkJCQloYXNoX3J4cV9pbml0W2lwXS5oYXNoX2ZpZWxkczsN Cj4gPiArCQkJCWZvdW5kID0gMTsNCj4gPiArCQkJCWNvbnRpbnVlOw0KPiA+ICsJCQl9DQo+ID4g KwkJCS8qIEwzIGZsb3cgYW5kIEw0IGhhc2g6IG5vbi1yc3MgTDMgZmxvdy4gKi8NCj4gPiArCQkJ aWYgKGkgPT0gcGFyc2VyLT5sYXllciAmJiBpID09IGlwICYmIGZvdW5kKQ0KPiA+ICsJCQkJLyog SVAgcGF0dGVybiBhbmQgTDQgSEYuICovDQo+ID4gKwkJCQljb250aW51ZTsNCj4gPiArCQkJcnRl X2ZyZWUocGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0cik7DQo+ID4gKwkJCXBhcnNlci0+cXVldWVb aV0uaWJ2X2F0dHIgPSBOVUxMOw0KPiA+ICsJCX0NCj4gPiArCQlpZiAoIWZvdW5kKQ0KPiA+ICsJ CQlEUlZfTE9HKFdBUk5JTkcsDQo+ID4gKwkJCQkicG9ydCAldSByc3MgaGFzaCBmdW5jdGlvbiBk b2Vzbid0IG1hdGNoICINCj4gPiArCQkJCSJwYXR0ZXJuIiwgZGV2LT5kYXRhLT5wb3J0X2lkKTsN Cj4gDQo+IERpdG8uDQo+IA0KPiA+ICsJfSBlbHNlIHsNCj4gPiAgCQkvKiBSZW1vdmUgYW55IG90 aGVyIGZsb3cuICovDQo+ID4gIAkJZm9yIChpID0gaG1pbjsgaSAhPSAoaG1heCArIDEpOyArK2kp IHsNCj4gPiAgCQkJaWYgKGkgPT0gcGFyc2VyLT5sYXllciB8fCAhcGFyc2VyLT5xdWV1ZVtpXS5p YnZfYXR0cikgQEANCj4gLTExMDgsOA0KPiA+ICsxMjI0LDYgQEAgbWx4NV9mbG93X2NvbnZlcnRf cnNzKHN0cnVjdCBtbHg1X2Zsb3dfcGFyc2UgKnBhcnNlcikNCj4gPiAgCQkJcnRlX2ZyZWUocGFy c2VyLT5xdWV1ZVtpXS5pYnZfYXR0cik7DQo+ID4gIAkJCXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0 dHIgPSBOVUxMOw0KPiA+ICAJCX0NCj4gPiAtCX0gZWxzZSBpZiAoIXBhcnNlci0+cXVldWVbaXBd Lmlidl9hdHRyKSB7DQo+ID4gLQkJLyogbm8gUlNTIHBvc3NpYmxlIHdpdGggdGhlIGN1cnJlbnQg Y29uZmlndXJhdGlvbi4gKi8NCj4gPiAgCQlwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bSA9IDE7 DQo+ID4gIAl9DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiBAQCAtMTE3OSwxMCArMTI5Myw2IEBAIG1s eDVfZmxvd19jb252ZXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJCWZvciAoaSA9 IDA7IGkgIT0gaGFzaF9yeHFfaW5pdF9uOyArK2kpIHsNCj4gPiAgCQkJdW5zaWduZWQgaW50IG9m ZnNldDsNCj4gPg0KPiA+IC0JCQlpZiAoIShwYXJzZXItPnJzc19jb25mLnR5cGVzICYNCj4gPiAt CQkJICAgICAgaGFzaF9yeHFfaW5pdFtpXS5kcGRrX3Jzc19oZikgJiYNCj4gPiAtCQkJICAgIChp ICE9IEhBU0hfUlhRX0VUSCkpDQo+ID4gLQkJCQljb250aW51ZTsNCj4gPiAgCQkJb2Zmc2V0ID0g cGFyc2VyLT5xdWV1ZVtpXS5vZmZzZXQ7DQo+ID4gIAkJCXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0 dHIgPQ0KPiA+ICAJCQkJbWx4NV9mbG93X2NvbnZlcnRfYWxsb2NhdGUob2Zmc2V0LCBlcnJvcik7 IEBAIC0NCj4gMTE5NCw2ICsxMzA0LDcgQEANCj4gPiBtbHg1X2Zsb3dfY29udmVydChzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCS8qIFRoaXJkIHN0ZXAuIENvbnZlcnNpb24gcGFyc2Us IGZpbGwgdGhlIHNwZWNpZmljYXRpb25zLiAqLw0KPiA+ICAJcGFyc2VyLT5pbm5lciA9IDA7DQo+ ID4gIAlwYXJzZXItPnR1bm5lbCA9IDA7DQo+ID4gKwlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFf RVRIOw0KPiA+ICAJZm9yICg7IGl0ZW1zLT50eXBlICE9IFJURV9GTE9XX0lURU1fVFlQRV9FTkQ7 ICsraXRlbXMpIHsNCj4gPiAgCQlzdHJ1Y3QgbWx4NV9mbG93X2RhdGEgZGF0YSA9IHsNCj4gPiAg CQkJLnBhcnNlciA9IHBhcnNlciwNCj4gPiBAQCAtMTIxMSwyMyArMTMyMiwyMyBAQCBtbHg1X2Zs b3dfY29udmVydChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQlpZiAocmV0KQ0KPiA+ ICAJCQlnb3RvIGV4aXRfZnJlZTsNCj4gPiAgCX0NCj4gPiAtCWlmIChwYXJzZXItPm1hcmspDQo+ ID4gLQkJbWx4NV9mbG93X2NyZWF0ZV9mbGFnX21hcmsocGFyc2VyLCBwYXJzZXItPm1hcmtfaWQp Ow0KPiA+IC0JaWYgKHBhcnNlci0+Y291bnQgJiYgcGFyc2VyLT5jcmVhdGUpIHsNCj4gPiAtCQlt bHg1X2Zsb3dfY3JlYXRlX2NvdW50KGRldiwgcGFyc2VyKTsNCj4gPiAtCQlpZiAoIXBhcnNlci0+ Y3MpDQo+ID4gLQkJCWdvdG8gZXhpdF9jb3VudF9lcnJvcjsNCj4gPiAtCX0NCj4gPiAgCS8qDQo+ ID4gIAkgKiBMYXN0IHN0ZXAuIENvbXBsZXRlIG1pc3Npbmcgc3BlY2lmaWNhdGlvbiB0byByZWFj aCB0aGUgUlNTDQo+ID4gIAkgKiBjb25maWd1cmF0aW9uLg0KPiA+ICAJICovDQo+ID4gIAlpZiAo IXBhcnNlci0+ZHJvcCkNCj4gPiAtCQlyZXQgPSBtbHg1X2Zsb3dfY29udmVydF9yc3MocGFyc2Vy KTsNCj4gPiArCQlyZXQgPSBtbHg1X2Zsb3dfY29udmVydF9yc3MoZGV2LCBwYXJzZXIpOw0KPiA+ ICAJCWlmIChyZXQpDQo+ID4gIAkJCWdvdG8gZXhpdF9mcmVlOw0KPiA+ICAJCW1seDVfZmxvd19j b252ZXJ0X2ZpbmFsaXNlKHBhcnNlcik7DQo+ID4gIAltbHg1X2Zsb3dfdXBkYXRlX3ByaW9yaXR5 KGRldiwgcGFyc2VyLCBhdHRyKTsNCj4gPiArCWlmIChwYXJzZXItPm1hcmspDQo+ID4gKwkJbWx4 NV9mbG93X2NyZWF0ZV9mbGFnX21hcmsocGFyc2VyLCBwYXJzZXItPm1hcmtfaWQpOw0KPiA+ICsJ aWYgKHBhcnNlci0+Y291bnQgJiYgcGFyc2VyLT5jcmVhdGUpIHsNCj4gPiArCQltbHg1X2Zsb3df Y3JlYXRlX2NvdW50KGRldiwgcGFyc2VyKTsNCj4gPiArCQlpZiAoIXBhcnNlci0+Y3MpDQo+ID4g KwkJCWdvdG8gZXhpdF9jb3VudF9lcnJvcjsNCj4gPiArCX0NCj4gDQo+IFdoeSBkbyB5b3UgbmVl ZCB0byBtb3ZlIHRoaXMgY29kZT8NCg0KVG8gYXZvaWQgY291bnRlciByZXNvdXJjZSBtaXNzaW5n IGlmIGFueXRoaW5nIHdyb25nIGluIGZ1bmN0aW9uIA0KbWx4NV9mbG93X2NvbnZlcnRfcnNzKCku DQoNCj4gDQo+ID4gIGV4aXRfZnJlZToNCj4gPiAgCS8qIE9ubHkgdmVyaWZpY2F0aW9uIGlzIGV4 cGVjdGVkLCBhbGwgcmVzb3VyY2VzIHNob3VsZCBiZSByZWxlYXNlZC4NCj4gKi8NCj4gPiAgCWlm ICghcGFyc2VyLT5jcmVhdGUpIHsNCj4gPiBAQCAtMTI3NSwxNyArMTM4NiwxMSBAQCBtbHg1X2Zs b3dfY3JlYXRlX2NvcHkoc3RydWN0IG1seDVfZmxvd19wYXJzZQ0KPiAqcGFyc2VyLCB2b2lkICpz cmMsDQo+ID4gIAlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbjsgKytpKSB7DQo+ID4g IAkJaWYgKCFwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyKQ0KPiA+ICAJCQljb250aW51ZTsNCj4g PiAtCQkvKiBTcGVjaWZpY2F0aW9uIG11c3QgYmUgdGhlIHNhbWUgbDMgdHlwZSBvciBub25lLiAq Lw0KPiA+IC0JCWlmIChwYXJzZXItPmxheWVyID09IEhBU0hfUlhRX0VUSCB8fA0KPiA+IC0JCSAg ICAoaGFzaF9yeHFfaW5pdFtwYXJzZXItPmxheWVyXS5pcF92ZXJzaW9uID09DQo+ID4gLQkJICAg ICBoYXNoX3J4cV9pbml0W2ldLmlwX3ZlcnNpb24pIHx8DQo+ID4gLQkJICAgIChoYXNoX3J4cV9p bml0W2ldLmlwX3ZlcnNpb24gPT0gMCkpIHsNCj4gPiAtCQkJZHN0ID0gKHZvaWQgKikoKHVpbnRw dHJfdClwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyICsNCj4gPiAtCQkJCQlwYXJzZXItPnF1ZXVl W2ldLm9mZnNldCk7DQo+ID4gLQkJCW1lbWNweShkc3QsIHNyYywgc2l6ZSk7DQo+ID4gLQkJCSsr cGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0ci0+bnVtX29mX3NwZWNzOw0KPiA+IC0JCQlwYXJzZXIt PnF1ZXVlW2ldLm9mZnNldCArPSBzaXplOw0KPiA+IC0JCX0NCj4gPiArCQlkc3QgPSAodm9pZCAq KSgodWludHB0cl90KXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHIgKw0KPiA+ICsJCQkJcGFyc2Vy LT5xdWV1ZVtpXS5vZmZzZXQpOw0KPiA+ICsJCW1lbWNweShkc3QsIHNyYywgc2l6ZSk7DQo+ID4g KwkJKytwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyLT5udW1fb2Zfc3BlY3M7DQo+ID4gKwkJcGFy c2VyLT5xdWV1ZVtpXS5vZmZzZXQgKz0gc2l6ZTsNCj4gPiAgCX0NCj4gPiAgfQ0KPiA+DQo+ID4g QEAgLTEzMTYsOSArMTQyMSw3IEBAIG1seDVfZmxvd19jcmVhdGVfZXRoKGNvbnN0IHN0cnVjdCBy dGVfZmxvd19pdGVtDQo+ICppdGVtLA0KPiA+ICAJCS5zaXplID0gZXRoX3NpemUsDQo+ID4gIAl9 Ow0KPiA+DQo+ID4gLQkvKiBEb24ndCB1cGRhdGUgbGF5ZXIgZm9yIHRoZSBpbm5lciBwYXR0ZXJu LiAqLw0KPiA+IC0JaWYgKCFwYXJzZXItPmlubmVyKQ0KPiA+IC0JCXBhcnNlci0+bGF5ZXIgPSBI QVNIX1JYUV9FVEg7DQo+ID4gKwlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFfRVRIOw0KPiA+ICAJ aWYgKHNwZWMpIHsNCj4gPiAgCQl1bnNpZ25lZCBpbnQgaTsNCj4gPg0KPiA+IEBAIC0xNDMxLDkg KzE1MzQsNyBAQCBtbHg1X2Zsb3dfY3JlYXRlX2lwdjQoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0 ZW0NCj4gKml0ZW0sDQo+ID4gIAkJLnNpemUgPSBpcHY0X3NpemUsDQo+ID4gIAl9Ow0KPiA+DQo+ ID4gLQkvKiBEb24ndCB1cGRhdGUgbGF5ZXIgZm9yIHRoZSBpbm5lciBwYXR0ZXJuLiAqLw0KPiA+ IC0JaWYgKCFwYXJzZXItPmlubmVyKQ0KPiA+IC0JCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9J UFY0Ow0KPiA+ICsJcGFyc2VyLT5sYXllciA9IEhBU0hfUlhRX0lQVjQ7DQo+ID4gIAlpZiAoc3Bl Yykgew0KPiA+ICAJCWlmICghbWFzaykNCj4gPiAgCQkJbWFzayA9IGRlZmF1bHRfbWFzazsNCj4g PiBAQCAtMTQ4Niw5ICsxNTg3LDcgQEAgbWx4NV9mbG93X2NyZWF0ZV9pcHY2KGNvbnN0IHN0cnVj dCBydGVfZmxvd19pdGVtDQo+ICppdGVtLA0KPiA+ICAJCS5zaXplID0gaXB2Nl9zaXplLA0KPiA+ ICAJfTsNCj4gPg0KPiA+IC0JLyogRG9uJ3QgdXBkYXRlIGxheWVyIGZvciB0aGUgaW5uZXIgcGF0 dGVybi4gKi8NCj4gPiAtCWlmICghcGFyc2VyLT5pbm5lcikNCj4gPiAtCQlwYXJzZXItPmxheWVy ID0gSEFTSF9SWFFfSVBWNjsNCj4gPiArCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9JUFY2Ow0K PiA+ICAJaWYgKHNwZWMpIHsNCj4gPiAgCQl1bnNpZ25lZCBpbnQgaTsNCj4gPiAgCQl1aW50MzJf dCB2dGNfZmxvd192YWw7DQo+ID4gQEAgLTE1NjEsMTMgKzE2NjAsMTAgQEAgbWx4NV9mbG93X2Ny ZWF0ZV91ZHAoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0NCj4gKml0ZW0sDQo+ID4gIAkJLnNp emUgPSB1ZHBfc2l6ZSwNCj4gPiAgCX07DQo+ID4NCj4gPiAtCS8qIERvbid0IHVwZGF0ZSBsYXll ciBmb3IgdGhlIGlubmVyIHBhdHRlcm4uICovDQo+ID4gLQlpZiAoIXBhcnNlci0+aW5uZXIpIHsN Cj4gPiAtCQlpZiAocGFyc2VyLT5sYXllciA9PSBIQVNIX1JYUV9JUFY0KQ0KPiA+IC0JCQlwYXJz ZXItPmxheWVyID0gSEFTSF9SWFFfVURQVjQ7DQo+ID4gLQkJZWxzZQ0KPiA+IC0JCQlwYXJzZXIt PmxheWVyID0gSEFTSF9SWFFfVURQVjY7DQo+ID4gLQl9DQo+ID4gKwlpZiAocGFyc2VyLT5sYXll ciA9PSBIQVNIX1JYUV9JUFY0KQ0KPiA+ICsJCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9VRFBW NDsNCj4gPiArCWVsc2UNCj4gPiArCQlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFfVURQVjY7DQo+ ID4gIAlpZiAoc3BlYykgew0KPiA+ICAJCWlmICghbWFzaykNCj4gPiAgCQkJbWFzayA9IGRlZmF1 bHRfbWFzazsNCj4gPiBAQCAtMTYxMCwxMyArMTcwNiwxMCBAQCBtbHg1X2Zsb3dfY3JlYXRlX3Rj cChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbQ0KPiAqaXRlbSwNCj4gPiAgCQkuc2l6ZSA9IHRj cF9zaXplLA0KPiA+ICAJfTsNCj4gPg0KPiA+IC0JLyogRG9uJ3QgdXBkYXRlIGxheWVyIGZvciB0 aGUgaW5uZXIgcGF0dGVybi4gKi8NCj4gPiAtCWlmICghcGFyc2VyLT5pbm5lcikgew0KPiA+IC0J CWlmIChwYXJzZXItPmxheWVyID09IEhBU0hfUlhRX0lQVjQpDQo+ID4gLQkJCXBhcnNlci0+bGF5 ZXIgPSBIQVNIX1JYUV9UQ1BWNDsNCj4gPiAtCQllbHNlDQo+ID4gLQkJCXBhcnNlci0+bGF5ZXIg PSBIQVNIX1JYUV9UQ1BWNjsNCj4gPiAtCX0NCj4gPiArCWlmIChwYXJzZXItPmxheWVyID09IEhB U0hfUlhRX0lQVjQpDQo+ID4gKwkJcGFyc2VyLT5sYXllciA9IEhBU0hfUlhRX1RDUFY0Ow0KPiA+ ICsJZWxzZQ0KPiA+ICsJCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9UQ1BWNjsNCj4gPiAgCWlm IChzcGVjKSB7DQo+ID4gIAkJaWYgKCFtYXNrKQ0KPiA+ICAJCQltYXNrID0gZGVmYXVsdF9tYXNr Ow0KPiA+IEBAIC0xNjY2LDYgKzE3NTksOCBAQCBtbHg1X2Zsb3dfY3JlYXRlX3Z4bGFuKGNvbnN0 IHN0cnVjdCBydGVfZmxvd19pdGVtDQo+ICppdGVtLA0KPiA+ICAJaWQudm5pWzBdID0gMDsNCj4g PiAgCXBhcnNlci0+aW5uZXIgPSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICAJcGFyc2VyLT50 dW5uZWwgPSBwdHlwZV9leHRbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfVlhMQU4pXTsNCj4g PiArCXBhcnNlci0+b3V0X2xheWVyID0gcGFyc2VyLT5sYXllcjsNCj4gPiArCXBhcnNlci0+bGF5 ZXIgPSBIQVNIX1JYUV9UVU5ORUw7DQo+ID4gIAlpZiAoc3BlYykgew0KPiA+ICAJCWlmICghbWFz aykNCj4gPiAgCQkJbWFzayA9IGRlZmF1bHRfbWFzazsNCj4gPiBAQCAtMTcyMCw2ICsxODE1LDgg QEAgbWx4NV9mbG93X2NyZWF0ZV9ncmUoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0NCj4gPiAq aXRlbSBfX3J0ZV91bnVzZWQsDQo+ID4NCj4gPiAgCXBhcnNlci0+aW5uZXIgPSBJQlZfRkxPV19T UEVDX0lOTkVSOw0KPiA+ICAJcGFyc2VyLT50dW5uZWwgPSBwdHlwZV9leHRbUFRZUEVfSURYKFJU RV9QVFlQRV9UVU5ORUxfR1JFKV07DQo+ID4gKwlwYXJzZXItPm91dF9sYXllciA9IHBhcnNlci0+ bGF5ZXI7DQo+ID4gKwlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFfVFVOTkVMOw0KPiA+ICAJbWx4 NV9mbG93X2NyZWF0ZV9jb3B5KHBhcnNlciwgJnR1bm5lbCwgc2l6ZSk7DQo+ID4gIAlyZXR1cm4g MDsNCj4gPiAgfQ0KPiA+IEBAIC0xODgzLDMzICsxOTgwLDMzIEBAIG1seDVfZmxvd19jcmVhdGVf YWN0aW9uX3F1ZXVlX3JzcyhzdHJ1Y3QNCj4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCXVuc2ln bmVkIGludCBpOw0KPiA+DQo+ID4gIAlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbjsg KytpKSB7DQo+ID4gLQkJdWludDY0X3QgaGFzaF9maWVsZHM7DQo+ID4gLQ0KPiA+ICAJCWlmICgh cGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0cikNCj4gPiAgCQkJY29udGludWU7DQo+ID4gIAkJZmxv dy0+ZnJ4cVtpXS5pYnZfYXR0ciA9IHBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHI7DQo+ID4gIAkJ cGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0ciA9IE5VTEw7DQo+ID4gLQkJaGFzaF9maWVsZHMgPSBo YXNoX3J4cV9pbml0W2ldLmhhc2hfZmllbGRzOw0KPiA+ICsJCWZsb3ctPmZyeHFbaV0uaGFzaF9m aWVsZHMgPSBwYXJzZXItPnF1ZXVlW2ldLmhhc2hfZmllbGRzOw0KPiA+ICAJCWlmICghcHJpdi0+ ZGV2LT5kYXRhLT5kZXZfc3RhcnRlZCkNCj4gPiAgCQkJY29udGludWU7DQo+ID4gIAkJZmxvdy0+ ZnJ4cVtpXS5ocnhxID0NCj4gPiAgCQkJbWx4NV9ocnhxX2dldChkZXYsDQo+ID4gIAkJCQkgICAg ICBwYXJzZXItPnJzc19jb25mLmtleSwNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYu a2V5X2xlbiwNCj4gPiAtCQkJCSAgICAgIGhhc2hfZmllbGRzLA0KPiA+ICsJCQkJICAgICAgZmxv dy0+ZnJ4cVtpXS5oYXNoX2ZpZWxkcywNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYu cXVldWUsDQo+ID4gIAkJCQkgICAgICBwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiAt CQkJCSAgICAgIHBhcnNlci0+dHVubmVsKTsNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+dHVubmVs LA0KPiA+ICsJCQkJICAgICAgcGFyc2VyLT5yc3NfY29uZi5sZXZlbCk7DQo+ID4gIAkJaWYgKGZs b3ctPmZyeHFbaV0uaHJ4cSkNCj4gPiAgCQkJY29udGludWU7DQo+ID4gIAkJZmxvdy0+ZnJ4cVtp XS5ocnhxID0NCj4gPiAgCQkJbWx4NV9ocnhxX25ldyhkZXYsDQo+ID4gIAkJCQkgICAgICBwYXJz ZXItPnJzc19jb25mLmtleSwNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYua2V5X2xl biwNCj4gPiAtCQkJCSAgICAgIGhhc2hfZmllbGRzLA0KPiA+ICsJCQkJICAgICAgZmxvdy0+ZnJ4 cVtpXS5oYXNoX2ZpZWxkcywNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYucXVldWUs DQo+ID4gIAkJCQkgICAgICBwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiAtCQkJCSAg ICAgIHBhcnNlci0+dHVubmVsKTsNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+dHVubmVsLA0KPiA+ ICsJCQkJICAgICAgcGFyc2VyLT5yc3NfY29uZi5sZXZlbCk7DQo+ID4gIAkJaWYgKCFmbG93LT5m cnhxW2ldLmhyeHEpIHsNCj4gPiAgCQkJcmV0dXJuIHJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwg RU5PTUVNLA0KPiA+ICAJCQkJCQkgIFJURV9GTE9XX0VSUk9SX1RZUEVfSEFORExFLA0KPiA+IEBA IC0yMDA2LDcgKzIxMDMsNyBAQCBtbHg1X2Zsb3dfY3JlYXRlX2FjdGlvbl9xdWV1ZShzdHJ1Y3Qg cnRlX2V0aF9kZXYNCj4gKmRldiwNCj4gPiAgCQlEUlZfTE9HKERFQlVHLCAicG9ydCAldSAlcCB0 eXBlICVkIFFQICVwIGlidl9mbG93ICVwIiwNCj4gPiAgCQkJZGV2LT5kYXRhLT5wb3J0X2lkLA0K PiA+ICAJCQkodm9pZCAqKWZsb3csIGksDQo+ID4gLQkJCSh2b2lkICopZmxvdy0+ZnJ4cVtpXS5o cnhxLA0KPiA+ICsJCQkodm9pZCAqKWZsb3ctPmZyeHFbaV0uaHJ4cS0+cXAsDQo+ID4gIAkJCSh2 b2lkICopZmxvdy0+ZnJ4cVtpXS5pYnZfZmxvdyk7DQo+ID4gIAl9DQo+ID4gIAlpZiAoIWZsb3dz X24pIHsNCj4gPiBAQCAtMjUzMiwxOSArMjYyOSwyMSBAQCBtbHg1X2Zsb3dfc3RhcnQoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdA0KPiBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJCQlm bG93LT5mcnhxW2ldLmhyeHEgPQ0KPiA+ICAJCQkJbWx4NV9ocnhxX2dldChkZXYsIGZsb3ctPnJz c19jb25mLmtleSwNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5rZXlfbGVuLA0KPiA+ IC0JCQkJCSAgICAgIGhhc2hfcnhxX2luaXRbaV0uaGFzaF9maWVsZHMsDQo+ID4gKwkJCQkJICAg ICAgZmxvdy0+ZnJ4cVtpXS5oYXNoX2ZpZWxkcywNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3Nf Y29uZi5xdWV1ZSwNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5xdWV1ZV9udW0sDQo+ ID4gLQkJCQkJICAgICAgZmxvdy0+dHVubmVsKTsNCj4gPiArCQkJCQkgICAgICBmbG93LT50dW5u ZWwsDQo+ID4gKwkJCQkJICAgICAgZmxvdy0+cnNzX2NvbmYubGV2ZWwpOw0KPiA+ICAJCQlpZiAo Zmxvdy0+ZnJ4cVtpXS5ocnhxKQ0KPiA+ICAJCQkJZ290byBmbG93X2NyZWF0ZTsNCj4gPiAgCQkJ Zmxvdy0+ZnJ4cVtpXS5ocnhxID0NCj4gPiAgCQkJCW1seDVfaHJ4cV9uZXcoZGV2LCBmbG93LT5y c3NfY29uZi5rZXksDQo+ID4gIAkJCQkJICAgICAgZmxvdy0+cnNzX2NvbmYua2V5X2xlbiwNCj4g PiAtCQkJCQkgICAgICBoYXNoX3J4cV9pbml0W2ldLmhhc2hfZmllbGRzLA0KPiA+ICsJCQkJCSAg ICAgIGZsb3ctPmZyeHFbaV0uaGFzaF9maWVsZHMsDQo+ID4gIAkJCQkJICAgICAgZmxvdy0+cnNz X2NvbmYucXVldWUsDQo+ID4gIAkJCQkJICAgICAgZmxvdy0+cnNzX2NvbmYucXVldWVfbnVtLA0K PiA+IC0JCQkJCSAgICAgIGZsb3ctPnR1bm5lbCk7DQo+ID4gKwkJCQkJICAgICAgZmxvdy0+dHVu bmVsLA0KPiA+ICsJCQkJCSAgICAgIGZsb3ctPnJzc19jb25mLmxldmVsKTsNCj4gPiAgCQkJaWYg KCFmbG93LT5mcnhxW2ldLmhyeHEpIHsNCj4gPiAgCQkJCURSVl9MT0coREVCVUcsDQo+ID4gIAkJ CQkJInBvcnQgJXUgZmxvdyAlcCBjYW5ub3QgYmUgYXBwbGllZCIsIGRpZmYgLS0NCj4gZ2l0DQo+ ID4gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5jIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1 X2dsdWUuYyBpbmRleA0KPiA+IGJlNjg0ZDM3OC4uNjg3NGFhMzJhIDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1 L21seDVfZ2x1ZS5jDQo+ID4gQEAgLTMxMyw2ICszMTMsMjEgQEAgbWx4NV9nbHVlX2R2X2luaXRf b2JqKHN0cnVjdCBtbHg1ZHZfb2JqICpvYmosDQo+IHVpbnQ2NF90IG9ial90eXBlKQ0KPiA+ICAJ cmV0dXJuIG1seDVkdl9pbml0X29iaihvYmosIG9ial90eXBlKTsgIH0NCj4gPg0KPiA+ICtzdGF0 aWMgc3RydWN0IGlidl9xcCAqDQo+ID4gK21seDVfZ2x1ZV9kdl9jcmVhdGVfcXAoc3RydWN0IGli dl9jb250ZXh0ICpjb250ZXh0LA0KPiA+ICsJCSAgICAgICBzdHJ1Y3QgaWJ2X3FwX2luaXRfYXR0 cl9leCAqcXBfaW5pdF9hdHRyX2V4LA0KPiA+ICsJCSAgICAgICBzdHJ1Y3QgbWx4NWR2X3FwX2lu aXRfYXR0ciAqZHZfcXBfaW5pdF9hdHRyKSB7ICNpZmRlZg0KPiA+ICtIQVZFX0lCVl9ERVZJQ0Vf VFVOTkVMX1NVUFBPUlQNCj4gPiArCXJldHVybiBtbHg1ZHZfY3JlYXRlX3FwKGNvbnRleHQsIHFw X2luaXRfYXR0cl9leCwgZHZfcXBfaW5pdF9hdHRyKTsNCj4gPiArI2Vsc2UNCj4gPiArCSh2b2lk KWNvbnRleHQ7DQo+ID4gKwkodm9pZClxcF9pbml0X2F0dHJfZXg7DQo+ID4gKwkodm9pZClkdl9x cF9pbml0X2F0dHI7DQo+ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiArI2VuZGlmDQo+ID4gK30NCj4g PiArDQo+ID4gIGNvbnN0IHN0cnVjdCBtbHg1X2dsdWUgKm1seDVfZ2x1ZSA9ICYoY29uc3Qgc3Ry dWN0IG1seDVfZ2x1ZSl7DQo+ID4gIAkudmVyc2lvbiA9IE1MWDVfR0xVRV9WRVJTSU9OLA0KPiA+ ICAJLmZvcmtfaW5pdCA9IG1seDVfZ2x1ZV9mb3JrX2luaXQsDQo+ID4gQEAgLTM1Niw0ICszNzEs NSBAQCBjb25zdCBzdHJ1Y3QgbWx4NV9nbHVlICptbHg1X2dsdWUgPSAmKGNvbnN0IHN0cnVjdA0K PiBtbHg1X2dsdWUpew0KPiA+ICAJLmR2X3F1ZXJ5X2RldmljZSA9IG1seDVfZ2x1ZV9kdl9xdWVy eV9kZXZpY2UsDQo+ID4gIAkuZHZfc2V0X2NvbnRleHRfYXR0ciA9IG1seDVfZ2x1ZV9kdl9zZXRf Y29udGV4dF9hdHRyLA0KPiA+ICAJLmR2X2luaXRfb2JqID0gbWx4NV9nbHVlX2R2X2luaXRfb2Jq LA0KPiA+ICsJLmR2X2NyZWF0ZV9xcCA9IG1seDVfZ2x1ZV9kdl9jcmVhdGVfcXAsDQo+ID4gIH07 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmgNCj4gPiBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmggaW5kZXggYjVlZmVlM2I2Li44NDEzNjM4NzIgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2dsdWUuaA0KPiA+ICsrKyBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmgNCj4gPiBAQCAtMzEsNiArMzEsMTAgQEAgc3RydWN0 IGlidl9jb3VudGVyX3NldF9pbml0X2F0dHI7ICBzdHJ1Y3QNCj4gPiBpYnZfcXVlcnlfY291bnRl cl9zZXRfYXR0cjsgICNlbmRpZg0KPiA+DQo+ID4gKyNpZm5kZWYgSEFWRV9JQlZfREVWSUNFX1RV Tk5FTF9TVVBQT1JUIHN0cnVjdCBtbHg1ZHZfcXBfaW5pdF9hdHRyOw0KPiA+ICsjZW5kaWYNCj4g PiArDQo+ID4gIC8qIExJQl9HTFVFX1ZFUlNJT04gbXVzdCBiZSB1cGRhdGVkIGV2ZXJ5IHRpbWUg dGhpcyBzdHJ1Y3R1cmUgaXMNCj4gPiBtb2RpZmllZC4gKi8gIHN0cnVjdCBtbHg1X2dsdWUgew0K PiA+ICAJY29uc3QgY2hhciAqdmVyc2lvbjsNCj4gPiBAQCAtMTA2LDYgKzExMCwxMCBAQCBzdHJ1 Y3QgbWx4NV9nbHVlIHsNCj4gPiAgCQkJCSAgIGVudW0gbWx4NWR2X3NldF9jdHhfYXR0cl90eXBl IHR5cGUsDQo+ID4gIAkJCQkgICB2b2lkICphdHRyKTsNCj4gPiAgCWludCAoKmR2X2luaXRfb2Jq KShzdHJ1Y3QgbWx4NWR2X29iaiAqb2JqLCB1aW50NjRfdCBvYmpfdHlwZSk7DQo+ID4gKwlzdHJ1 Y3QgaWJ2X3FwICooKmR2X2NyZWF0ZV9xcCkNCj4gPiArCQkoc3RydWN0IGlidl9jb250ZXh0ICpj b250ZXh0LA0KPiA+ICsJCSBzdHJ1Y3QgaWJ2X3FwX2luaXRfYXR0cl9leCAqcXBfaW5pdF9hdHRy X2V4LA0KPiA+ICsJCSBzdHJ1Y3QgbWx4NWR2X3FwX2luaXRfYXR0ciAqZHZfcXBfaW5pdF9hdHRy KTsNCj4gPiAgfTsNCj4gPg0KPiA+ICBjb25zdCBzdHJ1Y3QgbWx4NV9nbHVlICptbHg1X2dsdWU7 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYyBiL2RyaXZlcnMv bmV0L21seDUvbWx4NV9yeHEuYw0KPiA+IGluZGV4IDA3MzczMmUxNi4uNmU1NTY1ZmIyIDEwMDY0 NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYw0KPiA+ICsrKyBiL2RyaXZl cnMvbmV0L21seDUvbWx4NV9yeHEuYw0KPiA+IEBAIC0xMzg2LDYgKzEzODYsOCBAQCBtbHg1X2lu ZF90YWJsZV9pYnZfdmVyaWZ5KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiA+ICAgKiAgIE51 bWJlciBvZiBxdWV1ZXMuDQo+ID4gICAqIEBwYXJhbSB0dW5uZWwNCj4gPiAgICogICBUdW5uZWwg dHlwZS4NCj4gPiArICogQHBhcmFtIHJzc19sZXZlbA0KPiA+ICsgKiAgIFJTUyBoYXNoIG9uIHR1 bm5lbCBsZXZlbC4NCj4gPiAgICoNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgIFRoZSBWZXJi cyBvYmplY3QgaW5pdGlhbGlzZWQsIE5VTEwgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0 Lg0KPiA+IEBAIC0xMzk0LDEzICsxMzk2LDE3IEBAIHN0cnVjdCBtbHg1X2hyeHEgKiAgbWx4NV9o cnhxX25ldyhzdHJ1Y3QNCj4gPiBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJICAgICAgY29uc3Qg dWludDhfdCAqcnNzX2tleSwgdWludDMyX3QgcnNzX2tleV9sZW4sDQo+ID4gIAkgICAgICB1aW50 NjRfdCBoYXNoX2ZpZWxkcywNCj4gPiAtCSAgICAgIGNvbnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVp bnQzMl90IHF1ZXVlc19uLCB1aW50MzJfdCB0dW5uZWwpDQo+ID4gKwkgICAgICBjb25zdCB1aW50 MTZfdCAqcXVldWVzLCB1aW50MzJfdCBxdWV1ZXNfbiwNCj4gPiArCSAgICAgIHVpbnQzMl90IHR1 bm5lbCwgdWludDMyX3QgcnNzX2xldmVsKQ0KPiANCj4gdHVubmVsIGFuZCByc3NfbGV2ZWwgc2Vl bXMgdG8gYmUgcmVkdW5kYW50IGhlcmUuDQo+IA0KPiByc3NfbGV2ZWwgPiAxIGlzIGVxdWl2YWxl bnQgdG8gdHVubmVsLCB0aGVyZSBpcyBubyBuZWVkIHRvIGhhdmUgYm90aC4NCg0KVGhlcmUgaXMg YSBjYXNlIG9mIHR1bm5lbCBhbmQgb3V0ZXIgcnNzKDEpLg0KDQo+IA0KPiA+ICB7DQo+ID4gIAlz dHJ1Y3QgcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gIAlzdHJ1Y3Qg bWx4NV9ocnhxICpocnhxOw0KPiA+ICAJc3RydWN0IG1seDVfaW5kX3RhYmxlX2lidiAqaW5kX3Ri bDsNCj4gPiAgCXN0cnVjdCBpYnZfcXAgKnFwOw0KPiA+ICAJaW50IGVycjsNCj4gPiArI2lmZGVm IEhBVkVfSUJWX0RFVklDRV9UVU5ORUxfU1VQUE9SVA0KPiA+ICsJc3RydWN0IG1seDVkdl9xcF9p bml0X2F0dHIgcXBfaW5pdF9hdHRyID0gezB9OyAjZW5kaWYNCj4gPg0KPiA+ICAJcXVldWVzX24g PSBoYXNoX2ZpZWxkcyA/IHF1ZXVlc19uIDogMTsNCj4gPiAgCWluZF90YmwgPSBtbHg1X2luZF90 YWJsZV9pYnZfZ2V0KGRldiwgcXVldWVzLCBxdWV1ZXNfbik7IEBAIC0xNDEwLDYNCj4gPiArMTQx NiwzMyBAQCBtbHg1X2hyeHFfbmV3KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJCXJ0 ZV9lcnJubyA9IEVOT01FTTsNCj4gPiAgCQlyZXR1cm4gTlVMTDsNCj4gPiAgCX0NCj4gPiArI2lm ZGVmIEhBVkVfSUJWX0RFVklDRV9UVU5ORUxfU1VQUE9SVA0KPiA+ICsJaWYgKHR1bm5lbCkgew0K PiA+ICsJCXFwX2luaXRfYXR0ci5jb21wX21hc2sgPQ0KPiA+ICsJCQkJTUxYNURWX1FQX0lOSVRf QVRUUl9NQVNLX1FQX0NSRUFURV9GTEFHUzsNCj4gPiArCQlxcF9pbml0X2F0dHIuY3JlYXRlX2Zs YWdzID0gTUxYNURWX1FQX0NSRUFURV9UVU5ORUxfT0ZGTE9BRFM7DQo+ID4gKwl9DQo+ID4gKwlx cCA9IG1seDVfZ2x1ZS0+ZHZfY3JlYXRlX3FwKA0KPiA+ICsJCXByaXYtPmN0eCwNCj4gPiArCQkm KHN0cnVjdCBpYnZfcXBfaW5pdF9hdHRyX2V4KXsNCj4gPiArCQkJLnFwX3R5cGUgPSBJQlZfUVBU X1JBV19QQUNLRVQsDQo+ID4gKwkJCS5jb21wX21hc2sgPQ0KPiA+ICsJCQkJSUJWX1FQX0lOSVRf QVRUUl9QRCB8DQo+ID4gKwkJCQlJQlZfUVBfSU5JVF9BVFRSX0lORF9UQUJMRSB8DQo+ID4gKwkJ CQlJQlZfUVBfSU5JVF9BVFRSX1JYX0hBU0gsDQo+ID4gKwkJCS5yeF9oYXNoX2NvbmYgPSAoc3Ry dWN0IGlidl9yeF9oYXNoX2NvbmYpew0KPiA+ICsJCQkJLnJ4X2hhc2hfZnVuY3Rpb24gPSBJQlZf UlhfSEFTSF9GVU5DX1RPRVBMSVRaLA0KPiA+ICsJCQkJLnJ4X2hhc2hfa2V5X2xlbiA9IHJzc19r ZXlfbGVuLA0KPiA+ICsJCQkJLnJ4X2hhc2hfa2V5ID0gKHZvaWQgKikodWludHB0cl90KXJzc19r ZXksDQo+ID4gKwkJCQkucnhfaGFzaF9maWVsZHNfbWFzayA9IGhhc2hfZmllbGRzIHwNCj4gPiAr CQkJCQkodHVubmVsICYmIHJzc19sZXZlbCA/DQo+ID4gKwkJCQkJKHVpbnQzMl90KUlCVl9SWF9I QVNIX0lOTkVSIDogMCksDQo+ID4gKwkJCX0sDQo+ID4gKwkJCS5yd3FfaW5kX3RibCA9IGluZF90 YmwtPmluZF90YWJsZSwNCj4gPiArCQkJLnBkID0gcHJpdi0+cGQsDQo+ID4gKwkJfSwNCj4gPiAr CQkmcXBfaW5pdF9hdHRyKTsNCj4gPiArI2Vsc2UNCj4gPiAgCXFwID0gbWx4NV9nbHVlLT5jcmVh dGVfcXBfZXgNCj4gPiAgCQkocHJpdi0+Y3R4LA0KPiA+ICAJCSAmKHN0cnVjdCBpYnZfcXBfaW5p dF9hdHRyX2V4KXsNCj4gPiBAQCAtMTQyNyw2ICsxNDYwLDcgQEAgbWx4NV9ocnhxX25ldyhzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJLnJ3cV9pbmRfdGJsID0gaW5kX3RibC0+aW5k X3RhYmxlLA0KPiA+ICAJCQkucGQgPSBwcml2LT5wZCwNCj4gPiAgCQkgfSk7DQo+ID4gKyNlbmRp Zg0KPiA+ICAJaWYgKCFxcCkgew0KPiA+ICAJCXJ0ZV9lcnJubyA9IGVycm5vOw0KPiA+ICAJCWdv dG8gZXJyb3I7DQo+ID4gQEAgLTE0MzksNiArMTQ3Myw3IEBAIG1seDVfaHJ4cV9uZXcoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAlocnhxLT5yc3Nfa2V5X2xlbiA9IHJzc19rZXlfbGVu Ow0KPiA+ICAJaHJ4cS0+aGFzaF9maWVsZHMgPSBoYXNoX2ZpZWxkczsNCj4gPiAgCWhyeHEtPnR1 bm5lbCA9IHR1bm5lbDsNCj4gPiArCWhyeHEtPnJzc19sZXZlbCA9IHJzc19sZXZlbDsNCj4gPiAg CW1lbWNweShocnhxLT5yc3Nfa2V5LCByc3Nfa2V5LCByc3Nfa2V5X2xlbik7DQo+ID4gIAlydGVf YXRvbWljMzJfaW5jKCZocnhxLT5yZWZjbnQpOw0KPiA+ICAJTElTVF9JTlNFUlRfSEVBRCgmcHJp di0+aHJ4cXMsIGhyeHEsIG5leHQpOyBAQCAtMTQ0OCw2ICsxNDgzLDggQEANCj4gPiBtbHg1X2hy eHFfbmV3KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJcmV0dXJuIGhyeHE7DQo+ID4g IGVycm9yOg0KPiA+ICAJZXJyID0gcnRlX2Vycm5vOyAvKiBTYXZlIHJ0ZV9lcnJubyBiZWZvcmUg Y2xlYW51cC4gKi8NCj4gPiArCURSVl9MT0coRVJSLCAicG9ydCAldTogRXJyb3IgY3JlYXRpbmcg SGFzaCBSeCBxdWV1ZSIsDQo+ID4gKwkJZGV2LT5kYXRhLT5wb3J0X2lkKTsNCj4gDQo+IERldmVs b3BlciBsb2csIHBsZWFzZSByZW1vdmUgaXQsIGZvciB0aGUgdXNlciB0aGUgZmxvdyB3b24ndCBi ZSBjcmVhdGVkDQo+IHdpdGggdGhlIGNvcnJlY3QgZXJyb3IgcmVwb3J0ZWQuDQoNClJlbW92ZWQs IHRoZXJlIHdhcyBhIGxvZyBpbiBjYWxsZXIgc2lkZS4NCg0KPiANCj4gPiAgCW1seDVfaW5kX3Rh YmxlX2lidl9yZWxlYXNlKGRldiwgaW5kX3RibCk7DQo+ID4gIAlpZiAocXApDQo+ID4gIAkJY2xh aW1femVybyhtbHg1X2dsdWUtPmRlc3Ryb3lfcXAocXApKTsNCj4gPiBAQCAtMTQ2OSw2ICsxNTA2 LDggQEAgbWx4NV9ocnhxX25ldyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgICogICBO dW1iZXIgb2YgcXVldWVzLg0KPiA+ICAgKiBAcGFyYW0gdHVubmVsDQo+ID4gICAqICAgVHVubmVs IHR5cGUuDQo+ID4gKyAqIEBwYXJhbSByc3NfbGV2ZWwNCj4gPiArICogICBSU1MgaGFzaCBvbiB0 dW5uZWwgbGV2ZWwNCj4gPiAgICoNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgIEFuIGhhc2gg UnggcXVldWUgb24gc3VjY2Vzcy4NCj4gPiBAQCAtMTQ3Nyw3ICsxNTE2LDggQEAgc3RydWN0IG1s eDVfaHJ4cSAqICBtbHg1X2hyeHFfZ2V0KHN0cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ ID4gIAkgICAgICBjb25zdCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5X2xlbiwN Cj4gPiAgCSAgICAgIHVpbnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+IC0JICAgICAgY29uc3QgdWlu dDE2X3QgKnF1ZXVlcywgdWludDMyX3QgcXVldWVzX24sIHVpbnQzMl90IHR1bm5lbCkNCj4gPiAr CSAgICAgIGNvbnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVpbnQzMl90IHF1ZXVlc19uLA0KPiA+ICsJ ICAgICAgdWludDMyX3QgdHVubmVsLCB1aW50MzJfdCByc3NfbGV2ZWwpDQo+IA0KPiBEaXRvLg0K PiANCj4gPiAgew0KPiA+ICAJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2 YXRlOw0KPiA+ICAJc3RydWN0IG1seDVfaHJ4cSAqaHJ4cTsNCj4gPiBAQCAtMTQ5NCw2ICsxNTM0 LDggQEAgbWx4NV9ocnhxX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJY29u dGludWU7DQo+ID4gIAkJaWYgKGhyeHEtPnR1bm5lbCAhPSB0dW5uZWwpDQo+ID4gIAkJCWNvbnRp bnVlOw0KPiA+ICsJCWlmIChocnhxLT5yc3NfbGV2ZWwgIT0gcnNzX2xldmVsKQ0KPiA+ICsJCQlj b250aW51ZTsNCj4gPiAgCQlpbmRfdGJsID0gbWx4NV9pbmRfdGFibGVfaWJ2X2dldChkZXYsIHF1 ZXVlcywgcXVldWVzX24pOw0KPiA+ICAJCWlmICghaW5kX3RibCkNCj4gPiAgCQkJY29udGludWU7 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmgNCj4gPiBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmggaW5kZXggZDM1NjA1YjU1Li42MmNmNTUxMDkgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHguaA0KPiA+ICsrKyBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmgNCj4gPiBAQCAtMTQ3LDYgKzE0Nyw3IEBAIHN0cnVj dCBtbHg1X2hyeHEgew0KPiA+ICAJc3RydWN0IGlidl9xcCAqcXA7IC8qIFZlcmJzIHF1ZXVlIHBh aXIuICovDQo+ID4gIAl1aW50NjRfdCBoYXNoX2ZpZWxkczsgLyogVmVyYnMgSGFzaCBmaWVsZHMu ICovDQo+ID4gIAl1aW50MzJfdCB0dW5uZWw7IC8qIFR1bm5lbCB0eXBlLiAqLw0KPiA+ICsJdWlu dDMyX3QgcnNzX2xldmVsOyAvKiBSU1Mgb24gdHVubmVsIGxldmVsLiAqLw0KPiA+ICAJdWludDMy X3QgcnNzX2tleV9sZW47IC8qIEhhc2gga2V5IGxlbmd0aCBpbiBieXRlcy4gKi8NCj4gPiAgCXVp bnQ4X3QgcnNzX2tleVtdOyAvKiBIYXNoIGtleS4gKi8NCj4gPiAgfTsNCj4gPiBAQCAtMjUxLDEy ICsyNTIsMTIgQEAgc3RydWN0IG1seDVfaHJ4cSAqbWx4NV9ocnhxX25ldyhzdHJ1Y3QgcnRlX2V0 aF9kZXYNCj4gKmRldiwNCj4gPiAgCQkJCWNvbnN0IHVpbnQ4X3QgKnJzc19rZXksIHVpbnQzMl90 IHJzc19rZXlfbGVuLA0KPiA+ICAJCQkJdWludDY0X3QgaGFzaF9maWVsZHMsDQo+ID4gIAkJCQlj b25zdCB1aW50MTZfdCAqcXVldWVzLCB1aW50MzJfdCBxdWV1ZXNfbiwNCj4gPiAtCQkJCXVpbnQz Ml90IHR1bm5lbCk7DQo+ID4gKwkJCQl1aW50MzJfdCB0dW5uZWwsIHVpbnQzMl90IHJzc19sZXZl bCk7DQo+ID4gIHN0cnVjdCBtbHg1X2hyeHEgKm1seDVfaHJ4cV9nZXQoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsDQo+ID4gIAkJCQljb25zdCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nf a2V5X2xlbiwNCj4gPiAgCQkJCXVpbnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+ICAJCQkJY29uc3Qg dWludDE2X3QgKnF1ZXVlcywgdWludDMyX3QgcXVldWVzX24sDQo+ID4gLQkJCQl1aW50MzJfdCB0 dW5uZWwpOw0KPiA+ICsJCQkJdWludDMyX3QgdHVubmVsLCB1aW50MzJfdCByc3NfbGV2ZWwpOw0K PiA+ICBpbnQgbWx4NV9ocnhxX3JlbGVhc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVj dCBtbHg1X2hyeHENCj4gPiAqaHhycSk7ICBpbnQgbWx4NV9ocnhxX2lidl92ZXJpZnkoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYpOyAgdWludDY0X3QNCj4gPiBtbHg1X2dldF9yeF9wb3J0X29mZmxv YWRzKHZvaWQpOw0KPiA+IC0tDQo+ID4gMi4xMy4zDQo+ID4NCj4gDQo+IFRoYW5rcywNCj4gDQo+ IC0tDQo+IE7DqWxpbyBMYXJhbmplaXJvDQo+IDZXSU5EDQo=