From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ironport.ite.com.tw (219-87-157-213.static.tfn.net.tw [219.87.157.213]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 57AF45B21A; Wed, 20 Aug 2025 03:30:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=219.87.157.213 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755660629; cv=none; b=VDXicrX1KqDt0O0uhJJg7IR5NurD5O2OUtPG/DjZvLAWkxblP1uTNUlwl7GsGUhuYe8Pa2XTaf+J0C8n1nR7l1bBgaNIIwDytjO5ozy+g3+tp/9OTTfOJOzwdn7Q1SuWTUGlaSkfVw3t88xqsvT3U4JgZr/OwIOkvBdKrtRBx4g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755660629; c=relaxed/simple; bh=FwkZLF7NiS6LmsUx/yyC8woDeQS6pJJuw3n0iE3Qae4=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=fLcx+Ti0KXWS/+3SJxy5xtikWw0emFtzpb9ExctsS2ijUtKjwZP6pTT0EbjDv2CYn6szyFYf03sqglP2YQTIed6VZz11Gu8qwwyJeDImNik3OTxvKjrycKziV41YMn0kCwfChJ0K6Um00jLHBQ+gcEDRTmbfkS/1yGdxvPZeB9c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ite.com.tw; spf=pass smtp.mailfrom=ite.com.tw; dkim=pass (2048-bit key) header.d=ite.com.tw header.i=@ite.com.tw header.b=rNQkgYbR; arc=none smtp.client-ip=219.87.157.213 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ite.com.tw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ite.com.tw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ite.com.tw header.i=@ite.com.tw header.b="rNQkgYbR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ite.com.tw; s=dkim; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=FwkZLF7NiS6LmsUx/yyC8woDeQS6pJJuw3n0iE3Qae4=; b=rNQkgYbR7rNP7+RuP05alfqNo1VFK0kanGFhcNVH4Tj5BEFsle4hJcTA x4fIyG8EpOIyk1W9Qvgri+ZILU/YOgszgIK7ocse06lhYLU+v80L9DWBX QIEw127j+x1gdKEomOxiqpKqbs3uO1Lj5o6LBcDLSaDEmMcIvi9nwx3Fl IgDNVxBdj0oN+PWWK6bUZnaDdYVv02vCeO10qvhQFXM4I1Q3KkKOHvhX7 ZkyRdGE3N67YzooGHSuTx9rPjkBHrGNKuKC9I6NwNMYCH0uAkdMbieTeo GlKOHe2Mmmy1yEpJHeQRlsLw7lIss1Yp644DZX/qhlDDfb4YQNYJtEnfy A==; X-CSE-ConnectionGUID: /R5Ot/lISx2EuEbqX1M1Og== X-CSE-MsgGUID: bYnvJXAnRDWhYxotb2zWeA== Received: from unknown (HELO mse.ite.com.tw) ([192.168.35.30]) by ironport.ite.com.tw with ESMTP; 20 Aug 2025 11:29:10 +0800 Received: from CSBMAIL1.internal.ite.com.tw (CSBMAIL2.internal.ite.com.tw [192.168.65.41]) by mse.ite.com.tw with ESMTP id 57K3T60f031478; Wed, 20 Aug 2025 11:29:06 +0800 (+08) (envelope-from Pet.Weng@ite.com.tw) Received: from CSBMAIL1.internal.ite.com.tw (192.168.65.58) by CSBMAIL2.internal.ite.com.tw (192.168.65.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 20 Aug 2025 11:29:05 +0800 Received: from CSBMAIL1.internal.ite.com.tw ([fe80::c9da:6689:2b22:a2d6]) by CSBMAIL1.internal.ite.com.tw ([fe80::c9da:6689:2b22:a2d6%3]) with mapi id 15.01.2507.039; Wed, 20 Aug 2025 11:29:05 +0800 From: To: CC: , , , , , , , , , , , , , , , , , , , , Subject: RE: [PATCH 2/3] drm/bridge: Add ITE IT61620 MIPI DSI to HDMI bridge driver Thread-Topic: [PATCH 2/3] drm/bridge: Add ITE IT61620 MIPI DSI to HDMI bridge driver Thread-Index: AQHcECDbC0cw7SDkXEShZpXRueN1pbRq1EEg Date: Wed, 20 Aug 2025 03:29:04 +0000 Message-ID: References: <20250714-it61620-0714-v1-0-3761164d0b98@ite.com.tw> <20250714-it61620-0714-v1-2-3761164d0b98@ite.com.tw> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tm-snts-smtp: 7B3E1A56E1A3D3A171479F8F75F51033EB8AA59E1C217E25A25E1AE9E2B4AA4C2002:8 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MAIL:mse.ite.com.tw 57K3T60f031478 DQpPbiBNb24sIEF1ZyAxOCwgMjAyNSBhdCA1OjE2IFBNIFBpbi15ZW4gTGluIDx0cmVhcGtpbmdA Y2hyb21pdW0ub3JnPiB3cm90ZToNCj4gDQo+IEhpIFBldCwNCg0KSGkgUGluLXllbiwNCj4gDQo+ IE9uIE1vbiwgQXVnIDE4LCAyMDI1IGF0IDU6MDHigK9QTSBQZXQgV2VuZyA8cGV0LndlbmdAaXRl LmNvbS50dz4gd3JvdGU6DQo+ID4NCj4gPiBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgdGhlIElURSBJ VDYxNjIwIGJyaWRnZSBjaGlwIHdoaWNoIGNvbnZlcnRzDQo+ID4gTUlQSSBEU0kgaW5wdXQgdG8g SERNSSBvdXRwdXQuIFRoZSBEcml2ZXIgaW1wbGVtZW50cyB0aGUgYmFzaWMNCj4gPiBicmlkZ2Ug ZnVuY3Rpb25zIGFuZCBpbnRlZ3JhdGVzIHdpdGggdGhlIERSTSBicmlkZ2UgYW5kIGNvbm5lY3Rv cg0KPiA+IGZyYW1ld29ya3MuDQo+ID4NCj4gPiBTdXBwb3J0ZWQgZmV0dXJlcyBpbmNsdWRlOg0K PiA+IE1JUEkgRFNJIGlucHV0IGhhbmRsaW5nDQo+ID4gSERNSSBvdXRwdXQgc2V0dXANCj4gPiBC YXNpYyBtb2RlIGNvbmZpZ3VyYXRpb24NCj4gPiBJMkMtYmFzZWQgY29udHJvbCBhbmQgaW5pdGlh bGl6YXRpb24NCj4gPiBIRENQIDEuNCBoYW5kbGluZw0KPiA+DQo+ID4gVGhpcyBkcml2ZXIgd2ls bCBiZSB1c2VkIG9uIHBsYXRmb3JtcyBlbWJlZGRpbmcgdGhlIElUNjE2MjAgZm9yDQo+ID4gdmlk ZW8gb3V0cHV0IHZpYSBIRE1JIGZyb20gU29DcyB3aXRoIE1JUEkgRFNJIG91dHB1dC4NCj4gPg0K PiA+IFNpZ25lZC1vZmYtYnk6IFBldCBXZW5nIDxwZXQud2VuZ0BpdGUuY29tLnR3Pg0KPiA+IC0t LQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgICAgfCAgIDE5ICsNCj4g PiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSAgICAgIHwgICAgMSArDQo+ID4gIGRy aXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRlLWl0NjE2MjAuYyB8IDMwMDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDMwMjQgaW5zZXJ0aW9u cygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZw0KPiA+IGluZGV4IGI5ZTBjYTg1MjI2 YTYwM2EyNGY5MGM2ODc5ZDE0OTlmODI0MDYwY2IuLmE2NGFlOTAwNDE5N2QwYWU5YzQ5ZjQ1MGI3 OTljYzRiZTI1M2ZmYTkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9L Y29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnDQo+ID4gQEAg LTExMSw2ICsxMTEsMjUgQEAgY29uZmlnIERSTV9JVEVfSVQ2MjYzDQo+ID4gICAgICAgICBoZWxw DQo+ID4gICAgICAgICAgIElURSBJVDYyNjMgTFZEUyB0byBIRE1JIGJyaWRnZSBjaGlwIGRyaXZl ci4NCj4gPg0KPiA+ICtjb25maWcgRFJNX0lURV9JVDYxNjIwDQo+ID4gKyAgICAgICB0cmlzdGF0 ZSAiSVRFIElUNjE2MjAgRFNJL0hETUkgYnJpZGdlIg0KPiA+ICsgICAgICAgZGVwZW5kcyBvbiBP Rg0KPiA+ICsgICAgICAgc2VsZWN0IERSTV9ESVNQTEFZX0NPTk5FQ1RPUg0KPiA+ICsgICAgICAg c2VsZWN0IERSTV9ESVNQTEFZX0hETUlfSEVMUEVSDQo+ID4gKyAgICAgICBzZWxlY3QgRFJNX0RJ U1BMQVlfSERDUF9IRUxQRVINCj4gPiArICAgICAgIHNlbGVjdCBEUk1fRElTUExBWV9IRUxQRVIN Cj4gPiArICAgICAgIHNlbGVjdCBEUk1fTUlQSV9EU0kNCj4gPiArICAgICAgIHNlbGVjdCBEUk1f S01TX0hFTFBFUg0KPiA+ICsgICAgICAgc2VsZWN0IERSTV9IRE1JX0hFTFBFUg0KPiA+ICsgICAg ICAgc2VsZWN0IENSWVBUTw0KPiA+ICsgICAgICAgc2VsZWN0IENSWVBUT19IQVNIDQo+ID4gKyAg ICAgICBoZWxwDQo+ID4gKyAgICAgICAgIERyaXZlciBmb3IgSVRFIElUNjE2MjAgTUlQSSBEU0kg dG8gSERNSSBicmlkZ2UNCj4gPiArICAgICAgICAgY2hpcCBkcml2ZXIuDQo+ID4gKw0KPiA+ICsg ICAgICAgICBJdCBlbmFibGVzIGRpc3BsYXkgb3V0cHV0IHRocm91Z2ggSERNSSB3aGVuIGNvbm5l Y3RlZCB0byBhIE1JUEkNCj4gPiArICAgICAgICAgRFNJIHNvdXJjZS4gVGhlIGJyaWRnZSB0cmFu c2xhdGVzIHRoZSB2aWRlbyBzaWduYWxzIGZvciBIRE1JIG1vbml0b3JzLg0KPiA+ICsNCj4gPiAg Y29uZmlnIERSTV9JVEVfSVQ2NTA1DQo+ID4gICAgICAgICB0cmlzdGF0ZSAiSVRFIElUNjUwNSBE aXNwbGF5UG9ydCBicmlkZ2UiDQo+ID4gICAgICAgICBkZXBlbmRzIG9uIE9GDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL01ha2VmaWxlDQo+ID4gaW5kZXggMjQ1ZThhMjdlM2ZjNTI1ZmZlMDIxMDNlNDQzNmM3 MTMxM2Y1NWQ5YS4uYzZjYzQxZWExMjBjOWQwNTE0NmJkNDE0ZTNkYzVlNzMxODg2NzA1NyAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlDQo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQ0KPiA+IEBAIC0xMSw2ICsxMSw3IEBAIHRk YTk5OHgteSA6PSB0ZGE5OTh4X2Rydi5vDQo+ID4gIG9iai0kKENPTkZJR19EUk1fSTJDX05YUF9U REE5OThYKSArPSB0ZGE5OTh4Lm8NCj4gPg0KPiA+ICBvYmotJChDT05GSUdfRFJNX0lURV9JVDYy NjMpICs9IGl0ZS1pdDYyNjMubw0KPiA+ICtvYmotJChDT05GSUdfRFJNX0lURV9JVDYxNjIwKSAr PSBpdGUtaXQ2MTYyMC5vDQo+ID4gIG9iai0kKENPTkZJR19EUk1fSVRFX0lUNjUwNSkgKz0gaXRl LWl0NjUwNS5vDQo+ID4gIG9iai0kKENPTkZJR19EUk1fTE9OVElVTV9MVDg5MTJCKSArPSBsb250 aXVtLWx0ODkxMmIubw0KPiA+ICBvYmotJChDT05GSUdfRFJNX0xPTlRJVU1fTFQ5MjExKSArPSBs b250aXVtLWx0OTIxMS5vDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv aXRlLWl0NjE2MjAuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRlLWl0NjE2MjAuYw0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uZDNkYjJmZGYzZGE3MTRlNTRlZmUyZDE5OGJiODE0NTUwODgwZDQ1 Zg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2l0 ZS1pdDYxNjIwLmMNCj4gPiBAQCAtMCwwICsxLDMwMDQgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDI1 IElURSBUZWNoLiBJbmMuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2dw aW8vY29uc3VtZXIuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvb2ZfaXJxLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbV9y dW50aW1lLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPg0KPiA+ICsjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2JyaWRnZS5o Pg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4NCj4gPiArI2luY2x1ZGUg PGRybS9kcm1fZWRpZC5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPg0KPiA+ ICsjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2Rpc3BsYXkv ZHJtX2hkY3BfaGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZGlzcGxheS9kcm1faGRtaV9o ZWxwZXIuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kaXNwbGF5L2RybV9oZG1pX3N0YXRlX2hlbHBl ci5oPg0KPiA+ICsjaW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+DQo+ID4gKyNpbmNsdWRlIDxz b3VuZC9oZG1pLWNvZGVjLmg+DQo+ID4gKyNpbmNsdWRlIDxjcnlwdG8vaGFzaC5oPg0KPiA+ICsN Cj4gPiArI2RlZmluZSBFRElEX1JfQlVSU1RfTlVNIDE2DQo+ID4gKyNkZWZpbmUgRERDX0ZJRk9f REVQVEggMzINCj4gPiArDQo+ID4gKyNkZWZpbmUgTUlQSVJYX0kyQ19BRERSRVNTICgweDc4ID4+ IDEpDQo+ID4gKyNkZWZpbmUgVFhfSTJDX0FERFJFU1MgKDB4QzAgPj4gMSkNCj4gPiArDQo+ID4g KyNkZWZpbmUgUkVHX0NUUkxfUFcgMHhGRg0KPiA+ICsNCj4gPiArI2RlZmluZSBSRUdfVkVOREVS X0lEX0wgMHgwMA0KPiA+ICsjZGVmaW5lIFJFR19WRU5ERVJfSURfSCAweDAxDQo+ID4gKyNkZWZp bmUgUkVHX0RFVklDRV9JRF9MIDB4MDINCj4gPiArI2RlZmluZSBSRUdfREVWSUNFX0lEX0ggMHgw Mw0KPiA+ICsjZGVmaW5lIFJFR19ERVZfVkVSU0lPTiAweDA0DQo+ID4gKyNkZWZpbmUgREVWX1ZF UlNJT05fQTAgMHhBMA0KPiA+ICsjZGVmaW5lIERFVl9WRVJTSU9OX0MwIDB4QzANCj4gPiArDQo+ ID4gKyNkZWZpbmUgUlhfUkVHX0JBTksgMHgwRg0KPiA+ICsjZGVmaW5lIE1fTUlQSVJYX0JBTksg MHgwMQ0KPiA+ICsNCj4gPiArI2RlZmluZSBSWF9SRUdfUkVTRVRfQ1RSTCAweDA1DQo+ID4gKyNk ZWZpbmUgQl9SRUZfQ0xPQ0tfUkVTRVQgQklUKDMpDQo+ID4gKyNkZWZpbmUgUlhfUkVHX0NMS19D VFJMIDB4MTANCj4gPiArI2RlZmluZSBCX01JUElfSU5UX1NUQVRVUyBCSVQoNykNCj4gPiArI2Rl ZmluZSBSWF9SRUdfRF9SU1QgMHgxQQ0KPiA+ICsjZGVmaW5lIEJfRF9SU1QgQklUKDApDQo+ID4g KyNkZWZpbmUgUlhfUkVHX0lOVF9TVEFUVVNfMDEgMHgwQQ0KPiA+ICsjZGVmaW5lIEJfSU5JX1Zf Q0hHIEJJVCgwKQ0KPiA+ICsjZGVmaW5lIFJYX1JFR19JTlRfUE9MIDB4MTENCj4gPiArI2RlZmlu ZSBSWF9SRUdfSU5UX01BU0sgMHgxMTQNCj4gPiArI2RlZmluZSBCX1ZfQ0hHIEJJVCgwKQ0KPiA+ ICsjZGVmaW5lIFJYX1JFR19JTlRfU1RBVFVTXzAyIDB4MjINCj4gPiArI2RlZmluZSBCX0lOSV9W X1NUQiBCSVQoNSkNCj4gPiArI2RlZmluZSBSWF9SRUdfTVBQQ0xLSSAweDEyDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFJYX1JFR19IRlBfTCAweDMwDQo+ID4gKyNkZWZpbmUgUlhfUkVHX0hGUF9IIDB4 MzENCj4gPiArI2RlZmluZSBSWF9SRUdfSFNXX0wgMHgzMg0KPiA+ICsjZGVmaW5lIFJYX1JFR19I U1dfSCAweDMzDQo+ID4gKyNkZWZpbmUgUlhfUkVHX0hCUF9MIDB4MzQNCj4gPiArI2RlZmluZSBS WF9SRUdfSEJQX0ggMHgzNQ0KPiA+ICsjZGVmaW5lIFJYX1JFR19IREVXX0wgMHgzNg0KPiA+ICsj ZGVmaW5lIFJYX1JFR19IREVXX0ggMHgzNw0KPiA+ICsjZGVmaW5lIFJYX1JFR19IVE9UQUxfTCAw eDQ4DQo+ID4gKyNkZWZpbmUgUlhfUkVHX0hUT1RBTF9IIDB4NDkNCj4gPiArDQo+ID4gKyNkZWZp bmUgUlhfUkVHX1NFTERDTEsgMHgyNA0KPiA+ICsjZGVmaW5lIFJYX1JFR19WRlBfTCAweDNBDQo+ ID4gKyNkZWZpbmUgUlhfUkVHX1ZGUF9IIDB4M0INCj4gPiArI2RlZmluZSBSWF9SRUdfVlNXX0wg MHgzQw0KPiA+ICsjZGVmaW5lIFJYX1JFR19WU1dfSCAweDNEDQo+ID4gKyNkZWZpbmUgUlhfUkVH X1ZCUF9MIDB4M0UNCj4gPiArI2RlZmluZSBSWF9SRUdfVkJQX0ggMHgzRg0KPiA+ICsjZGVmaW5l IFJYX1JFR19WREVXX0wgMHg0MA0KPiA+ICsjZGVmaW5lIFJYX1JFR19WREVXX0ggMHg0MQ0KPiA+ ICsjZGVmaW5lIFJYX1JFR19QT0wgMHg0RQ0KPiA+ICsjZGVmaW5lIEJfTUlQSV9IX1BPTCBCSVQo MCkNCj4gPiArI2RlZmluZSBCX01JUElfVl9QT0wgQklUKDEpDQo+ID4gKw0KPiA+ICsjZGVmaW5l IFJYX1JFR19EU0NDVFJMIDB4MjUNCj4gPiArI2RlZmluZSBSWF9SRUdfU1lOQ19OVU0gMHg0RA0K PiA+ICsjZGVmaW5lIFJYX1JFR19CU1BfU0VMIDB4MUYNCj4gPiArI2RlZmluZSBSWF9SRUdfUFdE X0NUUkwgMHhFMA0KPiA+ICsjZGVmaW5lIFJYX1JFR19FTlZSUiAweDFBQw0KPiA+ICsjZGVmaW5l IFJYX1JFR19FTlZCTEsgMHgxQUQNCj4gPiArDQo+ID4gKyNkZWZpbmUgUlhfUkVHX0QyUF9SRVNF VCAweEEwDQo+ID4gKyNkZWZpbmUgUlhfUkVHX0QyUF9DVFJMIDB4QTENCj4gPiArI2RlZmluZSBS WF9SRUdfQVVUT19EMlBfUkVTRVQgMHhBMg0KPiA+ICsjZGVmaW5lIFJYX1JFR19UVU5FT1BUIDB4 QTkNCj4gPiArI2RlZmluZSBSWF9SRUdfVFVORVRIUkUgMHhBQQ0KPiA+ICsjZGVmaW5lIFJYX1JF R19EU0NfUkVTRVQgMHhBQg0KPiA+ICsjZGVmaW5lIFJYX1JFR19EU0NfVkZSRCAweEFDDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIFJYX1JFR19NSVBJX0NPTkZJRyAweDExMg0KPiA+ICsjZGVmaW5lIEJf TUlQSV9MQU5FX05VTSAweDAzDQo+ID4gKyNkZWZpbmUgQl9NSVBJX1BOX1NXQVAgQklUKDIpDQo+ ID4gKyNkZWZpbmUgQl9NSVBJX0xBTkVfU1dBUCBCSVQoMykNCj4gPiArI2RlZmluZSBSWF9SRUdf SFNfQ1RSTCAweDExOA0KPiA+ICsjZGVmaW5lIFJYX1JFR19MUF9DVFJMIDB4MTE5DQo+ID4gKyNk ZWZpbmUgUlhfUkVHX01JUElfQ1RSTDAxIDB4NDQNCj4gPiArI2RlZmluZSBSWF9SRUdfQVVUT19T WU5DIDB4MTQ0DQo+ID4gKyNkZWZpbmUgUlhfUkVHX01WX01BWCAweDE0Ng0KPiA+ICsjZGVmaW5l IFJYX1JFR19GT1JDRV9NIDB4MTQ3DQo+ID4gKyNkZWZpbmUgQl9GT1JDRV9NSFRfU1RCIEJJVCgw KQ0KPiA+ICsjZGVmaW5lIEJfRk9SQ0VfTVZUX1NUQiBCSVQoMykNCj4gPiArI2RlZmluZSBSWF9S RUdfTUlQSV9DVFJMMDIgMHgxNEUNCj4gPiArI2RlZmluZSBCX0ZJRk9fUlNUIEJJVCg1KQ0KPiA+ ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfU1RBVFVTMDEgMHgwNw0KPiA+ICsjZGVmaW5lIEJfSU5U X1NUQVRVUyBCSVQoMCkNCj4gPiArI2RlZmluZSBCX0hQRF9TVEFUVVMgQklUKDEpDQo+ID4gKyNk ZWZpbmUgQl9WSURFT19TVEIgQklUKDIpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRYX1JFR19IRE1J VFhfQkFOSyAweDBGDQo+ID4gKyNkZWZpbmUgTV9IRE1JVFhfQkFOSyAweDAzDQo+ID4gKyNkZWZp bmUgQl9JTlRfRVZFTlRfSERNSSBCSVQoNCkNCj4gPiArI2RlZmluZSBUWF9SRUdfUkVTRVRfMV9D VFJMIDB4MDUNCj4gPiArI2RlZmluZSBCX1JFRkVSRU5DRV9DTE9DS19SRVNFVCBCSVQoMCkNCj4g PiArI2RlZmluZSBCX1ZJREVPX1JFU0VUIEJJVCgxKQ0KPiA+ICsjZGVmaW5lIEJfQVVESU9fUkVT RVQgQklUKDIpDQo+ID4gKyNkZWZpbmUgQl9BVVhfUkVTRVQgQklUKDMpDQo+ID4gKyNkZWZpbmUg Ql9JUENMS19SRVNFVCBCSVQoNCkNCj4gPiArI2RlZmluZSBCX1NETV9SRVNFVCBCSVQoNSkNCj4g PiArI2RlZmluZSBCX1RDTEtfUkVTRVQgQklUKDYpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRYX1JF R19SRVNFVF8yX0NUUkwgMHgwNg0KPiA+ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfVl9TVFMgMHgw OQ0KPiA+ICsjZGVmaW5lIEJfUlhTRU4gQklUKDEpDQo+ID4gKyNkZWZpbmUgQl9WX1NUQUJMRSBC SVQoMikNCj4gPiArI2RlZmluZSBCX1RNRFNfU1RBQkxFIEJJVCgzKQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBUWF9SRUdfU1lTX0NPTkZJRyAweDBDDQo+ID4gKyNkZWZpbmUgQl9FTl9IRE1JIEJJVCg2 KQ0KPiA+ICsjZGVmaW5lIEJfSU5UX1BPTCBCSVQoMCkNCj4gPiArI2RlZmluZSBCX0lOVF9NT0RF IEJJVCgxKQ0KPiA+ICsjZGVmaW5lIEJfSU5UX09VVF9TVEFUVVMgQklUKDIpDQo+ID4gKyNkZWZp bmUgQl9JTlRfT1VUUFVUIEJJVCgzKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBCSVRfT0ZGU0VUKHgp ICgoeCkgKiBCSVRTX1BFUl9CWVRFKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfSU5UMSAw eDEwDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0lOVF9NQVNLMSAweDE4DQo+ID4gKyNkZWZpbmUgSU5U X0hQRF9DSEcgMA0KPiA+ICsjZGVmaW5lIEJfSFBEX0NIRyBCSVQoSU5UX0hQRF9DSEcpDQo+ID4g KyNkZWZpbmUgQklUX0hQRF9DSEcgKEJJVF9PRkZTRVQoMCkgKyBJTlRfSFBEX0NIRykNCj4gPiAr I2RlZmluZSBJTlRfUlhTRU5fQ0hBTkdFIDINCj4gPiArI2RlZmluZSBCX1JYU0VOX0NIQU5HRSBC SVQoSU5UX1JYU0VOX0NIQU5HRSkNCj4gPiArI2RlZmluZSBCSVRfUlhTRU5fQ0hBTkdFIChCSVRf T0ZGU0VUKDApICsgSU5UX1JYU0VOX0NIQU5HRSkNCj4gPiArI2RlZmluZSBJTlRfQVVUSF9GIDMN Cj4gPiArI2RlZmluZSBCX0lOVF9BVVRIX0YgQklUKElOVF9BVVRIX0YpDQo+ID4gKyNkZWZpbmUg QklUX0lOVF9BVVRIX0YgKEJJVF9PRkZTRVQoMCkgKyBJTlRfQVVUSF9GKQ0KPiA+ICsjZGVmaW5l IElOVF9BVVRIX0QgNA0KPiA+ICsjZGVmaW5lIEJfSU5UX0FVVEhfRCBCSVQoSU5UX0FVVEhfRCkN Cj4gPiArI2RlZmluZSBCSVRfSU5UX0FVVEhfRCAoQklUX09GRlNFVCgwKSArIElOVF9BVVRIX0Qp DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRYX1JFR19JTlQyIDB4MTENCj4gPiArI2RlZmluZSBUWF9S RUdfSU5UX01BU0syIDB4MTkNCj4gPiArI2RlZmluZSBJTlRfS1NWX0NIRUNLIDENCj4gPiArI2Rl ZmluZSBCX0tTVl9DSEVDSyBCSVQoSU5UX0tTVl9DSEVDSykNCj4gPiArI2RlZmluZSBCSVRfS1NW X0NIRUNLICAoQklUX09GRlNFVCgxKSArIElOVF9LU1ZfQ0hFQ0spDQo+ID4gKw0KPiA+ICsjZGVm aW5lIFRYX1JFR19JTlQzIDB4MTYNCj4gPiArI2RlZmluZSBUWF9SRUdfSU5UX01BU0szIDB4MUUN Cj4gPiArI2RlZmluZSBJTlRfVE1EU19TVEJfQ0hHIDYNCj4gPiArI2RlZmluZSBCX1RNRFNfU1RC X0NIRyBCSVQoSU5UX1RNRFNfU1RCX0NIRykNCj4gPiArI2RlZmluZSBCSVRfVE1EU19TVEJfQ0hH IChCSVRfT0ZGU0VUKDIpICsgSU5UX1RNRFNfU1RCX0NIRykNCj4gPiArDQo+ID4gKyNkZWZpbmUg UkVHX1RYX0lOVF9DVFJMIDB4MjENCj4gPiArI2RlZmluZSBCX0RJU19JTlRfT1VUUFVUIEJJVCg1 KQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19DTE9DS19QV0RfQ1RSTCAweDJCDQo+ID4gKw0KPiA+ICsj ZGVmaW5lIFRYX1JFR19BRkUwRSAweDBFDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FGRTMwIDB4MzAN Cj4gPiArI2RlZmluZSBUWF9SRUdfQUZFMzMgMHgzMw0KPiA+ICsjZGVmaW5lIFRYX1JFR19BRkUz NCAweDM0DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FGRTM1IDB4MzUNCj4gPiArI2RlZmluZSBUWF9S RUdfQUZFRTkgMHhFOQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19BRkVfWFAgMHgyMTkNCj4gPiArI2Rl ZmluZSBUWF9SRUdfQUZFX1hMQzEgMHgyMjANCj4gPiArI2RlZmluZSBUWF9SRUdfQUZFX1hMQzIg MHgyMjMNCj4gPiArI2RlZmluZSBUWF9SRUdfQUZFX1hMQzMgMHgyMjYNCj4gPiArI2RlZmluZSBU WF9SRUdfQUZFX0RSViAweDIzQg0KPiA+ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfQ1JfMV9DVFJM IDB4M0ENCj4gPiArI2RlZmluZSBUWF9SRUdfQ1JfMl9DVFJMIDB4M0YNCj4gPiArDQo+ID4gKyNk ZWZpbmUgVFhfUkVHX1IwVE0gMHg1QQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19TSEFfU0VMIDB4NUQN Cj4gPiArDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0hEQ1BfQ1RSTDEgMHg2MA0KPiA+ICsjZGVmaW5l IEJfQ1BERVNJUkVEIEJJVCgwKQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19IRENQX1BSTyAweDYxDQo+ ID4gKyNkZWZpbmUgQl9BVVRIX0ZJUkUgQklUKDApDQo+ID4gKyNkZWZpbmUgQl9MSVNUX0NIS19E T05FIEJJVCg0KQ0KPiA+ICsjZGVmaW5lIEJfTElTVF9DSEtfRkFJTCBCSVQoNSkNCj4gPiArI2Rl ZmluZSBUWF9SRUdfSERDUF9DVFJMMiAweDYyDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FVVE9NVVRF IDB4NjUNCj4gPiArI2RlZmluZSBCX0FOX1NFTCBCSVQoMCkNCj4gPiArI2RlZmluZSBCX0VOX0FO X0dFTiBCSVQoMSkNCj4gPiArI2RlZmluZSBCX0VOX00wX1JEIEJJVCg1KQ0KPiA+ICsjZGVmaW5l IFRYX1JFR19IRENQX0FVVEhfQ1MgMHg2Ng0KPiA+ICsjZGVmaW5lIE1fQVVUSF9DSCAweDdGDQo+ ID4gKyNkZWZpbmUgQ1NfQVVUSF9ET05FIDB4NEUNCj4gPiArI2RlZmluZSBDU19BVVRIX0ZBSUwg MHgwMg0KPiA+ICsjZGVmaW5lIENTX0tTVkxJU1RfQ0hLIDB4MTkNCj4gPiArI2RlZmluZSBUWF9S RUdfSERDUF9DVFJMMyAweDFCQQ0KPiA+ICsjZGVmaW5lIEJfRU5DX0RJUyBCSVQoNikNCj4gPiAr I2RlZmluZSBCX1BBVVNFIEJJVCg3KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfVkRfQ1RS TDEgMHhBOA0KPiA+ICsjZGVmaW5lIFRYX1JFR19WRF9DVFJMMiAweEE0DQo+ID4gKyNkZWZpbmUg Ql9WSURFT19GSUZPX1JFU1QgQklUKDApDQo+ID4gKyNkZWZpbmUgVFhfUkVHX1ZEX0NUUkwzIDB4 QjcNCj4gPiArDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FVRF9TUERJRiAweDIzDQo+ID4gKyNkZWZp bmUgVFhfUkVHX0FVRF9DVFJMIDB4QjgNCj4gPiArI2RlZmluZSBUWF9SRUdfQVVEX0ZNVCAweEJB DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0VOX0FVRElPIDB4QkINCj4gPiArI2RlZmluZSBUWF9SRUdf QVVEX0ZJRk8xIDB4QkMNCj4gPiArI2RlZmluZSBUWF9SRUdfQVVEX0ZJRk8yIDB4QkQNCj4gPiAr I2RlZmluZSBUWF9SRUdfQVVEX1NUUzEgMHgxRjANCj4gPiArI2RlZmluZSBCX0VOX0FVRF9OTFBD TSBCSVQoMSkNCj4gPiArI2RlZmluZSBUWF9SRUdfQVVEX1NUUzIgMHgxRjMNCj4gPiArI2RlZmlu ZSBUWF9SRUdfQVVEX1NUUzMgMHgxRjQNCj4gPiArDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0xJTktf Q1RSTDAgMHhEMw0KPiA+ICsjZGVmaW5lIEJfRU5fQVVESU9fTVVURSBCSVQoNSkNCj4gPiArDQo+ ID4gKyNkZWZpbmUgVFhfUkVHX1ZfUVVFVUUgMHhFNw0KPiA+ICsjZGVmaW5lIFRYX1JFR19WX1RV IDB4RUINCj4gPiArDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0hQRF9DT05GSUcgMHhGNg0KPiA+ICsN Cj4gPiArI2RlZmluZSBUWF9SRUdfQ0VDX0NPTkZJRyAweEZBDQo+ID4gKyNkZWZpbmUgQl9FTl9D RUMgQklUKDApDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRYX1JFR19ERENfQ1RSTDEgMHgxQTANCj4g PiArI2RlZmluZSBUWF9SRUdfRERDX0FERFIgMHgxQTENCj4gPiArI2RlZmluZSBERENfSERDUF9B RERSIChEUk1fSERDUF9ERENfQUREUiA8PCAxKQ0KPiA+ICsjZGVmaW5lIEREQ19FRElEX0FERFIg KEREQ19BRERSIDw8IDEpDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0REQ19PRkZTRVQgMHgxQTINCj4g PiArI2RlZmluZSBUWF9SRUdfRERDX05VTV9MIDB4MUEzDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0RE Q19OVU1fSCAweDFBNA0KPiA+ICsjZGVmaW5lIFRYX1JFR19ERENfU0VHTUVOVCAweDFBNQ0KPiA+ ICsjZGVmaW5lIFRYX1JFR19ERENfQ09NTUFORCAweDFBNg0KPiA+ICsjZGVmaW5lIEREQ19DT01N QU5EX0JVUlNUX1IgMFgwMA0KPiA+ICsjZGVmaW5lIEREQ19DT01NQU5EX0JVUlNUX1cgMFgwMQ0K PiA+ICsjZGVmaW5lIEREQ19DT01NQU5EX0VESURfUkQgMFgwMw0KPiA+ICsjZGVmaW5lIEREQ19D T01NQU5EX0ZJRk9fQ0xSIDBYMDkNCj4gPiArI2RlZmluZSBERENfQ09NTUFORF9BQk9SVCAwWDBG DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0REQ19DVFJMMiAweDFBRA0KPiA+ICsjZGVmaW5lIEJfRERD X1JFU1QgQklUKDQpDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0REQ19TVEFUVVMgMHgxQTcNCj4gPiAr I2RlZmluZSBCX0REQ19UWF9ET05FIEJJVCg3KQ0KPiA+ICsjZGVmaW5lIEJfRERDX05PQUNLIEJJ VCg1KQ0KPiA+ICsjZGVmaW5lIEJfRERDX0ZVTEwgQklUKDIpDQo+ID4gKyNkZWZpbmUgVFhfUkVH X0REQ19GSUZPIDB4MUE4DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0REQ19GSUZPX1NUUyAweDFBRQ0K PiA+ICsjZGVmaW5lIE1fRERDX1NUQUdFX05VTSAgICAgICAgMHgzRg0KPiA+ICsNCj4gPiArI2Rl ZmluZSBUWF9SRUdfSERNSV9DVFJMMSAweDFCOA0KPiA+ICsjZGVmaW5lIEJfRU5fSERNSV9NT0RF IEJJVCgwKQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19IRE1JX0NUUkwyIDB4MUI5DQo+ID4gKyNkZWZp bmUgQl9FTl9BVk1VVEUgQklUKDApDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0VOX1BLVDEgMHgxQkYN Cj4gPiArI2RlZmluZSBCX0VOX0FWSSBCSVQoMCkNCj4gPiArI2RlZmluZSBCX0FWSV9SUCBCSVQo MSkNCj4gPiArI2RlZmluZSBCX0VOX0FVRCBCSVQoMikNCj4gPiArI2RlZmluZSBCX0VOX0FVRF9S UCBCSVQoMykNCj4gPiArI2RlZmluZSBUWF9SRUdfRU5fUEtUMiAweDFDMA0KPiA+ICsjZGVmaW5l IEJfRU5fR0VOIEJJVCg0KQ0KPiA+ICsjZGVmaW5lIEJfR0VOX1JQIEJJVCg1KQ0KPiA+ICsNCj4g PiArI2RlZmluZSBUWF9SRUdfVkhfVElNRSAweDE2NQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19QR19I RlBfTCAweDE1MA0KPiA+ICsjZGVmaW5lIFRYX1JFR19QR19IRlBfSCAweDE1MQ0KPiA+ICsjZGVm aW5lIFRYX1JFR19QR19IU1dfTCAweDE1Mg0KPiA+ICsjZGVmaW5lIFRYX1JFR19QR19IU1dfSCAw eDE1Mw0KPiA+ICsjZGVmaW5lIFRYX1JFR19QR19IQlBfTCAweDE1NA0KPiA+ICsjZGVmaW5lIFRY X1JFR19QR19IQlBfSCAweDE1NQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19QR19ERVdfTCAweDE1Ng0K PiA+ICsjZGVmaW5lIFRYX1JFR19QR19ERVdfSCAweDE1Nw0KPiA+ICsjZGVmaW5lIFRYX1JFR19Q R19IVlIyX0wgMHgxNTgNCj4gPiArI2RlZmluZSBUWF9SRUdfUEdfSFZSMl9IIDB4MTU5DQo+ID4g KyNkZWZpbmUgVFhfUkVHX1BHX1ZGUF9MIDB4MTVBDQo+ID4gKyNkZWZpbmUgVFhfUkVHX1BHX1ZG UF9IIDB4MTVCDQo+ID4gKyNkZWZpbmUgVFhfUkVHX1BHX1ZTV19MIDB4MTVDDQo+ID4gKyNkZWZp bmUgVFhfUkVHX1BHX1ZTV19IIDB4MTVEDQo+ID4gKyNkZWZpbmUgVFhfUkVHX1BHX1ZCUF9MIDB4 MTVFDQo+ID4gKyNkZWZpbmUgVFhfUkVHX1BHX1ZCUF9IIDB4MTVGDQo+ID4gKyNkZWZpbmUgVFhf UkVHX1BHX1ZERVdfTCAweDE2MA0KPiA+ICsjZGVmaW5lIFRYX1JFR19QR19IREVXX0ggMHgxNjEN Cj4gPiArI2RlZmluZSBUWF9SRUdfUEdfVkZQMl9MIDB4MTYyDQo+ID4gKyNkZWZpbmUgVFhfUkVH X1BHX1ZGUDJfSCAweDE2Mw0KPiA+ICsjZGVmaW5lIFRYX1JFR19QR19QT0wgMHgxNjQNCj4gPiAr DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FWSUlORk9fREIwMCAweDFEMA0KPiA+ICsjZGVmaW5lIFRY X1JFR19BVklJTkZPX0RCMDEgMHgxRDENCj4gPiArI2RlZmluZSBUWF9SRUdfQVZJSU5GT19EQjAy IDB4MUQyDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FWSUlORk9fREIwMyAweDFEMw0KPiA+ICsjZGVm aW5lIFRYX1JFR19BVklJTkZPX0RCMDQgMHgxRDQNCj4gPiArI2RlZmluZSBUWF9SRUdfQVZJSU5G T19EQjA1IDB4MUQ1DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FWSUlORk9fREIwNiAweDFENg0KPiA+ ICsjZGVmaW5lIFRYX1JFR19BVklJTkZPX0RCMDcgMHgxRDcNCj4gPiArI2RlZmluZSBUWF9SRUdf QVZJSU5GT19EQjA4IDB4MUQ4DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FWSUlORk9fREIwOSAweDFE OQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19BVklJTkZPX0RCMTAgMHgxREENCj4gPiArI2RlZmluZSBU WF9SRUdfQVZJSU5GT19EQjExIDB4MURCDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FWSUlORk9fREIx MiAweDFEQw0KPiA+ICsjZGVmaW5lIFRYX1JFR19BVklJTkZPX0RCMTMgMHgxREQNCj4gPiArI2Rl ZmluZSBUWF9SRUdfQVZJSU5GT19EQjE0IDB4MURFDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRYX1JF R19BVURJTkZPX0RCMDEgMHgxRTANCj4gPiArI2RlZmluZSBUWF9SRUdfQVVESU5GT19EQjAyIDB4 MUUxDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FVRElORk9fREIwMyAweDFFMg0KPiA+ICsjZGVmaW5l IFRYX1JFR19BVURJTkZPX0RCMDQgMHgxRTMNCj4gPiArI2RlZmluZSBUWF9SRUdfQVVESU5GT19E QjA1IDB4MUU0DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FVRElORk9fREIwNiAweDFFNQ0KPiA+ICsj ZGVmaW5lIFRYX1JFR19BVURJTkZPX0RCMDcgMHgxRTYNCj4gPiArI2RlZmluZSBUWF9SRUdfQVVE SU5GT19EQjA4IDB4MUU3DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FVRElORk9fREIwOSAweDFFOA0K PiA+ICsjZGVmaW5lIFRYX1JFR19BVURJTkZPX0RCMTAgMHgxRTkNCj4gPiArDQo+ID4gKyNkZWZp bmUgVFhfUkVHX1NTQ19QRCAweDIxMQ0KPiA+ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfVFhQTExf Q1RSTCAweDIxOA0KPiA+ICsjZGVmaW5lIFRYX1JFR19YTENfN19DVFJMIDB4MjI3DQo+ID4gKw0K PiA+ICsjZGVmaW5lIFRYX1JFR19UWERSVl9QRF9DVFJMIDB4MjNEDQo+ID4gKyNkZWZpbmUgVFhf UkVHX1RYRFJWX0NUUkwgMHgyNDANCj4gPiArI2RlZmluZSBUWF9SRUdfQVVYX0NUUkwgMHgyNDQN Cj4gPiArI2RlZmluZSBUWF9SRUdfSVBMTF9DVFJMIDB4MjQ4DQo+ID4gKyNkZWZpbmUgVFhfUkVH X1JEUk9NX1RSRyAweDI3MQ0KPiA+ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9BUklfTCAw eDYzDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0hEQ1BfQVJJX0ggMHg2NA0KPiA+ICsNCj4gPiArI2Rl ZmluZSBUWF9SRUdfSERDUF9BVVRIX1NUUyAweDY3DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRYX1JF R19IRENQX0JLU1YxIDB4NjgNCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9CS1NWMiAweDY5DQo+ ID4gKyNkZWZpbmUgVFhfUkVHX0hEQ1BfQktTVjMgMHg2QQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19I RENQX0JLU1Y0IDB4NkINCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9CS1NWNSAweDZDDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIFRYX1JFR19IRENQX0JSSV9MIDB4NkQNCj4gPiArI2RlZmluZSBUWF9S RUdfSERDUF9CUklfSCAweDZFDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRYX1JFR19IRENQX0FLU1Yx IDB4NkYNCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9BS1NWMiAweDcwDQo+ID4gKyNkZWZpbmUg VFhfUkVHX0hEQ1BfQUtTVjMgMHg3MQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19IRENQX0FLU1Y0IDB4 NzINCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9BS1NWNSAweDczDQo+ID4gKw0KPiA+ICsjZGVm aW5lIFRYX1JFR19BTk0wVjEgMHg3NA0KPiA+ICsjZGVmaW5lIFRYX1JFR19BTk0wVjIgMHg3NQ0K PiA+ICsjZGVmaW5lIFRYX1JFR19BTk0wVjMgMHg3Ng0KPiA+ICsjZGVmaW5lIFRYX1JFR19IRENQ X0FOX00wX1Y0IDB4NzcNCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9BTl9NMDUgMHg3OA0KPiA+ ICsjZGVmaW5lIFRYX1JFR19IRENQX0FOX00wNiAweDc5DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0hE Q1BfQU5fTTA3IDB4N0ENCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9BTl9NMDggMHg3Qg0KPiA+ ICsNCj4gPiArI2RlZmluZSBUWF9SRUdfSERDUF9CQ0FQUyAweDdDDQo+ID4gKyNkZWZpbmUgQl9L U1ZfUkVBRFkgQklUKDUpDQo+ID4gKyNkZWZpbmUgVFhfUkVHX0hEQ1BfQlNUU19MIDB4N0QNCj4g PiArI2RlZmluZSBUWF9SRUdfSERDUF9CU1RTX0ggMHg3RQ0KPiA+ICsNCj4gPiArI2RlZmluZSBU WF9SRUdfQVVEUEtUX0NUU18wIDB4M0E4DQo+ID4gKyNkZWZpbmUgVFhfUkVHX0FVRFBLVF9DVFNf MSAweDNBOQ0KPiA+ICsjZGVmaW5lIFRYX1JFR19BVURQS1RfQ1RTXzIgMHgzQUENCj4gPiArDQo+ ID4gKyNkZWZpbmUgVFhfUkVHX0FVRFBLVF9OXzAgMHgzQUINCj4gPiArI2RlZmluZSBUWF9SRUdf QVVEUEtUX05fMSAweDNBQw0KPiA+ICsjZGVmaW5lIFRYX1JFR19BVURQS1RfTl8yIDB4M0FEDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIFNPRlRfRERDX1RJTUVPVVRfTVMgMTAwDQo+ID4gKw0KPiA+ICsj ZGVmaW5lIE1BWF9IRENQX0RPV05fU1RSRUFNX0NPVU5UIDEyNw0KPiA+ICsjZGVmaW5lIEhEQ1Bf U0hBMV9GSUZPX0xFTiAoTUFYX0hEQ1BfRE9XTl9TVFJFQU1fQ09VTlQgKiBEUk1fSERDUF9LU1Zf TEVOICsgMTApDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEhJX0JZVEUoeCkgKCgoeCkgPj4gOCkgJiAw eEZGKQ0KPiA+ICsjZGVmaW5lIExPX0JZVEUoeCkgKCh4KSAmIDB4RkYpDQo+ID4gKw0KPiA+ICtl bnVtIHZpZGVvX3N0YXRlIHsNCj4gPiArICAgICAgIGl0NjE2MjBfVklERU9fT0ZGID0gMHgwMCwN Cj4gPiArICAgICAgIGl0NjE2MjBfVklERU9fV0FJVCwNCj4gPiArICAgICAgIGl0NjE2MjBfVklE RU9fT04sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIGhkY3Bfc3RhdGUgew0KPiA+ICsgICAg ICAgQ1BfTk9ORSA9IDB4MDAsDQo+ID4gKyAgICAgICBDUF9HT0lORyA9IDB4MDEsDQo+ID4gK307 DQo+ID4gKw0KPiA+ICtlbnVtIGl0NjE2MjBfYXVkaW9fc2VsZWN0IHsNCj4gPiArICAgICAgIEky UyA9IDAsDQo+ID4gKyAgICAgICBTUERJRiwNCj4gPiArfTsNCj4gPiArDQo+ID4gK2VudW0gaXQ2 MTYyMF9hdWRpb193b3JkX2xlbmd0aCB7DQo+ID4gKyAgICAgICBXT1JEX0xFTkdUSF8xNkJJVCA9 IDB4MCwNCj4gPiArICAgICAgIFdPUkRfTEVOR1RIXzE4QklUID0gMHgxLA0KPiA+ICsgICAgICAg V09SRF9MRU5HVEhfMjBCSVQgPSAweDIsDQo+ID4gKyAgICAgICBXT1JEX0xFTkdUSF8yNEJJVCA9 IDB4MywNCj4gPiArfTsNCj4gPiArDQo+ID4gK2VudW0gaXQ2MTYyMF9hdWRpb19zYW1wbGVfcmF0 ZSB7DQo+ID4gKyAgICAgICBTQU1QTEVfUkFURV8zMksgPSAweDMsDQo+ID4gKyAgICAgICBTQU1Q TEVfUkFURV80OEsgPSAweDIsDQo+ID4gKyAgICAgICBTQU1QTEVfUkFURV82NEsgPSAweEIsDQo+ ID4gKyAgICAgICBTQU1QTEVfUkFURV85NksgPSAweEEsDQo+ID4gKyAgICAgICBTQU1QTEVfUkFU RV8xOTJLID0gMHhFLA0KPiA+ICsgICAgICAgU0FNUExFX1JBVEVfNDRfMUsgPSAweDAsDQo+ID4g KyAgICAgICBTQU1QTEVfUkFURV84OF8ySyA9IDB4OCwNCj4gPiArICAgICAgIFNBTVBMRV9SQVRF XzE3Nl80SyA9IDB4QywNCj4gPiArfTsNCj4gPiArDQo+ID4gK2VudW0gaXQ2MTYyMF9hdWRpb190 eXBlIHsNCj4gPiArICAgICAgIExQQ00gPSAwLA0KPiA+ICsgICAgICAgTkxQQ00sDQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaXQ2MTYyX2NoaXBfaW5mbyB7DQo+ID4gKyAgICAgICB1MTYg dmlkOw0KPiA+ICsgICAgICAgdTE2IHBpZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBp dDYxNjIwX2F1ZGlvIHsNCj4gPiArICAgICAgIGVudW0gaXQ2MTYyMF9hdWRpb19zZWxlY3Qgc2Vs ZWN0Ow0KPiA+ICsgICAgICAgZW51bSBpdDYxNjIwX2F1ZGlvX3R5cGUgdHlwZTsNCj4gPiArICAg ICAgIGVudW0gaXQ2MTYyMF9hdWRpb19zYW1wbGVfcmF0ZSBzYW1wbGVfcmF0ZTsNCj4gPiArICAg ICAgIHU4IHdvcmRfbGVuZ3RoOw0KPiA+ICsgICAgICAgdTggY2hhbm5lbF9jb3VudDsNCj4gPiAr ICAgICAgIHU4IGF1ZGZtdDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBhdWRpb19lbmFibGU7 DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlX3dpZHRoOw0KPiA+ICsgICAgICAgdW5z aWduZWQgaW50IGNoYW5uZWxfbnVtYmVyOw0KPiA+ICsgICAgICAgdTggaW5mb2ZyYW1lW0hETUlf SU5GT0ZSQU1FX1NJWkUoQVVESU8pXTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhbm5l bF9zdGF0dXNbQUVTX0lFQzk1OF9TVEFUVVNfU0laRV07DQo+ID4gK307DQo+ID4gKw0KPiA+ICtz dHJ1Y3QgaXQ2MTYyMF9taXBpcnggew0KPiA+ICsgICAgICAgdTggbGFuZV9udW07DQo+ID4gKyAg ICAgICB1OCBwbl9zd2FwOw0KPiA+ICsgICAgICAgdTggbGFuZV9zd2FwOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArc3RydWN0IGl0NjE2MjBfaGRtaV9hZmVfc2V0dGluZyB7DQo+ID4gKyAgICAgICB1 bnNpZ25lZCBpbnQgY2xvY2s7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgaDJvbl9wbGw7DQo+ ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgaHM7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgYWZl X3ZhbFsyNF07DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaXQ2MTYyMF9wbGF0Zm9ybV9k YXRhIHsNCj4gPiArICAgICAgIHN0cnVjdCByZWd1bGF0b3IgKm92ZGQxODMzOw0KPiA+ICsgICAg ICAgc3RydWN0IHJlZ3VsYXRvciAqaXZkZDsNCj4gPiArICAgICAgIHN0cnVjdCByZWd1bGF0b3Ig Km92ZGQzMzsNCj4gPiArICAgICAgIHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kX3Jlc2V0Ow0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGl0NjE2MjAgew0KPiA+ICsgICAgICAgc3RydWN0IGRy bV9icmlkZ2UgYnJpZGdlOw0KPiA+ICsgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVj dG9yOw0KPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2Ow0KPiA+ICsgICAgICAgZW51bSBk cm1fY29ubmVjdG9yX3N0YXR1cyBjb25uZWN0b3Jfc3RhdHVzOw0KPiA+ICsgICAgICAgc3RydWN0 IGRybV9kZXZpY2UgKmRybTsNCj4gPiArICAgICAgIHN0cnVjdCBkcm1fYnJpZGdlICpuZXh0X2Jy aWRnZTsNCj4gPiArDQo+ID4gKyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqaXQ2MTYyMF9pMmM7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqbWlwaXJ4X2kyYzsNCj4gPiArICAgICAg IHN0cnVjdCBpMmNfY2xpZW50ICp0eF9pMmM7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcmVnbWFwICpp dDYxNjIwX3JlZ21hcDsNCj4gPiArICAgICAgIHN0cnVjdCByZWdtYXAgKm1pcGlyeF9yZWdtYXA7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgcmVnbWFwICp0eF9yZWdtYXA7DQo+ID4gKw0KPiA+ICsgICAg ICAgc3RydWN0IGRlbGF5ZWRfd29yayBoZGNwX3dvcms7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgd2Fp dF9xdWV1ZV9oZWFkIHdxOw0KPiA+ICsNCj4gPiArICAgICAgIHN0cnVjdCBpdDYxNjIwX3BsYXRm b3JtX2RhdGEgcGRhdGE7DQo+ID4gKyAgICAgICBib29sIHBvd2VyZWQ7DQo+ID4gKyAgICAgICBi b29sIGlzX2hkbWk7DQo+ID4gKyAgICAgICBib29sIGVuX2F1ZGlvOw0KPiA+ICsgICAgICAgYm9v bCBocGQ7DQo+ID4gKyAgICAgICB1OCBkZXZfdmVyOw0KPiA+ICsgICAgICAgY29uc3Qgc3RydWN0 IGRybV9lZGlkICpjYWNoZWRfZWRpZDsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBvcGVyYXRpb25z IGNhbiBvbmx5IGJlIHNlcnZlZCBvbmUgYXQgdGhlIHRpbWUgKi8NCj4gPiArICAgICAgIHN0cnVj dCBtdXRleCBkZGNfbG9jazsNCj4gPiArDQo+ID4gKyAgICAgICBlbnVtIHZpZGVvX3N0YXRlIHZp ZGVvX3N0YXRlOw0KPiA+ICsNCj4gPiArICAgICAgIHN0cnVjdCBpdDYxNjIwX2F1ZGlvIGF1ZGlv X2NvbmZpZzsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBpdDYxNjIwIERTSSBSWCByZWxhdGVkIHBh cmFtcyAqLw0KPiA+ICsgICAgICAgc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpOw0KPiA+ICsN Cj4gPiArICAgICAgIHN0cnVjdCBpdDYxNjIwX21pcGlyeCBtaXBpcnhfY29uZmlnOw0KPiA+ICsN Cj4gPiArICAgICAgIHN0cnVjdCB2aWRlb21vZGUgdm07DQo+ID4gKw0KPiA+ICsgICAgICAgc3Ry dWN0IGkyY19hZGFwdGVyIGRkYzsNCj4gPiArDQo+ID4gKyAgICAgICBlbnVtIGhkY3Bfc3RhdGUg aGRjcF9zdGF0ZTsNCj4gPiArICAgICAgIHU4IHNoYTFfaW5wdXRbSERDUF9TSEExX0ZJRk9fTEVO XTsNCj4gPiArICAgICAgIGNvbnN0IHN0cnVjdCBpdDYxNjJfY2hpcF9pbmZvICpjaGlwX2luZm87 DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX3Nob3dfZHJtX3ZpZGVv X21vZGUoc3RydWN0IGl0NjE2MjAgKml0NjE2MjAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2aWRlb21vZGUgKnZtKTsNCj4gPiArc3Rh dGljIHZvaWQgaXQ2MTYyMF9zdG9wX2hkY3Bfd29yayhzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCk7 DQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfc3RhcnRfaGRjcF93b3JrKHN0cnVjdCBpdDYxNjIw ICppdDYxNjIwKTsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX2hkY3Bfd2FpdF9rc3Zf bGlzdChzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCk7DQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBp dDYxNjIwX2hkbWlfZW5hYmxlX2F2bXV0ZShzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUp Ow0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBpdDYxNjIwICpicmlkZ2VfdG9faXQ2MTYyMChz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICByZXR1cm4gY29u dGFpbmVyX29mKGJyaWRnZSwgc3RydWN0IGl0NjE2MjAsIGJyaWRnZSk7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBpdDYxNjIwX3JlZ21hcF9j b25maWcgPSB7DQo+ID4gKyAgICAgICAucmVnX2JpdHMgPSA4LA0KPiA+ICsgICAgICAgLnZhbF9i aXRzID0gOCwNCj4gPiArICAgICAgIC5tYXhfcmVnaXN0ZXIgPSAweGZmLA0KPiA+ICsgICAgICAg LmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGlj IGNvbnN0IHN0cnVjdCByZWdtYXBfcmFuZ2UgaXQ2MTYyMF90eF92b2xhdGlsZV9yYW5nZXNbXSA9 IHsNCj4gPiArICAgICAgIHsgLnJhbmdlX21pbiA9IDAsIC5yYW5nZV9tYXggPSAweDNmZn0sDQo+ ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFi bGUgaXQ2MTYyMF90eF92b2xhdGlsZV90YWJsZSA9IHsNCj4gPiArICAgICAgIC55ZXNfcmFuZ2Vz ID0gaXQ2MTYyMF90eF92b2xhdGlsZV9yYW5nZXMsDQo+ID4gKyAgICAgICAubl95ZXNfcmFuZ2Vz ID0gQVJSQVlfU0laRShpdDYxNjIwX3R4X3ZvbGF0aWxlX3JhbmdlcyksDQo+ID4gK307DQo+ID4g Kw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5nZV9jZmcgaXQ2MTYyMF90eF9y ZWdtYXBfcmFuZ2VzW10gPSB7DQo+ID4gKyAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICAgIC5y YW5nZV9taW4gPSAwLA0KPiA+ICsgICAgICAgICAgICAgICAucmFuZ2VfbWF4ID0gMHgzZmYsDQo+ ID4gKyAgICAgICAgICAgICAgIC5zZWxlY3Rvcl9yZWcgPSBUWF9SRUdfSERNSVRYX0JBTkssDQo+ ID4gKyAgICAgICAgICAgICAgIC5zZWxlY3Rvcl9tYXNrID0gTV9IRE1JVFhfQkFOSywNCj4gPiAr ICAgICAgICAgICAgICAgLnNlbGVjdG9yX3NoaWZ0ID0gMCwNCj4gPiArICAgICAgICAgICAgICAg LndpbmRvd19zdGFydCA9IDB4MDAsDQo+ID4gKyAgICAgICAgICAgICAgIC53aW5kb3dfbGVuID0g MHgxMDAsDQo+ID4gKyAgICAgICB9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCByZWdtYXBfY29uZmlnIGl0NjE2MjBfdHhfcmVnbWFwX2NvbmZpZyA9IHsNCj4gPiAr ICAgICAgIC5yZWdfYml0cyA9IDgsDQo+ID4gKyAgICAgICAudmFsX2JpdHMgPSA4LA0KPiA+ICsg ICAgICAgLnZvbGF0aWxlX3RhYmxlID0gJml0NjE2MjBfdHhfdm9sYXRpbGVfdGFibGUsDQo+ID4g KyAgICAgICAucmFuZ2VzID0gaXQ2MTYyMF90eF9yZWdtYXBfcmFuZ2VzLA0KPiA+ICsgICAgICAg Lm51bV9yYW5nZXMgPSBBUlJBWV9TSVpFKGl0NjE2MjBfdHhfcmVnbWFwX3JhbmdlcyksDQo+ID4g KyAgICAgICAubWF4X3JlZ2lzdGVyID0gMHgzRkYsDQo+ID4gKyAgICAgICAuY2FjaGVfdHlwZSA9 IFJFR0NBQ0hFX05PTkUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHJlZ21hcF9yYW5nZSBpdDYxNjIwX21pcGlyeF92b2xhdGlsZV9yYW5nZXNbXSA9IHsNCj4gPiAr ICAgICAgIHsgLnJhbmdlX21pbiA9IDAsIC5yYW5nZV9tYXggPSAweDFmZiB9LA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlIGl0NjE2 MjBfbWlwaXJ4X3ZvbGF0aWxlX3RhYmxlID0gew0KPiA+ICsgICAgICAgLnllc19yYW5nZXMgPSBp dDYxNjIwX21pcGlyeF92b2xhdGlsZV9yYW5nZXMsDQo+ID4gKyAgICAgICAubl95ZXNfcmFuZ2Vz ID0gQVJSQVlfU0laRShpdDYxNjIwX21pcGlyeF92b2xhdGlsZV9yYW5nZXMpLA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfcmFuZ2VfY2ZnIGl0NjE2MjBf bWlwaXJ4X3JlZ21hcF9yYW5nZXNbXSA9IHsNCj4gPiArICAgICAgIHsNCj4gPiArICAgICAgICAg ICAgICAgLnJhbmdlX21pbiA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgIC5yYW5nZV9tYXggPSAw eDFmZiwNCj4gPiArICAgICAgICAgICAgICAgLnNlbGVjdG9yX3JlZyA9IFJYX1JFR19CQU5LLA0K PiA+ICsgICAgICAgICAgICAgICAuc2VsZWN0b3JfbWFzayA9IE1fTUlQSVJYX0JBTkssDQo+ID4g KyAgICAgICAgICAgICAgIC5zZWxlY3Rvcl9zaGlmdCA9IDAsDQo+ID4gKyAgICAgICAgICAgICAg IC53aW5kb3dfc3RhcnQgPSAweDAwLA0KPiA+ICsgICAgICAgICAgICAgICAud2luZG93X2xlbiA9 IDB4MTAwLA0KPiA+ICsgICAgICAgfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBpdDYxNjIwX21pcGlfcmVnbWFwX2NvbmZpZyA9IHsNCj4g PiArICAgICAgIC5yZWdfYml0cyA9IDgsDQo+ID4gKyAgICAgICAudmFsX2JpdHMgPSA4LA0KPiA+ ICsgICAgICAgLnZvbGF0aWxlX3RhYmxlID0gJml0NjE2MjBfbWlwaXJ4X3ZvbGF0aWxlX3RhYmxl LA0KPiA+ICsgICAgICAgLnJhbmdlcyA9IGl0NjE2MjBfbWlwaXJ4X3JlZ21hcF9yYW5nZXMsDQo+ ID4gKyAgICAgICAubnVtX3JhbmdlcyA9IEFSUkFZX1NJWkUoaXQ2MTYyMF9taXBpcnhfcmVnbWFw X3JhbmdlcyksDQo+ID4gKyAgICAgICAubWF4X3JlZ2lzdGVyID0gMHgxRkYsDQo+ID4gKyAgICAg ICAuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdW5zaWduZWQgaW50IGl0NjE2MjBfbWlwaV9yZWdfcmVhZChzdHJ1Y3QgaXQ2MTYyMCAqaXQ2 MTYyMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgcmVnKQ0KPiA+ICt7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgdmFsOw0KPiA+ ICsgICAgICAgaW50IGVycjsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjE2 MjAtPmRldjsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIWl0NjE2MjAtPnBvd2VyZWQpDQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0KPiA+ICsNCj4gPiArICAgICAgIGVyciA9 IHJlZ21hcF9yZWFkKGl0NjE2MjAtPm1pcGlyeF9yZWdtYXAsIHJlZywgJnZhbCk7DQo+ID4gKyAg ICAgICBpZiAoZXJyIDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInJl YWQgZmFpbGVkIHJ4IHJlZ1sweCV4XSBlcnI6ICVkIiwgcmVnLCBlcnIpOw0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gZXJyOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJl dHVybiB2YWw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9taXBpX3Jl Z193cml0ZShzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCwgdW5zaWduZWQgaW50IHJlZywNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhbCkNCj4gPiAr ew0KPiA+ICsgICAgICAgaW50IGVycjsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9 IGl0NjE2MjAtPmRldjsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIWl0NjE2MjAtPnBvd2VyZWQp DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0KPiA+ICsNCj4gPiArICAgICAg IGVyciA9IHJlZ21hcF93cml0ZShpdDYxNjIwLT5taXBpcnhfcmVnbWFwLCByZWcsIHZhbCk7DQo+ ID4gKw0KPiA+ICsgICAgICAgaWYgKGVyciA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2 X2VycihkZXYsICJ3cml0ZSBmYWlsZWQgcnggcmVnWzB4JXhdID0gMHgleCBlcnIgPSAlZCIsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVnLCB2YWwsIGVycik7DQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiBlcnI7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9taXBpX3JlZ19z ZXQoc3RydWN0IGl0NjE2MjAgKml0NjE2MjAsIHVuc2lnbmVkIGludCByZWcsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFzaywgdW5zaWduZWQgaW50 IHZhbCkNCj4gPiArew0KPiA+ICsgICAgICAgaW50IGVycjsNCj4gPiArICAgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiA9IGl0NjE2MjAtPmRldjsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIWl0NjE2 MjAtPnBvd2VyZWQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0KPiA+ICsN Cj4gPiArICAgICAgIGVyciA9IHJlZ21hcF91cGRhdGVfYml0cyhpdDYxNjIwLT5taXBpcnhfcmVn bWFwLCByZWcsIG1hc2ssIHZhbCk7DQo+ID4gKyAgICAgICBpZiAoZXJyIDwgMCkgew0KPiA+ICsg ICAgICAgICAgICAgICBkZXZfZXJyKGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAi d3JpdGUgcnggcmVnWzB4JXhdID0gMHgleCBtYXNrID0gMHgleCBmYWlsZWQgZXJyICVkIiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICByZWcsIHZhbCwgbWFzaywgZXJyKTsNCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg ICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBpdDYx NjIwX2hkbWlfcmVnX3JlYWQoc3RydWN0IGl0NjE2MjAgKml0NjE2MjAsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZykNCj4gPiAr ew0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IHZhbDsNCj4gPiArICAgICAgIGludCBlcnI7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDYxNjIwLT5kZXY7DQo+ID4gKw0KPiA+ ICsgICAgICAgaWYgKCFpdDYxNjIwLT5wb3dlcmVkKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gLUVOT0RFVjsNCj4gPiArDQo+ID4gKyAgICAgICBlcnIgPSByZWdtYXBfcmVhZChpdDYxNjIw LT50eF9yZWdtYXAsIHJlZywgJnZhbCk7DQo+ID4gKyAgICAgICBpZiAoZXJyIDwgMCkgew0KPiA+ ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInJlYWQgZmFpbGVkIHR4IHJlZ1sweCV4XSBl cnI6ICVkIiwgcmVnLCBlcnIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOw0KPiA+ ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiB2YWw7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShzdHJ1Y3QgaXQ2MTYyMCAq aXQ2MTYyMCwgdW5zaWduZWQgaW50IHJlZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHZhbCkNCj4gPiArew0KPiA+ICsgICAgICAgaW50IGVycjsN Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjE2MjAtPmRldjsNCj4gPiArDQo+ ID4gKyAgICAgICBpZiAoIWl0NjE2MjAtPnBvd2VyZWQpDQo+ID4gKyAgICAgICAgICAgICAgIHJl dHVybiAtRU5PREVWOw0KPiA+ICsNCj4gPiArICAgICAgIGVyciA9IHJlZ21hcF93cml0ZShpdDYx NjIwLT50eF9yZWdtYXAsIHJlZywgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoZXJyIDwg MCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIndyaXRlIGZhaWxlZCB0eCBy ZWdbMHgleF0gPSAweCV4IGVyciA9ICVkIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBy ZWcsIHZhbCwgZXJyKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gPiArICAg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBpdDYxNjIwX2hkbWlfcmVnX3NldChzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCwg dW5zaWduZWQgaW50IHJlZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBtYXNrLCB1bnNpZ25lZCBpbnQgdmFsKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBp bnQgZXJyOw0KPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gaXQ2MTYyMC0+ZGV2Ow0K PiA+ICsNCj4gPiArICAgICAgIGlmICghaXQ2MTYyMC0+cG93ZXJlZCkNCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9ERVY7DQo+ID4gKw0KPiA+ICsgICAgICAgZXJyID0gcmVnbWFwX3Vw ZGF0ZV9iaXRzKGl0NjE2MjAtPnR4X3JlZ21hcCwgcmVnLCBtYXNrLCB2YWwpOw0KPiA+ICsgICAg ICAgaWYgKGVyciA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHR4IHJlZ1sweCV4XSA9IDB4JXggbWFzayA9 IDB4JXggZmFpbGVkIGVyciAlZCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVnLCB2 YWwsIG1hc2ssIGVycik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gKyAg ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyB2b2lkIGl0NjE2MjBfbWlwaV9yZXNldF92aWRlbyhzdHJ1Y3QgaXQ2MTYyMCAqaXQ2 MTYyMCkNCj4gPiArew0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3JlZ193cml0ZShpdDYxNjIw LCBSWF9SRUdfRFNDX1JFU0VULCAweDM4KTsNCj4gPiArICAgICAgIHVzbGVlcF9yYW5nZSgxMDAs IDIwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3NldChpdDYxNjIwLCBSWF9SRUdf RDJQX1JFU0VULCAweDcwLCAweDcwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3Jp dGUoaXQ2MTYyMCwgUlhfUkVHX0RTQ19SRVNFVCwgMHgwMCk7DQo+ID4gKw0KPiA+ICsgICAgICAg aXQ2MTYyMF9taXBpX3JlZ19zZXQoaXQ2MTYyMCwgUlhfUkVHX1JFU0VUX0NUUkwsIDB4NTcsIDB4 MDApOw0KPiA+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX21pcGlfbTJwX3Jlc2V0KHN0cnVjdCBpdDYxNjIw ICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpZiAoaXQ2MTYyMC0+ZGV2X3ZlciAhPSBE RVZfVkVSU0lPTl9BMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsgICAgICAg aXQ2MTYyMF9taXBpX3JlZ19zZXQoaXQ2MTYyMCwgUlhfUkVHX01JUElfQ1RSTDAyLCBCX0ZJRk9f UlNULA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgQl9GSUZPX1JTVCk7DQo+ID4g KyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21p cGlfcmVnX3NldChpdDYxNjIwLCBSWF9SRUdfTUlQSV9DVFJMMDIsIEJfRklGT19SU1QsIDB4MDAp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX21pcGlfZDJwX3Jlc2V0 X2ZpZm8oc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2 MjBfbWlwaV9yZWdfc2V0KGl0NjE2MjAsIFJYX1JFR19EMlBfUkVTRVQsIDB4NzAsIDB4NzApOw0K PiA+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0KPiA+ICsgICAgICAgaXQ2MTYy MF9taXBpX3JlZ19zZXQoaXQ2MTYyMCwgUlhfUkVHX0QyUF9SRVNFVCwgMHg3MCwgMHg1MCk7DQo+ ID4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwLCAyMDApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9t aXBpX3JlZ19zZXQoaXQ2MTYyMCwgUlhfUkVHX0QyUF9SRVNFVCwgMHg3MCwgMHgxMCk7DQo+ID4g KyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwLCAyMDApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBp X3JlZ19zZXQoaXQ2MTYyMCwgUlhfUkVHX0QyUF9SRVNFVCwgMHg3MCwgMHgwMCk7DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfbWlwaV9kMnBfcmVzZXQoc3RydWN0IGl0 NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9tMnBfcmVz ZXQoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3NldChpdDYxNjIwLCBS WF9SRUdfRF9SU1QsIEJfRF9SU1QsIEJfRF9SU1QpOw0KPiA+ICsgICAgICAgdXNsZWVwX3Jhbmdl KDEwMDAsIDIwMDApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3JlZ19zZXQoaXQ2MTYyMCwg UlhfUkVHX0RfUlNULCBCX0RfUlNULCAweDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9k MnBfcmVzZXRfZmlmbyhpdDYxNjIwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQg aXQ2MTYyMF9taXBpX3Jlc2V0KHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4g KyAgICAgICB1bnNpZ25lZCBpbnQgdmFsOw0KPiA+ICsgICAgICAgdTggZGV2X3ZlciA9IGl0NjE2 MjAtPmRldl92ZXI7DQo+ID4gKyAgICAgICBzdHJ1Y3QgaXQ2MTYyMF9taXBpcnggKm1pcGlyeCA9 ICZpdDYxNjIwLT5taXBpcnhfY29uZmlnOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlw aV9yZWdfc2V0KGl0NjE2MjAsIFJYX1JFR19SRVNFVF9DVFJMLCBCX1JFRl9DTE9DS19SRVNFVCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJfUkVGX0NMT0NLX1JFU0VUKTsNCj4g PiArICAgICAgIHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBf bWlwaV9yZWdfc2V0KGl0NjE2MjAsIFJYX1JFR19SRVNFVF9DVFJMLCBCX1JFRl9DTE9DS19SRVNF VCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDApOw0KPiA+ICsgICAgICAg dXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlw aV9kMnBfcmVzZXQoaXQ2MTYyMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3Jl Z193cml0ZShpdDYxNjIwLCBSWF9SRUdfSFNfQ1RSTCwgMHg5Myk7DQo+ID4gKyAgICAgICBpdDYx NjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19MUF9DVFJMLCAweDBDKTsNCj4gPiAr ICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2MTYyMCwgUlhfUkVHX0FVVE9fU1lOQywg MHgwMSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JF R19NVl9NQVgsIDB4MEYpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3JlZ193cml0ZShpdDYx NjIwLCBSWF9SRUdfRk9SQ0VfTSwgQl9GT1JDRV9NSFRfU1RCKTsNCj4gPiArDQo+ID4gKyAgICAg ICBpdDYxNjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19NSVBJX0NUUkwwMSwgMHgy Qyk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19B VVRPX0QyUF9SRVNFVCwgMHgxMyk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3dyaXRl KGl0NjE2MjAsIFJYX1JFR19EMlBfQ1RSTCwgMHgyOCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21p cGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19UVU5FT1BULCAweDlDKTsNCj4gPiArDQo+ID4g KyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3NldChpdDYxNjIwLCBSWF9SRUdfQ0xLX0NUUkwsIDB4 MzAsIDB4MjApOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChkZXZfdmVyICE9IERFVl9WRVJTSU9O X0EwKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2MTYy MCwgUlhfUkVHX1RVTkVUSFJFLCAweDAyKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9t aXBpX3JlZ193cml0ZShpdDYxNjIwLCBSWF9SRUdfQVVUT19EMlBfUkVTRVQsIDB4ODMpOw0KPiA+ ICsgICAgICAgICAgICAgICBpdDYxNjIwX21pcGlfcmVnX3NldChpdDYxNjIwLCBSWF9SRUdfRk9S Q0VfTSwgQl9GT1JDRV9NVlRfU1RCLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCX0ZPUkNFX01WVF9TVEIpOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX21p cGlfcmVnX3NldChpdDYxNjIwLCBSWF9SRUdfU1lOQ19OVU0sIDB4RjcsIDB4NDQpOw0KPiA+ICsg ICAgICAgICAgICAgICBpdDYxNjIwX21pcGlfcmVnX3NldChpdDYxNjIwLCBSWF9SRUdfQlNQX1NF TCwgMHgwMywgMHgwMik7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfc2V0 KGl0NjE2MjAsIFJYX1JFR19QV0RfQ1RSTCwgMHgyNCwgMHgyNCk7DQo+ID4gKyAgICAgICAgICAg ICAgIGl0NjE2MjBfbWlwaV9yZWdfc2V0KGl0NjE2MjAsIFJYX1JFR19FTlZSUiwgMHgwMSwgMHgw MCk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2MTYyMCwg UlhfUkVHX0VOVkJMSywgMHgwMCk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9y ZWdfc2V0KGl0NjE2MjAsIFJYX1JFR19EU0NDVFJMLCAweDQwLCAweDAwKTsNCj4gPiArICAgICAg IH0NCj4gPiArICAgICAgIHZhbCA9IChtaXBpcngtPmxhbmVfbnVtIC0gMSkgfA0KPiA+ICsgICAg ICAgICAgICAgKG1pcGlyeC0+cG5fc3dhcCA/IEJfTUlQSV9QTl9TV0FQIDogMHgwMCkgfA0KPiA+ ICsgICAgICAgICAgICAgKG1pcGlyeC0+bGFuZV9zd2FwID8gQl9NSVBJX0xBTkVfU1dBUCA6IDB4 MDApOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfc2V0KGl0NjE2MjAsIFJY X1JFR19NSVBJX0NPTkZJRywgMHgwRiwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIw X21pcGlfcmVzZXRfdmlkZW8oaXQ2MTYyMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2 b2lkIGl0NjE2MjBfbWlwaV92aWRlb19jaGFuZ2VfaXJxKHN0cnVjdCBpdDYxNjIwICppdDYxNjIw KQ0KPiA+ICt7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmVnMjI7DQo+ID4gKyAgICAgICB1 bnNpZ25lZCBpbnQgdmlkZW9fc3RhYmxlOw0KPiA+ICsNCj4gPiArICAgICAgIHJlZzIyID0gaXQ2 MTYyMF9taXBpX3JlZ19yZWFkKGl0NjE2MjAsIFJYX1JFR19JTlRfU1RBVFVTXzAyKTsNCj4gPiAr ICAgICAgIHZpZGVvX3N0YWJsZSA9IHJlZzIyICYgQl9JTklfVl9TVEI7DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKHZpZGVvX3N0YWJsZSkgew0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX21p cGlfbTJwX3Jlc2V0KGl0NjE2MjApOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX21pcGlf ZDJwX3Jlc2V0X2ZpZm8oaXQ2MTYyMCk7DQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAg ICAgICAgICAgICBpdDYxNjIwX21pcGlfcmVnX3NldChpdDYxNjIwLCBSWF9SRUdfRF9SU1QsIDB4 MDEsIDB4MDEpOw0KPiA+ICsgICAgICAgICAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7 DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfc2V0KGl0NjE2MjAsIFJYX1JF R19EX1JTVCwgMHgwMSwgMHgwMCk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9y ZWdfc2V0KGl0NjE2MjAsIFJYX1JFR19EMlBfUkVTRVQsIDB4NzAsIDB4NzApOw0KPiA+ICsgICAg ICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX21pcGlfaXJxX2hh bmRsZXIoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIHVuc2ln bmVkIGludCByZWcwYSwgcmVnX3ZhbDsNCj4gPiArDQo+ID4gKyAgICAgICByZWdfdmFsID0gaXQ2 MTYyMF9taXBpX3JlZ19yZWFkKGl0NjE2MjAsIFJYX1JFR19DTEtfQ1RSTCkgJg0KPiA+ICsgICAg ICAgICAgICAgICAgIEJfTUlQSV9JTlRfU1RBVFVTOw0KPiA+ICsgICAgICAgaWYgKHJlZ192YWwg PT0gMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsNCj4gPiArICAgICAgIHJl ZzBhID0gaXQ2MTYyMF9taXBpX3JlZ19yZWFkKGl0NjE2MjAsIFJYX1JFR19JTlRfU1RBVFVTXzAx KTsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2MTYyMCwgUlhfUkVHX0lO VF9TVEFUVVNfMDEsIHJlZzBhKTsNCj4gPiArICAgICAgIGlmIChyZWcwYSAmIEJfSU5JX1ZfQ0hH KQ0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX21pcGlfdmlkZW9fY2hhbmdlX2lycShpdDYx NjIwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9taXBpX3NldF9k MnZfdmlkZW9fdGltaW5nKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAg ICAgICB1OCBzZWxkY2t2YWw7DQo+ID4gKyAgICAgICB1MzIgaHRvdGFsLCBoZnAsIGhzdywgaGJw LCBoZGV3Ow0KPiA+ICsgICAgICAgdTMyIHZmcCwgdnN3LCB2YnAsIHZkZXc7DQo+ID4gKyAgICAg ICB1MzIgY2xvY2s7DQo+ID4gKyAgICAgICBib29sIGhwb2xfaGlnaCA9IDAsIHZwb2xfaGlnaCA9 IDA7DQo+ID4gKyAgICAgICBzdHJ1Y3QgdmlkZW9tb2RlICp2bSA9ICZpdDYxNjIwLT52bTsNCj4g PiArDQo+ID4gKyAgICAgICBpdDYxNjIwX3Nob3dfZHJtX3ZpZGVvX21vZGUoaXQ2MTYyMCwgJml0 NjE2MjAtPnZtKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAodm0tPmZsYWdzICYgRElTUExBWV9G TEFHU19IU1lOQ19ISUdIKQ0KPiA+ICsgICAgICAgICAgICAgICBocG9sX2hpZ2ggPSB0cnVlOw0K PiA+ICsNCj4gPiArICAgICAgIGlmICh2bS0+ZmxhZ3MgJiBESVNQTEFZX0ZMQUdTX1ZTWU5DX0hJ R0gpDQo+ID4gKyAgICAgICAgICAgICAgIHZwb2xfaGlnaCA9IHRydWU7DQo+ID4gKw0KPiA+ICsg ICAgICAgY2xvY2sgPSB2bS0+cGl4ZWxjbG9jayAvIDEwMDA7DQo+ID4gKyAgICAgICBoZGV3ID0g dm0tPmhhY3RpdmU7DQo+ID4gKw0KPiA+ICsgICAgICAgaGZwID0gdm0tPmhmcm9udF9wb3JjaDsN Cj4gPiArICAgICAgIGhzdyA9IHZtLT5oc3luY19sZW47DQo+ID4gKyAgICAgICBoYnAgPSB2bS0+ aGJhY2tfcG9yY2g7DQo+ID4gKyAgICAgICBodG90YWwgPSB2bS0+aGFjdGl2ZSArIHZtLT5oZnJv bnRfcG9yY2ggKyB2bS0+aHN5bmNfbGVuICsNCj4gPiArICAgICAgICAgICAgICAgIHZtLT5oYmFj a19wb3JjaDsNCj4gPiArDQo+ID4gKyAgICAgICB2ZGV3ID0gdm0tPnZhY3RpdmU7DQo+ID4gKyAg ICAgICB2ZnAgPSB2bS0+dmZyb250X3BvcmNoOw0KPiA+ICsgICAgICAgdnN3ID0gdm0tPnZzeW5j X2xlbjsNCj4gPiArICAgICAgIHZicCA9IHZtLT52YmFja19wb3JjaDsNCj4gPiArDQo+ID4gKyAg ICAgICBpZiAoaXQ2MTYyMC0+ZGV2X3ZlciAhPSBERVZfVkVSU0lPTl9BMCkgew0KPiA+ICsgICAg ICAgICAgICAgICBpZiAoaXQ2MTYyMC0+ZGV2X3ZlciA9PSBERVZfVkVSU0lPTl9DMCkgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHNlbGRja3ZhbCA9IDB4MDQ7DQo+ID4gKyAgICAgICAg ICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsb2NrID4g MjcwMDAwKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZGNrdmFsID0g MHgwQzsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxkY2t2YWwgPSAweDE4Ow0KPiA+ICsgICAgICAgICAgICAg ICB9DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfc2V0KGl0NjE2MjAsIFJY X1JFR19TRUxEQ0xLLCAweDFDLCBzZWxkY2t2YWwpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIGlmIChoZGV3ID4gMjAwMCkNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9t aXBpX3JlZ193cml0ZShpdDYxNjIwLCBSWF9SRUdfRFNDX1ZGUkQsIDB4NTApOw0KPiA+ICsgICAg ICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2 MjAsIFJYX1JFR19EU0NfVkZSRCwgaGRldyAvIDM2KTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYx NjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19IRlBfTCwgTE9fQllURShoZnApKTsN Cj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2MTYyMCwgUlhfUkVHX0hGUF9I LCBISV9CWVRFKGhmcCkpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3Jp dGUoaXQ2MTYyMCwgUlhfUkVHX0hTV19MLCBMT19CWVRFKGhzdykpOw0KPiA+ICsgICAgICAgaXQ2 MTYyMF9taXBpX3JlZ193cml0ZShpdDYxNjIwLCBSWF9SRUdfSFNXX0gsIEhJX0JZVEUoaHN3KSk7 DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3JlZ193cml0ZShpdDYxNjIwLCBSWF9S RUdfSEJQX0wsIExPX0JZVEUoaGJwKSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3dy aXRlKGl0NjE2MjAsIFJYX1JFR19IQlBfSCwgSElfQllURShoYnApKTsNCj4gPiArDQo+ID4gKyAg ICAgICBpdDYxNjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19IREVXX0wsIExPX0JZ VEUoaGRldykpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3JlZ193cml0ZShpdDYxNjIwLCBS WF9SRUdfSERFV19ILCBISV9CWVRFKGhkZXcpKTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIw X21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19IVE9UQUxfTCwgTE9fQllURShodG90YWwp KTsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2MTYyMCwgUlhfUkVHX0hU T1RBTF9ILCBISV9CWVRFKGh0b3RhbCkpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlw aV9yZWdfd3JpdGUoaXQ2MTYyMCwgUlhfUkVHX1ZGUF9MLCBMT19CWVRFKHZmcCkpOw0KPiA+ICsg ICAgICAgaXQ2MTYyMF9taXBpX3JlZ193cml0ZShpdDYxNjIwLCBSWF9SRUdfVkZQX0gsIEhJX0JZ VEUodmZwKSk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3JlZ193cml0ZShpdDYx NjIwLCBSWF9SRUdfVlNXX0wsIExPX0JZVEUodnN3KSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21p cGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19WU1dfSCwgSElfQllURSh2c3cpKTsNCj4gPiAr DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19WQlBf TCwgTE9fQllURSh2YnApKTsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2 MTYyMCwgUlhfUkVHX1ZCUF9ILCBISV9CWVRFKHZicCkpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0 NjE2MjBfbWlwaV9yZWdfd3JpdGUoaXQ2MTYyMCwgUlhfUkVHX1ZERVdfTCwgTE9fQllURSh2ZGV3 KSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX21pcGlfcmVnX3dyaXRlKGl0NjE2MjAsIFJYX1JFR19W REVXX0gsIEhJX0JZVEUodmRldykpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfbWlwaV9y ZWdfc2V0KGl0NjE2MjAsIFJYX1JFR19QT0wsIDB4MDMsICgoIXZwb2xfaGlnaCkgPDwgMSkgfA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFocG9sX2hpZ2gpKTsNCj4gPiArDQo+ ID4gKyAgICAgICBpZiAoaXQ2MTYyMC0+ZGV2X3ZlciA9PSBERVZfVkVSU0lPTl9BMCAmJg0KPiA+ ICsgICAgICAgICAgICgoaGRldyA9PSAyNTYwICYmIHZkZXcgPT0gMTQ0MCAmJiBjbG9jayA9PSAy NDE1MDApIHx8DQo+ID4gKyAgICAgICAgICAgIChoZGV3ID09IDcyMCAmJiB2ZGV3ID09IDQwMCAm JiBjbG9jayA9PSAyODMyMCkgfHwNCj4gPiArICAgICAgICAgICAgKGhkZXcgPT0gNzIwICYmIHZk ZXcgPT0gNTc2ICYmIGNsb2NrID09IDI3MDAwKSkpIHsNCj4gDQo+IFdoeSBhcmUgdGhlc2UgbW9k ZXMgc3BlY2lhbD8gSG93IGRvIHdlIG1ha2Ugc3VyZSB3ZSdyZSBub3QgbWlzc2luZyBhbnkNCj4g bW9kZXMgdGhhdCByZXF1aXJlIGV4dHJhIG9wZXJhdGlvbnM/DQoNClRoZXNlIGlzc3VlcyB3ZXJl IGZvdW5kIG9uIHRoZSBmaXJzdCBlbmdpbmVlcmluZyBzYW1wbGUsIERFVl9WRVJTSU9OX0EwLA0K YW5kIGhhdmUgYmVlbiBmaXhlZCBpbiB0aGUgbmV3ZXIgSUMgcmV2aXNpb24uIFRoZSBuZXcgSUMg dmVyc2lvbiB3aWxsIHVuZGVyZ28NCmNvbXByZWhlbnNpdmUgdGVzdGluZyBmb3IgdmVyaWZpY2F0 aW9uLg0KPiANCj4gPiArICAgICAgICAgICAgICAgZGV2X2RiZyhpdDYxNjIwLT5kZXYsICJkZXZp Y2UgQTAgJWR4JWQgJWQgS2h6IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBoZGV3LCB2 ZGV3LCBjbG9jayk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfbWlwaV9yZWdfc2V0KGl0 NjE2MjAsIFJYX1JFR19NUFBDTEtJLCAweDgwLCAweDgwKTsNCj4gPiArICAgICAgICAgICAgICAg aXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1ZIX1RJTUUsIDB4NDgsIDB4NDgp Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYx NjIwLCBUWF9SRUdfUEdfSEZQX0wsIExPX0JZVEUoaGZwKSk7DQo+ID4gKyAgICAgICAgICAgICAg IGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX1BHX0hGUF9ILCBISV9CWVRF KGhmcCkpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0 ZShpdDYxNjIwLCBUWF9SRUdfUEdfSFNXX0wsIExPX0JZVEUoaHN3KSk7DQo+ID4gKyAgICAgICAg ICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX1BHX0hTV19ILCBI SV9CWVRFKGhzdykpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3Jl Z193cml0ZShpdDYxNjIwLCBUWF9SRUdfUEdfSEJQX0wsIExPX0JZVEUoaGJwKSk7DQo+ID4gKyAg ICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX1BHX0hC UF9ILCBISV9CWVRFKGhicCkpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9o ZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfUEdfREVXX0wsIExPX0JZVEUoaGRldykpOw0K PiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JF R19QR19ERVdfSCwgSElfQllURShoZGV3KSk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBp dDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19QR19IVlIyX0wsIDB4RkYpOw0K PiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JF R19QR19IVlIyX0gsIDB4MEYpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9o ZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfUEdfVkZQX0wsIExPX0JZVEUodmZwKSk7DQo+ ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVH X1BHX1ZGUF9ILCBISV9CWVRFKHZmcCkpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaXQ2 MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfUEdfVlNXX0wsIExPX0JZVEUodnN3 KSk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwg VFhfUkVHX1BHX1ZTV19ILCBISV9CWVRFKHZzdykpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfUEdfVkJQX0wsIExPX0JZ VEUodmJwKSk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2 MTYyMCwgVFhfUkVHX1BHX1ZCUF9ILCBISV9CWVRFKHZicCkpOw0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfUEdfVkRFV19M LCBMT19CWVRFKHZkZXcpKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193 cml0ZShpdDYxNjIwLCBUWF9SRUdfUEdfSERFV19ILCBISV9CWVRFKHZkZXcpKTsNCj4gPiArDQo+ ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVH X1BHX1ZGUDJfTCwgMHhGRik7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdf d3JpdGUoaXQ2MTYyMCwgVFhfUkVHX1BHX1ZGUDJfSCwgMHgwRik7DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfUEdfUE9MLCAw eDA3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZwb2xfaGln aCkgPDwgMSkgfCAoaHBvbF9oaWdoKSk7DQo+ID4gKw0KPiA+ICsgICAgICAgfSBlbHNlIHsNCj4g PiArICAgICAgICAgICAgICAgaXQ2MTYyMF9taXBpX3JlZ19zZXQoaXQ2MTYyMCwgUlhfUkVHX01Q UENMS0ksIDB4ODAsIDB4MDApOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVn X3NldChpdDYxNjIwLCBUWF9SRUdfVkhfVElNRSwgMHg0OCwgMHgwMCk7DQo+ID4gKyAgICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX2QycF9yZXNldChpdDYxNjIwKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX3Jlc2V0KHN0cnVjdCBp dDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3Nl dChpdDYxNjIwLCBUWF9SRUdfUkVTRVRfMV9DVFJMLCAweDdFLCAweDdFKTsNCj4gPiArICAgICAg IGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19SRVNFVF8yX0NUUkwsIDB4MzYs IDB4MzYpOw0KPiA+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0KPiA+ICsNCj4g PiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19SRVNFVF8xX0NU UkwsIDB4MUYsIDB4MDApOw0KPiA+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0K PiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1JFU0VUXzFf Q1RSTCwgMHg0MCwgMHgwMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193 cml0ZShpdDYxNjIwLCBUWF9SRUdfUkRST01fVFJHLCAweDA0KTsNCj4gPiArICAgICAgIHVzbGVl cF9yYW5nZSgxMDAwLCAyMDAwKTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVn X3NldChpdDYxNjIwLCBUWF9SRUdfU1lTX0NPTkZJRywgQl9FTl9IRE1JLCBCX0VOX0hETUkpOw0K PiA+ICsNCj4gPiArICAgICAgIC8qIFJlc2V0IEFGRSAqLw0KPiA+ICsgICAgICAgaXQ2MTYyMF9o ZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1hMQ183X0NUUkwsIDB4MDQsIDB4MDApOw0KPiA+ ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0lQTExfQ1RSTCwg MHgwMiwgMHgwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBU WF9SRUdfVFhQTExfQ1RSTCwgMHgwNCwgMHgwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlf cmVnX3NldChpdDYxNjIwLCBUWF9SRUdfVFhEUlZfQ1RSTCwgMHgwMSwgMHgwMCk7DQo+ID4gKw0K PiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1hMQ183X0NU UkwsIDB4MDQsIDB4MDQpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYy MCwgVFhfUkVHX0lQTExfQ1RSTCwgMHgwMiwgMHgwMik7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hk bWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfVFhQTExfQ1RSTCwgMHgwNCwgMHgwNCk7DQo+ID4g Kw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1RYRFJW X0NUUkwsIDB4MDEsIDB4MDEpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdf c2V0KGl0NjE2MjAsIFRYX1JFR19UWERSVl9DVFJMLCAweDA4LCAweDA4KTsNCj4gPiArDQo+ID4g KyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19WX1FVRVVFLCAw eDA4KTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVH X1ZfVFUsIDB4MDcpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUo aXQ2MTYyMCwgVFhfUkVHX0NSXzFfQ1RSTCwgMHgwOSk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2 MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfQ1JfMl9DVFJMLCAweDE2KTsNCj4g PiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19W RF9DVFJMMSwgMHgwNCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0 ZShpdDYxNjIwLCBUWF9SRUdfSERDUF9DVFJMMiwgMHgwNCk7DQo+ID4gKw0KPiA+ICsgICAgICAg aXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfVkRfQ1RSTDMsIDB4ODQpOw0K PiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfSFBEX0NP TkZJRywgMHgwNik7DQo+ID4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7DQo+ID4g Kw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfVkRf Q1RSTDIsIDB4MkUpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIw LCBUWF9SRUdfSERNSV9DVFJMMSwgMHgzMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9o ZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfSERNSV9DVFJMMiwgMHgwNCk7DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfaGRtaV9wb3dlcm9uKHN0cnVjdCBpdDYx NjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChp dDYxNjIwLCBUWF9SRUdfVFhEUlZfUERfQ1RSTCwgMHg3MCwgMHgwMCk7DQo+ID4gKw0KPiA+ICsg ICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1hMQ183X0NUUkwsIDB4 MDcsIDB4MDYpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhf UkVHX0lQTExfQ1RSTCwgMHgxMiwgMHgxMik7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVn X3NldChpdDYxNjIwLCBUWF9SRUdfVFhQTExfQ1RSTCwgMHhjNiwgMHg4NCk7DQo+ID4gKyAgICAg ICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfU1NDX1BELCAweDAzLCAweDAz KTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9S RUdfQ0xPQ0tfUFdEX0NUUkwsIDB4MEYsIDB4MDApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1p X3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1ZEX0NUUkwyLCBCX1ZJREVPX0ZJRk9fUkVTVCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJfVklERU9fRklGT19SRVNUKTsNCj4gPiAr ICAgICAgIHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRt aV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19WRF9DVFJMMiwgQl9WSURFT19GSUZPX1JFU1QsIDB4 MDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2hkbWlfcG93ZXJk b3duKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIw X2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfVFhEUlZfUERfQ1RSTCwgMHg3MCwgMHg3MCk7 DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVH X1NTQ19QRCwgMHgwMywgMHgwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChp dDYxNjIwLCBUWF9SRUdfSVBMTF9DVFJMLCAweDEyLCAweDAwKTsNCj4gPiArICAgICAgIGl0NjE2 MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19UWFBMTF9DVFJMLCAweGM2LCAweGMyKTsN Cj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19YTENfN19D VFJMLCAweDA3LCAweDAxKTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3Nl dChpdDYxNjIwLCBUWF9SRUdfVFhEUlZfQ1RSTCwgMHhmOSwgMHgwMCk7DQo+ID4gKyAgICAgICBp dDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfQVVYX0NUUkwsIDB4OTAsIDB4MDAp Ow0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JF R19DTE9DS19QV0RfQ1RSTCwgMHgwRiwgMHgwYSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlf cmVnX3NldChpdDYxNjIwLCBUWF9SRUdfQ0VDX0NPTkZJRywgQl9FTl9DRUMsIDB4MDApOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgYm9vbCBpdDYxNjIwX2hkbWlfZ2V0X2hwZF9zdGF0dXMo c3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGludCB2YWw7DQo+ ID4gKw0KPiA+ICsgICAgICAgdmFsID0gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRY X1JFR19TVEFUVVMwMSk7DQo+ID4gKyAgICAgICBpZiAodmFsIDwgMCkNCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAhISh2YWwgJiBC X0hQRF9TVEFUVVMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2hk bWlfZGRjX2Fib3J0KHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gaXQ2MTYyMC0+ZHJtOw0KPiA+ICsNCj4gPiArICAg ICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19ERENfQ1RSTDIsIEJfRERD X1JFU1QsIEJfRERDX1JFU1QpOw0KPiA+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDAp Ow0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0REQ19D VFJMMiwgQl9ERENfUkVTVCwgMHgwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dy aXRlKGl0NjE2MjAsIFRYX1JFR19ERENfQ09NTUFORCwgRERDX0NPTU1BTkRfQUJPUlQpOw0KPiA+ ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0KPiA+ICsgICAgICAgZHJtX2RiZyhk cm0sICJ0eCBkZGMgc3RzdHVzICUwMlhcbiIsDQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBf aGRtaV9yZWdfcmVhZChpdDYxNjIwLCBUWF9SRUdfRERDX1NUQVRVUykpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfaGRtaV9kZGNfd2FpdChzdHJ1Y3QgaXQ2MTYyMCAq aXQ2MTYyMCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGl0 NjE2MjAtPmRybTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBkZGNfc3RhdHVzOw0KPiA+ICsg ICAgICAgaW50IHJldCA9IDA7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7DQo+ ID4gKw0KPiA+ICsgICAgICAgdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKFNP RlRfRERDX1RJTUVPVVRfTVMpICsgMTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKDs7KSB7DQo+ ID4gKyAgICAgICAgICAgICAgIHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsNCj4gPiArICAgICAg ICAgICAgICAgZGRjX3N0YXR1cyA9IGl0NjE2MjBfaGRtaV9yZWdfcmVhZChpdDYxNjIwLCBUWF9S RUdfRERDX1NUQVRVUyk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoZGRjX3N0YXR1 cyAmIEJfRERDX05PQUNLKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZHJtX2RiZyhk cm0sICJEREMgbm8gYWNrIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVJ TzsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGRkY19zdGF0dXMgJiBCX0REQ19U WF9ET05FKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiAr ICAgICAgICAgICAgICAgaWYgKGRkY19zdGF0dXMgJiBCX0REQ19GVUxMKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgZHJtX2RiZyhkcm0sICJEREMgRlVMTCIpOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICAgICBpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGRybV9kYmcoZHJtLCAiRERDIFNPRlQgdGltZW91dCAl eFxuIiwgZGRjX3N0YXR1cyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVU SU1FRE9VVDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAg ICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7 DQo+ID4gK30NCj4gDQo+IENhbiB3ZSByZS13cml0ZSB0aGlzIGZ1bmN0aW9uIHdpdGggcmVhZHhf cG9sbF90aW1lb3V0KCkgb3INCj4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KCk/DQo+IA0KPiBU byB1c2UgcmVhZHhfcG9sbF90aW1lb3V0KCksIHlvdSBtaWdodCBuZWVkIHRvIGludHJvZHVjZSBh IGRlZGljYXRlZA0KPiBmdW5jdGlvbiBmb3IgcmVhZGluZyBUWF9SRUdfRERDX1NUQVRVUy4gYW54 NzYyNS5jIGhhcyBzb21lIGV4YW1wbGUNCj4gdXNhZ2VzIHdpdGggdGhpcy4NCj4gDQo+IFRvIHVz ZSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoKSwgeW91IHdpbGwgaGF2ZSB0byBoYW5kbGUgdGhl IGNoZWNrZWQNCj4gaW4gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKCkgaGVyZS4NCj4gDQoNClRoZSBu ZXh0IHZlcnNpb24gd2lsbCBzd2l0Y2ggdG8gdXNpbmcgcmVhZHhfcG9sbF90aW1lb3V0KCkuDQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfaGRtaV9nZXRfZGRjX2ZpZm8oc3RydWN0IGl0 NjE2MjAgKml0NjE2MjAsIHU4ICpidWYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBsZW4pDQo+ID4gK3sNCj4gPiArICAgICAgIGludCBlcnI7DQo+ID4g KyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDYxNjIwLT5kZXY7DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKCFpdDYxNjIwLT5wb3dlcmVkKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4g LUVOT0RFVjsNCj4gPiArDQo+ID4gKyAgICAgICBlcnIgPSByZWdtYXBfYnVsa19yZWFkKGl0NjE2 MjAtPnR4X3JlZ21hcCwgVFhfUkVHX0REQ19GSUZPLCBidWYsIGxlbik7DQo+ID4gKyAgICAgICBp ZiAoZXJyIDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInJlYWQgZGRj IGZpZm8gZmFpbGVkIHR4IHJlZ1sweCV4XSBlcnIgPSAlZCIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgVFhfUkVHX0REQ19GSUZPLCBlcnIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gZXJyOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfaGRtaV9zZXRfZGRjX2ZpZm8oc3Ry dWN0IGl0NjE2MjAgKml0NjE2MjAsIHU4ICpidWYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pDQo+ID4gK3sNCj4gPiArICAgICAgIGludCBlcnI7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDYxNjIwLT5kZXY7DQo+ID4gKw0K PiA+ICsgICAgICAgaWYgKCFpdDYxNjIwLT5wb3dlcmVkKQ0KPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gLUVOT0RFVjsNCj4gPiArDQo+ID4gKyAgICAgICBlcnIgPSByZWdtYXBfYnVsa193cml0 ZShpdDYxNjIwLT50eF9yZWdtYXAsIFRYX1JFR19ERENfRklGTywgYnVmLCBsZW4pOw0KPiA+ICsg ICAgICAgaWYgKGVyciA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJ3 cml0ZSBkZGMgZmlmbyBmYWlsZWQgdHggcmVnWzB4JXhdIGVyciA9ICVkIiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBUWF9SRUdfRERDX0ZJRk8sIGVycik7DQo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiBlcnI7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJu IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXQ2MTYyMF9oZG1p X2FmZV9zZXR0aW5nIGhkbWlfYWZlWzRdID0gew0KPiA+ICsgICAgICAgezM3NTAwMCwgMHgwMSwg MHgwMiwNCj4gPiArICAgICAgICAgICAgICAgezB4MDMsIDB4NTMsIDB4MUEsIDB4MDMsIDB4MDAs IDB4MDQsDQo+ID4gKyAgICAgICAgICAgICAgIDB4MDMsIDB4NTMsIDB4MUEsIDB4MDMsIDB4MDAs IDB4MDQsDQo+ID4gKyAgICAgICAgICAgICAgIDB4MDMsIDB4NTMsIDB4MUEsIDB4MDMsIDB4MDAs IDB4MDQsDQo+ID4gKyAgICAgICAgICAgICAgIDB4MDEsIDB4NEIsIDB4MEYsIDB4MDAsIDB4MDcs IDB4MDR9fSwNCj4gPiArICAgICAgIHszNDAwMDAsIDB4MDEsIDB4MDIsDQo+ID4gKyAgICAgICAg ICAgICAgIHsweDAzLCAweDUzLCAweDFBLCAweDAzLCAweDAwLCAweDA0LA0KPiA+ICsgICAgICAg ICAgICAgICAweDAzLCAweDUzLCAweDFBLCAweDAzLCAweDAwLCAweDA0LA0KPiA+ICsgICAgICAg ICAgICAgICAweDAzLCAweDUzLCAweDFBLCAweDAzLCAweDAwLCAweDA0LA0KPiA+ICsgICAgICAg ICAgICAgICAweDAxLCAweDRCLCAweDBGLCAweDAwLCAweDA3LCAweDA0fX0sDQo+ID4gKyAgICAg ICB7MTUwMDAwLCAweDAwLCAweDAwLA0KPiA+ICsgICAgICAgICAgICAgICB7MHgwMywgMHg0Mywg MHgxOCwgMHgwMywgMHgwMCwgMHgwNCwNCj4gPiArICAgICAgICAgICAgICAgMHgwMywgMHg0Mywg MHgxOCwgMHgwMywgMHgwMCwgMHgwNCwNCj4gPiArICAgICAgICAgICAgICAgMHgwMywgMHg0Mywg MHgxOCwgMHgwMywgMHgwMCwgMHgwNCwNCj4gPiArICAgICAgICAgICAgICAgMHgwMywgMHg0Mywg MHgxOCwgMHgwMywgMHgwMCwgMHgwNH19LA0KPiA+ICsgICAgICAgezAsIDB4MDAsIDB4MDAsDQo+ ID4gKyAgICAgICAgICAgICAgIHsweDAzLCAweDQzLCAweDE4LCAweDAzLCAweDAwLCAweDA0LA0K PiA+ICsgICAgICAgICAgICAgICAweDAzLCAweDQzLCAweDE4LCAweDAzLCAweDAwLCAweDA0LA0K PiA+ICsgICAgICAgICAgICAgICAweDAzLCAweDQzLCAweDE4LCAweDAzLCAweDAwLCAweDA0LA0K PiA+ICsgICAgICAgICAgICAgICAweDAzLCAweDQzLCAweDE4LCAweDAzLCAweDAwLCAweDA0fX0N Cj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfaGRtaV9zZXR1cF9hZmUo c3RydWN0IGl0NjE2MjAgKml0NjE2MjAsIGludCBjbG9jaykNCj4gPiArew0KPiA+ICsgICAgICAg aW50IGk7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmVnX29mc2V0Ow0KPiA+ICsgICAgICAg Y29uc3Qgc3RydWN0IGl0NjE2MjBfaGRtaV9hZmVfc2V0dGluZyAqYWZlOw0KPiA+ICsNCj4gPiAr ICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19BRkUzMCwgMHgxRiwg MHgwNyk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JF R19BRkVFOSwgMHgxMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2 MjAsIFRYX1JFR19BRkUzMywgMHgwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dy aXRlKGl0NjE2MjAsIFRYX1JFR19BRkUzNCwgMHhFNCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2 MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfQUZFMzUsIDB4MDApOw0KPiA+ICsg ICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfQUZFRTksIDB4MTAp Ow0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoaGRtaV9hZmUpOyBp KyspIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGNsb2NrID4gaGRtaV9hZmVbaV0uY2xvY2sg fHwgaGRtaV9hZmVbaV0uY2xvY2sgPT0gMCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBhZmUgPSAmaGRtaV9hZmVb aV07DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBU WF9SRUdfQUZFMEUsIDB4RjApOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChjbG9jayA+IDEwMDAw MCkNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhf UkVHX1RYUExMX0NUUkwsIDB4MTksIDB4MDgpOw0KPiA+ICsgICAgICAgZWxzZQ0KPiA+ICsgICAg ICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfVFhQTExfQ1RS TCwgMHgxOSwgMHgxMSk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGFmZS0+aDJvbl9wbGwpIHsN Cj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9S RUdfQUZFX1hQLCAweDQ4KTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19z ZXQoaXQ2MTYyMCwgVFhfUkVHX0FGRV9YTEMxLCAweDg3LCAweDgxKTsNCj4gPiArICAgICAgICAg ICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0FGRV9YTEMyLCAweDQw LCAweDAwKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYx NjIwLCBUWF9SRUdfQUZFX1hMQzMsIDB4MzIpOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIw X2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfWExDXzdfQ1RSTCwgMHhGRiwgMHhCNik7DQo+ ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVn X3dyaXRlKGl0NjE2MjAsIFRYX1JFR19BRkVfWFAsIDB4MDApOw0KPiA+ICsgICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FG RV9EUlYsIDB4MDApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwg VFhfUkVHX1RYRFJWX0NUUkwsIDB4MDIsIGFmZS0+aHMpOw0KPiA+ICsNCj4gPiArICAgICAgIGZv ciAoaSA9IDAsIHJlZ19vZnNldCA9IDB4MjgwOyByZWdfb2ZzZXQgPD0gMHgyOTc7IHJlZ19vZnNl dCsrKQ0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAs IHJlZ19vZnNldCwgYWZlLT5hZmVfdmFsW2krK10pOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2 MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19JTlRfTUFTSzMsIEJfVE1EU19TVEJfQ0hH LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgQl9UTURTX1NUQl9DSEcpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgaXQ2MTYyMF9oZG1pX2ZpcmVfYWZl KHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hk bWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfVFhEUlZfQ1RSTCwgMHhGMSwgMHhGMSk7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpdDYxNjIwX2hkbWlfZGlzYWJsZV9h ZmUoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2MjBf aGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19UWERSVl9DVFJMLCAweEYxLCAweDAwKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBpdDYxNjIwX2hkbWlfaGRjcHJkKHN0cnVjdCBp dDYxNjIwICppdDYxNjIwLCBpbnQgb2Zmc2V0LCBpbnQgYnl0ZW51bSkNCj4gPiArew0KPiA+ICsg ICAgICAgaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgZ3VhcmQobXV0ZXgpKCZpdDYx NjIwLT5kZGNfbG9jayk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0 ZShpdDYxNjIwLCBUWF9SRUdfRERDX0NPTU1BTkQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEREQ19DT01NQU5EX0ZJRk9fQ0xSKTsNCj4gPiArICAgICAgIHVzbGVlcF9yYW5n ZSgxMDAwLCAyMDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYy MCwgVFhfUkVHX0REQ19BRERSLCBERENfSERDUF9BRERSKTsNCj4gPiArICAgICAgIGl0NjE2MjBf aGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0REQ19PRkZTRVQsIG9mZnNldCk7DQo+ID4g KyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENfTlVNX0ws IGJ5dGVudW0pOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBU WF9SRUdfRERDX05VTV9ILCAoYnl0ZW51bSAmIDB4MzAwKSA+PiA4KTsNCj4gPiArICAgICAgIGl0 NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0REQ19DT01NQU5ELCBERENfQ09N TUFORF9CVVJTVF9SKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaXQ2MTYyMF9oZG1pX2RkY193 YWl0KGl0NjE2MjApIDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfZGRj X2Fib3J0KGl0NjE2MjApOw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSAtRUlPOw0KPiA+ICsg ICAgICAgICAgICAgICBkZXZfZGJnKGl0NjE2MjAtPmRldiwgImRkYyBmYWlsIik7DQo+ID4gKyAg ICAgICB9DQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IGl0NjE2MjBfaGRtaV9oZGNwX2tzdmxpc3RfcmQoc3RydWN0IGl0NjE2MjAgKml0NjE2 MjAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBieXRlbnVtLCB1OCAqb3V0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgcmV0ID0gMDsN Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCBpOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IGNv dW50Ow0KPiA+ICsNCj4gPiArICAgICAgIGd1YXJkKG11dGV4KSgmaXQ2MTYyMC0+ZGRjX2xvY2sp Ow0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhf UkVHX0REQ19DT01NQU5ELCBERENfQ09NTUFORF9GSUZPX0NMUik7DQo+ID4gKyAgICAgICB1c2xl ZXBfcmFuZ2UoMTAwMCwgMjAwMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRl KGl0NjE2MjAsIFRYX1JFR19ERENfQUREUiwgRERDX0hEQ1BfQUREUik7DQo+ID4gKyAgICAgICBp dDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENfT0ZGU0VULCAweDQzKTsN Cj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0REQ19O VU1fTCwgYnl0ZW51bSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2 MjAsIFRYX1JFR19ERENfTlVNX0gsIChieXRlbnVtICYgMHgzMDApID4+IDgpOw0KPiA+ICsgICAg ICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfRERDX0NPTU1BTkQsIERE Q19DT01NQU5EX0JVUlNUX1IpOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBi eXRlbnVtOykgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoaXQ2MTYyMF9oZG1pX2RkY193YWl0 KGl0NjE2MjApIDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGl0NjE2MjBfaGRt aV9kZGNfYWJvcnQoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g LUVJTzsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGl0NjE2MjAtPmRldiwg ImRkYyBmYWlsIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAg ICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGNvdW50ID0gaXQ2MTYy MF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRYX1JFR19ERENfRklGT19TVFMpICYNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBNX0REQ19TVEFHRV9OVU07DQo+ID4gKyAgICAgICAgICAgICAg IGl0NjE2MjBfaGRtaV9nZXRfZGRjX2ZpZm8oaXQ2MTYyMCwgKG91dCArIGkpLCBjb3VudCk7DQo+ ID4gKyAgICAgICAgICAgICAgIGkgKz0gY291bnQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBpdDYx NjIwX2hkbWlfZW5hYmxlX2hkY3Aoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4g PiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBpdDYxNjIwLT5kcm07DQo+ID4gKyAg ICAgICB1bnNpZ25lZCBpbnQgc3RzLCBhdXRoX2NzOw0KPiA+ICsNCj4gPiArICAgICAgIHN0cyA9 IGl0NjE2MjBfaGRtaV9yZWdfcmVhZChpdDYxNjIwLCBUWF9SRUdfVl9TVFMpOw0KPiA+ICsgICAg ICAgaWYgKChzdHMgJiBCX1RNRFNfU1RBQkxFKSAhPSBCX1RNRFNfU1RBQkxFKSB7DQo+ID4gKyAg ICAgICAgICAgICAgIGRybV9kYmcoZHJtLCAiVE1EUyBub3Qgc3RhYmxlLCBzdG9wIGhkY3AgJXgi LCBzdHMpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ID4gKyAgICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVH X0hEQ1BfQ1RSTDMsIEJfRU5DX0RJUywgQl9FTkNfRElTKTsNCj4gPiArICAgICAgIHVzbGVlcF9y YW5nZSgxMDAwLCAyMDAwKTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3Nl dChpdDYxNjIwLCBUWF9SRUdfUkVTRVRfMl9DVFJMLCAweDEwLCAweDEwKTsNCj4gPiArICAgICAg IHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdf c2V0KGl0NjE2MjAsIFRYX1JFR19SRVNFVF8yX0NUUkwsIDB4MTAsIDB4MDApOw0KPiA+ICsNCj4g PiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19SMFRNLCAweEMw LCAweDQwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhf UkVHX1NIQV9TRUwsIDB4MDApOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdf d3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVVE9NVVRFLCAweDAwKTsNCj4gPiArDQo+ID4gKyAgICAg ICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfSERDUF9DVFJMMiwgQl9BTl9T RUwsIEJfQU5fU0VMKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAs IFRYX1JFR19IRENQX0NUUkwyLCBCX0VOX0FOX0dFTiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEJfRU5fQU5fR0VOKTsNCj4gPiArICAgICAgIHVzbGVlcF9yYW5nZSgxMDAwLCAy MDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19I RENQX0NUUkwyLCBCX0VOX0FOX0dFTiwgMHgwMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYy MF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0hEQ1BfQ1RSTDEsIEJfQ1BERVNJUkVELA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgQl9DUERFU0lSRUQpOw0KPiA+ICsgICAg ICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0hEQ1BfQ1RSTDMsIChCX1BB VVNFIHwgQl9FTkNfRElTKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAp Ow0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhf UkVHX0hEQ1BfUFJPLCBCX0FVVEhfRklSRSk7DQo+ID4gKw0KPiA+ICsgICAgICAgLyoNCj4gPiAr ICAgICAgICAqIEhEQ1Agc3RhcnQgcmVxdWlyZXMgMTAwbXMgZm9yIHRoZSBmaXJzdCBwYXJ0IG9m IHRoZSBhdXRoZW50aWNhdGlvbg0KPiA+ICsgICAgICAgICogcHJvdG9jb2wsMjBtcyBpcyB1c2Vk IHRvIHdhaXQgZm9yIDYxNjIwIEhXIGNvbXBsZXRpb24uDQo+ID4gKyAgICAgICAgKi8NCj4gPiAr ICAgICAgIGlmICh3YWl0X2V2ZW50X3RpbWVvdXQoaXQ2MTYyMC0+d3EsICFpdDYxNjIwLT5ocGQs IG1zZWNzX3RvX2ppZmZpZXMoMTIwKSkpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsNCj4gPiArDQo+ID4gKyAgICAgICBhdXRoX2NzID0gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0 NjE2MjAsIFRYX1JFR19IRENQX0FVVEhfQ1MpICYgTV9BVVRIX0NIOw0KPiA+ICsgICAgICAgaWYg KGF1dGhfY3MgPT0gQ1NfS1NWTElTVF9DSEspIHsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYy MF9oZG1pX2hkY3Bfd2FpdF9rc3ZfbGlzdChpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAg dXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0KPiA+ICsgICAgICAgICAgICAgICBhdXRoX2NzID0g aXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRYX1JFR19IRENQX0FVVEhfQ1MpICYNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNX0FVVEhf Q0g7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGF1dGhfY3MgPT0gQ1Nf QVVUSF9ET05FKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9lbmFibGVfYXZt dXRlKGl0NjE2MjAsIGZhbHNlKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3Jl Z19zZXQoaXQ2MTYyMCwgVFhfUkVHX0lOVDEsIEJfSU5UX0FVVEhfRiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQl9JTlRfQVVUSF9GKTsNCj4gPiArICAgICAgICAg ICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0lOVF9NQVNLMSwgQl9J TlRfQVVUSF9GLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCX0lO VF9BVVRIX0YpOw0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgImF1dGggZG9uZSIp Ow0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gPiArICAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgICBkcm1fZGJnKGRybSwgImF1dGggZmFpbCIpOw0KPiA+ICsgICAgICAgaXQ2 MTYyMF9oZG1pX2VuYWJsZV9hdm11dGUoaXQ2MTYyMCwgdHJ1ZSk7DQo+ID4gKyAgICAgICByZXR1 cm4gZmFsc2U7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfaGRtaV9y ZXNldF9oZGNwKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBp dDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfSU5UX01BU0sxLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKEJfSU5UX0FVVEhfRCB8IEJfSU5UX0FVVEhfRiksIDB4 MDApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0lO VF9NQVNLMiwgQl9LU1ZfQ0hFQ0ssIDB4MDApOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBf aGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19IRENQX0NUUkwzLCBCX0VOQ19ESVMsIEJfRU5D X0RJUyk7DQo+ID4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7DQo+ID4gKw0KPiA+ ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX1JFU0VUXzJfQ1RS TCwgMHgxOCwgMHgxOCk7DQo+ID4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7DQo+ ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfUkVTRVRfMl9D VFJMLCAweDE4LCAweDAwKTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3Nl dChpdDYxNjIwLCBUWF9SRUdfSERDUF9DVFJMMSwgQl9DUERFU0lSRUQsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBCX0NQREVTSVJFRCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hk bWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfSERDUF9DVFJMMywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCX1BBVVNFIHwgQl9FTkNfRElTKSwgQl9QQVVTRSk7DQo+ID4gKyAg ICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19BVVRPTVVURSwgMHgw MCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBib29sIGl0NjE2MjBfaGRtaV9oZGNwX2lz X2tzdl92YWxpZCh1OCAqa3N2KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgaSwgb25lcyA9IDA7 DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKChrc3ZbNF0gPT0gMHg5MyAmJiBrc3ZbM10gPT0gMHg0 MyAmJiBrc3ZbMl0gPT0gMHg1QyAmJg0KPiA+ICsgICAgICAgICAgICBrc3ZbMV0gPT0gMHhERSAm JiBrc3ZbMF0gPT0gMHgyMykgfHwNCj4gPiArICAgICAgICAgICAoa3N2WzRdID09IDB4N0QgJiYg a3N2WzNdID09IDB4QjQgJiYga3N2WzJdID09IDB4MjEgJiYNCj4gPiArICAgICAgICAgICAga3N2 WzFdID09IDB4MzcgJiYga3N2WzBdID09IDB4MEIpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogS1NWIGhhcyAyMCAxJ3MgYW5kIDIwIDAn cyAqLw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykNCj4gPiArICAgICAgICAg ICAgICAgb25lcyArPSBod2VpZ2h0OChrc3ZbaV0pOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVy biBvbmVzID09IDIwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2hk bWlfZGlzYWJsZV9oZGNwKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAg ICAgICBpdDYxNjIwX2hkbWlfcmVzZXRfaGRjcChpdDYxNjIwKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIGludCBpdDYxNjIwX2hkbWlfc3RhcnRfaGRjcChzdHJ1Y3QgaXQ2MTYyMCAqaXQ2 MTYyMCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGl0NjE2 MjAtPmRybTsNCj4gPiArICAgICAgIHU4IHJ4X2hkbWlfbW9kZTsNCj4gPiArICAgICAgIHU4IGJr c3ZbRFJNX0hEQ1BfS1NWX0xFTl07DQo+ID4gKyAgICAgICBib29sIHJldGNoZWNrOw0KPiA+ICsN Cj4gPiArICAgICAgIGlmIChpdDYxNjIwX2hkbWlfaGRjcHJkKGl0NjE2MjAsIERSTV9IRENQX0RE Q19CU1RBVFVTLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX0hEQ1Bf QlNUQVRVU19MRU4pIDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgInJl YWQgYnN0YXR1cyBmYWlsIVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsN Cj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByeF9oZG1pX21vZGUgPSAoaXQ2MTYy MF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIDB4N0UpICYgMHgxMCkgPj4gNDsNCj4gPiArICAgICAg IGlmIChpdDYxNjIwLT5pc19oZG1pICE9IHJ4X2hkbWlfbW9kZSkNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9oZGNwcmQo aXQ2MTYyMCwgRFJNX0hEQ1BfRERDX0JLU1YsIERSTV9IRENQX0tTVl9MRU4pOw0KPiA+ICsgICAg ICAgYmtzdlswXSA9IGl0NjE2MjBfaGRtaV9yZWdfcmVhZChpdDYxNjIwLCBUWF9SRUdfSERDUF9C S1NWMSk7DQo+ID4gKyAgICAgICBia3N2WzFdID0gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2 MjAsIFRYX1JFR19IRENQX0JLU1YyKTsNCj4gPiArICAgICAgIGJrc3ZbMl0gPSBpdDYxNjIwX2hk bWlfcmVnX3JlYWQoaXQ2MTYyMCwgVFhfUkVHX0hEQ1BfQktTVjMpOw0KPiA+ICsgICAgICAgYmtz dlszXSA9IGl0NjE2MjBfaGRtaV9yZWdfcmVhZChpdDYxNjIwLCBUWF9SRUdfSERDUF9CS1NWNCk7 DQo+ID4gKyAgICAgICBia3N2WzRdID0gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRY X1JFR19IRENQX0JLU1Y1KTsNCj4gPiArICAgICAgIHJldGNoZWNrID0gaXQ2MTYyMF9oZG1pX2hk Y3BfaXNfa3N2X3ZhbGlkKGJrc3YpOw0KPiA+ICsgICAgICAgaWYgKCFyZXRjaGVjaykgew0KPiA+ ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgImtzdiB2YWxpZCFcbiIpOw0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgaWYgKGRybV9oZGNwX2NoZWNrX2tzdnNfcmV2b2tlZChkcm0sIGJrc3YsIDEpID4gMCkNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVy biBpdDYxNjIwX2hkbWlfZW5hYmxlX2hkY3AoaXQ2MTYyMCk7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbnQgaXQ2MTYyMF9oZG1pX3NoYTFfZGlnZXN0KHN0cnVjdCBpdDYxNjIwICppdDYx NjIwLCB1OCAqc2hhMV9pbnB1dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSwgdTggKm91dHB1dF9hdikNCj4gPiArew0KPiA+ICsgICAg ICAgc3RydWN0IHNoYXNoX2Rlc2MgKmRlc2M7DQo+ID4gKyAgICAgICBzdHJ1Y3QgY3J5cHRvX3No YXNoICp0Zm07DQo+ID4gKyAgICAgICBpbnQgZXJyOw0KPiA+ICsgICAgICAgc3RydWN0IGRybV9k ZXZpY2UgKmRybSA9IGl0NjE2MjAtPmRybTsNCj4gPiArDQo+ID4gKyAgICAgICB0Zm0gPSBjcnlw dG9fYWxsb2Nfc2hhc2goInNoYTEiLCAwLCAwKTsNCj4gPiArICAgICAgIGlmIChJU19FUlIodGZt KSkgew0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgImNyeXB0b19hbGxvY19zaGFz aCBzaGExIGZhaWxlZCIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUih0Zm0p Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgZGVzYyA9IGt6YWxsb2Moc2l6ZW9mKCpkZXNj KSArIGNyeXB0b19zaGFzaF9kZXNjc2l6ZSh0Zm0pLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAg IGlmICghZGVzYykgew0KPiA+ICsgICAgICAgICAgICAgICBjcnlwdG9fZnJlZV9zaGFzaCh0Zm0p Ow0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICBkZXNjLT50Zm0gPSB0Zm07DQo+ID4gKyAgICAgICBlcnIgPSBjcnlw dG9fc2hhc2hfZGlnZXN0KGRlc2MsIHNoYTFfaW5wdXQsIHNpemUsIG91dHB1dF9hdik7DQo+ID4g KyAgICAgICBpZiAoZXJyKQ0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgImNyeXB0 b19zaGFzaF9kaWdlc3Qgc2hhMSBmYWlsZWQiKTsNCj4gPiArDQo+ID4gKyAgICAgICBjcnlwdG9f ZnJlZV9zaGFzaCh0Zm0pOw0KPiA+ICsgICAgICAga2ZyZWUoZGVzYyk7DQo+ID4gKyAgICAgICBy ZXR1cm4gZXJyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfaGRtaV9z ZXR1cF9zaGExX2lucHV0KHN0cnVjdCBpdDYxNjIwICppdDYxNjIwLCB1OCAqaW5wdXQpDQo+ID4g K3sNCj4gPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBpdDYxNjIwLT5kcm07DQo+ ID4gKyAgICAgICB1OCBic3RhdHVzWzJdOw0KPiA+ICsgICAgICAgaW50IGRvd25fc3RyZWFtX2Nv dW50LCBpLCBjb3VudCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX2hkY3By ZChpdDYxNjIwLCBEUk1fSERDUF9ERENfQlNUQVRVUywgRFJNX0hEQ1BfQlNUQVRVU19MRU4pOw0K PiA+ICsgICAgICAgYnN0YXR1c1swXSA9IGl0NjE2MjBfaGRtaV9yZWdfcmVhZChpdDYxNjIwLCBU WF9SRUdfSERDUF9CU1RTX0wpOw0KPiA+ICsgICAgICAgYnN0YXR1c1sxXSA9IGl0NjE2MjBfaGRt aV9yZWdfcmVhZChpdDYxNjIwLCBUWF9SRUdfSERDUF9CU1RTX0gpOw0KPiA+ICsNCj4gPiArICAg ICAgIGRvd25fc3RyZWFtX2NvdW50ID0gRFJNX0hEQ1BfTlVNX0RPV05TVFJFQU0oYnN0YXR1c1sw XSk7DQo+ID4gKyAgICAgICBpZiAoRFJNX0hEQ1BfTUFYX0RFVklDRV9FWENFRURFRChic3RhdHVz WzBdKSB8fA0KPiA+ICsgICAgICAgICAgIERSTV9IRENQX01BWF9DQVNDQURFX0VYQ0VFREVEKGJz dGF0dXNbMV0pKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0 NjE2MjAsIFRYX1JFR19IRENQX0NUUkwzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoQl9QQVVTRSB8IEJfRU5DX0RJUyksIEJfUEFVU0UpOw0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gMDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBpZiAo IWRvd25fc3RyZWFtX2NvdW50IHx8DQo+ID4gKyAgICAgICAgICAgZG93bl9zdHJlYW1fY291bnQg PiBNQVhfSERDUF9ET1dOX1NUUkVBTV9DT1VOVCkgew0KPiA+ICsgICAgICAgICAgICAgICBkcm1f ZGJnKGRybSwgIkhEQ1AgZG93biBzdHJlYW0gY291bnQgRXJyb3IgJWQiLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGRvd25fc3RyZWFtX2NvdW50KTsNCj4gPiArICAgICAgICAgICAgICAg cmV0dXJuIDA7DQo+ID4gKyAgICAgICB9DQo+ID4gKyAgICAgICBkcm1fZGJnKGRybSwgImRvd24g c3RyZWFtIGNvdW50ICVkXG4iLCBkb3duX3N0cmVhbV9jb3VudCk7DQo+ID4gKw0KPiA+ICsgICAg ICAgY291bnQgPSBkb3duX3N0cmVhbV9jb3VudCAqIERSTV9IRENQX0tTVl9MRU47DQo+ID4gKyAg ICAgICBpdDYxNjIwX2hkbWlfaGRjcF9rc3ZsaXN0X3JkKGl0NjE2MjAsIGNvdW50LCBpbnB1dCk7 DQo+ID4gKyAgICAgICBpZiAoZHJtX2hkY3BfY2hlY2tfa3N2c19yZXZva2VkKGRybSwgaW5wdXQs IGRvd25fc3RyZWFtX2NvdW50KSA+IDApDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0K PiA+ICsNCj4gPiArICAgICAgIGlucHV0W2NvdW50KytdID0gYnN0YXR1c1swXTsNCj4gPiArICAg ICAgIGlucHV0W2NvdW50KytdID0gYnN0YXR1c1sxXTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYx NjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfU0hBX1NFTCwgMHg3MCwgMHg3MCk7DQo+ ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfSERDUF9DVFJM MiwgQl9FTl9NMF9SRCwgQl9FTl9NMF9SRCk7DQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAgICBpbnB1dFtjb3VudCsrXSA9IGl0NjE2MjBfaGRt aV9yZWdfcmVhZChpdDYxNjIwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoVFhfUkVHX0FOTTBWMSArIGkpKTsNCj4gPiArDQo+ID4g KyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfSERDUF9DVFJMMiwg Ql9FTl9NMF9SRCwgMHgwMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGNvdW50Ow0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgYm9vbCBpdDYxNjIwX2hkbWlfaGRjcF9wYXJ0Ml9rc3Zs aXN0X2NoZWNrKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBz dHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gaXQ2MTYyMC0+ZHJtOw0KPiA+ICsgICAgICAgdTggYXZb NV1bNF0sIGJ2WzVdWzRdOw0KPiA+ICsgICAgICAgaW50IGksIGo7DQo+ID4gKw0KPiA+ICsgICAg ICAgaSA9IGl0NjE2MjBfaGRtaV9zZXR1cF9zaGExX2lucHV0KGl0NjE2MjAsIGl0NjE2MjAtPnNo YTFfaW5wdXQpOw0KPiA+ICsgICAgICAgaWYgKGkgPD0gMCkNCj4gPiArICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9zaGExX2RpZ2Vz dChpdDYxNjIwLCBpdDYxNjIwLT5zaGExX2lucHV0LCBpLCAodTggKilhdik7DQo+ID4gKw0KPiA+ ICsgICAgICAgZm9yIChpID0gMDsgaSA8IERSTV9IRENQX1ZfUFJJTUVfTlVNX1BBUlRTOyBpKysp IHsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX2hkY3ByZChpdDYxNjIwLCBEUk1f SERDUF9ERENfVl9QUklNRShpKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEUk1fSERDUF9WX1BSSU1FX1BBUlRfTEVOKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2 MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0hEQ1BfQ1RSTDIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJfRU5fTTBfUkQsIEJfRU5fTTBfUkQpOw0K PiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdf U0hBX1NFTCwgMHg3MCwgKGkgPDwgNCkpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgZm9y IChqID0gMDsgaiA8IERSTV9IRENQX1ZfUFJJTUVfUEFSVF9MRU47IGorKykNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBidltpXVtqXSA9IGl0NjE2MjBfaGRtaV9yZWdfcmVhZChpdDYxNjIw LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRYX1JFR19BTk0wVjEgKyBqKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICBmb3IgKGkgPSAwOyBpIDwgRFJNX0hEQ1BfVl9QUklNRV9OVU1fUEFSVFM7IGkrKykNCj4g PiArICAgICAgICAgICAgICAgaWYgKGJ2W2ldWzNdICE9IGF2W2ldWzBdIHx8IGJ2W2ldWzJdICE9 IGF2W2ldWzFdIHx8DQo+ID4gKyAgICAgICAgICAgICAgICAgICBidltpXVsxXSAhPSBhdltpXVsy XSB8fCBidltpXVswXSAhPSBhdltpXVszXSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaSA9PSBEUk1fSERDUF9WX1BSSU1FX05VTV9Q QVJUUykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQo+ID4gKw0KPiA+ICsgICAg ICAgZHJtX2RiZyhkcm0sICJWJyBOb3QgbWF0Y2ghISIpOw0KPiA+ICsgICAgICAgcmV0dXJuIGZh bHNlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2hkbWlfaGRjcF93 YWl0X2tzdl9saXN0KHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICB1OCBiY2FwcyA9IDA7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7DQo+ID4g Kw0KPiA+ICsgICAgICAgdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDUwMDAp ICsgMTsNCj4gPiArICAgICAgIGZvciAoOzspIHsNCj4gPiArICAgICAgICAgICAgICAgdXNsZWVw X3JhbmdlKDEwMDAsIDIwMDApOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfaGRj cHJkKGl0NjE2MjAsIERSTV9IRENQX0REQ19CQ0FQUywgMSk7DQo+ID4gKyAgICAgICAgICAgICAg IGJjYXBzID0gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRYX1JFR19IRENQX0JDQVBT KTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGJjYXBzICYgQl9LU1ZfUkVBRFkpDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBp ZiAoaXQ2MTYyMC0+aGRjcF9zdGF0ZSAhPSBDUF9HT0lORykNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGlmICh0aW1lX2FmdGVy KGppZmZpZXMsIHRpbWVvdXQpKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K PiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlmICgoYmNhcHMgJiBCX0tTVl9SRUFE WSkgJiYNCj4gPiArICAgICAgICAgICBpdDYxNjIwX2hkbWlfaGRjcF9wYXJ0Ml9rc3ZsaXN0X2No ZWNrKGl0NjE2MjApKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3Jp dGUoaXQ2MTYyMCwgVFhfUkVHX0hEQ1BfUFJPLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEJfTElTVF9DSEtfRE9ORSk7DQo+ID4gKyAgICAgICAgICAgICAgIHJl dHVybjsNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUo aXQ2MTYyMCwgVFhfUkVHX0hEQ1BfUFJPLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCX0xJU1RfQ0hLX0RPTkUgfCBCX0xJU1RfQ0hLX0ZBSUwpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX3JlbW92ZV9lZGlkKHN0cnVjdCBpdDYxNjIwICppdDYx NjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBkcm1fZWRpZF9mcmVlKGl0NjE2MjAtPmNhY2hlZF9l ZGlkKTsNCj4gPiArICAgICAgIGl0NjE2MjAtPmNhY2hlZF9lZGlkID0gTlVMTDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX2lycV9oZGNwX2F1dGhfZmFpbChz dHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRybV9k ZXZpY2UgKmRybSA9IGl0NjE2MjAtPmRybTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaXQ2MTYy MC0+aGRjcF9zdGF0ZSA9PSBDUF9HT0lORykgew0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIw X2hkbWlfZW5hYmxlX2F2bXV0ZShpdDYxNjIwLCB0cnVlKTsNCj4gPiArICAgICAgICAgICAgICAg ZHJtX2RiZyhkcm0sICJhdXRoIGZhaWwgYWZ0ZXIgZG9uZSwgc2V0IGF2bXV0ZSIpOw0KPiA+ICsg ICAgICAgICAgICAgICBpdDYxNjIwX3N0YXJ0X2hkY3Bfd29yayhpdDYxNjIwKTsNCj4gPiArICAg ICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX2lycV9o cGQoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2MjAt PmhwZCA9IGl0NjE2MjBfaGRtaV9nZXRfaHBkX3N0YXR1cyhpdDYxNjIwKTsNCj4gPiArDQo+ID4g KyAgICAgICBpZiAoIWl0NjE2MjAtPmhwZCkgew0KPiA+ICsgICAgICAgICAgICAgICB3YWtlX3Vw KCZpdDYxNjIwLT53cSk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfc3RvcF9oZGNwX3dv cmsoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9kaXNhYmxlX2Fm ZShpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9yZW1vdmVfZWRpZChpdDYx NjIwKTsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoaXQ2MTYyMC0+dmlkZW9fc3RhdGUgPT0gaXQ2 MTYyMF9WSURFT19PTikgew0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfZmlyZV9h ZmUoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfc3RhcnRfaGRjcF93b3Jr KGl0NjE2MjApOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9p ZCBpdDYxNjIwX2hkbWlfaXJxX3J4c2VuX2NoZyhzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCkNCj4g PiArew0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IHJ4c2VuOw0KPiA+ICsNCj4gPiArICAgICAg IGlmICghaXQ2MTYyMF9oZG1pX2dldF9ocGRfc3RhdHVzKGl0NjE2MjApKQ0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgcnhzZW4gPSBpdDYxNjIwX2hkbWlf cmVnX3JlYWQoaXQ2MTYyMCwgVFhfUkVHX1ZfU1RTKSAmIEJfUlhTRU47DQo+ID4gKyAgICAgICBp ZiAoaXQ2MTYyMC0+dmlkZW9fc3RhdGUgPT0gaXQ2MTYyMF9WSURFT19PTikgew0KPiA+ICsgICAg ICAgICAgICAgICBpZiAocnhzZW4pIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpdDYx NjIwX2hkbWlfZmlyZV9hZmUoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg aXQ2MTYyMF9zdGFydF9oZGNwX3dvcmsoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICAgICAgICAgIH0g ZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaXQ2MTYyMF9zdG9wX2hkY3Bfd29y ayhpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfZGlz YWJsZV9hZmUoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0N Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX2lycV9UTURTX3N0 Yl9jaGFuZ2Uoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIHVu c2lnbmVkIGludCB2aWRlb19zdGF0dXM7DQo+ID4gKw0KPiA+ICsgICAgICAgdmlkZW9fc3RhdHVz ID0gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRYX1JFR19WX1NUUyk7DQo+ID4gKw0K PiA+ICsgICAgICAgaWYgKHZpZGVvX3N0YXR1cyAmIEJfVE1EU19TVEFCTEUpDQo+ID4gKyAgICAg ICAgICAgICAgIGl0NjE2MjBfc3RhcnRfaGRjcF93b3JrKGl0NjE2MjApOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgYm9vbCBpdDYxNjIwX3Rlc3RfYml0KHVuc2lnbmVkIGludCBiaXQsIGNv bnN0IHVuc2lnbmVkIGludCAqYWRkcikNCj4gPiArew0KPiA+ICsgICAgICAgcmV0dXJuIDEgJiAo YWRkcltiaXQgLyBCSVRTX1BFUl9CWVRFXSA+PiAoYml0ICUgQklUU19QRVJfQllURSkpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2hkbWlfaW50ZXJydXB0X2hhbmRs ZXIoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIHVuc2lnbmVk IGludCBpbnRfc3RhdHVzWzNdLCBpOw0KPiA+ICsgICAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB7 DQo+ID4gKyAgICAgICAgICAgICAgIGludCBiaXQ7DQo+ID4gKyAgICAgICAgICAgICAgIHZvaWQg KCpoYW5kbGVyKShzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCk7DQo+ID4gKyAgICAgICB9IGlycV92 ZWNbXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgeyBCSVRfSFBEX0NIRywgaXQ2MTYyMF9oZG1p X2lycV9ocGQgfSwNCj4gPiArICAgICAgICAgICAgICAgeyBCSVRfUlhTRU5fQ0hBTkdFLCBpdDYx NjIwX2hkbWlfaXJxX3J4c2VuX2NoZyB9LA0KPiA+ICsgICAgICAgICAgICAgICB7IEJJVF9JTlRf QVVUSF9GLCBpdDYxNjIwX2hkbWlfaXJxX2hkY3BfYXV0aF9mYWlsIH0sDQo+ID4gKyAgICAgICAg ICAgICAgIHsgQklUX1RNRFNfU1RCX0NIRywgaXQ2MTYyMF9oZG1pX2lycV9UTURTX3N0Yl9jaGFu Z2UgfSwNCj4gPiArICAgICAgIH07DQo+ID4gKw0KPiA+ICsgICAgICAgaW50X3N0YXR1c1swXSA9 IGl0NjE2MjBfaGRtaV9yZWdfcmVhZChpdDYxNjIwLCBUWF9SRUdfSU5UMSk7DQo+ID4gKyAgICAg ICBpbnRfc3RhdHVzWzFdID0gaXQ2MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRYX1JFR19J TlQyKTsNCj4gPiArICAgICAgIGludF9zdGF0dXNbMl0gPSBpdDYxNjIwX2hkbWlfcmVnX3JlYWQo aXQ2MTYyMCwgVFhfUkVHX0lOVDMpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9y ZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0lOVDEsIGludF9zdGF0dXNbMF0pOw0KPiA+ICsgICAg ICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfSU5UMiwgaW50X3N0YXR1 c1sxXSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JF R19JTlQzLCBpbnRfc3RhdHVzWzJdKTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShpcnFfdmVjKTsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChp dDYxNjIwX3Rlc3RfYml0KGlycV92ZWNbaV0uYml0LCAodW5zaWduZWQgaW50ICopaW50X3N0YXR1 cykpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaXJxX3ZlY1tpXS5oYW5kbGVyKGl0NjE2 MjApOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYx NjIwX2hkbWlfaXJxKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICB1bnNpZ25lZCBpbnQgcmVnX3ZhbDsNCj4gPiArDQo+ID4gKyAgICAgICByZWdfdmFsID0gaXQ2 MTYyMF9oZG1pX3JlZ19yZWFkKGl0NjE2MjAsIFRYX1JFR19IRE1JVFhfQkFOSyk7DQo+ID4gKyAg ICAgICBpZiAocmVnX3ZhbCAmIEJfSU5UX0VWRU5UX0hETUkpDQo+ID4gKyAgICAgICAgICAgICAg IGl0NjE2MjBfaGRtaV9pbnRlcnJ1cHRfaGFuZGxlcihpdDYxNjIwKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX2F1ZGlvX3NldF9uY3RzKHN0cnVjdCBpdDYx NjIwICppdDYxNjIwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgc2FtcGxlX3JhdGUpDQo+ID4gK3sNCj4gPiArICAgICAgIHVuc2lnbmVk IGludCBuLCBjdHM7DQo+ID4gKw0KPiA+ICsgICAgICAgZHJtX2hkbWlfYWNyX2dldF9uX2N0cyhp dDYxNjIwLT52bS5waXhlbGNsb2NrLCBzYW1wbGVfcmF0ZSwgJm4sICZjdHMpOw0KPiA+ICsNCj4g PiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVRFBLVF9O XzAsICh1OCkoKG4pICYgMHhGRikpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0 ZShpdDYxNjIwLCBUWF9SRUdfQVVEUEtUX05fMSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHU4KSgobiA+PiA4KSAmIDB4RkYpKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRt aV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVRFBLVF9OXzIsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh1OCkoKG4gPj4gMTYpICYgMHgwRikpOw0KPiA+ICsNCj4gPiAr ICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVRFBLVF9DVFNf MCwgKHU4KSgoY3RzKSAmIDB4RkYpKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3Jp dGUoaXQ2MTYyMCwgVFhfUkVHX0FVRFBLVF9DVFNfMSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHU4KSgoY3RzID4+IDgpICYgMHhGRikpOw0KPiA+ICsgICAgICAgaXQ2MTYy MF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfQVVEUEtUX0NUU18yLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodTgpKChjdHMgPj4gMTYpICYgMHgwRikpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgaXQ2MTYyMF9oZG1pX2Rpc2FibGVf YXVkaW9faW5mb2ZyYW1lKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAg ICAgICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfRU5fUEtUMSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCX0VOX0FVRCB8IEJfRU5fQVVEX1JQKSwgMHgw MCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpdDYxNjIwX2hkbWlf ZW5hYmxlX2F1ZGlvX2luZm9mcmFtZShzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCkNCj4gPiArew0K PiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0VOX1BLVDEs IChCX0VOX0FVRCB8IEJfRU5fQVVEX1JQKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChCX0VOX0FVRCB8IEJfRU5fQVVEX1JQKSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBpbmxpbmUgdm9pZCBpdDYxNjIwX2hkbWlfZGlzYWJsZV9hdmlfaW5mb2ZyYW1lKHN0cnVjdCBp dDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3Nl dChpdDYxNjIwLCBUWF9SRUdfRU5fUEtUMSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChCX0VOX0FWSSB8IEJfQVZJX1JQKSwgMHgwMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbmxpbmUgdm9pZCBpdDYxNjIwX2hkbWlfZW5hYmxlX2F2aV9pbmZvZnJhbWUoc3RydWN0 IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdf c2V0KGl0NjE2MjAsIFRYX1JFR19FTl9QS1QxLCAoQl9FTl9BVkkgfCBCX0FWSV9SUCksDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQl9FTl9BVkkgfCBCX0FWSV9SUCkpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgaXQ2MTYyMF9oZG1pX2VuYWJsZV9o ZG1pX21vZGUoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0 NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19IRE1JX0NUUkwxLCBCX0VOX0hETUlf TU9ERSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJfRU5fSERNSV9NT0RFKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB2b2lkIGl0NjE2MjBfaGRtaV9lbmFi bGVfRFZJX21vZGUoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAg IGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19IRE1JX0NUUkwxLCBCX0VOX0hE TUlfTU9ERSwgMHgwMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBp dDYxNjIwX2hkbWlfZW5hYmxlX2F2bXV0ZShzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUp DQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JF R19IRE1JX0NUUkwyLCBCX0VOX0FWTVVURSwgZW5hYmxlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX2F2aV9pbmZvZnJhbWVfc2V0KHN0cnVjdCBpdDYxNjIw ICppdDYxNjIwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1OCAqYnVmZmVyLCBzaXplX3QgbGVuKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtID0gaXQ2MTYyMC0+ZHJtOw0KPiA+ICsgICAgICAgY29uc3QgdTgg KnB0cjsNCj4gPiArICAgICAgIHU4IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgZHJtX2RiZyhkcm0s ICJhdmluZm8gc2V0XG4iKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9kaXNhYmxlX2F2aV9p bmZvZnJhbWUoaXQ2MTYyMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX2VuYWJs ZV9oZG1pX21vZGUoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICAvKiBmaWxsIFBCICovDQo+ID4gKyAg ICAgICBwdHIgPSBidWZmZXIgKyBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRTsNCj4gPiArICAg ICAgIGZvciAoaSA9IDA7IGkgPCBsZW4gLSBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRTsgaSsr KQ0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRY X1JFR19BVklJTkZPX0RCMDEgKyBpLCBwdHJbaV0pOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2 MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FWSUlORk9fREIxNCwgYnVmZmVyWzNd KTsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBFbmFibGUgKi8NCj4gPiArICAgICAgIGl0NjE2MjBf aGRtaV9lbmFibGVfYXZpX2luZm9mcmFtZShpdDYxNjIwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQgaXQ2MTYyMF9oZG1pX2NvbmZpZ19vdXRwdXQoc3RydWN0IGl0NjE2MjAgKml0 NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBpdDYx NjIwLT5kcm07DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3Jlc2V0KGl0NjE2MjAp Ow0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3Bvd2Vyb24oaXQ2MTYyMCk7DQo+ID4gKyAgICAg ICBpdDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfSERNSV9DVFJMMiwgMHg3MCwg MHgwMCk7DQo+ID4gKyAgICAgICBpZiAoaXQ2MTYyMC0+aXNfaGRtaSkgew0KPiA+ICsgICAgICAg ICAgICAgICBkcm1fZGJnKGRybSwgIkhETUlcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYx NjIwX2hkbWlfZW5hYmxlX2hkbWlfbW9kZShpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAg aXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0VOX1BLVDIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCX0VOX0dFTiB8IEJfR0VOX1JQKSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJfRU5fR0VOIHwgQl9HRU5f UlApKTsNCj4gPiArICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRybV9kYmco ZHJtLCAiRFZJXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX2VuYWJsZV9E VklfbW9kZShpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193 cml0ZShpdDYxNjIwLCBUWF9SRUdfRU5fUEtUMiwgMHgwMCk7DQo+ID4gKyAgICAgICAgICAgICAg IGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0VOX1BLVDEsIDB4MDApOw0K PiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9lbmFibGVfYXZt dXRlKGl0NjE2MjAsIGZhbHNlKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9zZXR1cF9hZmUo aXQ2MTYyMCwgaXQ2MTYyMC0+dm0ucGl4ZWxjbG9jayAvIDEwMDApOw0KPiA+ICsgICAgICAgaXQ2 MTYyMF9oZG1pX2ZpcmVfYWZlKGl0NjE2MjApOw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+dmlkZW9f c3RhdGUgPSBpdDYxNjIwX1ZJREVPX09OOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IGl0NjE2MjBfaGRtaV9hdWRpb19pbmZvZnJhbWVfc2V0KHN0cnVjdCBpdDYxNjIwICppdDYxNjIw LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dTggKmJ1ZmZlciwgc2l6ZV90IGxlbikNCj4gPiArew0KPiA+ICsgICAgICAgdTggaTsNCj4gPiAr ICAgICAgIGNvbnN0IHU4ICpwdHI7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX2Rp c2FibGVfYXVkaW9faW5mb2ZyYW1lKGl0NjE2MjApOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIGZp bGwgUEIgKi8NCj4gPiArICAgICAgIHB0ciA9IGJ1ZmZlciArIEhETUlfSU5GT0ZSQU1FX0hFQURF Ul9TSVpFOw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbiAtIEhETUlfSU5GT0ZSQU1F X0hFQURFUl9TSVpFOyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdf d3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVRElORk9fREIwMSArIGksIHB0cltpXSk7DQo+ID4gKw0K PiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfQVVESU5G T19EQjA2LCBidWZmZXJbM10pOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShp dDYxNjIwLCBUWF9SRUdfQVVESU5GT19EQjA3LCAweDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBf aGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVRElORk9fREIwOCwgMHgwMCk7DQo+ID4g KyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19BVURJTkZPX0RC MDksIDB4MDApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBU WF9SRUdfQVVESU5GT19EQjEwLCAweDAwKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBFbmFibGUg Ki8NCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9lbmFibGVfYXVkaW9faW5mb2ZyYW1lKGl0NjE2 MjApOw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2 b2lkIGl0NjE2MjBfc3RhcnRfaGRjcF93b3JrKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ ICt7DQo+ID4gKyAgICAgICBpdDYxNjIwLT5oZGNwX3N0YXRlID0gQ1BfR09JTkc7DQo+ID4gKyAg ICAgICBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmaXQ2MTYyMC0+aGRjcF93b3JrLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoMjQwMCkpOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX3N0b3BfaGRjcF93b3JrKHN0 cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIwLT5oZGNw X3N0YXRlID0gQ1BfTk9ORTsNCj4gPiArICAgICAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygm aXQ2MTYyMC0+aGRjcF93b3JrKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9kaXNhYmxlX2hk Y3AoaXQ2MTYyMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfaHdf cmVzZXQoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVj dCBpdDYxNjIwX3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gJml0NjE2MjAtPnBkYXRhOw0KPiA+ICsN Cj4gPiArICAgICAgIGlmICghcGRhdGEtPmdwaW9kX3Jlc2V0KQ0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHBk YXRhLT5ncGlvZF9yZXNldCwgMSk7DQo+ID4gKw0KPiA+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEw MDAwLCAyMDAwMCk7DQo+ID4gKyAgICAgICBncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocGRhdGEt PmdwaW9kX3Jlc2V0LCAwKTsNCj4gPiArICAgICAgIHVzbGVlcF9yYW5nZSgxMDAwMCwgMjAwMDAp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfZW5hYmxlX2RldmljZXMo c3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkZXZp Y2UgKmRldiA9ICZpdDYxNjIwLT5pdDYxNjIwX2kyYy0+ZGV2Ow0KPiA+ICsgICAgICAgdW5zaWdu ZWQgaW50IGRldmljZV9pZFs1XTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBpLCB2aWQsIHBp ZDsNCj4gPiArDQo+ID4gKyAgICAgICByZWdtYXBfd3JpdGUoaXQ2MTYyMC0+aXQ2MTYyMF9yZWdt YXAsIFJFR19DVFJMX1BXLCAweDU1KTsNCj4gPiArICAgICAgIHJlZ21hcF93cml0ZShpdDYxNjIw LT5pdDYxNjIwX3JlZ21hcCwgUkVHX0NUUkxfUFcsIDB4QUEpOw0KPiA+ICsgICAgICAgcmVnbWFw X3dyaXRlKGl0NjE2MjAtPml0NjE2MjBfcmVnbWFwLCBSRUdfQ1RSTF9QVywgMHhDMyk7DQo+ID4g KyAgICAgICByZWdtYXBfd3JpdGUoaXQ2MTYyMC0+aXQ2MTYyMF9yZWdtYXAsIFJFR19DVFJMX1BX LCAweEE1KTsNCj4gPiArICAgICAgIHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsNCj4gPiArDQo+ ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAgICBk ZXZpY2VfaWRbaV0gPSBpdDYxNjIwX21pcGlfcmVnX3JlYWQoaXQ2MTYyMCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19WRU5ERVJf SURfTCArIGkpOw0KPiA+ICsNCj4gPiArICAgICAgIGRldl9kYmcoZGV2LCAiSVQ2MTYyMCB2ZXIg JTAyWCIsIGRldmljZV9pZFs0XSk7DQo+ID4gKw0KPiA+ICsgICAgICAgdmlkID0gKGRldmljZV9p ZFsxXSA8PCA4KSB8IGRldmljZV9pZFswXTsNCj4gPiArICAgICAgIHBpZCA9IChkZXZpY2VfaWRb M10gPDwgOCkgfCBkZXZpY2VfaWRbMl07DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKHZpZCAhPSBp dDYxNjIwLT5jaGlwX2luZm8tPnZpZCB8fA0KPiA+ICsgICAgICAgICAgIHBpZCAhPSBpdDYxNjIw LT5jaGlwX2luZm8tPnBpZCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInZp ZCAlWCAhPSAlWCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdmlkLCBpdDYxNjIwLT5j aGlwX2luZm8tPnZpZCk7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAicGlkICVY ICE9ICVYIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwaWQsIGl0NjE2MjAtPmNoaXBf aW5mby0+cGlkKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0K PiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjAtPmRldl92ZXIgPSBkZXZp Y2VfaWRbNF07DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIHZvaWQgaXQ2MTYyMF9pbnRfc2V0dXAoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4g K3sNCj4gPiArICAgICAgIC8qIFNFVCBJTlQjIHRvIEFjdGl2ZSBMb3cgb3Blbi1kcmFpbiAqLw0K PiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3JlZ19zZXQoaXQ2MTYyMCwgUlhfUkVHX0lOVF9QT0ws IDB4MDgsIDB4MDgpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwg VFhfUkVHX1NZU19DT05GSUcsIDB4MEYsIEJfSU5UX01PREUpOw0KPiA+ICsgICAgICAgaXQ2MTYy MF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgUkVHX1RYX0lOVF9DVFJMLCBCX0RJU19JTlRfT1VUUFVU LCAweDAwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9pbnRfZW5h YmxlKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIw X2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfSU5UX01BU0sxLCBCX0hQRF9DSEcsIEJfSFBE X0NIRyk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9yZXNldF9pbml0 KHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpdDYxNjIwX2h3 X3Jlc2V0KGl0NjE2MjApOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChpdDYxNjIwX2VuYWJsZV9k ZXZpY2VzKGl0NjE2MjApIDwgMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7 DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMF9taXBpX3Jlc2V0KGl0NjE2MjApOw0KPiA+ICsg ICAgICAgaXQ2MTYyMF9oZG1pX3Jlc2V0KGl0NjE2MjApOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9p bnRfc2V0dXAoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2ludF9lbmFibGUoaXQ2MTYy MCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcG93ZXJkb3duKGl0NjE2MjApOw0KPiA+ICsN Cj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0 NjE2MjBfcG93ZXJvbihzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCkNCj4gPiArew0KPiA+ICsgICAg ICAgc3RydWN0IGl0NjE2MjBfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSAmaXQ2MTYyMC0+cGRhdGE7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gaXQ2MTYyMC0+ZHJtOw0KPiA+ ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gaXQ2MTYyMC0+ZGV2Ow0KPiA+ICsgICAgICAg aW50IGVycjsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaXQ2MTYyMC0+cG93ZXJlZCkgew0KPiA+ ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgIkFscmVhZHkgcG93ZXJlZCBvbiIpOw0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICBlcnIgPSByZWd1bGF0b3JfZW5hYmxlKHBkYXRhLT5pdmRkKTsNCj4gPiArICAgICAgIGlm IChlcnIpIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZW5h YmxlIElWREQ6ICVkIiwgZXJyKTsNCj4gPiArICAgICAgICAgICAgICAgZ290byBwb3dlcm9uX2V4 aXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgZXJyID0gcmVndWxhdG9yX2Vu YWJsZShwZGF0YS0+b3ZkZDE4MzMpOw0KPiA+ICsgICAgICAgaWYgKGVycikgew0KPiA+ICsgICAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBlbmFibGUgT1ZERDE4MzM6ICVkIiwg ZXJyKTsNCj4gPiArICAgICAgICAgICAgICAgZ290byBkaXNhYmxlX2l2ZGQ7DQo+ID4gKyAgICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgICAgZXJyID0gcmVndWxhdG9yX2VuYWJsZShwZGF0YS0+b3Zk ZDMzKTsNCj4gPiArICAgICAgIGlmIChlcnIpIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2Vy cihkZXYsICJGYWlsZWQgdG8gZW5hYmxlIE9WREQzMzogJWQiLCBlcnIpOw0KPiA+ICsgICAgICAg ICAgICAgICBnb3RvIGRpc2FibGVfb3ZkZDE4MzM7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHBkYXRhLT5ncGlvZF9yZXNldCwgMSk7 DQo+ID4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMDAsIDIwMDAwKTsNCj4gPiArICAgICAgIGdw aW9kX3NldF92YWx1ZV9jYW5zbGVlcChwZGF0YS0+Z3Bpb2RfcmVzZXQsIDApOw0KPiA+ICsgICAg ICAgdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgZXJyID0g aXQ2MTYyMF9yZXNldF9pbml0KGl0NjE2MjApOw0KPiA+ICsgICAgICAgaWYgKGVyciA8IDApDQo+ ID4gKyAgICAgICAgICAgICAgIGdvdG8gZGlzYWJsZV9vdmRkMzM7DQo+ID4gKw0KPiA+ICsgICAg ICAgaXQ2MTYyMC0+cG93ZXJlZCA9IHRydWU7DQo+ID4gKyAgICAgICBpdDYxNjIwLT5ocGQgPSBp dDYxNjIwX2hkbWlfZ2V0X2hwZF9zdGF0dXMoaXQ2MTYyMCk7DQo+ID4gKyAgICAgICBpZiAoaXQ2 MTYyMC0+aXQ2MTYyMF9pMmMtPmlycSkgew0KPiA+ICsgICAgICAgICAgICAgICBlbmFibGVfaXJx KGl0NjE2MjAtPml0NjE2MjBfaTJjLT5pcnEpOw0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJn KGRybSwgImVuYWJsZSBpcnEgJWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaXQ2 MTYyMC0+aXQ2MTYyMF9pMmMtPmlycSk7DQo+ID4gKyAgICAgICB9DQo+ID4gKyAgICAgICBkcm1f ZGJnKGRybSwgIml0NjE2MjAgcG93ZXJvbiBlbmRcbiIpOw0KPiA+ICsgICAgICAgcmV0dXJuIDA7 DQo+ID4gKw0KPiA+ICtkaXNhYmxlX292ZGQzMzoNCj4gPiArICAgICAgIHJlZ3VsYXRvcl9kaXNh YmxlKHBkYXRhLT5vdmRkMzMpOw0KPiA+ICtkaXNhYmxlX292ZGQxODMzOg0KPiA+ICsgICAgICAg cmVndWxhdG9yX2Rpc2FibGUocGRhdGEtPm92ZGQxODMzKTsNCj4gPiArZGlzYWJsZV9pdmRkOg0K PiA+ICsgICAgICAgcmVndWxhdG9yX2Rpc2FibGUocGRhdGEtPml2ZGQpOw0KPiA+ICtwb3dlcm9u X2V4aXQ6DQo+ID4gKyAgICAgICByZXR1cm4gZXJyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IGl0NjE2MjBfcG93ZXJvZmYoc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sN Cj4gPiArICAgICAgIHN0cnVjdCBpdDYxNjIwX3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gJml0NjE2 MjAtPnBkYXRhOw0KPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGl0NjE2MjAt PmRybTsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjE2MjAtPmRldjsNCj4g PiArICAgICAgIGludCBlcnI7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKCFpdDYxNjIwLT5wb3dl cmVkKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRybV9kYmcoZHJtLCAiQWxyZWFkeSBwb3dlcmVk IG9mZiIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICBpZiAoaXQ2MTYyMC0+aXQ2MTYyMF9pMmMtPmlycSkgew0KPiA+ICsg ICAgICAgICAgICAgICBkaXNhYmxlX2lycShpdDYxNjIwLT5pdDYxNjIwX2kyYy0+aXJxKTsNCj4g PiArICAgICAgICAgICAgICAgZHJtX2RiZyhkcm0sICJkaXNhYmxlIGlycSAlZFxuIiwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBpdDYxNjIwLT5pdDYxNjIwX2kyYy0+aXJxKTsNCj4gPiAr ICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocGRh dGEtPmdwaW9kX3Jlc2V0LCAxKTsNCj4gPiArDQo+ID4gKyAgICAgICBlcnIgPSByZWd1bGF0b3Jf ZGlzYWJsZShwZGF0YS0+b3ZkZDMzKTsNCj4gPiArICAgICAgIGlmIChlcnIpDQo+ID4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGRpc2FibGUgb3ZkZDMzOiAlZCIsIGVy cik7DQo+ID4gKw0KPiA+ICsgICAgICAgZXJyID0gcmVndWxhdG9yX2Rpc2FibGUocGRhdGEtPml2 ZGQpOw0KPiA+ICsgICAgICAgaWYgKGVycikNCj4gPiArICAgICAgICAgICAgICAgZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gZGlzYWJsZSBJVkREOiAlZCIsIGVycik7DQo+ID4gKw0KPiA+ICsgICAg ICAgdXNsZWVwX3JhbmdlKDIwMDAsIDMwMDApOw0KPiA+ICsNCj4gPiArICAgICAgIGVyciA9IHJl Z3VsYXRvcl9kaXNhYmxlKHBkYXRhLT5vdmRkMTgzMyk7DQo+ID4gKyAgICAgICBpZiAoZXJyKQ0K PiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBkaXNhYmxlIG92ZGQx ODMzOiAlZCIsIGVycik7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+cG93ZXJlZCA9IGZh bHNlOw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+aHBkID0gZmFsc2U7DQo+ID4gKyAgICAgICBpdDYx NjIwLT5jb25uZWN0b3Jfc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7DQo+ ID4gKyAgICAgICBpdDYxNjIwX3JlbW92ZV9lZGlkKGl0NjE2MjApOw0KPiA+ICsgICAgICAgZHJt X2RiZyhkcm0sICJpdDYxNjIwIHBvd2Vyb2ZmXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9jb25maWdfZGVm YXVsdChzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0 IGl0NjE2MjBfbWlwaXJ4ICptaXBpcnggPSAmaXQ2MTYyMC0+bWlwaXJ4X2NvbmZpZzsNCj4gPiAr ICAgICAgIHN0cnVjdCBpdDYxNjIwX2F1ZGlvICphdWRpb19jb25maWcgPSAmaXQ2MTYyMC0+YXVk aW9fY29uZmlnOw0KPiA+ICsNCj4gPiArICAgICAgIG1pcGlyeC0+bGFuZV9udW0gPSA0Ow0KPiA+ ICsgICAgICAgbWlwaXJ4LT5wbl9zd2FwID0gMDsNCj4gPiArICAgICAgIG1pcGlyeC0+bGFuZV9z d2FwID0gMDsNCj4gPiArICAgICAgIGl0NjE2MjAtPmNvbm5lY3Rvcl9zdGF0dXMgPSBjb25uZWN0 b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsNCj4gPiArDQo+ID4gKyAgICAgICBhdWRpb19jb25maWct PnNlbGVjdCA9IEkyUzsNCj4gPiArICAgICAgIGF1ZGlvX2NvbmZpZy0+c2FtcGxlX3JhdGUgPSBT QU1QTEVfUkFURV80OEs7DQo+ID4gKyAgICAgICBhdWRpb19jb25maWctPnR5cGUgPSBMUENNOw0K PiA+ICsgICAgICAgYXVkaW9fY29uZmlnLT53b3JkX2xlbmd0aCA9IFdPUkRfTEVOR1RIXzE2QklU Ow0KPiA+ICsgICAgICAgYXVkaW9fY29uZmlnLT5jaGFubmVsX2NvdW50ID0gMjsNCj4gPiArICAg ICAgIGF1ZGlvX2NvbmZpZy0+YXVkZm10ID0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHZvaWQgaXQ2MTYyMF9zaG93X2RybV92aWRlb19tb2RlKHN0cnVjdCBpdDYxNjIwICppdDYxNjIw LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgdmlkZW9tb2RlICp2bSkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2Ug KmRybSA9IGl0NjE2MjAtPmRybTsNCj4gPiArDQo+ID4gKyAgICAgICBkcm1fZGJnKGRybSwgIkhB Y3RpdmUgPSAldVxuIiwgdm0tPmhhY3RpdmUpOw0KPiA+ICsgICAgICAgZHJtX2RiZyhkcm0sICJW QWN0aXZlID0gJXVcbiIsIHZtLT52YWN0aXZlKTsNCj4gPiArICAgICAgIGRybV9kYmcoZHJtLCAi SFRvdGFsID0gICV1XG4iLA0KPiA+ICsgICAgICAgICAgICAgICB2bS0+aGFjdGl2ZSArIHZtLT5o ZnJvbnRfcG9yY2ggKyB2bS0+aHN5bmNfbGVuICsNCj4gPiArICAgICAgICAgICAgICAgdm0tPmhi YWNrX3BvcmNoKTsNCj4gPiArICAgICAgIGRybV9kYmcoZHJtLCAiVlRvdGFsID0gICV1XG4iLA0K PiA+ICsgICAgICAgICAgICAgICB2bS0+dmFjdGl2ZSArIHZtLT52ZnJvbnRfcG9yY2ggKyB2bS0+ dnN5bmNfbGVuICsNCj4gPiArICAgICAgICAgICAgICAgdm0tPnZiYWNrX3BvcmNoKTsNCj4gPiAr ICAgICAgIGRybV9kYmcoZHJtLCAiUENMSyA9ICVsdWtoelxuIiwgdm0tPnBpeGVsY2xvY2sgLyAx MDAwKTsNCj4gPiArICAgICAgIGRybV9kYmcoZHJtLCAiSEZQID0gJXVcbiIsIHZtLT5oZnJvbnRf cG9yY2gpOw0KPiA+ICsgICAgICAgZHJtX2RiZyhkcm0sICJIU1cgPSAldVxuIiwgdm0tPmhzeW5j X2xlbik7DQo+ID4gKyAgICAgICBkcm1fZGJnKGRybSwgIkhCUCA9ICV1XG4iLCB2bS0+aGJhY2tf cG9yY2gpOw0KPiA+ICsgICAgICAgZHJtX2RiZyhkcm0sICJWRlAgPSAldVxuIiwgdm0tPnZmcm9u dF9wb3JjaCk7DQo+ID4gKyAgICAgICBkcm1fZGJnKGRybSwgIlZTVyA9ICV1XG4iLCB2bS0+dnN5 bmNfbGVuKTsNCj4gPiArICAgICAgIGRybV9kYmcoZHJtLCAiVkJQID0gJXVcbiIsIHZtLT52YmFj a19wb3JjaCk7DQo+ID4gKyAgICAgICBpZiAodm0tPmZsYWdzICYgRElTUExBWV9GTEFHU19IU1lO Q19ISUdIKQ0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgIkhQT0wgK1xuIik7DQo+ ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGRybV9kYmcoZHJtLCAiSFBPTCAt XG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAodm0tPmZsYWdzICYgRElTUExBWV9GTEFHU19W U1lOQ19ISUdIKQ0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgIlZQT0wgK1xuIik7 DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGRybV9kYmcoZHJtLCAiVlBP TCAtXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAodm0tPmZsYWdzICYgRElTUExBWV9GTEFH U19JTlRFUkxBQ0VEKQ0KPiA+ICsgICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgIkludGVsYWNl ZFxuIik7DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGRybV9kYmcoZHJt LCAiUHJvZ3Jlc3NpdmVcbiIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgZW51bSBkcm1f bW9kZV9zdGF0dXMgaXQ2MTYyMF9tb2RlX3ZhbGlkKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpDQo+ID4gK3sNCj4gPiArICAgICAgIGlmICht b2RlLT5jbG9jayA+IDMwMDAwMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE1PREVfQ0xP Q0tfSElHSDsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gTU9ERV9PSzsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBpdDYxNjIwX2dldF9lZGlkX2Jsb2NrKHZvaWQgKmRhdGEsIHU4 ICpidWYsIHVuc2lnbmVkIGludCBibG9jaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IGxlbikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGl0NjE2MjAg Kml0NjE2MjAgPSBkYXRhOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IGVkaWRfb2Zmc2V0Ow0K PiA+ICsgICAgICAgdW5zaWduZWQgaW50IGNudDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBp Ow0KPiA+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGxlbiA+ IEVESURfTEVOR1RIKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAr DQo+ID4gKyAgICAgICBndWFyZChtdXRleCkoJml0NjE2MjAtPmRkY19sb2NrKTsNCj4gPiArDQo+ ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENfQ09N TUFORCwgRERDX0NPTU1BTkRfRklGT19DTFIpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBf aGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0REQ19BRERSLCBERENfRURJRF9BRERSKTsN Cj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0REQ19T RUdNRU5ULCBibG9jayAvIDIpOw0KPiA+ICsNCj4gPiArICAgICAgIGNudCA9IDA7DQo+ID4gKyAg ICAgICBlZGlkX29mZnNldCA9IGJsb2NrICogMTI4Ow0KPiA+ICsNCj4gPiArICAgICAgIGZvciAo aSA9IDA7IGkgPCBFRElEX0xFTkdUSDsgaSArPSBFRElEX1JfQlVSU1RfTlVNLA0KPiA+ICsgICAg ICAgICAgICBlZGlkX29mZnNldCArPSBFRElEX1JfQlVSU1RfTlVNLA0KPiA+ICsgICAgICAgICAg ICBjbnQgKz0gRURJRF9SX0JVUlNUX05VTSkgew0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIw X2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENfT0ZGU0VULCBlZGlkX29mZnNldCk7 DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhf UkVHX0REQ19TRUdNRU5ULCBibG9jayA+PiAxKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYy MF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfRERDX05VTV9MLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVESURfUl9CVVJTVF9OVU0pOw0KPiA+ICsg ICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENf TlVNX0gsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVESURf Ul9CVVJTVF9OVU0gPj4gOCkpOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVn X3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENfQ09NTUFORCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBERENfQ09NTUFORF9FRElEX1JEKTsNCj4gPiArDQo+ID4g KyAgICAgICAgICAgICAgIGlmIChpdDYxNjIwX2hkbWlfZGRjX3dhaXQoaXQ2MTYyMCkgPCAwKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX2RkY19hYm9ydChpdDYx NjIwKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtRUlPOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfZ2V0X2RkY19maWZvKGl0NjE2MjAsICZi dWZbY250XSwgRURJRF9SX0JVUlNUX05VTSk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYy MF9zZXRfY2FwYWJpbGl0eV9mcm9tX2VkaWRfcGFyc2Uoc3RydWN0IGl0NjE2MjAgKml0NjE2MjAs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGVkaWQgKmVkaWQpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0gPSBpdDYxNjIwLT5kcm07DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+ aXNfaGRtaSA9IGRybV9kZXRlY3RfaGRtaV9tb25pdG9yKGVkaWQpOw0KPiA+ICsgICAgICAgaXQ2 MTYyMC0+ZW5fYXVkaW8gPSBkcm1fZGV0ZWN0X21vbml0b3JfYXVkaW8oZWRpZCk7DQo+ID4gKw0K PiA+ICsgICAgICAgZHJtX2RiZyhkcm0sICIlcyBtb2RlLCBtb25pdG9yICVzc3VwcG9ydCBhdWRp byIsDQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjAtPmlzX2hkbWkgPyAiSERNSSIgOiAiRFZJ IiwNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMC0+ZW5fYXVkaW8gPyAiIiA6ICJub3QgIik7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9kZGNfeGZlcl93cml0ZShz dHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdTggKmJ1ZiwgdW5zaWduZWQgaW50IG51bSkNCj4gPiArew0KPiA+ICsgICAgICAgaXQ2 MTYyMF9oZG1pX3NldF9kZGNfZmlmbyhpdDYxNjIwLCBidWYsIG51bSk7DQo+ID4gKw0KPiA+ICsg ICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfRERDX0NPTU1BTkQs IEREQ19DT01NQU5EX0JVUlNUX1cpOw0KPiA+ICsgICAgICAgaWYgKGl0NjE2MjBfaGRtaV9kZGNf d2FpdChpdDYxNjIwKSA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX2Rk Y19hYm9ydChpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIG51bTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBpdDYxNjIwX2RkY194ZmVyX3JlYWQoc3RydWN0IGl0NjE2MjAgKml0 NjE2MjAsIHU4ICpidWYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG51bSkNCj4gPiArew0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0 ZShpdDYxNjIwLCBUWF9SRUdfRERDX0NPTU1BTkQsIEREQ19DT01NQU5EX0JVUlNUX1IpOw0KPiA+ ICsgICAgICAgaWYgKGl0NjE2MjBfaGRtaV9kZGNfd2FpdChpdDYxNjIwKSA8IDApIHsNCj4gPiAr ICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX2RkY19hYm9ydChpdDYxNjIwKTsNCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU87DQo+ID4gKyAgICAgICB9DQo+ID4gKyAgICAgICBpdDYx NjIwX2hkbWlfZ2V0X2RkY19maWZvKGl0NjE2MjAsIGJ1ZiwgbnVtKTsNCj4gPiArICAgICAgIHJl dHVybiBudW07DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9kZGNfeGZl cihzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCwgc3RydWN0IGkyY19tc2cgKm1zZ3MpDQo+ID4gK3sN Cj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKG1zZ3MtPmxlbiA+ IEREQ19GSUZPX0RFUFRIKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g PiArDQo+ID4gKyAgICAgICBndWFyZChtdXRleCkoJml0NjE2MjAtPmRkY19sb2NrKTsNCj4gPiAr DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENf Q09NTUFORCwgRERDX0NPTU1BTkRfRklGT19DTFIpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2 MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0REQ19BRERSLCBtc2dzLT5hZGRyIDw8 IDEpOw0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdf RERDX09GRlNFVCwgMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2 MjAsIFRYX1JFR19ERENfTlVNX0wsIG1zZ3MtPmxlbik7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hk bWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19ERENfTlVNX0gsIChtc2dzLT5sZW4gPj4gOCkp Ow0KPiA+ICsgICAgICAgaXQ2MTYyMF9oZG1pX3JlZ193cml0ZShpdDYxNjIwLCBUWF9SRUdfRERD X1NFR01FTlQsIDApOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICgobXNncy0+ZmxhZ3MgJiBJMkNf TV9SRCkgPT0gMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0gaXQ2MTYyMF9kZGNfeGZlcl93 cml0ZShpdDYxNjIwLCBtc2dzLT5idWYsIG1zZ3MtPmxlbik7DQo+ID4gKyAgICAgICBlbHNlDQo+ ID4gKyAgICAgICAgICAgICAgIHJldCA9IGl0NjE2MjBfZGRjX3hmZXJfcmVhZChpdDYxNjIwLCBt c2dzLT5idWYsIG1zZ3MtPmxlbik7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIHJldDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9lbmFibGVfYXVkaW8oc3RydWN0 IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdf c2V0KGl0NjE2MjAsIFRYX1JFR19SRVNFVF8yX0NUUkwsIDB4MDEsIDB4MDApOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2Rpc2FibGVfYXVkaW8oc3RydWN0IGl0NjE2 MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0 NjE2MjAsIFRYX1JFR19SRVNFVF8yX0NUUkwsIDB4MDEsIDB4MDEpOw0KPiA+ICsgICAgICAgaXQ2 MTYyMF9oZG1pX3JlZ19zZXQoaXQ2MTYyMCwgVFhfUkVHX0xJTktfQ1RSTDAsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCX0VOX0FVRElPX01VVEUsIEJfRU5fQVVESU9fTVVURSk7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfY29uZmlnX2F1ZGlvKHN0 cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgaXQ2MTYy MF9hdWRpbyAqY29uZmlnID0gJml0NjE2MjAtPmF1ZGlvX2NvbmZpZzsNCj4gPiArICAgICAgIHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBpdDYxNjIwLT5kcm07DQo+ID4gKyAgICAgICB1OCBhdWRz cmM7DQo+ID4gKw0KPiA+ICsgICAgICAgZHJtX2RiZyhkcm0sICJzYW1wbGUgcmF0ZSAlZCIsIGNv bmZpZy0+c2FtcGxlX3JhdGUpOw0KPiA+ICsgICAgICAgZHJtX2RiZyhkcm0sICJzYW1wbGUgd2lk dGggJWQiLCBjb25maWctPnNhbXBsZV93aWR0aCk7DQo+ID4gKyAgICAgICBkcm1fZGJnKGRybSwg ImZtdCAlZCIsIGNvbmZpZy0+c2VsZWN0KTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hk bWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfQVVEX0ZNVCwgMHg3RiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb25maWctPndvcmRfbGVuZ3RoIDw8IDUpIHwgY29uZmlnLT5h dWRmbXQpOw0KPiA+ICsgICAgICAgaWYgKGNvbmZpZy0+c2VsZWN0ID09IFNQRElGKSB7DQo+ID4g KyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FV RF9GSUZPMSwgMHgwMCk7DQo+ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfd3Jp dGUoaXQ2MTYyMCwgVFhfUkVHX0FVRF9GSUZPMiwgMHgwMCk7DQo+ID4gKyAgICAgICAgICAgICAg IGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAsIFRYX1JFR19BVURfU1BESUYsIDB4MEYsIDB4 MDIpOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAs IFRYX1JFR19BVURfQ1RSTCwgMFgwMSk7DQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAg ICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19BVURfRklG TzEsIDB4MTApOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0 NjE2MjAsIFRYX1JFR19BVURfRklGTzIsIDB4MzIpOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYx NjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JFR19BVURfQ1RSTCwgMFgwMCk7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGNvbmZpZy0+dHlwZSA9PSBMUENNKQ0K PiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRYX1JF R19BVURfU1RTMSwgMHgwMCk7DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAg IGl0NjE2MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVRF9TVFMxLCBCX0VOX0FV RF9OTFBDTSk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRlKGl0NjE2MjAsIFRY X1JFR19BVURfU1RTMiwgKGNvbmZpZy0+c2FtcGxlX3JhdGUpKTsNCj4gPiArICAgICAgIGl0NjE2 MjBfaGRtaV9yZWdfd3JpdGUoaXQ2MTYyMCwgVFhfUkVHX0FVRF9TVFMzLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKH4oY29uZmlnLT5zYW1wbGVfcmF0ZSA8PCA0KSkgJiAw eEYwKSArIDB4MEIpOw0KPiA+ICsNCj4gPiArICAgICAgIHN3aXRjaCAoY29uZmlnLT5jaGFubmVs X2NvdW50KSB7DQo+ID4gKyAgICAgICBjYXNlIDI6DQo+ID4gKyAgICAgICAgICAgICAgIGF1ZHNy YyA9IDB4MDE7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSAz Og0KPiA+ICsgICAgICAgICAgICAgICBhdWRzcmMgPSAweDAzOw0KPiA+ICsgICAgICAgICAgICAg ICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgNDoNCj4gPiArICAgICAgICAgICAgICAgYXVkc3Jj ID0gMHgwMzsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIDU6 DQo+ID4gKyAgICAgICAgICAgICAgIGF1ZHNyYyA9IDB4MDc7DQo+ID4gKyAgICAgICAgICAgICAg IGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSA2Og0KPiA+ICsgICAgICAgICAgICAgICBhdWRzcmMg PSAweDA3Ow0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgNzoN Cj4gPiArICAgICAgICAgICAgICAgYXVkc3JjID0gMHgwZjsNCj4gPiArICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIDg6DQo+ID4gKyAgICAgICAgICAgICAgIGF1ZHNyYyA9 IDB4MGY7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgZGVmYXVsdDoN Cj4gPiArICAgICAgICAgICAgICAgZHJtX2RiZyhkcm0sDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIkVycm9yOiBBdWRpbyBDaGFubmVsIE51bWJlciBFcnJvciAhISFcbiIpOw0KPiA+ICsg ICAgICAgICAgICAgICBhdWRzcmMgPSAweDAxOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsN Cj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVnX3dyaXRl KGl0NjE2MjAsIFRYX1JFR19FTl9BVURJTywgYXVkc3JjKTsNCj4gPiArDQo+ID4gKyAgICAgICBp dDYxNjIwX2hkbWlfcmVnX3NldChpdDYxNjIwLCBUWF9SRUdfTElOS19DVFJMMCwgQl9FTl9BVURJ T19NVVRFLCAweDAwKTsNCj4gPiArICAgICAgIGl0NjE2MjBfaGRtaV9yZWdfc2V0KGl0NjE2MjAs IFRYX1JFR19SRVNFVF8yX0NUUkwsIDB4MDEsIDB4MDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgaXJxcmV0dXJuX3QgaXQ2MTYyMF9pbnRfdGhyZWFkZWRfaGFuZGxlcihpbnQgdW51c2Vk LCB2b2lkICpkYXRhKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYy MCA9IGRhdGE7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDYxNjIwLT5kZXY7 DQo+ID4gKw0KPiA+ICsgICAgICAgcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOw0KPiA+ICsNCj4g PiArICAgICAgIGl0NjE2MjBfbWlwaV9pcnFfaGFuZGxlcihpdDYxNjIwKTsNCj4gPiArICAgICAg IGl0NjE2MjBfaGRtaV9pcnEoaXQ2MTYyMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcG1fcnVudGlt ZV9tYXJrX2xhc3RfYnVzeShkZXYpOw0KPiA+ICsgICAgICAgcG1fcnVudGltZV9wdXRfYXV0b3N1 c3BlbmQoZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9hdWRpb191cGRhdGVfaHdfcGFyYW1z KHN0cnVjdCBpdDYxNjIwICppdDYxNjIwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAqZm10LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZG1pX2NvZGVjX3Bh cmFtcyAqaHBhcm1zKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgaXQ2MTYyMF9hdWRpbyAq Y29uZmlnID0gJml0NjE2MjAtPmF1ZGlvX2NvbmZpZzsNCj4gPiArDQo+ID4gKyAgICAgICBtZW1j cHkoY29uZmlnLT5jaGFubmVsX3N0YXR1cywgJmhwYXJtcy0+aWVjLnN0YXR1c1swXSwNCj4gPiAr ICAgICAgICAgICAgICBBRVNfSUVDOTU4X1NUQVRVU19TSVpFKTsNCj4gPiArDQo+ID4gKyAgICAg ICBjb25maWctPmNoYW5uZWxfbnVtYmVyID0gaHBhcm1zLT5jaGFubmVsczsNCj4gPiArDQo+ID4g KyAgICAgICBzd2l0Y2ggKGhwYXJtcy0+c2FtcGxlX3JhdGUpIHsNCj4gPiArICAgICAgIGNhc2Ug MzIwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIGNvbmZpZy0+c2FtcGxlX3JhdGUgPSBTQU1QTEVf UkFURV8zMks7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSA0 NDEwMDoNCj4gPiArICAgICAgICAgICAgICAgY29uZmlnLT5zYW1wbGVfcmF0ZSA9IFNBTVBMRV9S QVRFXzQ0XzFLOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2Ug NDgwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIGNvbmZpZy0+c2FtcGxlX3JhdGUgPSBTQU1QTEVf UkFURV80OEs7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSA4 ODIwMDoNCj4gPiArICAgICAgICAgICAgICAgY29uZmlnLT5zYW1wbGVfcmF0ZSA9IFNBTVBMRV9S QVRFXzg4XzJLOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2Ug OTYwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIGNvbmZpZy0+c2FtcGxlX3JhdGUgPSBTQU1QTEVf UkFURV85Nks7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSAx NzY0MDA6DQo+ID4gKyAgICAgICAgICAgICAgIGNvbmZpZy0+c2FtcGxlX3JhdGUgPSBTQU1QTEVf UkFURV8xNzZfNEs7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2Fz ZSAxOTIwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIGNvbmZpZy0+c2FtcGxlX3JhdGUgPSBTQU1Q TEVfUkFURV8xOTJLOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGRl ZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgIHN3aXRjaCAoaHBhcm1zLT5zYW1wbGVfd2lkdGgpIHsNCj4g PiArICAgICAgIGNhc2UgMTY6DQo+ID4gKyAgICAgICAgICAgICAgIGNvbmZpZy0+c2FtcGxlX3dp ZHRoID0gV09SRF9MRU5HVEhfMTZCSVQ7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ ICsgICAgICAgY2FzZSAyNDoNCj4gPiArICAgICAgICAgICAgICAgY29uZmlnLT5zYW1wbGVfd2lk dGggPSBXT1JEX0xFTkdUSF8xOEJJVDsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4g KyAgICAgICBjYXNlIDE4Og0KPiA+ICsgICAgICAgICAgICAgICBjb25maWctPnNhbXBsZV93aWR0 aCA9IFdPUkRfTEVOR1RIXzIwQklUOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiAr ICAgICAgIGNhc2UgMjA6DQo+ID4gKyAgICAgICAgICAgICAgIGNvbmZpZy0+c2FtcGxlX3dpZHRo ID0gV09SRF9MRU5HVEhfMjRCSVQ7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsg ICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgc3dpdGNoIChmbXQtPmZtdCkgew0KPiA+ICsg ICAgICAgY2FzZSBIRE1JX0kyUzoNCj4gPiArICAgICAgICAgICAgICAgY29uZmlnLT5zZWxlY3Qg PSBJMlM7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSBIRE1J X1NQRElGOg0KPiA+ICsgICAgICAgICAgICAgICBjb25maWctPnNlbGVjdCA9IFNQRElGOw0KPiA+ ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgIGl0NjE2MjBfaGRtaV9hdWRpb19zZXRfbmN0cyhpdDYxNjIwLCBocGFybXMtPnNhbXBsZV9y YXRlKTsNCj4gPiArICAgICAgIGl0NjE2MjBfY29uZmlnX2F1ZGlvKGl0NjE2MjApOw0KPiA+ICsg ICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBf aGRjcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiArew0KPiA+ICsgICAgICAg c3RydWN0IGl0NjE2MjAgKml0NjE2MjAgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGl0NjE2 MjAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo ZGNwX3dvcmsud29yayk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2hkbWlfcmVzZXRfaGRjcChpdDYx NjIwKTsNCj4gPiArICAgICAgIGlmICghaXQ2MTYyMF9oZG1pX3N0YXJ0X2hkY3AoaXQ2MTYyMCkg JiYNCj4gPiArICAgICAgICAgICBpdDYxNjIwLT5oZGNwX3N0YXRlID09IENQX0dPSU5HKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfaGRtaV9kaXNhYmxlX2hkY3AoaXQ2MTYyMCk7DQo+ ID4gKyAgICAgICAgICAgICAgIGl0NjE2MjBfc3RhcnRfaGRjcF93b3JrKGl0NjE2MjApOw0KPiA+ ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfaGRtaV9p MmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBudW0pDQo+ID4gK3sNCj4g PiArICAgICAgIHN0cnVjdCBpdDYxNjIwICppdDYxNjIwID0gaTJjX2dldF9hZGFwZGF0YShhZGFw KTsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjE2MjAtPmRldjsNCj4gPiAr ICAgICAgIGludCBpLCBqOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDAgOyBpIDwgbnVt IDsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICIgbXNnIFslZF0gYWRkciA9ICVYLCBmbGFnID0gJVgsIGxlbiA9ICVk XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGksIG1zZ3NbaV0uYWRkciwgbXNnc1tp XS5mbGFncywgbXNnc1tpXS5sZW4pOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaWYgKCht c2dzW2ldLmZsYWdzICYgSTJDX01fUkQpID09IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZm9yIChqID0gMCA7IGogPCBtc2dzW2ldLmxlbiA7IGorKykNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiYnVmWyVkXSA9ICV4XG4iLCBqLCBtc2dzW2ldLmJ1ZltqXSk7 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBudW0gPSBpdDYxNjIwX2RkY194ZmVyKGl0NjE2 MjAsICZtc2dzW2ldKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4g bnVtOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdTMyIGl0NjE2MjBfaGRtaV9pMmNfZnVu YyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpDQo+ID4gK3sNCj4gPiArICAgICAgIHJldHVy biBJMkNfRlVOQ19JMkMgfCBJMkNfRlVOQ19TTUJVU19FTVVMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19hbGdvcml0aG0gaGRtaV9kZGNfYWxnb3JpdGhtID0g ew0KPiA+ICsgICAgICAgLm1hc3Rlcl94ZmVyICAgID0gaXQ2MTYyMF9oZG1pX2kyY194ZmVyLA0K PiA+ICsgICAgICAgLmZ1bmN0aW9uYWxpdHkgID0gaXQ2MTYyMF9oZG1pX2kyY19mdW5jLA0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBpMmNfYWRhcHRlciAqaXQ2MTYyMF9hZGRf ZGRjX2kyY19hZGFwdGVyKHN0cnVjdCBpdDYxNjIwICppdDYxNjIwKQ0KPiA+ICt7DQo+ID4gKyAg ICAgICBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAgPSAmaXQ2MTYyMC0+ZGRjOw0KPiA+ICsgICAg ICAgc3RydWN0IGRldmljZSAqZGV2ID0gaXQ2MTYyMC0+ZGV2Ow0KPiA+ICsgICAgICAgaW50IHJl dDsNCj4gPiArDQo+ID4gKyAgICAgICBhZGFwLT5vd25lciA9IFRISVNfTU9EVUxFOw0KPiA+ICsg ICAgICAgYWRhcC0+ZGV2LnBhcmVudCA9IGRldjsNCj4gPiArICAgICAgIGFkYXAtPmFsZ28gPSAm aGRtaV9kZGNfYWxnb3JpdGhtOw0KPiA+ICsgICAgICAgc3Ryc2NweShhZGFwLT5uYW1lLCAiSVRF IDYxNjIwIEhETUkiLCBzaXplb2YoYWRhcC0+bmFtZSkpOw0KPiA+ICsgICAgICAgaTJjX3NldF9h ZGFwZGF0YShhZGFwLCBpdDYxNjIwKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBpMmNfYWRk X2FkYXB0ZXIoYWRhcCk7DQo+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRk ICVzIEkyQyBhZGFwdGVyXG4iLCBhZGFwLT5uYW1lKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIEVSUl9QVFIocmV0KTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBpdDYxNjIwX2kyY19hbmRfcmVn bWFwX2luaXQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCkNCj4gPiArew0K PiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gaXQ2MTYyMC0+ZGV2Ow0KPiA+ICsNCj4g PiArICAgICAgIGl0NjE2MjAtPml0NjE2MjBfaTJjID0gY2xpZW50Ow0KPiA+ICsNCj4gPiArICAg ICAgIGl0NjE2MjAtPnR4X2kyYyA9IGRldm1faTJjX25ld19kdW1teV9kZXZpY2UoZGV2LA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGll bnQtPmFkYXB0ZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRYX0kyQ19BRERSRVNTKTsNCj4gPiArICAgICAgIGlmIChJU19FUlIoaXQ2 MTYyMC0+dHhfaTJjKSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUo ZGV2LCBQVFJfRVJSKGl0NjE2MjAtPnR4X2kyYyksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gY3JlYXRlIFRYIGR1bW15IGkyYyBkZXZpY2UgYXQg MHglMDJ4XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWF9J MkNfQUREUkVTUyk7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+bWlwaXJ4X2kyYyA9IGRl dm1faTJjX25ld19kdW1teV9kZXZpY2UoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5hZGFwdGVyLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlQ SVJYX0kyQ19BRERSRVNTKTsNCj4gPiArICAgICAgIGlmIChJU19FUlIoaXQ2MTYyMC0+bWlwaXJ4 X2kyYykpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRS X0VSUihpdDYxNjIwLT5taXBpcnhfaTJjKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImZhaWxlZCB0byBjcmVhdGUgTUlQSSBkdW1teSBpMmMgZGV2aWNlIGF0IDB4 JTAyeFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlQSVJY X0kyQ19BRERSRVNTKTsNCj4gPiArDQo+ID4gKyAgICAgICBpdDYxNjIwLT5pdDYxNjIwX3JlZ21h cCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGl0NjE2MjAtPml0NjE2MjBfaTJjLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXQ2MTYy MF9yZWdtYXBfY29uZmlnKTsNCj4gPiArICAgICAgIGlmIChJU19FUlIoaXQ2MTYyMC0+aXQ2MTYy MF9yZWdtYXApKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYs IFBUUl9FUlIoaXQ2MTYyMC0+aXQ2MTYyMF9yZWdtYXApLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGluaXQgSTJDIHJlZ21hcCBmb3IgaXQ2MTYy MFxuIik7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+dHhfcmVnbWFwID0gZGV2bV9yZWdt YXBfaW5pdF9pMmMoaXQ2MTYyMC0+dHhfaTJjLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0NjE2MjBfdHhfcmVnbWFwX2NvbmZpZyk7DQo+ ID4gKyAgICAgICBpZiAoSVNfRVJSKGl0NjE2MjAtPnR4X3JlZ21hcCkpDQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihpdDYxNjIwLT50eF9yZWdt YXApLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRv IGluaXQgSTJDIHJlZ21hcCBmb3IgVFhcbiIpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjAt Pm1pcGlyeF9yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpdDYxNjIwLT5taXBpcnhfaTJj LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZpdDYxNjIwX21pcGlfcmVnbWFwX2NvbmZpZyk7DQo+ID4gKyAgICAgICBpZiAoSVNfRVJS KGl0NjE2MjAtPm1pcGlyeF9yZWdtYXApKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2 X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoaXQ2MTYyMC0+bWlwaXJ4X3JlZ21hcCksDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gaW5pdCBJMkMgcmVn bWFwIGZvciBNSVBJXG4iKTsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfb2ZfZ2V0X2RzaV9ob3N0KHN0cnVjdCBpdDYxNjIwICpp dDYxNjIwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1p cGlfZHNpX2hvc3QgKipob3N0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBpdDYxNjIwLT5kZXY7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmRzaV9u b2RlOw0KPiA+ICsgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpob3N0X25vZGU7DQo+ID4gKw0K PiA+ICsgICAgICAgZHNpX25vZGUgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2ludChkZXYtPm9m X25vZGUsIE5VTEwpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICghZHNpX25vZGUpDQo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVOT0RFViwgIkRTSSBOTyBl bmRwb2ludCBhdCBEVFxuIik7DQo+ID4gKw0KPiA+ICsgICAgICAgaG9zdF9ub2RlID0gb2ZfZ3Jh cGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChkc2lfbm9kZSk7DQo+ID4gKyAgICAgICBvZl9ub2Rl X3B1dChkc2lfbm9kZSk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKCFob3N0X25vZGUpDQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVOT0RFViwgIkRTSSBO TyBob3N0IG5vZGUgYXQgRFRcbiIpOw0KPiA+ICsNCj4gPiArICAgICAgICpob3N0ID0gb2ZfZmlu ZF9taXBpX2RzaV9ob3N0X2J5X25vZGUoaG9zdF9ub2RlKTsNCj4gPiArICAgICAgIG9mX25vZGVf cHV0KGhvc3Rfbm9kZSk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKCpob3N0KQ0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gZGV2X2Vycl9w cm9iZShkZXYsIC1FUFJPQkVfREVGRVIsICJmYWlsZWQgdG8gZmluZCBkc2kgaG9zdFxuIik7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9hdHRhY2hfZHNpKHN0cnVjdCBp dDYxNjIwICppdDYxNjIwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBtaXBpX2RzaV9ob3N0ICpob3N0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNl ICpkZXYgPSBpdDYxNjIwLT5kZXY7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNl ICpkc2k7DQo+ID4gKyAgICAgICBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlX2luZm8gaW5m byA9IHsiaXQ2MTYyMCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGV2LT5vZl9ub2RlfTsNCj4gPiArDQo+ID4gKyAgICAgICBkc2kgPSBk ZXZtX21pcGlfZHNpX2RldmljZV9yZWdpc3Rlcl9mdWxsKGRldiwgaG9zdCwgJmluZm8pOw0KPiA+ ICsgICAgICAgaWYgKElTX0VSUihkc2kpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2 X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZHNpKSwgImZhaWxlZCB0byBjcmVhdGUgZHNpIGRldmlj ZVxuIik7DQo+ID4gKw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+ZHNpID0gZHNpOw0KPiA+ICsgICAg ICAgZHNpLT5sYW5lcyA9IDQ7DQo+ID4gKyAgICAgICBkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZN VF9SR0I4ODg7DQo+ID4gKyAgICAgICBkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJ REVPIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIE1JUElfRFNJX01PREVfVklERU9f U1lOQ19QVUxTRTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gZGV2bV9taXBpX2RzaV9hdHRh Y2goZGV2LCBkc2kpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2Rl dGFjaF9kc2koc3RydWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIGlm ICghaXQ2MTYyMC0+ZHNpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ ICsgICAgICAgbWlwaV9kc2lfZGV0YWNoKGl0NjE2MjAtPmRzaSk7DQo+ID4gK30NCj4gPiArDQo+ ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaXQ2MTYyMF9wYXJzZV9kdChzdHJ1Y3QgaXQ2MTYyMCAq aXQ2MTYyMCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gaXQ2MTYy MC0+ZGV2Ow0KPiA+ICsgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCA9IGl0NjE2MjAtPmRl di0+b2Zfbm9kZTsNCj4gPiArICAgICAgIHUzMiBudW1fbGFuZXMgPSAwOw0KPiA+ICsNCj4gPiAr ICAgICAgIGlmICghZGV2LT5vZl9ub2RlKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJk c2ktbGFuZXMiLCAmbnVtX2xhbmVzKSkNCj4gPiArICAgICAgICAgICAgICAgZGV2X2RiZyhkZXYs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCByZWFkIGRzaS1sYW5lcyByZWcg cHJvcGVydHlcbiIpOw0KPiA+ICsgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICBpdDYx NjIwLT5taXBpcnhfY29uZmlnLmxhbmVfbnVtID0gbnVtX2xhbmVzOw0KPiA+ICsNCj4gPiArICAg ICAgIGRldl9kYmcoZGV2LCAibnVtX2xhbmVzID0gJXhcbiIsIG51bV9sYW5lcyk7DQo+ID4gKw0K PiA+ICsgICAgICAgaXQ2MTYyMC0+bmV4dF9icmlkZ2UgPSBkZXZtX2RybV9vZl9nZXRfYnJpZGdl KGRldiwgbnAsIDEsIC0xKTsNCj4gPiArICAgICAgIGlmIChJU19FUlIoaXQ2MTYyMC0+bmV4dF9i cmlkZ2UpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIC1F UFJPQkVfREVGRVIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm YWlsZWQgdG8gZ2V0IG5leHQgYnJpZGdlXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4g MDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBpdDYxNjIwX2luaXRfcGRhdGEoc3Ry dWN0IGl0NjE2MjAgKml0NjE2MjApDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBpdDYxNjIw X3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gJml0NjE2MjAtPnBkYXRhOw0KPiA+ICsgICAgICAgc3Ry dWN0IGRldmljZSAqZGV2ID0gaXQ2MTYyMC0+ZGV2Ow0KPiA+ICsNCj4gPiArICAgICAgIHBkYXRh LT5ncGlvZF9yZXNldCA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0hJ R0gpOw0KPiA+ICsgICAgICAgaWYgKElTX0VSUihwZGF0YS0+Z3Bpb2RfcmVzZXQpKQ0KPiA+ICsg ICAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGRhdGEtPmdw aW9kX3Jlc2V0KSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdw aW9kX3Jlc2V0IG5vdCBmb3VuZFxuIik7DQo+ID4gKw0KPiA+ICsgICAgICAgcGRhdGEtPml2ZGQg PSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAiaXZkZCIpOw0KPiA+ICsgICAgICAgaWYgKElTX0VS UihwZGF0YS0+aXZkZCkpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2Jl KGRldiwgUFRSX0VSUihwZGF0YS0+aXZkZCksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJpdmRkIHJlZ3VsYXRvciBub3QgZm91bmRcbiIpOw0KPiA+ICsNCj4gPiAr ICAgICAgIHBkYXRhLT5vdmRkMTgzMyA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJvdmRkMTgz MyIpOw0KPiA+ICsgICAgICAgaWYgKElTX0VSUihwZGF0YS0+b3ZkZDE4MzMpKQ0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGRhdGEtPm92ZGQx ODMzKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm92ZGQxODMz IHJlZ3VsYXRvciBub3QgZm91bmRcbiIpOw0KPiA+ICsNCj4gPiArICAgICAgIHBkYXRhLT5vdmRk MzMgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAib3ZkZCIpOw0KPiA+ICsgICAgICAgaWYgKElT X0VSUihwZGF0YS0+b3ZkZDMzKSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJf cHJvYmUoZGV2LCBQVFJfRVJSKHBkYXRhLT5vdmRkMzMpLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAib3ZkZDMzIHJlZ3VsYXRvciBub3QgZm91bmRcbiIpOw0KPiA+ ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IF9fbWF5YmVfdW51c2VkIGl0NjE2MjBfcG1fYnJpZGdlX3N1c3BlbmQoc3RydWN0IGRldmljZSAq ZGV2KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfcG93ZXJvZmYoaXQ2 MTYyMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgaXQ2MTYyMF9wbV9icmlkZ2VfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmRldikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGl0NjE2MjAgKml0NjE2 MjAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gaXQ2 MTYyMF9wb3dlcm9uKGl0NjE2MjApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRldl9wbV9vcHMgaXQ2MTYyMF9icmlkZ2VfcG1fb3BzID0gew0KPiA+ICsgICAgICAg U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMocG1fcnVudGltZV9mb3JjZV9zdXNwZW5kLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG1fcnVudGltZV9mb3JjZV9yZXN1bWUpDQo+ ID4gKyAgICAgICBTRVRfUlVOVElNRV9QTV9PUFMoaXQ2MTYyMF9wbV9icmlkZ2Vfc3VzcGVuZCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBpdDYxNjIwX3BtX2JyaWRnZV9yZXN1bWUs IE5VTEwpDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfYnJpZGdlX2F0 dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGRybV9icmlkZ2VfYXR0YWNoX2ZsYWdzIGZsYWdz KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCA9IGJyaWRnZV90 b19pdDYxNjIwKGJyaWRnZSk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0g YnJpZGdlLT5kZXY7DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIGl0 NjE2MjAtPmRybSA9IGRybTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIWRybV9jb3JlX2NoZWNr X2ZlYXR1cmUoZHJtLCBEUklWRVJfQVRPTUlDKSkgew0KPiA+ICsgICAgICAgICAgICAgICBkcm1f ZXJyKGRybSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAiaXQ2MTYyMCBkcml2ZXIgb25s eSBjb3BlcyB3aXRoIGF0b21pYyB1cGRhdGVzXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIC1FT1BOT1RTVVBQOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldCA9 IGRybV9icmlkZ2VfYXR0YWNoKGJyaWRnZS0+ZW5jb2RlciwgaXQ2MTYyMC0+bmV4dF9icmlkZ2Us DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmlkZ2UsIERSTV9CUklER0Vf QVRUQUNIX05PX0NPTk5FQ1RPUik7DQo+ID4gKyAgICAgICBpZiAocmV0IDwgMCkNCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIShmbGFncyAm IERSTV9CUklER0VfQVRUQUNIX05PX0NPTk5FQ1RPUikpIHsNCj4gPiArICAgICAgICAgICAgICAg ZHJtX2RiZyhkcm0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIkRSTV9CUklER0VfQVRU QUNIX05PX0NPTk5FQ1RPUiBtdXN0IGJlIHN1cHBsaWVkIik7DQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGl0NjE2MjBfYnJpZGdlX2RldGFjaChzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICt7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBlbnVtIGRybV9tb2RlX3N0YXR1cyBpdDYxNjIwX2JyaWRnZV9tb2RlX3ZhbGlkKHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmluZm8s DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpDQo+ID4gK3sNCj4gPiArICAg ICAgIHN0cnVjdCBpdDYxNjIwICppdDYxNjIwID0gYnJpZGdlX3RvX2l0NjE2MjAoYnJpZGdlKTsN Cj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gaXQ2MTYyMF9tb2RlX3ZhbGlkKGl0NjE2MjAsIG1v ZGUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2JyaWRnZV9ocGRf bm90aWZ5KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cykNCj4g PiArew0KPiA+ICsgICAgICAgc3RydWN0IGl0NjE2MjAgKml0NjE2MjAgPSBicmlkZ2VfdG9faXQ2 MTYyMChicmlkZ2UpOw0KPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGl0NjE2 MjAtPmRybTsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjE2MjAtPmRldjsN Cj4gPiArICAgICAgIGludCBocGQsIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBocGQgPSAoc3Rh dHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKSA/IDEgOiAwOw0KPiA+ICsNCj4gPiAr ICAgICAgIGlmIChpdDYxNjIwLT5jb25uZWN0b3Jfc3RhdHVzICE9IHN0YXR1cykgew0KPiA+ICsg ICAgICAgICAgICAgICBkcm1fZGJnKGRybSwgIkdQSU8gaHBkIHN0YXR1cyBjaGFuZ2UgJWQtPiVk IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAhaHBkLCBocGQpOw0KPiA+ICsNCj4gPiAr ICAgICAgICAgICAgICAgaXQ2MTYyMC0+Y29ubmVjdG9yX3N0YXR1cyA9IHN0YXR1czsNCj4gPiAr ICAgICAgICAgICAgICAgaWYgKGhwZCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRy bV9kYmcoZHJtLCAiSFBEX0dQSU8gZ2V0IHRvIHdha2UgdXAiKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICByZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKGRldik7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXZfZXJyKGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInBtX3J1bnRpbWVfZ2V0X3N5bmMgZXJyb3IgJWQiLCByZXQpOw0KPiA+ICsgICAg ICAgICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRybV9kYmco ZHJtLCAiSFBEX0dQSU8gcHV0IHRvIHNsZWVwIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShkZXYpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGRldik7DQo+ID4gKyAgICAgICAgICAg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICBk cm1fZGJnKGRybSwgIkdQSU8gaHBkIHN0YXR1cyBOTyBjaGFuZ2UgJWQiLCBocGQpOw0KPiA+ICsg ICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2JyaWRnZV9h dG9taWNfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGl0NjE2MjAgKml0NjE2MjAg PSBicmlkZ2VfdG9faXQ2MTYyMChicmlkZ2UpOw0KPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAq ZGV2ID0gaXQ2MTYyMC0+ZGV2Ow0KPiA+ICsNCj4gPiArICAgICAgIHBtX3J1bnRpbWVfZ2V0X3N5 bmMoZGV2KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXQ2MTYyMF9icmlkZ2Vf YXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCA9IGJyaWRn ZV90b19pdDYxNjIwKGJyaWRnZSk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGU7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29u bl9zdGF0ZTsNCj4gPiArICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOw0KPiA+ ICsgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsNCj4gPiArDQo+ID4gKyAg ICAgICBjb25uZWN0b3IgPSBkcm1fYXRvbWljX2dldF9uZXdfY29ubmVjdG9yX2Zvcl9lbmNvZGVy KHN0YXRlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmlkZ2UtPmVuY29kZXIpOw0KPiA+ICsNCj4gPiArICAgICAgIGlm ICghY29ubmVjdG9yKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gKyAgICAgICBp dDYxNjIwLT5jb25uZWN0b3IgPSAqY29ubmVjdG9yOw0KPiA+ICsNCj4gPiArICAgICAgIGNvbm5f c3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0 b3IpOw0KPiA+ICsgICAgICAgaWYgKFdBUk5fT04oIWNvbm5fc3RhdGUpKQ0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgY3J0Y19zdGF0ZSA9IGRybV9hdG9t aWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjb25uX3N0YXRlLT5jcnRjKTsNCj4gPiArICAg ICAgIGlmIChXQVJOX09OKCFjcnRjX3N0YXRlKSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJu Ow0KPiA+ICsNCj4gPiArICAgICAgIG1vZGUgPSAmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsN Cj4gPiArICAgICAgIGlmIChXQVJOX09OKCFtb2RlKSkNCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuOw0KPiA+ICsNCj4gPiArICAgICAgIGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1p X3VwZGF0ZV9pbmZvZnJhbWVzKGNvbm5lY3Rvciwgc3RhdGUpOw0KPiA+ICsgICAgICAgaXQ2MTYy MF9taXBpX3NldF9kMnZfdmlkZW9fdGltaW5nKGl0NjE2MjApOw0KPiA+ICsgICAgICAgaXQ2MTYy MF9oZG1pX2NvbmZpZ19vdXRwdXQoaXQ2MTYyMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyB2b2lkIGl0NjE2MjBfYnJpZGdlX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg aXQ2MTYyMCAqaXQ2MTYyMCA9IGJyaWRnZV90b19pdDYxNjIwKGJyaWRnZSk7DQo+ID4gKw0KPiA+ ICsgICAgICAgaWYgKGl0NjE2MjAtPnBvd2VyZWQpIHsNCj4gPiArICAgICAgICAgICAgICAgaXQ2 MTYyMF9zdG9wX2hkY3Bfd29yayhpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYy MF9oZG1pX2Rpc2FibGVfYWZlKGl0NjE2MjApOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIw X2hkbWlfcG93ZXJkb3duKGl0NjE2MjApOw0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwLT52 aWRlb19zdGF0ZSA9IGl0NjE2MjBfVklERU9fT0ZGOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2JyaWRnZV9hdG9taWNfcG9zdF9kaXNhYmxl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBpdDYxNjIwICppdDYxNjIwID0gYnJpZGdlX3RvX2l0 NjE2MjAoYnJpZGdlKTsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjE2MjAt PmRldjsNCj4gPiArDQo+ID4gKyAgICAgICBwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGRldik7 DQo+ID4gKyAgICAgICBwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lZGlkICppdDYxNjIwX2JyaWRnZV9l ZGlkX3JlYWQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGl0NjE2MjAgKml0NjE2 MjAgPSBicmlkZ2VfdG9faXQ2MTYyMChicmlkZ2UpOw0KPiA+ICsgICAgICAgc3RydWN0IGRldmlj ZSAqZGV2ID0gaXQ2MTYyMC0+ZGV2Ow0KPiA+ICsNCj4gPiArICAgICAgIGlmICghaXQ2MTYyMC0+ Y2FjaGVkX2VkaWQpIHsNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMC0+Y2FjaGVkX2VkaWQg PSBkcm1fZWRpZF9yZWFkX2N1c3RvbShjb25uZWN0b3IsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQ2MTYyMF9nZXRfZWRp ZF9ibG9jaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpdDYxNjIwKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGlm ICghaXQ2MTYyMC0+Y2FjaGVkX2VkaWQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgZWRpZCEiKTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAg ICAgICAgICBpdDYxNjIwX3NldF9jYXBhYmlsaXR5X2Zyb21fZWRpZF9wYXJzZShpdDYxNjIwLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkcm1fZWRpZF9yYXcoaXQ2MTYyMC0+Y2FjaGVkX2VkaWQpKTsNCj4gPiArICAgICAgIH0NCj4g PiArICAgICAgIHJldHVybiBkcm1fZWRpZF9kdXAoaXQ2MTYyMC0+Y2FjaGVkX2VkaWQpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpdDYxNjIwX2JyaWRnZV9tb2RlX3NldChzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGopDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBpdDYxNjIwICppdDYxNjIwID0gYnJp ZGdlX3RvX2l0NjE2MjAoYnJpZGdlKTsNCj4gPiArDQo+ID4gKyAgICAgICBkcm1fZGlzcGxheV9t b2RlX3RvX3ZpZGVvbW9kZShhZGosICZpdDYxNjIwLT52bSk7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbnQgaXQ2MTYyMF9icmlkZ2VfaGRtaV9jbGVhcl9pbmZvZnJhbWUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVudW0gaGRtaV9pbmZvZnJhbWVfdHlwZSB0eXBlKQ0KPiA+ICt7DQo+ID4g KyAgICAgICBzdHJ1Y3QgaXQ2MTYyMCAqaXQ2MTYyMCA9IGJyaWRnZV90b19pdDYxNjIwKGJyaWRn ZSk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gaXQ2MTYyMC0+ZHJtOw0K PiA+ICsNCj4gPiArICAgICAgIHN3aXRjaCAodHlwZSkgew0KPiA+ICsgICAgICAgY2FzZSBIRE1J X0lORk9GUkFNRV9UWVBFX0FWSToNCj4gPiArICAgICAgICAgICAgICAgaXQ2MTYyMF9oZG1pX2Rp c2FibGVfYXZpX2luZm9mcmFtZShpdDYxNjIwKTsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gKyAgICAgICBjYXNlIEhETUlfSU5GT0ZSQU1FX1RZUEVfQVVESU86DQo+ID4gKyAgICAg ICAgICAgICAgIGl0NjE2MjBfaGRtaV9kaXNhYmxlX2F1ZGlvX2luZm9mcmFtZShpdDYxNjIwKTsN Cj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBkZWZhdWx0Og0KPiA+ICsg ICAgICAgICAgICAgICBkcm1fZXJyKGRybSwgIkVycm9yOiBoZG1pIGluZm9mcmFtZV90eXBlICV4 ISEhXG4iLCB0eXBlKTsNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGl0NjE2MjBfYnJpZGdlX2hkbWlfd3JpdGVfaW5m b2ZyYW1lKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGhkbWlfaW5mb2ZyYW1lX3R5cGUgdHlw ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHU4ICpidWZmZXIsIHNpemVfdCBsZW4pDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBp dDYxNjIwICppdDYxNjIwID0gYnJpZGdlX3RvX2l0NjE2MjAoYnJpZGdlKTsNCj4gPiArICAgICAg IHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBpdDYxNjIwLT5kcm07DQo+ID4gKw0KPiA+ICsgICAg ICAgc3dpdGNoICh0eXBlKSB7DQo+ID4gKyAgICAgICBjYXNlIEhETUlfSU5GT0ZSQU1FX1RZUEVf QVZJOg0KPiA+ICsgICAgICAgICAgICAgICBpdDYxNjIwX2hkbWlfYXZpX2luZm9mcmFtZV9zZXQo aXQ2MTYyMCwgYnVmZmVyLCBsZW4pOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiAr ICAgICAgIGNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9BVURJTzoNCj4gPiArICAgICAgICAgICAg ICAgaXQ2MTYyMF9oZG1pX2F1ZGlvX2luZm9mcmFtZV9zZXQoaXQ2MTYyMCwgYnVmZmVyLCBsZW4p Ow0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6DQo+ID4g KyAgICAgICAgICAgICAgIGRybV9lcnIoZHJtLCAiRXJyb3I6IGhkbWkgaW5mb2ZyYW1lX3R5cGUg JXghISFcbiIsIHR5cGUpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXQ2MTYyMF9icmlkZ2VfaGRtaV9hdWRpb19z dGFydHVwKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGl0NjE2MjAgKml0NjE2MjAgPSBicmlkZ2Vf dG9faXQ2MTYyMChicmlkZ2UpOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfZW5hYmxlX2F1 ZGlvKGl0NjE2MjApOw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbnQgaXQ2MTYyMF9icmlkZ2VfaGRtaV9hdWRpb19wcmVwYXJlKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGRtaV9jb2RlY19kYWlm bXQgKmZtdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaGRtaV9jb2RlY19wYXJhbXMgKmhwYXJtcykNCj4gPiArew0KPiA+ICsgICAgICAg c3RydWN0IGl0NjE2MjAgKml0NjE2MjAgPSBicmlkZ2VfdG9faXQ2MTYyMChicmlkZ2UpOw0KPiA+ ICsNCj4gPiArICAgICAgIHN3aXRjaCAoaHBhcm1zLT5zYW1wbGVfcmF0ZSkgew0KPiA+ICsgICAg ICAgY2FzZSAzMjAwMDoNCj4gPiArICAgICAgIGNhc2UgNDQxMDA6DQo+ID4gKyAgICAgICBjYXNl IDQ4MDAwOg0KPiA+ICsgICAgICAgY2FzZSA4ODIwMDoNCj4gPiArICAgICAgIGNhc2UgOTYwMDA6 DQo+ID4gKyAgICAgICBjYXNlIDE3NjQwMDoNCj4gPiArICAgICAgIGNhc2UgMTkyMDAwOg0KPiA+ ICsgICAgICAgY2FzZSA3NjgwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsg ICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgc3dpdGNoIChocGFybXMtPnNhbXBsZV93aWR0 aCkgew0KPiA+ICsgICAgICAgY2FzZSAxNjoNCj4gPiArICAgICAgIGNhc2UgMjQ6DQo+ID4gKyAg ICAgICBjYXNlIDE4Og0KPiA+ICsgICAgICAgY2FzZSAyMDoNCj4gPiArICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBzd2l0Y2ggKGZtdC0+ Zm10KSB7DQo+ID4gKyAgICAgICBjYXNlIEhETUlfSTJTOg0KPiA+ICsgICAgICAgY2FzZSBIRE1J X1NQRElGOg0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6 DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgIGl0NjE2MjBfYXVkaW9fdXBkYXRlX2h3X3BhcmFtcyhpdDYxNjIwLCBm bXQsIGhwYXJtcyk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9oZG1pX3VwZGF0ZV9hdWRpb19pbmZvZnJhbWUoY29ubmVjdG9yLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmhwYXJtcy0+Y2VhKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZv aWQgaXQ2MTYyMF9icmlkZ2VfaGRtaV9hdWRpb19zaHV0ZG93bihzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiArew0KPiA+ICsgICAgICAg c3RydWN0IGl0NjE2MjAgKml0NjE2MjAgPSBicmlkZ2VfdG9faXQ2MTYyMChicmlkZ2UpOw0KPiA+ ICsNCj4gPiArICAgICAgIGl0NjE2MjBfZGlzYWJsZV9hdWRpbyhpdDYxNjIwKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIGl0NjE2MjBf YnJpZGdlX2Z1bmNzID0gew0KPiA+ICsgICAgICAgLmF0dGFjaCA9IGl0NjE2MjBfYnJpZGdlX2F0 dGFjaCwNCj4gPiArICAgICAgIC5kZXRhY2ggPSBpdDYxNjIwX2JyaWRnZV9kZXRhY2gsDQo+ID4g KyAgICAgICAubW9kZV92YWxpZCA9IGl0NjE2MjBfYnJpZGdlX21vZGVfdmFsaWQsDQo+ID4gKyAg ICAgICAuaHBkX25vdGlmeSA9IGl0NjE2MjBfYnJpZGdlX2hwZF9ub3RpZnksDQo+ID4gKw0KPiA+ ICsgICAgICAgLmF0b21pY19wcmVfZW5hYmxlID0gaXQ2MTYyMF9icmlkZ2VfYXRvbWljX3ByZV9l bmFibGUsDQo+ID4gKyAgICAgICAuYXRvbWljX2VuYWJsZSA9IGl0NjE2MjBfYnJpZGdlX2F0b21p Y19lbmFibGUsDQo+ID4gKyAgICAgICAuYXRvbWljX2Rpc2FibGUgPSBpdDYxNjIwX2JyaWRnZV9h dG9taWNfZGlzYWJsZSwNCj4gPiArICAgICAgIC5hdG9taWNfcG9zdF9kaXNhYmxlID0gaXQ2MTYy MF9icmlkZ2VfYXRvbWljX3Bvc3RfZGlzYWJsZSwNCj4gPiArICAgICAgIC5hdG9taWNfZHVwbGlj YXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2R1cGxpY2F0ZV9zdGF0ZSwNCj4g PiArICAgICAgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRn ZV9kZXN0cm95X3N0YXRlLA0KPiA+ICsgICAgICAgLmF0b21pY19yZXNldCA9IGRybV9hdG9taWNf aGVscGVyX2JyaWRnZV9yZXNldCwNCj4gPiArDQo+ID4gKyAgICAgICAuZWRpZF9yZWFkID0gaXQ2 MTYyMF9icmlkZ2VfZWRpZF9yZWFkLA0KPiA+ICsgICAgICAgLm1vZGVfc2V0ID0gaXQ2MTYyMF9i cmlkZ2VfbW9kZV9zZXQsDQo+ID4gKw0KPiA+ICsgICAgICAgLmhkbWlfY2xlYXJfaW5mb2ZyYW1l ID0gaXQ2MTYyMF9icmlkZ2VfaGRtaV9jbGVhcl9pbmZvZnJhbWUsDQo+ID4gKyAgICAgICAuaGRt aV93cml0ZV9pbmZvZnJhbWUgPSBpdDYxNjIwX2JyaWRnZV9oZG1pX3dyaXRlX2luZm9mcmFtZSwN Cj4gPiArICAgICAgIC5oZG1pX2F1ZGlvX3N0YXJ0dXAgPSBpdDYxNjIwX2JyaWRnZV9oZG1pX2F1 ZGlvX3N0YXJ0dXAsDQo+ID4gKyAgICAgICAuaGRtaV9hdWRpb19wcmVwYXJlID0gaXQ2MTYyMF9i cmlkZ2VfaGRtaV9hdWRpb19wcmVwYXJlLA0KPiA+ICsgICAgICAgLmhkbWlfYXVkaW9fc2h1dGRv d24gPSBpdDYxNjIwX2JyaWRnZV9oZG1pX2F1ZGlvX3NodXRkb3duLA0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBpdDYxNjIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp DQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsN Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7DQo+ID4g KyAgICAgICBzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdDsNCj4gPiArICAgICAgIHN0cnVjdCBp dDYxNjIwICppdDYxNjIwOw0KPiA+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsg ICAgICAgaXQ2MTYyMCA9IGRldm1fZHJtX2JyaWRnZV9hbGxvYyhkZXYsIHN0cnVjdCBpdDYxNjIw LCBicmlkZ2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZp dDYxNjIwX2JyaWRnZV9mdW5jcyk7DQo+ID4gKyAgICAgICBpZiAoSVNfRVJSKGl0NjE2MjApKQ0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpdDYxNjIwKTsNCj4gPiArDQo+ID4g KyAgICAgICBpdDYxNjIwLT5kZXYgPSBkZXY7DQo+ID4gKyAgICAgICBpdDYxNjIwLT5jaGlwX2lu Zm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgICBy ZXQgPSBpdDYxNjIwX29mX2dldF9kc2lfaG9zdChpdDYxNjIwLCAmaG9zdCk7DQo+ID4gKyAgICAg ICBpZiAocmV0IDwgMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ ID4gKyAgICAgICByZXQgPSBpdDYxNjIwX2kyY19hbmRfcmVnbWFwX2luaXQoY2xpZW50LCBpdDYx NjIwKTsNCj4gPiArICAgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGl0 NjE2MjApOw0KPiA+ICsNCj4gPiArICAgICAgIHJldCA9IGl0NjE2MjBfaW5pdF9wZGF0YShpdDYx NjIwKTsNCj4gPiArICAgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfY29uZmlnX2RlZmF1bHQoaXQ2MTYy MCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX3BhcnNlX2R0KGl0NjE2MjApOw0KPiA+ICsgICAgICAg aWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKw0KPiA+ ICsgICAgICAgaWYgKCFjbGllbnQtPmlycSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGRl dl9lcnJfcHJvYmUoZGV2LCAtRU5PREVWLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBJTlRQIElSUVxuIik7DQo+ID4gKw0KPiA+ICsgICAg ICAgcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmY2xpZW50LT5kZXYsIGNsaWVudC0+ aXJxLCBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp dDYxNjIwX2ludF90aHJlYWRlZF9oYW5kbGVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJUlFGX1RSSUdHRVJfTE9XIHwgSVJRRl9PTkVTSE9UIHwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVJRRl9OT19BVVRPRU4sDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdDYxNjIwLWludHAi LCBpdDYxNjIwKTsNCj4gPiArICAgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byByZXF1ZXN0IElOVFAgdGhyZWFkZWQgSVJRXG4i KTsNCj4gPiArDQo+ID4gKyAgICAgICBJTklUX0RFTEFZRURfV09SSygmaXQ2MTYyMC0+aGRjcF93 b3JrLCBpdDYxNjIwX2hkY3Bfd29yayk7DQo+ID4gKyAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFk KCZpdDYxNjIwLT53cSk7DQo+ID4gKw0KPiA+ICsgICAgICAgbXV0ZXhfaW5pdCgmaXQ2MTYyMC0+ ZGRjX2xvY2spOw0KPiA+ICsNCj4gPiArICAgICAgIGl0NjE2MjBfYWRkX2RkY19pMmNfYWRhcHRl cihpdDYxNjIwKTsNCj4gPiArDQo+ID4gKyAgICAgICBwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0K PiA+ICsgICAgICAgcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCAxMDAwKTsN Cj4gPiArICAgICAgIHBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKGRldik7DQo+ID4gKw0KPiA+ ICsgICAgICAgaXQ2MTYyMC0+YnJpZGdlLmZ1bmNzID0gJml0NjE2MjBfYnJpZGdlX2Z1bmNzOw0K PiA+ICsgICAgICAgaXQ2MTYyMC0+YnJpZGdlLm9mX25vZGUgPSBucDsNCj4gPiArICAgICAgIGl0 NjE2MjAtPmJyaWRnZS5vcHMgPSBEUk1fQlJJREdFX09QX0VESUQgfCBEUk1fQlJJREdFX09QX01P REVTIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fQlJJREdFX09QX0hE TUkgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9CUklER0VfT1BfSERN SV9BVURJTzsNCj4gPiArICAgICAgIGl0NjE2MjAtPmJyaWRnZS50eXBlID0gRFJNX01PREVfQ09O TkVDVE9SX0hETUlBOw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+YnJpZGdlLmhkbWlfYXVkaW9fbWF4 X2kyc19wbGF5YmFja19jaGFubmVscyA9IDg7DQo+ID4gKyAgICAgICBpdDYxNjIwLT5icmlkZ2Uu aGRtaV9hdWRpb19zcGRpZl9wbGF5YmFjayA9IGZhbHNlOw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+ YnJpZGdlLnZlbmRvciA9ICJJVEUiOw0KPiA+ICsgICAgICAgaXQ2MTYyMC0+YnJpZGdlLnByb2R1 Y3QgPSAiSVQ2MTYyMCI7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0gZGV2bV9kcm1fYnJpZGdl X2FkZChkZXYsICZpdDYxNjIwLT5icmlkZ2UpOw0KPiA+ICsgICAgICAgaWYgKHJldCA8IDApDQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGFkZCBkcm0gYnJp ZGdlXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBpdDYxNjIwX2F0dGFjaF9kc2koaXQ2 MTYyMCwgaG9zdCk7DQo+ID4gKyAgICAgICBpZiAocmV0IDwgMCkNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gYXR0YWNoIHRvIERTSSBob3N0XG4iKTsNCj4g PiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZv aWQgaXQ2MTYyMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkNCj4gPiArew0KPiA+ ICsgICAgICAgc3RydWN0IGl0NjE2MjAgKml0NjE2MjAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjE2MjAtPmRldjsNCj4g PiArDQo+ID4gKyAgICAgICBkaXNhYmxlX2lycShjbGllbnQtPmlycSk7DQo+ID4gKyAgICAgICBw bV9ydW50aW1lX2Rpc2FibGUoZGV2KTsNCj4gPiArICAgICAgIGl0NjE2MjBfcmVtb3ZlX2VkaWQo aXQ2MTYyMCk7DQo+ID4gKyAgICAgICBpdDYxNjIwX2RldGFjaF9kc2koaXQ2MTYyMCk7DQo+ID4g Kw0KPiA+ICsgICAgICAgbXV0ZXhfZGVzdHJveSgmaXQ2MTYyMC0+ZGRjX2xvY2spOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGl0NjE2Ml9jaGlwX2luZm8gaXQ2MTYy MF9jaGlwX2luZm8gPSB7DQo+ID4gKyAgICAgICAudmlkID0gMHg0OTU0LA0KPiA+ICsgICAgICAg LnBpZCA9IDB4NjE1MiwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGl0NjE2MjBfZHRfaWRzW10gPSB7DQo+ID4gKyAgICAgICB7IC5jb21wYXRp YmxlID0gIml0ZSxpdDYxNjIwIiwgLmRhdGEgPSAmaXQ2MTYyMF9jaGlwX2luZm99LA0KPiA+ICsg ICAgICAgeyB9DQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGl0NjE2MjBf ZHRfaWRzKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBp dDYxNjIwX2kyY19pZHNbXSA9IHsNCj4gPiArICAgICAgIHsgIml0NjE2MjAiLCAwIH0sDQo+ID4g KyAgICAgICB7IH0sDQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBpdDYx NjIwX2kyY19pZHMpOw0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGl0NjE2 MjBfZHJpdmVyID0gew0KPiA+ICsgICAgICAgLmRyaXZlciA9IHsNCj4gPiArICAgICAgICAgICAg ICAgLm5hbWUgPSAiaXQ2MTYyMCIsDQo+ID4gKyAgICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJs ZSA9IGl0NjE2MjBfZHRfaWRzLA0KPiA+ICsgICAgICAgICAgICAgICAucG0gPSAmaXQ2MTYyMF9i cmlkZ2VfcG1fb3BzLA0KPiA+ICsgICAgICAgfSwNCj4gPiArICAgICAgIC5wcm9iZSA9IGl0NjE2 MjBfcHJvYmUsDQo+ID4gKyAgICAgICAucmVtb3ZlID0gaXQ2MTYyMF9yZW1vdmUsDQo+ID4gKyAg ICAgICAuaWRfdGFibGUgPSBpdDYxNjIwX2kyY19pZHMsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtt b2R1bGVfaTJjX2RyaXZlcihpdDYxNjIwX2RyaXZlcik7DQo+ID4gKw0KPiA+ICtNT0RVTEVfQVVU SE9SKCJQZXQgV2VuZyA8cGV0LndlbmdAaXRlLmNvbS50dz4iKTsNCj4gPiArTU9EVUxFX0FVVEhP UigiSGVybWVzIFd1IDxIZXJtZXMuV3VAaXRlLmNvbS50dz4iKTsNCj4gPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJpdDYxNjIwIG1pcGkgdG8gaGRtaSBkcml2ZXIiKTsNCj4gPiArTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOw0KPiA+DQo+ID4gLS0NCj4gPiAyLjM0LjENCj4gPg0KPiANCj4gUmVnYXJkcywN Cj4gUGluLXllbg0KDQpSZWdhcmRzLA0KUGV0IFdlbmcNCg==