Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp2796798ybi; Thu, 4 Jul 2019 19:42:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqwVfRKM946+ttrs5ej5baCUin6uuJ/2TSrl53Ms1qY4S2tRAHmXgUiN9Un4FPOi9i6C9LvW X-Received: by 2002:a17:90a:2486:: with SMTP id i6mr1452107pje.125.1562294535431; Thu, 04 Jul 2019 19:42:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562294535; cv=none; d=google.com; s=arc-20160816; b=LyJGJgLs1YbFqNw3q4rzqPNk5E5++qDdxD7d7p7EtCU5+8FYL1KBnKbV8qGMjU47A1 MtqISGEduTme0y10vZ/0zEuHJaEDgCF48/deQ3eVWXzBJkgQEnfV8UBycvYOOdD0oLCb O899OY+VoS6g4fhO+E5czveqN+V/ckhNr0RrCyT95rsS6AfRMiWSSZ9nE3AURt8AU6VF EHplxte4+IjAoXAgHPJInSBJr+ygiYqhprMWkA/O2OplE9qw00WY+6vmXCGk3SZuNEji o9IEe/Pcwa4BUga9D5iEvjDTRONIxMx8FOFR8gEnRH0kzsV7Cyxo5vW6uPMRl+PvoEKD eNbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=/LjleuSv6OhzOSTpOt9RVnZaoxPDDQefXZ1UaEqYa2k=; b=PCZFEPqpc5RwJyZLbDZ130El1GAq7HgmlIR/gAcEgGcneuMYeNVb2wt/RdRadFFiBj 9h1SxKOLJ7z4tPWB4PeZ0p6pVfCvQDZ1K+BiGj7y7aEUhTvv6RVX00TEM/aGAbE10/9s nJkd564oAwkOks9pS/mwMSAWGlYUn9TGWRBzS8RMFTHdWn+5HGZQj9SnqHNoboWMz+wS FdFTaUuv8SWJCMrJyA1hQvj2TYo4SHRD2RbVYrTSC5j9bc6TPh8spE1IytEwZCQWlSup oeEqMV0/e7Nq1lCKKsB7yojCimXy+mLY1CrrBjqGdbLsGlRwSxbzSubcZSVhCeb4//+i ZTHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=bAxDaHDx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y6si6868285pga.501.2019.07.04.19.41.59; Thu, 04 Jul 2019 19:42:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=bAxDaHDx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727638AbfGECjp (ORCPT + 99 others); Thu, 4 Jul 2019 22:39:45 -0400 Received: from mail-eopbgr00057.outbound.protection.outlook.com ([40.107.0.57]:23366 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726404AbfGECjp (ORCPT ); Thu, 4 Jul 2019 22:39:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/LjleuSv6OhzOSTpOt9RVnZaoxPDDQefXZ1UaEqYa2k=; b=bAxDaHDxzs7P8vjzv3BmdiUt7kO7KTyq4TIuZF8SGLiVbCy8TWDK1JjERN75/lnC9A8uFrGOMZdvcgvrWdybiTkEXGdiQEQrZtgTMj2YtBTgL4IAMW0x4TJUVk1+b6lHHpmo9JgO3CbPRJcuzawDS7nLG+l7xmYtgAHG1TuzU0w= Received: from DB8PR04MB6747.eurprd04.prod.outlook.com (20.179.250.159) by DB8PR04MB7084.eurprd04.prod.outlook.com (52.135.63.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2052.17; Fri, 5 Jul 2019 02:24:15 +0000 Received: from DB8PR04MB6747.eurprd04.prod.outlook.com ([fe80::93a:4344:1120:4ca0]) by DB8PR04MB6747.eurprd04.prod.outlook.com ([fe80::93a:4344:1120:4ca0%6]) with mapi id 15.20.2032.019; Fri, 5 Jul 2019 02:24:15 +0000 From: "Z.q. Hou" To: Lorenzo Pieralisi CC: "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "bhelgaas@google.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "l.subrahmanya@mobiveil.co.in" , "shawnguo@kernel.org" , Leo Li , "catalin.marinas@arm.com" , "will.deacon@arm.com" , Mingkai Hu , "M.h. Lian" , Xiaowei Bao Subject: RE: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Topic: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Index: AQHU8Qqsskjg5i2JJUOtSWDylHX9tqa5gziAgAC/goCAAImEAIABAfOA Date: Fri, 5 Jul 2019 02:24:15 +0000 Message-ID: References: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> <20190412083635.33626-3-Zhiqiang.Hou@nxp.com> <20190703151905.GD26804@e121166-lin.cambridge.arm.com> <20190704105642.GA11693@e121166-lin.cambridge.arm.com> In-Reply-To: <20190704105642.GA11693@e121166-lin.cambridge.arm.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=zhiqiang.hou@nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d8c8ba7a-d85f-424e-729c-08d700efe07b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB8PR04MB7084; x-ms-traffictypediagnostic: DB8PR04MB7084: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 008960E8EC x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(366004)(376002)(136003)(346002)(39860400002)(199004)(13464003)(189003)(66556008)(76116006)(66476007)(66066001)(64756008)(73956011)(33656002)(66446008)(7696005)(4326008)(14454004)(102836004)(26005)(66946007)(99286004)(6506007)(5660300002)(53546011)(186003)(76176011)(14444005)(256004)(30864003)(74316002)(476003)(486006)(11346002)(305945005)(7736002)(52536014)(446003)(25786009)(71190400001)(71200400001)(81156014)(81166006)(8936002)(54906003)(6436002)(229853002)(53946003)(53936002)(86362001)(316002)(7416002)(9686003)(55016002)(6916009)(8676002)(478600001)(6116002)(3846002)(68736007)(6246003)(2906002)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:DB8PR04MB7084;H:DB8PR04MB6747.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: LP6KR/1B41QTOErptz63Hnt0Yn2cqNOrklqcjBp7Q/kII/8dhRfomx5g1vYXS0wNi6ve2DbGqJ74QFZHlUOrLBd3rVuOHNhX4Ki8ZrkhLFUh37wLHbmBR0iQopo5jUWBbO2gyIMR4d1ka5hbf9Yn0cJFksO0rQ3umcgO8cfRsqtfhJCVuvVEOcuMS2ngSje2gmcFTUI0HY35tDs6m9TTHUogRQSlHtibiuuceuQ0kboTtxt4Ke9ng9KwZtVswK2hs4yvo9sP5UI1JDMbI2AWKvLqquhFGN0c7hjUWh2uyGxJBLaTW2lI4ywPu2Oqulbmmzu0qVYbHgT1uHU9/x95Gcd0DFlCKhgFbdIpmqoRhGUlxpR8bsXX6C5MHkqUJAHPJa8Kx3+39nbEPhOoiPTqvBs8YBgkV7+tkHsh10aHs6U= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8c8ba7a-d85f-424e-729c-08d700efe07b X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jul 2019 02:24:15.9055 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zhiqiang.hou@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB7084 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTG9yZW56bywNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMb3Jl bnpvIFBpZXJhbGlzaSA8bG9yZW56by5waWVyYWxpc2lAYXJtLmNvbT4NCj4gU2VudDogMjAxOcTq N9TCNMjVIDE4OjU3DQo+IFRvOiBaLnEuIEhvdSA8emhpcWlhbmcuaG91QG54cC5jb20+DQo+IENj OiBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmc7DQo+IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdl ci5rZXJuZWwub3JnOw0KPiBiaGVsZ2Fhc0Bnb29nbGUuY29tOyByb2JoK2R0QGtlcm5lbC5vcmc7 IG1hcmsucnV0bGFuZEBhcm0uY29tOw0KPiBsLnN1YnJhaG1hbnlhQG1vYml2ZWlsLmNvLmluOyBz aGF3bmd1b0BrZXJuZWwub3JnOyBMZW8gTGkNCj4gPGxlb3lhbmcubGlAbnhwLmNvbT47IGNhdGFs aW4ubWFyaW5hc0Bhcm0uY29tOyB3aWxsLmRlYWNvbkBhcm0uY29tOw0KPiBNaW5na2FpIEh1IDxt aW5na2FpLmh1QG54cC5jb20+OyBNLmguIExpYW4gPG1pbmdodWFuLmxpYW5AbnhwLmNvbT47DQo+ IFhpYW93ZWkgQmFvIDx4aWFvd2VpLmJhb0BueHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENI djUgMDIvMjBdIFBDSTogbW9iaXZlaWw6IEZvcm1hdCB0aGUgY29kZSB3aXRob3V0DQo+IGZ1bmN0 aW9uYWxpdHkgY2hhbmdlDQo+IA0KPiBPbiBUaHUsIEp1bCAwNCwgMjAxOSBhdCAwMzowMDozN0FN ICswMDAwLCBaLnEuIEhvdSB3cm90ZToNCj4gDQo+IFsuLi5dDQo+IA0KPiA+ID4gSWYgeW91IGNh biBtYW5hZ2UgdG8gcmViYXNlIHBhdGNoZXMgb24gcGNpL21vYml2ZWlsIG9uIHRvcCBvZg0KPiA+ ID4gdjUuMi1yYzEsIHNlbmQgdGhlbSBzZXBhcmF0ZWx5IHNvIHRoYXQgSSBjYW4gbWVyZ2UgdGhl bSBhcyBhIGJhc2UNCj4gPiA+IGZvciB0aGUgc3Vic2VxdWVudCBwYXRjaGVzIHRvIGJlIGFwcGxp ZWQuDQo+ID4NCj4gPiBZb3UgbWVhbnQgc2VuZCB0aGUgcGF0Y2hlcyBvbmUgYnkgb25lLCB3aGlj aCB5b3UgcmVxdWVzdGVkIHRvIHNwbGl0LA0KPiA+IGFuZCBvdGhlciBwYXRjaGVzIHdpdGhvdXQg YW55IGNoYW5nZXMgY2FuIGJlIHNlbmQgdG9nZXRoZXIsIHJpZ2h0Pw0KPiANCj4gRmlyc3Qgc3Rl cCwgcmViYXNlIG15IGJyYW5jaCBhYm92ZSBhZ2FpbnN0IHY1LjItcmMxICp3aXRob3V0KiB0aGlz IHBhdGNoLg0KPiBUaGVuIGFwcGx5IGFsbCB0aGUgcGF0Y2hlcyBJIHJlcXVlc3RlZCB0byBzcGxp dCAoaW5jbHVzaXZlIG9mIHRoaXMgb25lKSBvbiB0b3Agb2YNCj4gaXQgYW5kIHNlbmQgdGhlIHdo b2xlIHBhdGNoIHNlcmllcyBpbiBvbmUgZ28uDQo+IA0KPiBQbGVhc2UgbGV0IG1lIGtub3cgaWYg dGhhdCdzIHN0aWxsIHVuY2xlYXIuDQoNCkl0J3MgY2xlYXIgbm93Lg0KDQpUaGFua3MsDQpaaGlx aWFuZw0KDQo+IFRoYW5rcywNCj4gTG9yZW56bw0KPiANCj4gPiA+IElmIHlvdSBoYXZlIGFueSBx dWVzdGlvbnMgcGxlYXNlIGFzaywgZG8gbm90IHBvc3QgcGF0Y2hlcyBpZiB0aGVyZQ0KPiA+ID4g aXMgc29tZXRoaW5nIHRoYXQgaXMgbm90IGNsZWFyLg0KPiA+DQo+ID4gWWVzLCBJJ2xsLCB0aGFu a3MgZm9yIHlvdXIgZ3VpZGUgYWdhaW4hDQo+ID4NCj4gPiBCLlIsDQo+ID4gWmhpcWlhbmcNCj4g Pg0KPiA+ID4NCj4gPiA+IExvcmVuem8NCj4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbW9iaXZlaWwuYw0KPiA+ID4gPiBiL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvcGNpZS1tb2JpdmVpbC5jDQo+ID4gPiA+IGluZGV4IGQ1NWM3ZTc4MGM2ZS4u Yjg3NDcxZjA4YTQwIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVy L3BjaWUtbW9iaXZlaWwuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj aWUtbW9iaXZlaWwuYw0KPiA+ID4gPiBAQCAtMzEsMzggKzMxLDQwIEBADQo+ID4gPiA+ICAgKiB0 cmFuc2xhdGlvbiB0YWJsZXMgYXJlIGdyb3VwZWQgaW50byB3aW5kb3dzLCBlYWNoIHdpbmRvdw0K PiA+ID4gPiByZWdpc3RlcnMNCj4gPiA+IGFyZQ0KPiA+ID4gPiAgICogZ3JvdXBlZCBpbnRvIGJs b2NrcyBvZiA0IG9yIDE2IHJlZ2lzdGVycyBlYWNoDQo+ID4gPiA+ICAgKi8NCj4gPiA+ID4gLSNk ZWZpbmUgUEFCX1JFR19CTE9DS19TSVpFCTE2DQo+ID4gPiA+IC0jZGVmaW5lIFBBQl9FWFRfUkVH X0JMT0NLX1NJWkUJNA0KPiA+ID4gPiArI2RlZmluZSBQQUJfUkVHX0JMT0NLX1NJWkUJCTE2DQo+ ID4gPiA+ICsjZGVmaW5lIFBBQl9FWFRfUkVHX0JMT0NLX1NJWkUJCTQNCj4gPiA+ID4NCj4gPiA+ ID4gLSNkZWZpbmUgUEFCX1JFR19BRERSKG9mZnNldCwgd2luKSAob2Zmc2V0ICsgKHdpbiAqDQo+ ID4gPiA+IFBBQl9SRUdfQkxPQ0tfU0laRSkpIC0jZGVmaW5lIFBBQl9FWFRfUkVHX0FERFIob2Zm c2V0LCB3aW4pDQo+ID4gPiA+IChvZmZzZXQNCj4gPiA+ICsNCj4gPiA+ID4gKHdpbiAqIFBBQl9F WFRfUkVHX0JMT0NLX1NJWkUpKQ0KPiA+ID4gPiArI2RlZmluZSBQQUJfUkVHX0FERFIob2Zmc2V0 LCB3aW4pCVwNCj4gPiA+ID4gKwkob2Zmc2V0ICsgKHdpbiAqIFBBQl9SRUdfQkxPQ0tfU0laRSkp DQo+ID4gPiA+ICsjZGVmaW5lIFBBQl9FWFRfUkVHX0FERFIob2Zmc2V0LCB3aW4pCVwNCj4gPiA+ ID4gKwkob2Zmc2V0ICsgKHdpbiAqIFBBQl9FWFRfUkVHX0JMT0NLX1NJWkUpKQ0KPiA+ID4gPg0K PiA+ID4gPiAtI2RlZmluZSBMVFNTTV9TVEFUVVMJCTB4MDQwNA0KPiA+ID4gPiAtI2RlZmluZSAg TFRTU01fU1RBVFVTX0wwX01BU0sJMHgzZg0KPiA+ID4gPiAtI2RlZmluZSAgTFRTU01fU1RBVFVT X0wwCTB4MmQNCj4gPiA+ID4gKyNkZWZpbmUgTFRTU01fU1RBVFVTCQkJMHgwNDA0DQo+ID4gPiA+ ICsjZGVmaW5lICBMVFNTTV9TVEFUVVNfTDBfTUFTSwkJMHgzZg0KPiA+ID4gPiArI2RlZmluZSAg TFRTU01fU1RBVFVTX0wwCQkweDJkDQo+ID4gPiA+DQo+ID4gPiA+IC0jZGVmaW5lIFBBQl9DVFJM CQkweDA4MDgNCj4gPiA+ID4gLSNkZWZpbmUgIEFNQkFfUElPX0VOQUJMRV9TSElGVAkwDQo+ID4g PiA+IC0jZGVmaW5lICBQRVhfUElPX0VOQUJMRV9TSElGVAkxDQo+ID4gPiA+IC0jZGVmaW5lICBQ QUdFX1NFTF9TSElGVAkxMw0KPiA+ID4gPiAtI2RlZmluZSAgUEFHRV9TRUxfTUFTSwkJMHgzZg0K PiA+ID4gPiAtI2RlZmluZSAgUEFHRV9MT19NQVNLCQkweDNmZg0KPiA+ID4gPiAtI2RlZmluZSAg UEFHRV9TRUxfT0ZGU0VUX1NISUZUCTEwDQo+ID4gPiA+ICsjZGVmaW5lIFBBQl9DVFJMCQkJMHgw ODA4DQo+ID4gPiA+ICsjZGVmaW5lICBBTUJBX1BJT19FTkFCTEVfU0hJRlQJCTANCj4gPiA+ID4g KyNkZWZpbmUgIFBFWF9QSU9fRU5BQkxFX1NISUZUCQkxDQo+ID4gPiA+ICsjZGVmaW5lICBQQUdF X1NFTF9TSElGVAkJCTEzDQo+ID4gPiA+ICsjZGVmaW5lICBQQUdFX1NFTF9NQVNLCQkJMHgzZg0K PiA+ID4gPiArI2RlZmluZSAgUEFHRV9MT19NQVNLCQkJMHgzZmYNCj4gPiA+ID4gKyNkZWZpbmUg IFBBR0VfU0VMX09GRlNFVF9TSElGVAkJMTANCj4gPiA+ID4NCj4gPiA+ID4gLSNkZWZpbmUgUEFC X0FYSV9QSU9fQ1RSTAkweDA4NDANCj4gPiA+ID4gLSNkZWZpbmUgIEFQSU9fRU5fTUFTSwkJMHhm DQo+ID4gPiA+ICsjZGVmaW5lIFBBQl9BWElfUElPX0NUUkwJCTB4MDg0MA0KPiA+ID4gPiArI2Rl ZmluZSAgQVBJT19FTl9NQVNLCQkJMHhmDQo+ID4gPiA+DQo+ID4gPiA+IC0jZGVmaW5lIFBBQl9Q RVhfUElPX0NUUkwJMHgwOGMwDQo+ID4gPiA+IC0jZGVmaW5lICBQSU9fRU5BQkxFX1NISUZUCTAN Cj4gPiA+ID4gKyNkZWZpbmUgUEFCX1BFWF9QSU9fQ1RSTAkJMHgwOGMwDQo+ID4gPiA+ICsjZGVm aW5lICBQSU9fRU5BQkxFX1NISUZUCQkwDQo+ID4gPiA+DQo+ID4gPiA+ICAjZGVmaW5lIFBBQl9J TlRQX0FNQkFfTUlTQ19FTkIJCTB4MGIwYw0KPiA+ID4gPiAtI2RlZmluZSBQQUJfSU5UUF9BTUJB X01JU0NfU1RBVAkweDBiMWMNCj4gPiA+ID4gKyNkZWZpbmUgUEFCX0lOVFBfQU1CQV9NSVNDX1NU QVQJCTB4MGIxYw0KPiA+ID4gPiAgI2RlZmluZSAgUEFCX0lOVFBfSU5UWF9NQVNLCQkweDAxZTAN Cj4gPiA+ID4gICNkZWZpbmUgIFBBQl9JTlRQX01TSV9NQVNLCQkweDgNCj4gPiA+ID4NCj4gPiA+ ID4gLSNkZWZpbmUgUEFCX0FYSV9BTUFQX0NUUkwod2luKQlQQUJfUkVHX0FERFIoMHgwYmEwLCB3 aW4pDQo+ID4gPiA+IC0jZGVmaW5lICBXSU5fRU5BQkxFX1NISUZUCTANCj4gPiA+ID4gLSNkZWZp bmUgIFdJTl9UWVBFX1NISUZUCTENCj4gPiA+ID4gKyNkZWZpbmUgUEFCX0FYSV9BTUFQX0NUUkwo d2luKQkJUEFCX1JFR19BRERSKDB4MGJhMCwNCj4gd2luKQ0KPiA+ID4gPiArI2RlZmluZSAgV0lO X0VOQUJMRV9TSElGVAkJMA0KPiA+ID4gPiArI2RlZmluZSAgV0lOX1RZUEVfU0hJRlQJCQkxDQo+ ID4gPiA+DQo+ID4gPiA+ICAjZGVmaW5lIFBBQl9FWFRfQVhJX0FNQVBfU0laRSh3aW4pDQo+IAlQ QUJfRVhUX1JFR19BRERSKDB4YmFmMCwNCj4gPiA+IHdpbikNCj4gPiA+ID4NCj4gPiA+ID4gQEAg LTcwLDE2ICs3MiwxNiBAQA0KPiA+ID4gPiAgI2RlZmluZSAgQVhJX1dJTkRPV19BTElHTl9NQVNL CQkzDQo+ID4gPiA+DQo+ID4gPiA+ICAjZGVmaW5lIFBBQl9BWElfQU1BUF9QRVhfV0lOX0wod2lu KQ0KPiAJUEFCX1JFR19BRERSKDB4MGJhOCwNCj4gPiA+IHdpbikNCj4gPiA+ID4gLSNkZWZpbmUg IFBBQl9CVVNfU0hJRlQJCTI0DQo+ID4gPiA+IC0jZGVmaW5lICBQQUJfREVWSUNFX1NISUZUCTE5 DQo+ID4gPiA+IC0jZGVmaW5lICBQQUJfRlVOQ1RJT05fU0hJRlQJMTYNCj4gPiA+ID4gKyNkZWZp bmUgIFBBQl9CVVNfU0hJRlQJCQkyNA0KPiA+ID4gPiArI2RlZmluZSAgUEFCX0RFVklDRV9TSElG VAkJMTkNCj4gPiA+ID4gKyNkZWZpbmUgIFBBQl9GVU5DVElPTl9TSElGVAkJMTYNCj4gPiA+ID4N Cj4gPiA+ID4gICNkZWZpbmUgUEFCX0FYSV9BTUFQX1BFWF9XSU5fSCh3aW4pDQo+IAlQQUJfUkVH X0FERFIoMHgwYmFjLA0KPiA+ID4gd2luKQ0KPiA+ID4gPiAgI2RlZmluZSBQQUJfSU5UUF9BWElf UElPX0NMQVNTCQkweDQ3NA0KPiA+ID4gPg0KPiA+ID4gPiAtI2RlZmluZSBQQUJfUEVYX0FNQVBf Q1RSTCh3aW4pCVBBQl9SRUdfQUREUigweDRiYTAsIHdpbikNCj4gPiA+ID4gLSNkZWZpbmUgIEFN QVBfQ1RSTF9FTl9TSElGVAkwDQo+ID4gPiA+IC0jZGVmaW5lICBBTUFQX0NUUkxfVFlQRV9TSElG VAkxDQo+ID4gPiA+ICsjZGVmaW5lIFBBQl9QRVhfQU1BUF9DVFJMKHdpbikJCVBBQl9SRUdfQURE UigweDRiYTAsDQo+ID4gPiB3aW4pDQo+ID4gPiA+ICsjZGVmaW5lICBBTUFQX0NUUkxfRU5fU0hJ RlQJCTANCj4gPiA+ID4gKyNkZWZpbmUgIEFNQVBfQ1RSTF9UWVBFX1NISUZUCQkxDQo+ID4gPiA+ DQo+ID4gPiA+ICAjZGVmaW5lIFBBQl9FWFRfUEVYX0FNQVBfU0laRU4od2luKQ0KPiAJUEFCX0VY VF9SRUdfQUREUigweGJlZjAsDQo+ID4gPiB3aW4pDQo+ID4gPiA+ICAjZGVmaW5lIFBBQl9QRVhf QU1BUF9BWElfV0lOKHdpbikJUEFCX1JFR19BRERSKDB4NGJhNCwNCj4gPiA+IHdpbikNCj4gPiA+ ID4gQEAgLTg3LDM5ICs4OSwzOSBAQA0KPiA+ID4gPiAgI2RlZmluZSBQQUJfUEVYX0FNQVBfUEVY X1dJTl9IKHdpbikNCj4gCVBBQl9SRUdfQUREUigweDRiYWMsDQo+ID4gPiB3aW4pDQo+ID4gPiA+ DQo+ID4gPiA+ICAvKiBzdGFydGluZyBvZmZzZXQgb2YgSU5UWCBiaXRzIGluIHN0YXR1cyByZWdp c3RlciAqLw0KPiA+ID4gPiAtI2RlZmluZSBQQUJfSU5UWF9TVEFSVAk1DQo+ID4gPiA+ICsjZGVm aW5lIFBBQl9JTlRYX1NUQVJUCQkJNQ0KPiA+ID4gPg0KPiA+ID4gPiAgLyogc3VwcG9ydGVkIG51 bWJlciBvZiBNU0kgaW50ZXJydXB0cyAqLw0KPiA+ID4gPiAtI2RlZmluZSBQQ0lfTlVNX01TSQkx Ng0KPiA+ID4gPiArI2RlZmluZSBQQ0lfTlVNX01TSQkJCTE2DQo+ID4gPiA+DQo+ID4gPiA+ICAv KiBNU0kgcmVnaXN0ZXJzICovDQo+ID4gPiA+IC0jZGVmaW5lIE1TSV9CQVNFX0xPX09GRlNFVAkw eDA0DQo+ID4gPiA+IC0jZGVmaW5lIE1TSV9CQVNFX0hJX09GRlNFVAkweDA4DQo+ID4gPiA+IC0j ZGVmaW5lIE1TSV9TSVpFX09GRlNFVAkweDBjDQo+ID4gPiA+IC0jZGVmaW5lIE1TSV9FTkFCTEVf T0ZGU0VUCTB4MTQNCj4gPiA+ID4gLSNkZWZpbmUgTVNJX1NUQVRVU19PRkZTRVQJMHgxOA0KPiA+ ID4gPiAtI2RlZmluZSBNU0lfREFUQV9PRkZTRVQJMHgyMA0KPiA+ID4gPiAtI2RlZmluZSBNU0lf QUREUl9MX09GRlNFVAkweDI0DQo+ID4gPiA+IC0jZGVmaW5lIE1TSV9BRERSX0hfT0ZGU0VUCTB4 MjgNCj4gPiA+ID4gKyNkZWZpbmUgTVNJX0JBU0VfTE9fT0ZGU0VUCQkweDA0DQo+ID4gPiA+ICsj ZGVmaW5lIE1TSV9CQVNFX0hJX09GRlNFVAkJMHgwOA0KPiA+ID4gPiArI2RlZmluZSBNU0lfU0la RV9PRkZTRVQJCQkweDBjDQo+ID4gPiA+ICsjZGVmaW5lIE1TSV9FTkFCTEVfT0ZGU0VUCQkweDE0 DQo+ID4gPiA+ICsjZGVmaW5lIE1TSV9TVEFUVVNfT0ZGU0VUCQkweDE4DQo+ID4gPiA+ICsjZGVm aW5lIE1TSV9EQVRBX09GRlNFVAkJCTB4MjANCj4gPiA+ID4gKyNkZWZpbmUgTVNJX0FERFJfTF9P RkZTRVQJCTB4MjQNCj4gPiA+ID4gKyNkZWZpbmUgTVNJX0FERFJfSF9PRkZTRVQJCTB4MjgNCj4g PiA+ID4NCj4gPiA+ID4gIC8qIG91dGJvdW5kIGFuZCBpbmJvdW5kIHdpbmRvdyBkZWZpbml0aW9u cyAqLw0KPiA+ID4gPiAtI2RlZmluZSBXSU5fTlVNXzAJCTANCj4gPiA+ID4gLSNkZWZpbmUgV0lO X05VTV8xCQkxDQo+ID4gPiA+IC0jZGVmaW5lIENGR19XSU5ET1dfVFlQRQkwDQo+ID4gPiA+IC0j ZGVmaW5lIElPX1dJTkRPV19UWVBFCQkxDQo+ID4gPiA+IC0jZGVmaW5lIE1FTV9XSU5ET1dfVFlQ RQkyDQo+ID4gPiA+IC0jZGVmaW5lIElCX1dJTl9TSVpFCQkoKHU2NCkyNTYgKiAxMDI0ICogMTAy NCAqIDEwMjQpDQo+ID4gPiA+IC0jZGVmaW5lIE1BWF9QSU9fV0lORE9XUwk4DQo+ID4gPiA+ICsj ZGVmaW5lIFdJTl9OVU1fMAkJCTANCj4gPiA+ID4gKyNkZWZpbmUgV0lOX05VTV8xCQkJMQ0KPiA+ ID4gPiArI2RlZmluZSBDRkdfV0lORE9XX1RZUEUJCQkwDQo+ID4gPiA+ICsjZGVmaW5lIElPX1dJ TkRPV19UWVBFCQkJMQ0KPiA+ID4gPiArI2RlZmluZSBNRU1fV0lORE9XX1RZUEUJCQkyDQo+ID4g PiA+ICsjZGVmaW5lIElCX1dJTl9TSVpFCQkJKCh1NjQpMjU2ICogMTAyNCAqIDEwMjQgKiAxMDI0 KQ0KPiA+ID4gPiArI2RlZmluZSBNQVhfUElPX1dJTkRPV1MJCQk4DQo+ID4gPiA+DQo+ID4gPiA+ ICAvKiBQYXJhbWV0ZXJzIGZvciB0aGUgd2FpdGluZyBmb3IgbGluayB1cCByb3V0aW5lICovDQo+ ID4gPiA+IC0jZGVmaW5lIExJTktfV0FJVF9NQVhfUkVUUklFUwkxMA0KPiA+ID4gPiAtI2RlZmlu ZSBMSU5LX1dBSVRfTUlOCTkwMDAwDQo+ID4gPiA+IC0jZGVmaW5lIExJTktfV0FJVF9NQVgJMTAw MDAwDQo+ID4gPiA+ICsjZGVmaW5lIExJTktfV0FJVF9NQVhfUkVUUklFUwkJMTANCj4gPiA+ID4g KyNkZWZpbmUgTElOS19XQUlUX01JTgkJCTkwMDAwDQo+ID4gPiA+ICsjZGVmaW5lIExJTktfV0FJ VF9NQVgJCQkxMDAwMDANCj4gPiA+ID4NCj4gPiA+ID4gLSNkZWZpbmUgUEFHRURfQUREUl9CTkRS WQkJCTB4YzAwDQo+ID4gPiA+IC0jZGVmaW5lIE9GRlNFVF9UT19QQUdFX0FERFIob2ZmKQkJXA0K PiA+ID4gPiArI2RlZmluZSBQQUdFRF9BRERSX0JORFJZCQkweGMwMA0KPiA+ID4gPiArI2RlZmlu ZSBPRkZTRVRfVE9fUEFHRV9BRERSKG9mZikJXA0KPiA+ID4gPiAgCSgob2ZmICYgUEFHRV9MT19N QVNLKSB8IFBBR0VEX0FERFJfQk5EUlkpDQo+ID4gPiA+IC0jZGVmaW5lIE9GRlNFVF9UT19QQUdF X0lEWChvZmYpCQkJXA0KPiA+ID4gPiArI2RlZmluZSBPRkZTRVRfVE9fUEFHRV9JRFgob2ZmKQkJ XA0KPiA+ID4gPiAgCSgob2ZmID4+IFBBR0VfU0VMX09GRlNFVF9TSElGVCkgJiBQQUdFX1NFTF9N QVNLKQ0KPiA+ID4gPg0KPiA+ID4gPiAgc3RydWN0IG1vYml2ZWlsX21zaSB7CQkJLyogTVNJIGlu Zm9ybWF0aW9uICovDQo+ID4gPiA+IEBAIC0yOTcsMTQgKzI5OSwxNCBAQCBzdGF0aWMgdm9pZCBf X2lvbWVtDQo+ID4gPiAqbW9iaXZlaWxfcGNpZV9tYXBfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMs DQo+ID4gPiA+ICAJCQkJCXVuc2lnbmVkIGludCBkZXZmbiwgaW50IHdoZXJlKSAgew0KPiA+ID4g PiAgCXN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llID0gYnVzLT5zeXNkYXRhOw0KPiA+ID4gPiAr CXUzMiB2YWx1ZTsNCj4gPiA+ID4NCj4gPiA+ID4gIAlpZiAoIW1vYml2ZWlsX3BjaWVfdmFsaWRf ZGV2aWNlKGJ1cywgZGV2Zm4pKQ0KPiA+ID4gPiAgCQlyZXR1cm4gTlVMTDsNCj4gPiA+ID4NCj4g PiA+ID4gLQlpZiAoYnVzLT5udW1iZXIgPT0gcGNpZS0+cm9vdF9idXNfbnIpIHsNCj4gPiA+ID4g LQkJLyogUkMgY29uZmlnIGFjY2VzcyAqLw0KPiA+ID4gPiArCS8qIFJDIGNvbmZpZyBhY2Nlc3Mg Ki8NCj4gPiA+ID4gKwlpZiAoYnVzLT5udW1iZXIgPT0gcGNpZS0+cm9vdF9idXNfbnIpDQo+ID4g PiA+ICAJCXJldHVybiBwY2llLT5jc3JfYXhpX3NsYXZlX2Jhc2UgKyB3aGVyZTsNCj4gPiA+ID4g LQl9DQo+ID4gPiA+DQo+ID4gPiA+ICAJLyoNCj4gPiA+ID4gIAkgKiBFUCBjb25maWcgYWNjZXNz IChpbiBDb25maWcvQVBJTyBzcGFjZSkgQEAgLTMxMiwxMCArMzE0LDEyDQo+IEBADQo+ID4gPiA+ IHN0YXRpYyB2b2lkIF9faW9tZW0gKm1vYml2ZWlsX3BjaWVfbWFwX2J1cyhzdHJ1Y3QgcGNpX2J1 cyAqYnVzLA0KPiA+ID4gPiAgCSAqIChCREYpIGluIFBBQl9BWElfQU1BUF9QRVhfV0lOX0wwIFJl Z2lzdGVyLg0KPiA+ID4gPiAgCSAqIFJlbGllcyBvbiBwY2lfbG9jayBzZXJpYWxpemF0aW9uDQo+ ID4gPiA+ICAJICovDQo+ID4gPiA+IC0JY3NyX3dyaXRlbChwY2llLCBidXMtPm51bWJlciA8PCBQ QUJfQlVTX1NISUZUIHwNCj4gPiA+ID4gLQkJCVBDSV9TTE9UKGRldmZuKSA8PCBQQUJfREVWSUNF X1NISUZUIHwNCj4gPiA+ID4gLQkJCVBDSV9GVU5DKGRldmZuKSA8PCBQQUJfRlVOQ1RJT05fU0hJ RlQsDQo+ID4gPiA+IC0JCQlQQUJfQVhJX0FNQVBfUEVYX1dJTl9MKFdJTl9OVU1fMCkpOw0KPiA+ ID4gPiArCXZhbHVlID0gYnVzLT5udW1iZXIgPDwgUEFCX0JVU19TSElGVCB8DQo+ID4gPiA+ICsJ CVBDSV9TTE9UKGRldmZuKSA8PCBQQUJfREVWSUNFX1NISUZUIHwNCj4gPiA+ID4gKwkJUENJX0ZV TkMoZGV2Zm4pIDw8IFBBQl9GVU5DVElPTl9TSElGVDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWNz cl93cml0ZWwocGNpZSwgdmFsdWUsDQo+IFBBQl9BWElfQU1BUF9QRVhfV0lOX0woV0lOX05VTV8w KSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAlyZXR1cm4gcGNpZS0+Y29uZmlnX2F4aV9zbGF2ZV9i YXNlICsgd2hlcmU7ICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0zNTAsMjIgKzM1NCwyMiBAQCBz dGF0aWMgdm9pZCBtb2JpdmVpbF9wY2llX2lzcihzdHJ1Y3QgaXJxX2Rlc2MNCj4gPiA+ID4gKmRl c2MpDQo+ID4gPiA+DQo+ID4gPiA+ICAJLyogSGFuZGxlIElOVHggKi8NCj4gPiA+ID4gIAlpZiAo aW50cl9zdGF0dXMgJiBQQUJfSU5UUF9JTlRYX01BU0spIHsNCj4gPiA+ID4gLQkJc2hpZnRlZF9z dGF0dXMgPSBjc3JfcmVhZGwocGNpZSwNCj4gUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQpID4+DQo+ ID4gPiA+IC0JCQlQQUJfSU5UWF9TVEFSVDsNCj4gPiA+ID4gKwkJc2hpZnRlZF9zdGF0dXMgPSBj c3JfcmVhZGwocGNpZSwNCj4gUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQpOw0KPiA+ID4gPiArCQlz aGlmdGVkX3N0YXR1cyA+Pj0gUEFCX0lOVFhfU1RBUlQ7DQo+ID4gPiA+ICAJCWRvIHsNCj4gPiA+ ID4gIAkJCWZvcl9lYWNoX3NldF9iaXQoYml0LCAmc2hpZnRlZF9zdGF0dXMsIFBDSV9OVU1fSU5U WCkgew0KPiA+ID4gPiAgCQkJCXZpcnEgPSBpcnFfZmluZF9tYXBwaW5nKHBjaWUtPmludHhfZG9t YWluLA0KPiA+ID4gPiAtCQkJCQkJYml0ICsgMSk7DQo+ID4gPiA+ICsJCQkJCQkJYml0ICsgMSk7 DQo+ID4gPiA+ICAJCQkJaWYgKHZpcnEpDQo+ID4gPiA+ICAJCQkJCWdlbmVyaWNfaGFuZGxlX2ly cSh2aXJxKTsNCj4gPiA+ID4gIAkJCQllbHNlDQo+ID4gPiA+IC0JCQkJCWRldl9lcnJfcmF0ZWxp bWl0ZWQoZGV2LA0KPiA+ID4gPiAtCQkJCQkJInVuZXhwZWN0ZWQgSVJRLCBJTlQlZFxuIiwgYml0 KTsNCj4gPiA+ID4gKwkJCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkZXYsICJ1bmV4cGVjdGVkIElS USwNCj4gPiA+IElOVCVkXG4iLA0KPiA+ID4gPiArCQkJCQkJCSAgICBiaXQpOw0KPiA+ID4gPg0K PiA+ID4gPiAgCQkJCS8qIGNsZWFyIGludGVycnVwdCAqLw0KPiA+ID4gPiAgCQkJCWNzcl93cml0 ZWwocGNpZSwNCj4gPiA+ID4gLQkJCQkJc2hpZnRlZF9zdGF0dXMgPDwgUEFCX0lOVFhfU1RBUlQs DQo+ID4gPiA+IC0JCQkJCVBBQl9JTlRQX0FNQkFfTUlTQ19TVEFUKTsNCj4gPiA+ID4gKwkJCQkJ ICAgc2hpZnRlZF9zdGF0dXMgPDwgUEFCX0lOVFhfU1RBUlQsDQo+ID4gPiA+ICsJCQkJCSAgIFBB Ql9JTlRQX0FNQkFfTUlTQ19TVEFUKTsNCj4gPiA+ID4gIAkJCX0NCj4gPiA+ID4gIAkJfSB3aGls ZSAoKHNoaWZ0ZWRfc3RhdHVzID4+IFBBQl9JTlRYX1NUQVJUKSAhPSAwKTsNCj4gPiA+ID4gIAl9 DQo+ID4gPiA+IEBAIC0zNzUsOCArMzc5LDcgQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9p c3Ioc3RydWN0IGlycV9kZXNjDQo+ID4gPiA+ICpkZXNjKQ0KPiA+ID4gPg0KPiA+ID4gPiAgCS8q IGhhbmRsZSBNU0kgaW50ZXJydXB0cyAqLw0KPiA+ID4gPiAgCXdoaWxlIChtc2lfc3RhdHVzICYg MSkgew0KPiA+ID4gPiAtCQltc2lfZGF0YSA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YXBiX2Nzcl9i YXNlDQo+ID4gPiA+IC0JCQkJKyBNU0lfREFUQV9PRkZTRVQpOw0KPiA+ID4gPiArCQltc2lfZGF0 YSA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YXBiX2Nzcl9iYXNlICsNCj4gPiA+IE1TSV9EQVRBX09G RlNFVCk7DQo+ID4gPiA+DQo+ID4gPiA+ICAJCS8qDQo+ID4gPiA+ICAJCSAqIE1TSV9TVEFUVVNf T0ZGU0VUIHJlZ2lzdGVyIGdldHMgdXBkYXRlZCB0byB6ZXJvIEBADQo+IC0zODUsMTgNCj4gPiA+ ID4gKzM4OCwxOCBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF9wY2llX2lzcihzdHJ1Y3QgaXJxX2Rl c2MgKmRlc2MpDQo+ID4gPiA+ICAJCSAqIHR3byBkdW1teSByZWFkcy4NCj4gPiA+ID4gIAkJICov DQo+ID4gPiA+ICAJCW1zaV9hZGRyX2xvID0gcmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jh c2UgKw0KPiA+ID4gPiAtCQkJCU1TSV9BRERSX0xfT0ZGU0VUKTsNCj4gPiA+ID4gKwkJCQkJICAg IE1TSV9BRERSX0xfT0ZGU0VUKTsNCj4gPiA+ID4gIAkJbXNpX2FkZHJfaGkgPSByZWFkbF9yZWxh eGVkKHBjaWUtPmFwYl9jc3JfYmFzZSArDQo+ID4gPiA+IC0JCQkJTVNJX0FERFJfSF9PRkZTRVQp Ow0KPiA+ID4gPiArCQkJCQkgICAgTVNJX0FERFJfSF9PRkZTRVQpOw0KPiA+ID4gPiAgCQlkZXZf ZGJnKGRldiwgIk1TSSByZWdpc3RlcnMsIGRhdGE6ICUwOHgsIGFkZHI6ICUwOHg6JTA4eFxuIiwN Cj4gPiA+ID4gLQkJCQltc2lfZGF0YSwgbXNpX2FkZHJfaGksIG1zaV9hZGRyX2xvKTsNCj4gPiA+ ID4gKwkJCW1zaV9kYXRhLCBtc2lfYWRkcl9oaSwgbXNpX2FkZHJfbG8pOw0KPiA+ID4gPg0KPiA+ ID4gPiAgCQl2aXJxID0gaXJxX2ZpbmRfbWFwcGluZyhtc2ktPmRldl9kb21haW4sIG1zaV9kYXRh KTsNCj4gPiA+ID4gIAkJaWYgKHZpcnEpDQo+ID4gPiA+ICAJCQlnZW5lcmljX2hhbmRsZV9pcnEo dmlycSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAJCW1zaV9zdGF0dXMgPSByZWFkbF9yZWxheGVkKHBj aWUtPmFwYl9jc3JfYmFzZSArDQo+ID4gPiA+IC0JCQkJTVNJX1NUQVRVU19PRkZTRVQpOw0KPiA+ ID4gPiArCQkJCQkgICBNU0lfU1RBVFVTX09GRlNFVCk7DQo+ID4gPiA+ICAJfQ0KPiA+ID4gPg0K PiA+ID4gPiAgCS8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgc3RhdHVzICovDQo+ID4gPiA+IEBAIC00 MTMsNyArNDE2LDcgQEAgc3RhdGljIGludCBtb2JpdmVpbF9wY2llX3BhcnNlX2R0KHN0cnVjdA0K PiA+ID4gPiBtb2JpdmVpbF9wY2llICpwY2llKQ0KPiA+ID4gPg0KPiA+ID4gPiAgCS8qIG1hcCBj b25maWcgcmVzb3VyY2UgKi8NCj4gPiA+ID4gIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Vf YnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLA0KPiA+ID4gPiAtCQkJImNvbmZpZ19heGlfc2xh dmUiKTsNCj4gPiA+ID4gKwkJCQkJICAgImNvbmZpZ19heGlfc2xhdmUiKTsNCj4gPiA+ID4gIAlw Y2llLT5jb25maWdfYXhpX3NsYXZlX2Jhc2UgPQ0KPiBkZXZtX3BjaV9yZW1hcF9jZmdfcmVzb3Vy Y2UoZGV2LA0KPiA+ID4gcmVzKTsNCj4gPiA+ID4gIAlpZiAoSVNfRVJSKHBjaWUtPmNvbmZpZ19h eGlfc2xhdmVfYmFzZSkpDQo+ID4gPiA+ICAJCXJldHVybiBQVFJfRVJSKHBjaWUtPmNvbmZpZ19h eGlfc2xhdmVfYmFzZSk7DQo+ID4gPiA+IEBAIC00MjEsNyArNDI0LDcgQEAgc3RhdGljIGludCBt b2JpdmVpbF9wY2llX3BhcnNlX2R0KHN0cnVjdA0KPiA+ID4gPiBtb2JpdmVpbF9wY2llICpwY2ll KQ0KPiA+ID4gPg0KPiA+ID4gPiAgCS8qIG1hcCBjc3IgcmVzb3VyY2UgKi8NCj4gPiA+ID4gIAly ZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLA0K PiA+ID4gPiAtCQkJImNzcl9heGlfc2xhdmUiKTsNCj4gPiA+ID4gKwkJCQkJICAgImNzcl9heGlf c2xhdmUiKTsNCj4gPiA+ID4gIAlwY2llLT5jc3JfYXhpX3NsYXZlX2Jhc2UgPSBkZXZtX3BjaV9y ZW1hcF9jZmdfcmVzb3VyY2UoZGV2LA0KPiByZXMpOw0KPiA+ID4gPiAgCWlmIChJU19FUlIocGNp ZS0+Y3NyX2F4aV9zbGF2ZV9iYXNlKSkNCj4gPiA+ID4gIAkJcmV0dXJuIFBUUl9FUlIocGNpZS0+ Y3NyX2F4aV9zbGF2ZV9iYXNlKTsNCj4gPiA+ID4gQEAgLTQ1Miw3ICs0NTUsNyBAQCBzdGF0aWMg aW50IG1vYml2ZWlsX3BjaWVfcGFyc2VfZHQoc3RydWN0DQo+ID4gPiA+IG1vYml2ZWlsX3BjaWUg KnBjaWUpICB9DQo+ID4gPiA+DQo+ID4gPiA+ICBzdGF0aWMgdm9pZCBwcm9ncmFtX2liX3dpbmRv d3Moc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUsIGludA0KPiA+ID4gd2luX251bSwNCj4gPiA+ ID4gLQkJaW50IHBjaV9hZGRyLCB1MzIgdHlwZSwgdTY0IHNpemUpDQo+ID4gPiA+ICsJCQkgICAg ICAgaW50IHBjaV9hZGRyLCB1MzIgdHlwZSwgdTY0IHNpemUpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ ICAJaW50IHBpb19jdHJsX3ZhbDsNCj4gPiA+ID4gIAlpbnQgYW1hcF9jdHJsX2R3Ow0KPiA+ID4g PiBAQCAtNDY1LDE5ICs0NjgsMjAgQEAgc3RhdGljIHZvaWQgcHJvZ3JhbV9pYl93aW5kb3dzKHN0 cnVjdA0KPiA+ID4gbW9iaXZlaWxfcGNpZSAqcGNpZSwgaW50IHdpbl9udW0sDQo+ID4gPiA+ICAJ fQ0KPiA+ID4gPg0KPiA+ID4gPiAgCXBpb19jdHJsX3ZhbCA9IGNzcl9yZWFkbChwY2llLCBQQUJf UEVYX1BJT19DVFJMKTsNCj4gPiA+ID4gLQljc3Jfd3JpdGVsKHBjaWUsDQo+ID4gPiA+IC0JCXBp b19jdHJsX3ZhbCB8ICgxIDw8IFBJT19FTkFCTEVfU0hJRlQpLCBQQUJfUEVYX1BJT19DVFJMKTsN Cj4gPiA+ID4gLQlhbWFwX2N0cmxfZHcgPSBjc3JfcmVhZGwocGNpZSwgUEFCX1BFWF9BTUFQX0NU Ukwod2luX251bSkpOw0KPiA+ID4gPiAtCWFtYXBfY3RybF9kdyA9IChhbWFwX2N0cmxfZHcgfCAo dHlwZSA8PA0KPiBBTUFQX0NUUkxfVFlQRV9TSElGVCkpOw0KPiA+ID4gPiAtCWFtYXBfY3RybF9k dyA9IChhbWFwX2N0cmxfZHcgfCAoMSA8PCBBTUFQX0NUUkxfRU5fU0hJRlQpKTsNCj4gPiA+ID4g KwlwaW9fY3RybF92YWwgfD0gMSA8PCBQSU9fRU5BQkxFX1NISUZUOw0KPiA+ID4gPiArCWNzcl93 cml0ZWwocGNpZSwgcGlvX2N0cmxfdmFsLCBQQUJfUEVYX1BJT19DVFJMKTsNCj4gPiA+ID4NCj4g PiA+ID4gLQljc3Jfd3JpdGVsKHBjaWUsIGFtYXBfY3RybF9kdyB8IGxvd2VyXzMyX2JpdHMoc2l6 ZTY0KSwNCj4gPiA+ID4gLQkJICAgUEFCX1BFWF9BTUFQX0NUUkwod2luX251bSkpOw0KPiA+ID4g PiArCWFtYXBfY3RybF9kdyA9IGNzcl9yZWFkbChwY2llLCBQQUJfUEVYX0FNQVBfQ1RSTCh3aW5f bnVtKSk7DQo+ID4gPiA+ICsJYW1hcF9jdHJsX2R3IHw9ICh0eXBlIDw8IEFNQVBfQ1RSTF9UWVBF X1NISUZUKSB8DQo+ID4gPiA+ICsJCQkoMSA8PCBBTUFQX0NUUkxfRU5fU0hJRlQpIHwNCj4gPiA+ ID4gKwkJCWxvd2VyXzMyX2JpdHMoc2l6ZTY0KTsNCj4gPiA+ID4gKwljc3Jfd3JpdGVsKHBjaWUs IGFtYXBfY3RybF9kdywgUEFCX1BFWF9BTUFQX0NUUkwod2luX251bSkpOw0KPiA+ID4gPg0KPiA+ ID4gPiAgCWNzcl93cml0ZWwocGNpZSwgdXBwZXJfMzJfYml0cyhzaXplNjQpLA0KPiA+ID4gPiAg CQkgICBQQUJfRVhUX1BFWF9BTUFQX1NJWkVOKHdpbl9udW0pKTsNCj4gPiA+ID4NCj4gPiA+ID4g IAljc3Jfd3JpdGVsKHBjaWUsIHBjaV9hZGRyLCBQQUJfUEVYX0FNQVBfQVhJX1dJTih3aW5fbnVt KSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIHBjaV9hZGRyLCBQQUJf UEVYX0FNQVBfUEVYX1dJTl9MKHdpbl9udW0pKTsNCj4gPiA+ID4gIAljc3Jfd3JpdGVsKHBjaWUs IDAsIFBBQl9QRVhfQU1BUF9QRVhfV0lOX0god2luX251bSkpOyAgfQ0KPiBAQA0KPiA+ID4gLTQ4 Niw3DQo+ID4gPiA+ICs0OTAsOCBAQCBzdGF0aWMgdm9pZCBwcm9ncmFtX2liX3dpbmRvd3Moc3Ry dWN0IG1vYml2ZWlsX3BjaWUNCj4gKnBjaWUsDQo+ID4gPiBpbnQgd2luX251bSwNCj4gPiA+ID4g ICAqIHJvdXRpbmUgdG8gcHJvZ3JhbSB0aGUgb3V0Ym91bmQgd2luZG93cw0KPiA+ID4gPiAgICov DQo+ID4gPiA+ICBzdGF0aWMgdm9pZCBwcm9ncmFtX29iX3dpbmRvd3Moc3RydWN0IG1vYml2ZWls X3BjaWUgKnBjaWUsIGludA0KPiA+ID4gd2luX251bSwNCj4gPiA+ID4gLQkJdTY0IGNwdV9hZGRy LCB1NjQgcGNpX2FkZHIsIHUzMiBjb25maWdfaW9fYml0LCB1NjQgc2l6ZSkNCj4gPiA+ID4gKwkJ CSAgICAgICB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwNCj4gPiA+ID4gKwkJCSAgICAgICB1 MzIgY29uZmlnX2lvX2JpdCwgdTY0IHNpemUpDQo+ID4gPiA+ICB7DQo+ID4gPiA+DQo+ID4gPiA+ ICAJdTMyIHZhbHVlLCB0eXBlOw0KPiA+ID4gPiBAQCAtNTA1LDcgKzUxMCw3IEBAIHN0YXRpYyB2 b2lkIHByb2dyYW1fb2Jfd2luZG93cyhzdHJ1Y3QNCj4gPiA+IG1vYml2ZWlsX3BjaWUgKnBjaWUs IGludCB3aW5fbnVtLA0KPiA+ID4gPiAgCXR5cGUgPSBjb25maWdfaW9fYml0Ow0KPiA+ID4gPiAg CXZhbHVlID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsNCj4g PiA+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIDEgPDwgV0lOX0VOQUJMRV9TSElGVCB8IHR5cGUgPDwN Cj4gV0lOX1RZUEVfU0hJRlQgfA0KPiA+ID4gPiAtCQkJbG93ZXJfMzJfYml0cyhzaXplNjQpLCBQ QUJfQVhJX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQo+ID4gPiA+ICsJCSAgIGxvd2VyXzMyX2JpdHMo c2l6ZTY0KSwgUEFCX0FYSV9BTUFQX0NUUkwod2luX251bSkpOw0KPiA+ID4gPg0KPiA+ID4gPiAg CWNzcl93cml0ZWwocGNpZSwgdXBwZXJfMzJfYml0cyhzaXplNjQpLA0KPiA+ID4gPiBQQUJfRVhU X0FYSV9BTUFQX1NJWkUod2luX251bSkpOw0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtNTE1LDE0ICs1 MjAsMTQgQEAgc3RhdGljIHZvaWQgcHJvZ3JhbV9vYl93aW5kb3dzKHN0cnVjdA0KPiA+ID4gbW9i aXZlaWxfcGNpZSAqcGNpZSwgaW50IHdpbl9udW0sDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+ICAJ dmFsdWUgPSBjc3JfcmVhZGwocGNpZSwgUEFCX0FYSV9BTUFQX0FYSV9XSU4od2luX251bSkpOw0K PiA+ID4gPiAgCWNzcl93cml0ZWwocGNpZSwgY3B1X2FkZHIgJiAofkFYSV9XSU5ET1dfQUxJR05f TUFTSyksDQo+ID4gPiA+IC0JCQlQQUJfQVhJX0FNQVBfQVhJX1dJTih3aW5fbnVtKSk7DQo+ID4g PiA+ICsJCSAgIFBBQl9BWElfQU1BUF9BWElfV0lOKHdpbl9udW0pKTsNCj4gPiA+ID4NCj4gPiA+ ID4gIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQUJfQVhJX0FNQVBfUEVYX1dJTl9IKHdpbl9u dW0pKTsNCj4gPiA+ID4NCj4gPiA+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIGxvd2VyXzMyX2JpdHMo cGNpX2FkZHIpLA0KPiA+ID4gPiAtCQkJUEFCX0FYSV9BTUFQX1BFWF9XSU5fTCh3aW5fbnVtKSk7 DQo+ID4gPiA+ICsJCSAgIFBBQl9BWElfQU1BUF9QRVhfV0lOX0wod2luX251bSkpOw0KPiA+ID4g PiAgCWNzcl93cml0ZWwocGNpZSwgdXBwZXJfMzJfYml0cyhwY2lfYWRkciksDQo+ID4gPiA+IC0J CQlQQUJfQVhJX0FNQVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCj4gPiA+ID4gKwkJICAgUEFCX0FY SV9BTUFQX1BFWF9XSU5fSCh3aW5fbnVtKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAJcGNpZS0+b2Jf d2luc19jb25maWd1cmVkKys7DQo+ID4gPiA+ICB9DQo+ID4gPiA+IEBAIC01MzgsNyArNTQzLDkg QEAgc3RhdGljIGludCBtb2JpdmVpbF9icmluZ3VwX2xpbmsoc3RydWN0DQo+ID4gPiA+IG1vYml2 ZWlsX3BjaWUgKnBjaWUpDQo+ID4gPiA+DQo+ID4gPiA+ICAJCXVzbGVlcF9yYW5nZShMSU5LX1dB SVRfTUlOLCBMSU5LX1dBSVRfTUFYKTsNCj4gPiA+ID4gIAl9DQo+ID4gPiA+ICsNCj4gPiA+ID4g IAlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICJsaW5rIG5ldmVyIGNhbWUgdXBcbiIpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICAJcmV0dXJuIC1FVElNRURPVVQ7DQo+ID4gPiA+ICB9DQo+ID4gPiA+ DQo+ID4gPiA+IEBAIC01NTEsMTYgKzU1OCwxNiBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF9wY2ll X2VuYWJsZV9tc2koc3RydWN0DQo+ID4gPiBtb2JpdmVpbF9wY2llICpwY2llKQ0KPiA+ID4gPiAg CW1zaS0+bXNpX3BhZ2VzX3BoeXMgPSAocGh5c19hZGRyX3QpbXNnX2FkZHI7DQo+ID4gPiA+DQo+ ID4gPiA+ICAJd3JpdGVsX3JlbGF4ZWQobG93ZXJfMzJfYml0cyhtc2dfYWRkciksDQo+ID4gPiA+ IC0JCXBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9CQVNFX0xPX09GRlNFVCk7DQo+ID4gPiA+ICsJ CSAgICAgICBwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfQkFTRV9MT19PRkZTRVQpOw0KPiA+ID4g PiAgCXdyaXRlbF9yZWxheGVkKHVwcGVyXzMyX2JpdHMobXNnX2FkZHIpLA0KPiA+ID4gPiAtCQlw Y2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfQkFTRV9ISV9PRkZTRVQpOw0KPiA+ID4gPiArCQkgICAg ICAgcGNpZS0+YXBiX2Nzcl9iYXNlICsgTVNJX0JBU0VfSElfT0ZGU0VUKTsNCj4gPiA+ID4gIAl3 cml0ZWxfcmVsYXhlZCg0MDk2LCBwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfU0laRV9PRkZTRVQp Ow0KPiA+ID4gPiAgCXdyaXRlbF9yZWxheGVkKDEsIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9F TkFCTEVfT0ZGU0VUKTsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gIHN0YXRpYyBpbnQgbW9iaXZlaWxf aG9zdF9pbml0KHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llKSAgew0KPiA+ID4gPiAtCXUzMiB2 YWx1ZSwgcGFiX2N0cmwsIHR5cGUgPSAwOw0KPiA+ID4gPiArCXUzMiB2YWx1ZSwgcGFiX2N0cmws IHR5cGU7DQo+ID4gPiA+ICAJaW50IGVycjsNCj4gPiA+ID4gIAlzdHJ1Y3QgcmVzb3VyY2VfZW50 cnkgKndpbiwgKnRtcDsNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTU3NSwyNiArNTgyLDI3IEBAIHN0 YXRpYyBpbnQgbW9iaXZlaWxfaG9zdF9pbml0KHN0cnVjdA0KPiA+ID4gbW9iaXZlaWxfcGNpZSAq cGNpZSkNCj4gPiA+ID4gIAkgKiBTcGFjZQ0KPiA+ID4gPiAgCSAqLw0KPiA+ID4gPiAgCXZhbHVl ID0gY3NyX3JlYWRsKHBjaWUsIFBDSV9DT01NQU5EKTsNCj4gPiA+ID4gLQljc3Jfd3JpdGVsKHBj aWUsIHZhbHVlIHwgUENJX0NPTU1BTkRfSU8gfA0KPiA+ID4gUENJX0NPTU1BTkRfTUVNT1JZIHwN Cj4gPiA+ID4gLQkJUENJX0NPTU1BTkRfTUFTVEVSLCBQQ0lfQ09NTUFORCk7DQo+ID4gPiA+ICsJ dmFsdWUgfD0gUENJX0NPTU1BTkRfSU8gfCBQQ0lfQ09NTUFORF9NRU1PUlkgfA0KPiA+ID4gUENJ X0NPTU1BTkRfTUFTVEVSOw0KPiA+ID4gPiArCWNzcl93cml0ZWwocGNpZSwgdmFsdWUsIFBDSV9D T01NQU5EKTsNCj4gPiA+ID4NCj4gPiA+ID4gIAkvKg0KPiA+ID4gPiAgCSAqIHByb2dyYW0gUElP IEVuYWJsZSBCaXQgdG8gMSAoYW5kIFBFWCBQSU8gRW5hYmxlIHRvIDEpIGluDQo+IFBBQl9DVFJM DQo+ID4gPiA+ICAJICogcmVnaXN0ZXINCj4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gIAlwYWJfY3Ry bCA9IGNzcl9yZWFkbChwY2llLCBQQUJfQ1RSTCk7DQo+ID4gPiA+IC0JY3NyX3dyaXRlbChwY2ll LCBwYWJfY3RybCB8ICgxIDw8IEFNQkFfUElPX0VOQUJMRV9TSElGVCkgfA0KPiA+ID4gPiAtCQko MSA8PCBQRVhfUElPX0VOQUJMRV9TSElGVCksIFBBQl9DVFJMKTsNCj4gPiA+ID4gKwlwYWJfY3Ry bCB8PSAoMSA8PCBBTUJBX1BJT19FTkFCTEVfU0hJRlQpIHwgKDEgPDwNCj4gPiA+IFBFWF9QSU9f RU5BQkxFX1NISUZUKTsNCj4gPiA+ID4gKwljc3Jfd3JpdGVsKHBjaWUsIHBhYl9jdHJsLCBQQUJf Q1RSTCk7DQo+ID4gPiA+DQo+ID4gPiA+ICAJY3NyX3dyaXRlbChwY2llLCAoUEFCX0lOVFBfSU5U WF9NQVNLIHwgUEFCX0lOVFBfTVNJX01BU0spLA0KPiA+ID4gPiAtCQlQQUJfSU5UUF9BTUJBX01J U0NfRU5CKTsNCj4gPiA+ID4gKwkJICAgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQo+ID4gPiA+ DQo+ID4gPiA+ICAJLyoNCj4gPiA+ID4gIAkgKiBwcm9ncmFtIFBJTyBFbmFibGUgQml0IHRvIDEg YW5kIENvbmZpZyBXaW5kb3cgRW5hYmxlIEJpdCB0byAxDQo+IGluDQo+ID4gPiA+ICAJICogUEFC X0FYSV9QSU9fQ1RSTCBSZWdpc3Rlcg0KPiA+ID4gPiAgCSAqLw0KPiA+ID4gPiAgCXZhbHVlID0g Y3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfUElPX0NUUkwpOw0KPiA+ID4gPiAtCWNzcl93cml0ZWwo cGNpZSwgdmFsdWUgfCBBUElPX0VOX01BU0ssIFBBQl9BWElfUElPX0NUUkwpOw0KPiA+ID4gPiAr CXZhbHVlIHw9IEFQSU9fRU5fTUFTSzsNCj4gPiA+ID4gKwljc3Jfd3JpdGVsKHBjaWUsIHZhbHVl LCBQQUJfQVhJX1BJT19DVFJMKTsNCj4gPiA+ID4NCj4gPiA+ID4gIAkvKg0KPiA+ID4gPiAgCSAq IHdlJ2xsIHByb2dyYW0gb25lIG91dGJvdW5kIHdpbmRvdyBmb3IgY29uZmlnIHJlYWRzIGFuZCBA QA0KPiA+ID4gLTYwNSwyNQ0KPiA+ID4gPiArNjEzLDI1IEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxf aG9zdF9pbml0KHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llKQ0KPiA+ID4gPg0KPiA+ID4gPiAg CS8qIGNvbmZpZyBvdXRib3VuZCB0cmFuc2xhdGlvbiB3aW5kb3cgKi8NCj4gPiA+ID4gIAlwcm9n cmFtX29iX3dpbmRvd3MocGNpZSwgcGNpZS0+b2Jfd2luc19jb25maWd1cmVkLA0KPiA+ID4gPiAt CQkJcGNpZS0+b2JfaW9fcmVzLT5zdGFydCwgMCwgQ0ZHX1dJTkRPV19UWVBFLA0KPiA+ID4gPiAt CQkJcmVzb3VyY2Vfc2l6ZShwY2llLT5vYl9pb19yZXMpKTsNCj4gPiA+ID4gKwkJCSAgIHBjaWUt Pm9iX2lvX3Jlcy0+c3RhcnQsIDAsIENGR19XSU5ET1dfVFlQRSwNCj4gPiA+ID4gKwkJCSAgIHJl c291cmNlX3NpemUocGNpZS0+b2JfaW9fcmVzKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAJLyogbWVt b3J5IGluYm91bmQgdHJhbnNsYXRpb24gd2luZG93ICovDQo+ID4gPiA+ICAJcHJvZ3JhbV9pYl93 aW5kb3dzKHBjaWUsIFdJTl9OVU1fMSwgMCwNCj4gTUVNX1dJTkRPV19UWVBFLA0KPiA+ID4gPiBJ Ql9XSU5fU0laRSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAJLyogR2V0IHRoZSBJL08gYW5kIG1lbW9y eSByYW5nZXMgZnJvbSBEVCAqLw0KPiA+ID4gPiAgCXJlc291cmNlX2xpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZSh3aW4sIHRtcCwgJnBjaWUtPnJlc291cmNlcykgew0KPiA+ID4gPiAtCQl0eXBlID0g MDsNCj4gPiA+ID4gIAkJaWYgKHJlc291cmNlX3R5cGUod2luLT5yZXMpID09IElPUkVTT1VSQ0Vf TUVNKQ0KPiA+ID4gPiAgCQkJdHlwZSA9IE1FTV9XSU5ET1dfVFlQRTsNCj4gPiA+ID4gLQkJaWYg KHJlc291cmNlX3R5cGUod2luLT5yZXMpID09IElPUkVTT1VSQ0VfSU8pDQo+ID4gPiA+ICsJCWVs c2UgaWYgKHJlc291cmNlX3R5cGUod2luLT5yZXMpID09IElPUkVTT1VSQ0VfSU8pDQo+ID4gPiA+ ICAJCQl0eXBlID0gSU9fV0lORE9XX1RZUEU7DQo+ID4gPiA+IC0JCWlmICh0eXBlKSB7DQo+ID4g PiA+IC0JCQkvKiBjb25maWd1cmUgb3V0Ym91bmQgdHJhbnNsYXRpb24gd2luZG93ICovDQo+ID4g PiA+IC0JCQlwcm9ncmFtX29iX3dpbmRvd3MocGNpZSwgcGNpZS0+b2Jfd2luc19jb25maWd1cmVk LA0KPiA+ID4gPiAtCQkJCXdpbi0+cmVzLT5zdGFydCwgMCwgdHlwZSwNCj4gPiA+ID4gLQkJCQly ZXNvdXJjZV9zaXplKHdpbi0+cmVzKSk7DQo+ID4gPiA+IC0JCX0NCj4gPiA+ID4gKwkJZWxzZQ0K PiA+ID4gPiArCQkJY29udGludWU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkJLyogY29uZmlndXJl IG91dGJvdW5kIHRyYW5zbGF0aW9uIHdpbmRvdyAqLw0KPiA+ID4gPiArCQlwcm9ncmFtX29iX3dp bmRvd3MocGNpZSwgcGNpZS0+b2Jfd2luc19jb25maWd1cmVkLA0KPiA+ID4gPiArCQkJCSAgIHdp bi0+cmVzLT5zdGFydCwgMCwgdHlwZSwNCj4gPiA+ID4gKwkJCQkgICByZXNvdXJjZV9zaXplKHdp bi0+cmVzKSk7DQo+ID4gPiA+ICAJfQ0KPiA+ID4gPg0KPiA+ID4gPiAgCS8qIHNldHVwIE1TSSBo YXJkd2FyZSByZWdpc3RlcnMgKi8NCj4gPiA+ID4gQEAgLTY0Myw3ICs2NTEsOCBAQCBzdGF0aWMg dm9pZCBtb2JpdmVpbF9tYXNrX2ludHhfaXJxKHN0cnVjdA0KPiBpcnFfZGF0YQ0KPiA+ID4gKmRh dGEpDQo+ID4gPiA+ICAJbWFzayA9IDEgPDwgKChkYXRhLT5od2lycSArIFBBQl9JTlRYX1NUQVJU KSAtIDEpOw0KPiA+ID4gPiAgCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmcGNpZS0+aW50eF9tYXNr X2xvY2ssIGZsYWdzKTsNCj4gPiA+ID4gIAlzaGlmdGVkX3ZhbCA9IGNzcl9yZWFkbChwY2llLCBQ QUJfSU5UUF9BTUJBX01JU0NfRU5CKTsNCj4gPiA+ID4gLQljc3Jfd3JpdGVsKHBjaWUsIChzaGlm dGVkX3ZhbCAmICh+bWFzaykpLA0KPiBQQUJfSU5UUF9BTUJBX01JU0NfRU5CKTsNCj4gPiA+ID4g KwlzaGlmdGVkX3ZhbCAmPSB+bWFzazsNCj4gPiA+ID4gKwljc3Jfd3JpdGVsKHBjaWUsIHNoaWZ0 ZWRfdmFsLCBQQUJfSU5UUF9BTUJBX01JU0NfRU5CKTsNCj4gPiA+ID4gIAlyYXdfc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcGNpZS0+aW50eF9tYXNrX2xvY2ssIGZsYWdzKTsgIH0NCj4gPiA+ID4N Cj4gPiA+ID4gQEAgLTY1OCw3ICs2NjcsOCBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF91bm1hc2tf aW50eF9pcnEoc3RydWN0DQo+ID4gPiBpcnFfZGF0YSAqZGF0YSkNCj4gPiA+ID4gIAltYXNrID0g MSA8PCAoKGRhdGEtPmh3aXJxICsgUEFCX0lOVFhfU1RBUlQpIC0gMSk7DQo+ID4gPiA+ICAJcmF3 X3NwaW5fbG9ja19pcnFzYXZlKCZwY2llLT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KPiA+ID4g PiAgCXNoaWZ0ZWRfdmFsID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9JTlRQX0FNQkFfTUlTQ19FTkIp Ow0KPiA+ID4gPiAtCWNzcl93cml0ZWwocGNpZSwgKHNoaWZ0ZWRfdmFsIHwgbWFzayksDQo+IFBB Ql9JTlRQX0FNQkFfTUlTQ19FTkIpOw0KPiA+ID4gPiArCXNoaWZ0ZWRfdmFsIHw9IG1hc2s7DQo+ ID4gPiA+ICsJY3NyX3dyaXRlbChwY2llLCBzaGlmdGVkX3ZhbCwgUEFCX0lOVFBfQU1CQV9NSVND X0VOQik7DQo+ID4gPiA+ICAJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBjaWUtPmludHhf bWFza19sb2NrLCBmbGFncyk7ICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC02NzIsMTAgKzY4Miwx MSBAQCBzdGF0aWMgc3RydWN0IGlycV9jaGlwIGludHhfaXJxX2NoaXAgPSB7DQo+ID4gPiA+DQo+ ID4gPiA+ICAvKiByb3V0aW5lIHRvIHNldHVwIHRoZSBJTlR4IHJlbGF0ZWQgZGF0YSAqLyAgc3Rh dGljIGludA0KPiA+ID4gPiBtb2JpdmVpbF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWlu ICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsDQo+ID4gPiA+IC0JCWlycV9od19udW1iZXJfdCBo d2lycSkNCj4gPiA+ID4gKwkJCQkgIGlycV9od19udW1iZXJfdCBod2lycSkNCj4gPiA+ID4gIHsN Cj4gPiA+ID4gIAlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCAmaW50eF9pcnFfY2hpcCwg aGFuZGxlX2xldmVsX2lycSk7DQo+ID4gPiA+ICAJaXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21h aW4tPmhvc3RfZGF0YSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAlyZXR1cm4gMDsNCj4gPiA+ID4g IH0NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTY5Miw3ICs3MDMsNyBAQCBzdGF0aWMgc3RydWN0IGly cV9jaGlwIG1vYml2ZWlsX21zaV9pcnFfY2hpcCA9IHsNCj4gPiA+ID4NCj4gPiA+ID4gIHN0YXRp YyBzdHJ1Y3QgbXNpX2RvbWFpbl9pbmZvIG1vYml2ZWlsX21zaV9kb21haW5faW5mbyA9IHsNCj4g PiA+ID4gIAkuZmxhZ3MJPSAoTVNJX0ZMQUdfVVNFX0RFRl9ET01fT1BTIHwNCj4gPiA+IE1TSV9G TEFHX1VTRV9ERUZfQ0hJUF9PUFMgfA0KPiA+ID4gPiAtCQlNU0lfRkxBR19NVUxUSV9QQ0lfTVNJ IHwgTVNJX0ZMQUdfUENJX01TSVgpLA0KPiA+ID4gPiArCQkgICBNU0lfRkxBR19NVUxUSV9QQ0lf TVNJIHwgTVNJX0ZMQUdfUENJX01TSVgpLA0KPiA+ID4gPiAgCS5jaGlwCT0gJm1vYml2ZWlsX21z aV9pcnFfY2hpcCwNCj4gPiA+ID4gIH07DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC03MTAsNyArNzIx LDcgQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfY29tcG9zZV9tc2lfbXNnKHN0cnVjdA0KPiA+ID4g PiBpcnFfZGF0YSAqZGF0YSwgc3RydWN0IG1zaV9tc2cgKm1zZykgIH0NCj4gPiA+ID4NCj4gPiA+ ID4gIHN0YXRpYyBpbnQgbW9iaXZlaWxfbXNpX3NldF9hZmZpbml0eShzdHJ1Y3QgaXJxX2RhdGEg KmlycV9kYXRhLA0KPiA+ID4gPiAtCQljb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgYm9vbCBm b3JjZSkNCj4gPiA+ID4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBib29s IGZvcmNlKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiAg fQ0KPiA+ID4gPiBAQCAtNzIyLDcgKzczMyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXANCj4g PiA+ID4gbW9iaXZlaWxfbXNpX2JvdHRvbV9pcnFfY2hpcCA9IHsgIH07DQo+ID4gPiA+DQo+ID4g PiA+ICBzdGF0aWMgaW50IG1vYml2ZWlsX2lycV9tc2lfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFf ZG9tYWluICpkb21haW4sDQo+ID4gPiA+IC0JCXVuc2lnbmVkIGludCB2aXJxLCB1bnNpZ25lZCBp bnQgbnJfaXJxcywgdm9pZCAqYXJncykNCj4gPiA+ID4gKwkJCQkJIHVuc2lnbmVkIGludCB2aXJx LA0KPiA+ID4gPiArCQkJCQkgdW5zaWduZWQgaW50IG5yX2lycXMsIHZvaWQgKmFyZ3MpDQo+ID4g PiA+ICB7DQo+ID4gPiA+ICAJc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUgPSBkb21haW4tPmhv c3RfZGF0YTsNCj4gPiA+ID4gIAlzdHJ1Y3QgbW9iaXZlaWxfbXNpICptc2kgPSAmcGNpZS0+bXNp OyBAQCAtNzQyLDEzICs3NTQsMTMgQEANCj4gc3RhdGljDQo+ID4gPiA+IGludCBtb2JpdmVpbF9p cnFfbXNpX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLA0KPiA+ID4gPiAg CW11dGV4X3VubG9jaygmbXNpLT5sb2NrKTsNCj4gPiA+ID4NCj4gPiA+ID4gIAlpcnFfZG9tYWlu X3NldF9pbmZvKGRvbWFpbiwgdmlycSwgYml0LA0KPiA+ID4gJm1vYml2ZWlsX21zaV9ib3R0b21f aXJxX2NoaXAsDQo+ID4gPiA+IC0JCQkJZG9tYWluLT5ob3N0X2RhdGEsIGhhbmRsZV9sZXZlbF9p cnEsDQo+ID4gPiA+IC0JCQkJTlVMTCwgTlVMTCk7DQo+ID4gPiA+ICsJCQkgICAgZG9tYWluLT5o b3N0X2RhdGEsIGhhbmRsZV9sZXZlbF9pcnEsIE5VTEwsIE5VTEwpOw0KPiA+ID4gPiAgCXJldHVy biAwOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgc3RhdGljIHZvaWQgbW9iaXZlaWxf aXJxX21zaV9kb21haW5fZnJlZShzdHJ1Y3QgaXJxX2RvbWFpbg0KPiAqZG9tYWluLA0KPiA+ID4g PiAtCQl1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IG5yX2lycXMpDQo+ID4gPiA+ICsJ CQkJCSB1bnNpZ25lZCBpbnQgdmlycSwNCj4gPiA+ID4gKwkJCQkJIHVuc2lnbmVkIGludCBucl9p cnFzKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBpcnFfZGF0YSAqZCA9IGlycV9kb21h aW5fZ2V0X2lycV9kYXRhKGRvbWFpbiwgdmlycSk7DQo+ID4gPiA+ICAJc3RydWN0IG1vYml2ZWls X3BjaWUgKnBjaWUgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsgQEANCj4gPiA+ID4g LTc1NiwxMiArNzY4LDExIEBAIHN0YXRpYyB2b2lkIG1vYml2ZWlsX2lycV9tc2lfZG9tYWluX2Zy ZWUoc3RydWN0DQo+ID4gPiA+IGlycV9kb21haW4gKmRvbWFpbiwNCj4gPiA+ID4NCj4gPiA+ID4g IAltdXRleF9sb2NrKCZtc2ktPmxvY2spOw0KPiA+ID4gPg0KPiA+ID4gPiAtCWlmICghdGVzdF9i aXQoZC0+aHdpcnEsIG1zaS0+bXNpX2lycV9pbl91c2UpKSB7DQo+ID4gPiA+ICsJaWYgKCF0ZXN0 X2JpdChkLT5od2lycSwgbXNpLT5tc2lfaXJxX2luX3VzZSkpDQo+ID4gPiA+ICAJCWRldl9lcnIo JnBjaWUtPnBkZXYtPmRldiwgInRyeWluZyB0byBmcmVlIHVudXNlZA0KPiBNU0kjJWx1XG4iLA0K PiA+ID4gPiAgCQkJZC0+aHdpcnEpOw0KPiA+ID4gPiAtCX0gZWxzZSB7DQo+ID4gPiA+ICsJZWxz ZQ0KPiA+ID4gPiAgCQlfX2NsZWFyX2JpdChkLT5od2lycSwgbXNpLT5tc2lfaXJxX2luX3VzZSk7 DQo+ID4gPiA+IC0JfQ0KPiA+ID4gPg0KPiA+ID4gPiAgCW11dGV4X3VubG9jaygmbXNpLT5sb2Nr KTsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gQEAgLTc4NSwxMiArNzk2LDE0IEBAIHN0YXRpYyBpbnQN Cj4gbW9iaXZlaWxfYWxsb2NhdGVfbXNpX2RvbWFpbnMoc3RydWN0DQo+ID4gPiBtb2JpdmVpbF9w Y2llICpwY2llKQ0KPiA+ID4gPiAgCX0NCj4gPiA+ID4NCj4gPiA+ID4gIAltc2ktPm1zaV9kb21h aW4gPSBwY2lfbXNpX2NyZWF0ZV9pcnFfZG9tYWluKGZ3bm9kZSwNCj4gPiA+ID4gLQkJCQkmbW9i aXZlaWxfbXNpX2RvbWFpbl9pbmZvLCBtc2ktPmRldl9kb21haW4pOw0KPiA+ID4gPiArCQkJCQkJ ICAgICZtb2JpdmVpbF9tc2lfZG9tYWluX2luZm8sDQo+ID4gPiA+ICsJCQkJCQkgICAgbXNpLT5k ZXZfZG9tYWluKTsNCj4gPiA+ID4gIAlpZiAoIW1zaS0+bXNpX2RvbWFpbikgew0KPiA+ID4gPiAg CQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjcmVhdGUgTVNJIGRvbWFpblxuIik7DQo+ID4gPiA+ ICAJCWlycV9kb21haW5fcmVtb3ZlKG1zaS0+ZGV2X2RvbWFpbik7DQo+ID4gPiA+ICAJCXJldHVy biAtRU5PTUVNOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiAgCXJldHVybiAwOw0K PiA+ID4gPiAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtODAxLDggKzgxNCw4IEBAIHN0YXRpYyBp bnQgbW9iaXZlaWxfcGNpZV9pbml0X2lycV9kb21haW4oc3RydWN0DQo+ID4gPiBtb2JpdmVpbF9w Y2llICpwY2llKQ0KPiA+ID4gPiAgCWludCByZXQ7DQo+ID4gPiA+DQo+ID4gPiA+ICAJLyogc2V0 dXAgSU5UeCAqLw0KPiA+ID4gPiAtCXBjaWUtPmludHhfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRf bGluZWFyKG5vZGUsDQo+ID4gPiA+IC0JCQkJUENJX05VTV9JTlRYLCAmaW50eF9kb21haW5fb3Bz LCBwY2llKTsNCj4gPiA+ID4gKwlwY2llLT5pbnR4X2RvbWFpbiA9IGlycV9kb21haW5fYWRkX2xp bmVhcihub2RlLA0KPiBQQ0lfTlVNX0lOVFgsDQo+ID4gPiA+ICsJCQkJCQkgICZpbnR4X2RvbWFp bl9vcHMsIHBjaWUpOw0KPiA+ID4gPg0KPiA+ID4gPiAgCWlmICghcGNpZS0+aW50eF9kb21haW4p IHsNCj4gPiA+ID4gIAkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGEgSU5UeCBJUlEgZG9t YWluXG4iKTsgQEANCj4gLTkxNywxMA0KPiA+ID4gPiArOTMwLDEwIEBAIE1PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIG1vYml2ZWlsX3BjaWVfb2ZfbWF0Y2gpOw0KPiA+ID4gc3RhdGljDQo+ID4gPiA+ IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW9iaXZlaWxfcGNpZV9kcml2ZXIgPSB7DQo+ID4gPiA+ ICAJLnByb2JlID0gbW9iaXZlaWxfcGNpZV9wcm9iZSwNCj4gPiA+ID4gIAkuZHJpdmVyID0gew0K PiA+ID4gPiAtCQkJLm5hbWUgPSAibW9iaXZlaWwtcGNpZSIsDQo+ID4gPiA+IC0JCQkub2ZfbWF0 Y2hfdGFibGUgPSBtb2JpdmVpbF9wY2llX29mX21hdGNoLA0KPiA+ID4gPiAtCQkJLnN1cHByZXNz X2JpbmRfYXR0cnMgPSB0cnVlLA0KPiA+ID4gPiAtCQl9LA0KPiA+ID4gPiArCQkubmFtZSA9ICJt b2JpdmVpbC1wY2llIiwNCj4gPiA+ID4gKwkJLm9mX21hdGNoX3RhYmxlID0gbW9iaXZlaWxfcGNp ZV9vZl9tYXRjaCwNCj4gPiA+ID4gKwkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLA0KPiA+ ID4gPiArCX0sDQo+ID4gPiA+ICB9Ow0KPiA+ID4gPg0KPiA+ID4gPiAgYnVpbHRpbl9wbGF0Zm9y bV9kcml2ZXIobW9iaXZlaWxfcGNpZV9kcml2ZXIpOw0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAyLjE3 LjENCj4gPiA+ID4NCg==