From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 918EDC4742C for ; Tue, 3 Nov 2020 08:00:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 36891223BD for ; Tue, 3 Nov 2020 08:00:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="OYTmYQhc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726570AbgKCIAZ (ORCPT ); Tue, 3 Nov 2020 03:00:25 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:41630 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727686AbgKCIAZ (ORCPT ); Tue, 3 Nov 2020 03:00:25 -0500 X-UUID: edfe70ec7a3d4c79ae9a16d32bbc8a95-20201103 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=hmkqyLRT67Aw8wizCklryiLh18xZPR71jlnqVGWfoZw=; b=OYTmYQhccbXZwtiVISkKk7J4WOdHNJYDygMlDhx5kyNXOF50UDNrpJuiH/WCOE4B27N6qXJdTEsIUtJMFrTpQNosybueLngMxtVVe14kHO8fh37HhOia/flCO/fzp0XuVNnYuJ3x0TxV8MLeB+6+q8hZXbrmq1ftSDqWss5Qxcc=; X-UUID: edfe70ec7a3d4c79ae9a16d32bbc8a95-20201103 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1959393037; Tue, 03 Nov 2020 15:59:47 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs06n2.mediatek.inc (172.21.101.130) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 3 Nov 2020 15:59:45 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 3 Nov 2020 15:59:44 +0800 From: Jiaxin Yu To: , , , , , , , , , CC: , , , , Jiaxin Yu Subject: [PATCH v4 3/9] ASoC: mediatek: mt8192: support i2s in platform driver Date: Tue, 3 Nov 2020 15:59:32 +0800 Message-ID: <1604390378-23993-4-git-send-email-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1604390378-23993-1-git-send-email-jiaxin.yu@mediatek.com> References: <1604390378-23993-1-git-send-email-jiaxin.yu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: 519CEBBBD19C9A33D2874DB3A2C3B6C95BFA6C51B485DCCB2E984D3D5935DE692000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIG10ODE5MiBpMnMgZGFpIGRyaXZlci4NCg0KU2lnbmVkLW9mZi1ieTog SmlheGluIFl1IDxqaWF4aW4ueXVAbWVkaWF0ZWsuY29tPg0KLS0tDQogc291bmQvc29jL21lZGlh dGVrL210ODE5Mi9tdDgxOTItZGFpLWkycy5jIHwgMjExMCArKysrKysrKysrKysrKysrKysrKw0K IDEgZmlsZSBjaGFuZ2VkLCAyMTEwIGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQg c291bmQvc29jL21lZGlhdGVrL210ODE5Mi9tdDgxOTItZGFpLWkycy5jDQoNCmRpZmYgLS1naXQg YS9zb3VuZC9zb2MvbWVkaWF0ZWsvbXQ4MTkyL210ODE5Mi1kYWktaTJzLmMgYi9zb3VuZC9zb2Mv bWVkaWF0ZWsvbXQ4MTkyL210ODE5Mi1kYWktaTJzLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMDAwLi41M2M1NjBlYTRhYWU2DQotLS0gL2Rldi9udWxsDQorKysgYi9z b3VuZC9zb2MvbWVkaWF0ZWsvbXQ4MTkyL210ODE5Mi1kYWktaTJzLmMNCkBAIC0wLDAgKzEsMjEx MCBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorLy8NCisvLyBNZWRp YVRlayBBTFNBIFNvQyBBdWRpbyBEQUkgSTJTIENvbnRyb2wNCisvLw0KKy8vIENvcHlyaWdodCAo YykgMjAyMCBNZWRpYVRlayBJbmMuDQorLy8gQXV0aG9yOiBTaGFuZSBDaGllbiA8c2hhbmUuY2hp ZW5AbWVkaWF0ZWsuY29tPg0KKy8vDQorDQorI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPg0KKyNp bmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCisjaW5jbHVkZSA8c291bmQvcGNtX3BhcmFtcy5oPg0K Kw0KKyNpbmNsdWRlICJtdDgxOTItYWZlLWNsay5oIg0KKyNpbmNsdWRlICJtdDgxOTItYWZlLWNv bW1vbi5oIg0KKyNpbmNsdWRlICJtdDgxOTItYWZlLWdwaW8uaCINCisjaW5jbHVkZSAibXQ4MTky LWludGVyY29ubmVjdGlvbi5oIg0KKw0KK2VudW0gew0KKwlJMlNfRk1UX0VJQUogPSAwLA0KKwlJ MlNfRk1UX0kyUyA9IDEsDQorfTsNCisNCitlbnVtIHsNCisJSTJTX1dMRU5fMTZfQklUID0gMCwN CisJSTJTX1dMRU5fMzJfQklUID0gMSwNCit9Ow0KKw0KK2VudW0gew0KKwlJMlNfSERfTk9STUFM ID0gMCwNCisJSTJTX0hEX0xPV19KSVRURVIgPSAxLA0KK307DQorDQorZW51bSB7DQorCUkyUzFf U0VMX08yOF9PMjkgPSAwLA0KKwlJMlMxX1NFTF9PMDNfTzA0ID0gMSwNCit9Ow0KKw0KK2VudW0g ew0KKwlJMlNfSU5fUEFEX0NPTk5TWVMgPSAwLA0KKwlJMlNfSU5fUEFEX0lPX01VWCA9IDEsDQor fTsNCisNCitzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiB7DQorCWludCBpZDsNCisJaW50IHJhdGU7 IC8qIGZvciBkZXRlcm1pbmUgd2hpY2ggYXBsbCB0byB1c2UgKi8NCisJaW50IGxvd19qaXR0ZXJf ZW47DQorDQorCWNvbnN0IGNoYXIgKnNoYXJlX3Byb3BlcnR5X25hbWU7DQorCWludCBzaGFyZV9p MnNfaWQ7DQorDQorCWludCBtY2xrX2lkOw0KKwlpbnQgbWNsa19yYXRlOw0KKwlpbnQgbWNsa19h cGxsOw0KK307DQorDQorc3RhdGljIHVuc2lnbmVkIGludCBnZXRfaTJzX3dsZW4oc25kX3BjbV9m b3JtYXRfdCBmb3JtYXQpDQorew0KKwlyZXR1cm4gc25kX3BjbV9mb3JtYXRfcGh5c2ljYWxfd2lk dGgoZm9ybWF0KSA8PSAxNiA/DQorCSAgICAgICBJMlNfV0xFTl8xNl9CSVQgOiBJMlNfV0xFTl8z Ml9CSVQ7DQorfQ0KKw0KKyNkZWZpbmUgTVRLX0FGRV9JMlMwX0tDT05UUk9MX05BTUUgIkkyUzBf SERfTXV4Ig0KKyNkZWZpbmUgTVRLX0FGRV9JMlMxX0tDT05UUk9MX05BTUUgIkkyUzFfSERfTXV4 Ig0KKyNkZWZpbmUgTVRLX0FGRV9JMlMyX0tDT05UUk9MX05BTUUgIkkyUzJfSERfTXV4Ig0KKyNk ZWZpbmUgTVRLX0FGRV9JMlMzX0tDT05UUk9MX05BTUUgIkkyUzNfSERfTXV4Ig0KKyNkZWZpbmUg TVRLX0FGRV9JMlM1X0tDT05UUk9MX05BTUUgIkkyUzVfSERfTXV4Ig0KKyNkZWZpbmUgTVRLX0FG RV9JMlM2X0tDT05UUk9MX05BTUUgIkkyUzZfSERfTXV4Ig0KKyNkZWZpbmUgTVRLX0FGRV9JMlM3 X0tDT05UUk9MX05BTUUgIkkyUzdfSERfTXV4Ig0KKyNkZWZpbmUgTVRLX0FGRV9JMlM4X0tDT05U Uk9MX05BTUUgIkkyUzhfSERfTXV4Ig0KKyNkZWZpbmUgTVRLX0FGRV9JMlM5X0tDT05UUk9MX05B TUUgIkkyUzlfSERfTXV4Ig0KKw0KKyNkZWZpbmUgSTJTMF9IRF9FTl9XX05BTUUgIkkyUzBfSERf RU4iDQorI2RlZmluZSBJMlMxX0hEX0VOX1dfTkFNRSAiSTJTMV9IRF9FTiINCisjZGVmaW5lIEky UzJfSERfRU5fV19OQU1FICJJMlMyX0hEX0VOIg0KKyNkZWZpbmUgSTJTM19IRF9FTl9XX05BTUUg IkkyUzNfSERfRU4iDQorI2RlZmluZSBJMlM1X0hEX0VOX1dfTkFNRSAiSTJTNV9IRF9FTiINCisj ZGVmaW5lIEkyUzZfSERfRU5fV19OQU1FICJJMlM2X0hEX0VOIg0KKyNkZWZpbmUgSTJTN19IRF9F Tl9XX05BTUUgIkkyUzdfSERfRU4iDQorI2RlZmluZSBJMlM4X0hEX0VOX1dfTkFNRSAiSTJTOF9I RF9FTiINCisjZGVmaW5lIEkyUzlfSERfRU5fV19OQU1FICJJMlM5X0hEX0VOIg0KKw0KKyNkZWZp bmUgSTJTMF9NQ0xLX0VOX1dfTkFNRSAiSTJTMF9NQ0xLX0VOIg0KKyNkZWZpbmUgSTJTMV9NQ0xL X0VOX1dfTkFNRSAiSTJTMV9NQ0xLX0VOIg0KKyNkZWZpbmUgSTJTMl9NQ0xLX0VOX1dfTkFNRSAi STJTMl9NQ0xLX0VOIg0KKyNkZWZpbmUgSTJTM19NQ0xLX0VOX1dfTkFNRSAiSTJTM19NQ0xLX0VO Ig0KKyNkZWZpbmUgSTJTNV9NQ0xLX0VOX1dfTkFNRSAiSTJTNV9NQ0xLX0VOIg0KKyNkZWZpbmUg STJTNl9NQ0xLX0VOX1dfTkFNRSAiSTJTNl9NQ0xLX0VOIg0KKyNkZWZpbmUgSTJTN19NQ0xLX0VO X1dfTkFNRSAiSTJTN19NQ0xLX0VOIg0KKyNkZWZpbmUgSTJTOF9NQ0xLX0VOX1dfTkFNRSAiSTJT OF9NQ0xLX0VOIg0KKyNkZWZpbmUgSTJTOV9NQ0xLX0VOX1dfTkFNRSAiSTJTOV9NQ0xLX0VOIg0K Kw0KK3N0YXRpYyBpbnQgZ2V0X2kyc19pZF9ieV9uYW1lKHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFm ZSwNCisJCQkgICAgICBjb25zdCBjaGFyICpuYW1lKQ0KK3sNCisJaWYgKHN0cm5jbXAobmFtZSwg IkkyUzAiLCA0KSA9PSAwKQ0KKwkJcmV0dXJuIE1UODE5Ml9EQUlfSTJTXzA7DQorCWVsc2UgaWYg KHN0cm5jbXAobmFtZSwgIkkyUzEiLCA0KSA9PSAwKQ0KKwkJcmV0dXJuIE1UODE5Ml9EQUlfSTJT XzE7DQorCWVsc2UgaWYgKHN0cm5jbXAobmFtZSwgIkkyUzIiLCA0KSA9PSAwKQ0KKwkJcmV0dXJu IE1UODE5Ml9EQUlfSTJTXzI7DQorCWVsc2UgaWYgKHN0cm5jbXAobmFtZSwgIkkyUzMiLCA0KSA9 PSAwKQ0KKwkJcmV0dXJuIE1UODE5Ml9EQUlfSTJTXzM7DQorCWVsc2UgaWYgKHN0cm5jbXAobmFt ZSwgIkkyUzUiLCA0KSA9PSAwKQ0KKwkJcmV0dXJuIE1UODE5Ml9EQUlfSTJTXzU7DQorCWVsc2Ug aWYgKHN0cm5jbXAobmFtZSwgIkkyUzYiLCA0KSA9PSAwKQ0KKwkJcmV0dXJuIE1UODE5Ml9EQUlf STJTXzY7DQorCWVsc2UgaWYgKHN0cm5jbXAobmFtZSwgIkkyUzciLCA0KSA9PSAwKQ0KKwkJcmV0 dXJuIE1UODE5Ml9EQUlfSTJTXzc7DQorCWVsc2UgaWYgKHN0cm5jbXAobmFtZSwgIkkyUzgiLCA0 KSA9PSAwKQ0KKwkJcmV0dXJuIE1UODE5Ml9EQUlfSTJTXzg7DQorCWVsc2UgaWYgKHN0cm5jbXAo bmFtZSwgIkkyUzkiLCA0KSA9PSAwKQ0KKwkJcmV0dXJuIE1UODE5Ml9EQUlfSTJTXzk7DQorCWVs c2UNCisJCXJldHVybiAtRUlOVkFMOw0KK30NCisNCitzdGF0aWMgc3RydWN0IG10a19hZmVfaTJz X3ByaXYgKmdldF9pMnNfcHJpdl9ieV9uYW1lKHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSwNCisJ CQkJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUpDQorew0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2 YXRlICphZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisJaW50IGRhaV9pZCA9IGdldF9p MnNfaWRfYnlfbmFtZShhZmUsIG5hbWUpOw0KKw0KKwlpZiAoZGFpX2lkIDwgMCkNCisJCXJldHVy biBOVUxMOw0KKw0KKwlyZXR1cm4gYWZlX3ByaXYtPmRhaV9wcml2W2RhaV9pZF07DQorfQ0KKw0K Ky8qIGxvdyBqaXR0ZXIgY29udHJvbCAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbXQ4 MTkyX2kyc19oZF9zdHJbXSA9IHsNCisJIk5vcm1hbCIsICJMb3dfSml0dGVyIg0KK307DQorDQor c3RhdGljIFNPQ19FTlVNX1NJTkdMRV9FWFRfREVDTChtdDgxOTJfaTJzX2VudW0sIG10ODE5Ml9p MnNfaGRfc3RyKTsNCisNCitzdGF0aWMgaW50IG10ODE5Ml9pMnNfaGRfZ2V0KHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAq dWNvbnRyb2wpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3Nv Y19rY29udHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOw0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZlICph ZmUgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXN0cnVjdCBtdGtf YWZlX2kyc19wcml2ICppMnNfcHJpdjsNCisNCisJaTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZfYnlf bmFtZShhZmUsIGtjb250cm9sLT5pZC5uYW1lKTsNCisNCisJaWYgKCFpMnNfcHJpdikgew0KKwkJ ZGV2X3dhcm4oYWZlLT5kZXYsICIlcygpLCBpMnNfcHJpdiA9PSBOVUxMIiwgX19mdW5jX18pOw0K KwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFs dWVbMF0gPSBpMnNfcHJpdi0+bG93X2ppdHRlcl9lbjsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K K3N0YXRpYyBpbnQgbXQ4MTkyX2kyc19oZF9zZXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRy b2wsDQorCQkJICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkNCit7DQor CXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2tjb250cm9sX2NvbXBv bmVudChrY29udHJvbCk7DQorCXN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29t cG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisJc3RydWN0IG10a19hZmVfaTJzX3ByaXYgKmky c19wcml2Ow0KKwlzdHJ1Y3Qgc29jX2VudW0gKmUgPSAoc3RydWN0IHNvY19lbnVtICopa2NvbnRy b2wtPnByaXZhdGVfdmFsdWU7DQorCWludCBoZF9lbjsNCisNCisJaWYgKHVjb250cm9sLT52YWx1 ZS5lbnVtZXJhdGVkLml0ZW1bMF0gPj0gZS0+aXRlbXMpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisN CisJaGRfZW4gPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsNCisNCisJZGV2X2Ri ZyhhZmUtPmRldiwgIiVzKCksIGtjb250cm9sIG5hbWUgJXMsIGhkX2VuICVkXG4iLA0KKwkJX19m dW5jX18sIGtjb250cm9sLT5pZC5uYW1lLCBoZF9lbik7DQorDQorCWkyc19wcml2ID0gZ2V0X2ky c19wcml2X2J5X25hbWUoYWZlLCBrY29udHJvbC0+aWQubmFtZSk7DQorDQorCWlmICghaTJzX3By aXYpIHsNCisJCWRldl93YXJuKGFmZS0+ZGV2LCAiJXMoKSwgaTJzX3ByaXYgPT0gTlVMTCIsIF9f ZnVuY19fKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCWkyc19wcml2LT5sb3dfaml0 dGVyX2VuID0gaGRfZW47DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9rY29udHJvbF9uZXcgbXRrX2RhaV9pMnNfY29udHJvbHNbXSA9IHsNCisJU09DX0VO VU1fRVhUKE1US19BRkVfSTJTMF9LQ09OVFJPTF9OQU1FLCBtdDgxOTJfaTJzX2VudW0sDQorCQkg ICAgIG10ODE5Ml9pMnNfaGRfZ2V0LCBtdDgxOTJfaTJzX2hkX3NldCksDQorCVNPQ19FTlVNX0VY VChNVEtfQUZFX0kyUzFfS0NPTlRST0xfTkFNRSwgbXQ4MTkyX2kyc19lbnVtLA0KKwkJICAgICBt dDgxOTJfaTJzX2hkX2dldCwgbXQ4MTkyX2kyc19oZF9zZXQpLA0KKwlTT0NfRU5VTV9FWFQoTVRL X0FGRV9JMlMyX0tDT05UUk9MX05BTUUsIG10ODE5Ml9pMnNfZW51bSwNCisJCSAgICAgbXQ4MTky X2kyc19oZF9nZXQsIG10ODE5Ml9pMnNfaGRfc2V0KSwNCisJU09DX0VOVU1fRVhUKE1US19BRkVf STJTM19LQ09OVFJPTF9OQU1FLCBtdDgxOTJfaTJzX2VudW0sDQorCQkgICAgIG10ODE5Ml9pMnNf aGRfZ2V0LCBtdDgxOTJfaTJzX2hkX3NldCksDQorCVNPQ19FTlVNX0VYVChNVEtfQUZFX0kyUzVf S0NPTlRST0xfTkFNRSwgbXQ4MTkyX2kyc19lbnVtLA0KKwkJICAgICBtdDgxOTJfaTJzX2hkX2dl dCwgbXQ4MTkyX2kyc19oZF9zZXQpLA0KKwlTT0NfRU5VTV9FWFQoTVRLX0FGRV9JMlM2X0tDT05U Uk9MX05BTUUsIG10ODE5Ml9pMnNfZW51bSwNCisJCSAgICAgbXQ4MTkyX2kyc19oZF9nZXQsIG10 ODE5Ml9pMnNfaGRfc2V0KSwNCisJU09DX0VOVU1fRVhUKE1US19BRkVfSTJTN19LQ09OVFJPTF9O QU1FLCBtdDgxOTJfaTJzX2VudW0sDQorCQkgICAgIG10ODE5Ml9pMnNfaGRfZ2V0LCBtdDgxOTJf aTJzX2hkX3NldCksDQorCVNPQ19FTlVNX0VYVChNVEtfQUZFX0kyUzhfS0NPTlRST0xfTkFNRSwg bXQ4MTkyX2kyc19lbnVtLA0KKwkJICAgICBtdDgxOTJfaTJzX2hkX2dldCwgbXQ4MTkyX2kyc19o ZF9zZXQpLA0KKwlTT0NfRU5VTV9FWFQoTVRLX0FGRV9JMlM5X0tDT05UUk9MX05BTUUsIG10ODE5 Ml9pMnNfZW51bSwNCisJCSAgICAgbXQ4MTkyX2kyc19oZF9nZXQsIG10ODE5Ml9pMnNfaGRfc2V0 KSwNCit9Ow0KKw0KKy8qIGRhaSBjb21wb25lbnQgKi8NCisvKiBpMnMgdmlydHVhbCBtdXggdG8g b3V0cHV0IHdpZGdldCAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaTJzX211eF9tYXBb XSA9IHsNCisJIk5vcm1hbCIsICJEdW1teV9XaWRnZXQiLA0KK307DQorDQorc3RhdGljIGludCBp MnNfbXV4X21hcF92YWx1ZVtdID0gew0KKwkwLCAxLA0KK307DQorDQorc3RhdGljIFNPQ19WQUxV RV9FTlVNX1NJTkdMRV9BVVRPRElTQUJMRV9ERUNMKGkyc19tdXhfbWFwX2VudW0sDQorCQkJCQkg ICAgICBTTkRfU09DX05PUE0sDQorCQkJCQkgICAgICAwLA0KKwkJCQkJICAgICAgMSwNCisJCQkJ CSAgICAgIGkyc19tdXhfbWFwLA0KKwkJCQkJICAgICAgaTJzX211eF9tYXBfdmFsdWUpOw0KKw0K K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnMwX2luX211eF9jb250cm9s ID0NCisJU09DX0RBUE1fRU5VTSgiSTJTMCBJbiBTZWxlY3QiLCBpMnNfbXV4X21hcF9lbnVtKTsN CisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJzOF9pbl9tdXhfY29u dHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oIkkyUzggSW4gU2VsZWN0IiwgaTJzX211eF9tYXBfZW51 bSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGkyczFfb3V0X211 eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSTJTMSBPdXQgU2VsZWN0IiwgaTJzX211eF9t YXBfZW51bSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGkyczNf b3V0X211eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSTJTMyBPdXQgU2VsZWN0IiwgaTJz X211eF9tYXBfZW51bSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3 IGkyczVfb3V0X211eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSTJTNSBPdXQgU2VsZWN0 IiwgaTJzX211eF9tYXBfZW51bSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRy b2xfbmV3IGkyczdfb3V0X211eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSTJTNyBPdXQg U2VsZWN0IiwgaTJzX211eF9tYXBfZW51bSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf a2NvbnRyb2xfbmV3IGkyczlfb3V0X211eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSTJT OSBPdXQgU2VsZWN0IiwgaTJzX211eF9tYXBfZW51bSk7DQorDQorLyogVGlueWNvbm4gTXV4ICov DQorZW51bSB7DQorCVRJTllDT05OX0NIMV9NVVhfREwxID0gMHgwLA0KKwlUSU5ZQ09OTl9DSDJf TVVYX0RMMSA9IDB4MSwNCisJVElOWUNPTk5fQ0gxX01VWF9ETDEyID0gMHgyLA0KKwlUSU5ZQ09O Tl9DSDJfTVVYX0RMMTIgPSAweDMsDQorCVRJTllDT05OX0NIMV9NVVhfREwyID0gMHg0LA0KKwlU SU5ZQ09OTl9DSDJfTVVYX0RMMiA9IDB4NSwNCisJVElOWUNPTk5fQ0gxX01VWF9ETDMgPSAweDYs DQorCVRJTllDT05OX0NIMl9NVVhfREwzID0gMHg3LA0KKwlUSU5ZQ09OTl9NVVhfTk9ORSA9IDB4 MWYsDQorfTsNCisNCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHRpbnljb25uX211eF9tYXBb XSA9IHsNCisJIk5PTkUiLA0KKwkiREwxX0NIMSIsDQorCSJETDFfQ0gyIiwNCisJIkRMMTJfQ0gx IiwNCisJIkRMMTJfQ0gyIiwNCisJIkRMMl9DSDEiLA0KKwkiREwyX0NIMiIsDQorCSJETDNfQ0gx IiwNCisJIkRMM19DSDIiLA0KK307DQorDQorc3RhdGljIGludCB0aW55Y29ubl9tdXhfbWFwX3Zh bHVlW10gPSB7DQorCVRJTllDT05OX01VWF9OT05FLA0KKwlUSU5ZQ09OTl9DSDFfTVVYX0RMMSwN CisJVElOWUNPTk5fQ0gyX01VWF9ETDEsDQorCVRJTllDT05OX0NIMV9NVVhfREwxMiwNCisJVElO WUNPTk5fQ0gyX01VWF9ETDEyLA0KKwlUSU5ZQ09OTl9DSDFfTVVYX0RMMiwNCisJVElOWUNPTk5f Q0gyX01VWF9ETDIsDQorCVRJTllDT05OX0NIMV9NVVhfREwzLA0KKwlUSU5ZQ09OTl9DSDJfTVVY X0RMMywNCit9Ow0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTChpMnMxX3Rp bnljb25uX2NoMV9tdXhfbWFwX2VudW0sDQorCQkJCSAgQUZFX1RJTllfQ09OTjUsDQorCQkJCSAg T18yMF9DRkdfU0ZULA0KKwkJCQkgIE9fMjBfQ0ZHX01BU0ssDQorCQkJCSAgdGlueWNvbm5fbXV4 X21hcCwNCisJCQkJICB0aW55Y29ubl9tdXhfbWFwX3ZhbHVlKTsNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9rY29udHJvbF9uZXcgaTJzMV90aW55Y29ubl9jaDFfbXV4X2NvbnRyb2wgPQ0KKwlT T0NfREFQTV9FTlVNKCJpMnMxIGNoMSB0aW55Y29ubiBTZWxlY3QiLA0KKwkJICAgICAgaTJzMV90 aW55Y29ubl9jaDFfbXV4X21hcF9lbnVtKTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lO R0xFX0RFQ0woaTJzMV90aW55Y29ubl9jaDJfbXV4X21hcF9lbnVtLA0KKwkJCQkgIEFGRV9USU5Z X0NPTk41LA0KKwkJCQkgIE9fMjFfQ0ZHX1NGVCwNCisJCQkJICBPXzIxX0NGR19NQVNLLA0KKwkJ CQkgIHRpbnljb25uX211eF9tYXAsDQorCQkJCSAgdGlueWNvbm5fbXV4X21hcF92YWx1ZSk7DQor c3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGkyczFfdGlueWNvbm5fY2gyX211 eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiaTJzMSBjaDIgdGlueWNvbm4gU2VsZWN0IiwN CisJCSAgICAgIGkyczFfdGlueWNvbm5fY2gyX211eF9tYXBfZW51bSk7DQorDQorc3RhdGljIFNP Q19WQUxVRV9FTlVNX1NJTkdMRV9ERUNMKGkyczNfdGlueWNvbm5fY2gxX211eF9tYXBfZW51bSwN CisJCQkJICBBRkVfVElOWV9DT05ONSwNCisJCQkJICBPXzIyX0NGR19TRlQsDQorCQkJCSAgT18y Ml9DRkdfTUFTSywNCisJCQkJICB0aW55Y29ubl9tdXhfbWFwLA0KKwkJCQkgIHRpbnljb25uX211 eF9tYXBfdmFsdWUpOw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnMz X3Rpbnljb25uX2NoMV9tdXhfY29udHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oImkyczMgY2gxIHRp bnljb25uIFNlbGVjdCIsDQorCQkgICAgICBpMnMzX3Rpbnljb25uX2NoMV9tdXhfbWFwX2VudW0p Ow0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTChpMnMzX3Rpbnljb25uX2No Ml9tdXhfbWFwX2VudW0sDQorCQkJCSAgQUZFX1RJTllfQ09OTjUsDQorCQkJCSAgT18yM19DRkdf U0ZULA0KKwkJCQkgIE9fMjNfQ0ZHX01BU0ssDQorCQkJCSAgdGlueWNvbm5fbXV4X21hcCwNCisJ CQkJICB0aW55Y29ubl9tdXhfbWFwX3ZhbHVlKTsNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9r Y29udHJvbF9uZXcgaTJzM190aW55Y29ubl9jaDJfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9F TlVNKCJpMnMzIGNoMiB0aW55Y29ubiBTZWxlY3QiLA0KKwkJICAgICAgaTJzM190aW55Y29ubl9j aDJfbXV4X21hcF9lbnVtKTsNCisNCisvKiBpMnMgaW4gbHBiayAqLw0KK3N0YXRpYyBjb25zdCBj aGFyICogY29uc3QgaTJzX2xwYmtfbXV4X21hcFtdID0gew0KKwkiTm9ybWFsIiwgIkxwYmsiLA0K K307DQorDQorc3RhdGljIGludCBpMnNfbHBia19tdXhfbWFwX3ZhbHVlW10gPSB7DQorCTAsIDEs DQorfTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0FVVE9ESVNBQkxFX0RFQ0wo aTJzMF9scGJrX211eF9tYXBfZW51bSwNCisJCQkJCSAgICAgIEFGRV9JMlNfQ09OLA0KKwkJCQkJ ICAgICAgSTJTX0xPT1BCQUNLX1NGVCwNCisJCQkJCSAgICAgIDEsDQorCQkJCQkgICAgICBpMnNf bHBia19tdXhfbWFwLA0KKwkJCQkJICAgICAgaTJzX2xwYmtfbXV4X21hcF92YWx1ZSk7DQorDQor c3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGkyczBfbHBia19tdXhfY29udHJv bCA9DQorCVNPQ19EQVBNX0VOVU0oIkkyUyBMcGJrIFNlbGVjdCIsIGkyczBfbHBia19tdXhfbWFw X2VudW0pOw0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfQVVUT0RJU0FCTEVfREVD TChpMnMyX2xwYmtfbXV4X21hcF9lbnVtLA0KKwkJCQkJICAgICAgQUZFX0kyU19DT04yLA0KKwkJ CQkJICAgICAgSTJTM19MT09QQkFDS19TRlQsDQorCQkJCQkgICAgICAxLA0KKwkJCQkJICAgICAg aTJzX2xwYmtfbXV4X21hcCwNCisJCQkJCSAgICAgIGkyc19scGJrX211eF9tYXBfdmFsdWUpOw0K Kw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnMyX2xwYmtfbXV4X2Nv bnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJJMlMgTHBiayBTZWxlY3QiLCBpMnMyX2xwYmtfbXV4 X21hcF9lbnVtKTsNCisNCisvKiBpbnRlcmNvbm5lY3Rpb24gKi8NCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9rY29udHJvbF9uZXcgbXRrX2kyczNfY2gxX21peFtdID0gew0KKwlTT0NfREFQTV9T SU5HTEVfQVVUT0RJU0FCTEUoIkRMMV9DSDEiLCBBRkVfQ09OTjAsIElfREwxX0NIMSwgMSwgMCks DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwyX0NIMSIsIEFGRV9DT05OMCwgSV9E TDJfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDNfQ0gxIiwg QUZFX0NPTk4wLCBJX0RMM19DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FC TEUoIkRMMTJfQ0gxIiwgQUZFX0NPTk4wLCBJX0RMMTJfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1f U0lOR0xFX0FVVE9ESVNBQkxFKCJETDZfQ0gxIiwgQUZFX0NPTk4wXzEsIElfREw2X0NIMSwgMSwg MCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw0X0NIMSIsIEFGRV9DT05OMF8x LCBJX0RMNF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNV9D SDEiLCBBRkVfQ09OTjBfMSwgSV9ETDVfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FV VE9ESVNBQkxFKCJETDhfQ0gxIiwgQUZFX0NPTk4wXzEsIElfREw4X0NIMSwgMSwgMCksDQorCVNP Q19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw5X0NIMSIsIEFGRV9DT05OMF8xLCBJX0RMOV9D SDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkdBSU4xX09VVF9DSDEi LCBBRkVfQ09OTjAsDQorCQkJCSAgICBJX0dBSU4xX09VVF9DSDEsIDEsIDApLA0KKwlTT0NfREFQ TV9TSU5HTEVfQVVUT0RJU0FCTEUoIkFEREFfVUxfQ0gxIiwgQUZFX0NPTk4wLA0KKwkJCQkgICAg SV9BRERBX1VMX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiQURE QV9VTF9DSDIiLCBBRkVfQ09OTjAsDQorCQkJCSAgICBJX0FEREFfVUxfQ0gyLCAxLCAwKSwNCisJ U09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMyIsIEFGRV9DT05OMCwNCisJ CQkJICAgIElfQUREQV9VTF9DSDMsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FC TEUoIlBDTV8xX0NBUF9DSDEiLCBBRkVfQ09OTjAsDQorCQkJCSAgICBJX1BDTV8xX0NBUF9DSDEs IDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8yX0NBUF9DSDEiLCBB RkVfQ09OTjAsDQorCQkJCSAgICBJX1BDTV8yX0NBUF9DSDEsIDEsIDApLA0KK307DQorDQorc3Rh dGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG10a19pMnMzX2NoMl9taXhbXSA9IHsN CisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDFfQ0gyIiwgQUZFX0NPTk4xLCBJX0RM MV9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMl9DSDIiLCBB RkVfQ09OTjEsIElfREwyX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJM RSgiREwzX0NIMiIsIEFGRV9DT05OMSwgSV9ETDNfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lO R0xFX0FVVE9ESVNBQkxFKCJETDEyX0NIMiIsIEFGRV9DT05OMSwgSV9ETDEyX0NIMiwgMSwgMCks DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw2X0NIMiIsIEFGRV9DT05OMV8xLCBJ X0RMNl9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNF9DSDIi LCBBRkVfQ09OTjFfMSwgSV9ETDRfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJETDVfQ0gyIiwgQUZFX0NPTk4xXzEsIElfREw1X0NIMiwgMSwgMCksDQorCVNPQ19E QVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw4X0NIMiIsIEFGRV9DT05OMV8xLCBJX0RMOF9DSDIs IDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMOV9DSDIiLCBBRkVfQ09O TjFfMSwgSV9ETDlfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJH QUlOMV9PVVRfQ0gyIiwgQUZFX0NPTk4xLA0KKwkJCQkgICAgSV9HQUlOMV9PVVRfQ0gyLCAxLCAw KSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMSIsIEFGRV9DT05O MSwNCisJCQkJICAgIElfQUREQV9VTF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVU T0RJU0FCTEUoIkFEREFfVUxfQ0gyIiwgQUZFX0NPTk4xLA0KKwkJCQkgICAgSV9BRERBX1VMX0NI MiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiQUREQV9VTF9DSDMiLCBB RkVfQ09OTjEsDQorCQkJCSAgICBJX0FEREFfVUxfQ0gzLCAxLCAwKSwNCisJU09DX0RBUE1fU0lO R0xFX0FVVE9ESVNBQkxFKCJQQ01fMV9DQVBfQ0gxIiwgQUZFX0NPTk4xLA0KKwkJCQkgICAgSV9Q Q01fMV9DQVBfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJQQ01f Ml9DQVBfQ0gxIiwgQUZFX0NPTk4xLA0KKwkJCQkgICAgSV9QQ01fMl9DQVBfQ0gxLCAxLCAwKSwN CisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJQQ01fMV9DQVBfQ0gyIiwgQUZFX0NPTk4x LA0KKwkJCQkgICAgSV9QQ01fMV9DQVBfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FV VE9ESVNBQkxFKCJQQ01fMl9DQVBfQ0gyIiwgQUZFX0NPTk4xLA0KKwkJCQkgICAgSV9QQ01fMl9D QVBfQ0gyLCAxLCAwKSwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9s X25ldyBtdGtfaTJzMV9jaDFfbWl4W10gPSB7DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJM RSgiREwxX0NIMSIsIEFGRV9DT05OMjgsIElfREwxX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJ TkdMRV9BVVRPRElTQUJMRSgiREwyX0NIMSIsIEFGRV9DT05OMjgsIElfREwyX0NIMSwgMSwgMCks DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwzX0NIMSIsIEFGRV9DT05OMjgsIElf REwzX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwxMl9DSDEi LCBBRkVfQ09OTjI4LCBJX0RMMTJfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJETDZfQ0gxIiwgQUZFX0NPTk4yOF8xLCBJX0RMNl9DSDEsIDEsIDApLA0KKwlTT0Nf REFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNF9DSDEiLCBBRkVfQ09OTjI4XzEsIElfREw0X0NI MSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw1X0NIMSIsIEFGRV9D T05OMjhfMSwgSV9ETDVfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxF KCJETDhfQ0gxIiwgQUZFX0NPTk4yOF8xLCBJX0RMOF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9T SU5HTEVfQVVUT0RJU0FCTEUoIkRMOV9DSDEiLCBBRkVfQ09OTjI4XzEsIElfREw5X0NIMSwgMSwg MCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiR0FJTjFfT1VUX0NIMSIsIEFGRV9D T05OMjgsDQorCQkJCSAgICBJX0dBSU4xX09VVF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5H TEVfQVVUT0RJU0FCTEUoIkFEREFfVUxfQ0gxIiwgQUZFX0NPTk4yOCwNCisJCQkJICAgIElfQURE QV9VTF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8xX0NB UF9DSDEiLCBBRkVfQ09OTjI4LA0KKwkJCQkgICAgSV9QQ01fMV9DQVBfQ0gxLCAxLCAwKSwNCisJ U09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJQQ01fMl9DQVBfQ0gxIiwgQUZFX0NPTk4yOCwN CisJCQkJICAgIElfUENNXzJfQ0FQX0NIMSwgMSwgMCksDQorfTsNCisNCitzdGF0aWMgY29uc3Qg c3RydWN0IHNuZF9rY29udHJvbF9uZXcgbXRrX2kyczFfY2gyX21peFtdID0gew0KKwlTT0NfREFQ TV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMV9DSDIiLCBBRkVfQ09OTjI5LCBJX0RMMV9DSDIsIDEs IDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMl9DSDIiLCBBRkVfQ09OTjI5 LCBJX0RMMl9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMM19D SDIiLCBBRkVfQ09OTjI5LCBJX0RMM19DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVU T0RJU0FCTEUoIkRMMTJfQ0gyIiwgQUZFX0NPTk4yOSwgSV9ETDEyX0NIMiwgMSwgMCksDQorCVNP Q19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw2X0NIMiIsIEFGRV9DT05OMjlfMSwgSV9ETDZf Q0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDRfQ0gyIiwgQUZF X0NPTk4yOV8xLCBJX0RMNF9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FC TEUoIkRMNV9DSDIiLCBBRkVfQ09OTjI5XzEsIElfREw1X0NIMiwgMSwgMCksDQorCVNPQ19EQVBN X1NJTkdMRV9BVVRPRElTQUJMRSgiREw4X0NIMiIsIEFGRV9DT05OMjlfMSwgSV9ETDhfQ0gyLCAx LCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDlfQ0gyIiwgQUZFX0NPTk4y OV8xLCBJX0RMOV9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkdB SU4xX09VVF9DSDIiLCBBRkVfQ09OTjI5LA0KKwkJCQkgICAgSV9HQUlOMV9PVVRfQ0gyLCAxLCAw KSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMiIsIEFGRV9DT05O MjksDQorCQkJCSAgICBJX0FEREFfVUxfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FV VE9ESVNBQkxFKCJQQ01fMV9DQVBfQ0gxIiwgQUZFX0NPTk4yOSwNCisJCQkJICAgIElfUENNXzFf Q0FQX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiUENNXzJfQ0FQ X0NIMSIsIEFGRV9DT05OMjksDQorCQkJCSAgICBJX1BDTV8yX0NBUF9DSDEsIDEsIDApLA0KKwlT T0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8xX0NBUF9DSDIiLCBBRkVfQ09OTjI5LA0K KwkJCQkgICAgSV9QQ01fMV9DQVBfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJQQ01fMl9DQVBfQ0gyIiwgQUZFX0NPTk4yOSwNCisJCQkJICAgIElfUENNXzJfQ0FQ X0NIMiwgMSwgMCksDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9u ZXcgbXRrX2kyczVfY2gxX21peFtdID0gew0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUo IkRMMV9DSDEiLCBBRkVfQ09OTjMwLCBJX0RMMV9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5H TEVfQVVUT0RJU0FCTEUoIkRMMl9DSDEiLCBBRkVfQ09OTjMwLCBJX0RMMl9DSDEsIDEsIDApLA0K KwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMM19DSDEiLCBBRkVfQ09OTjMwLCBJX0RM M19DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMTJfQ0gxIiwg QUZFX0NPTk4zMCwgSV9ETDEyX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElT QUJMRSgiREw2X0NIMSIsIEFGRV9DT05OMzBfMSwgSV9ETDZfQ0gxLCAxLCAwKSwNCisJU09DX0RB UE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDRfQ0gxIiwgQUZFX0NPTk4zMF8xLCBJX0RMNF9DSDEs IDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNV9DSDEiLCBBRkVfQ09O TjMwXzEsIElfREw1X0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgi REw4X0NIMSIsIEFGRV9DT05OMzBfMSwgSV9ETDhfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lO R0xFX0FVVE9ESVNBQkxFKCJETDlfQ0gxIiwgQUZFX0NPTk4zMF8xLCBJX0RMOV9DSDEsIDEsIDAp LA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkdBSU4xX09VVF9DSDEiLCBBRkVfQ09O TjMwLA0KKwkJCQkgICAgSV9HQUlOMV9PVVRfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xF X0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMSIsIEFGRV9DT05OMzAsDQorCQkJCSAgICBJX0FEREFf VUxfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJQQ01fMV9DQVBf Q0gxIiwgQUZFX0NPTk4zMCwNCisJCQkJICAgIElfUENNXzFfQ0FQX0NIMSwgMSwgMCksDQorCVNP Q19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiUENNXzJfQ0FQX0NIMSIsIEFGRV9DT05OMzAsDQor CQkJCSAgICBJX1BDTV8yX0NBUF9DSDEsIDEsIDApLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0 cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG10a19pMnM1X2NoMl9taXhbXSA9IHsNCisJU09DX0RBUE1f U0lOR0xFX0FVVE9ESVNBQkxFKCJETDFfQ0gyIiwgQUZFX0NPTk4zMSwgSV9ETDFfQ0gyLCAxLCAw KSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDJfQ0gyIiwgQUZFX0NPTk4zMSwg SV9ETDJfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDNfQ0gy IiwgQUZFX0NPTk4zMSwgSV9ETDNfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJETDEyX0NIMiIsIEFGRV9DT05OMzEsIElfREwxMl9DSDIsIDEsIDApLA0KKwlTT0Nf REFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNl9DSDIiLCBBRkVfQ09OTjMxXzEsIElfREw2X0NI MiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw0X0NIMiIsIEFGRV9D T05OMzFfMSwgSV9ETDRfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxF KCJETDVfQ0gyIiwgQUZFX0NPTk4zMV8xLCBJX0RMNV9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9T SU5HTEVfQVVUT0RJU0FCTEUoIkRMOF9DSDIiLCBBRkVfQ09OTjMxXzEsIElfREw4X0NIMiwgMSwg MCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw5X0NIMiIsIEFGRV9DT05OMzFf MSwgSV9ETDlfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJHQUlO MV9PVVRfQ0gyIiwgQUZFX0NPTk4zMSwNCisJCQkJICAgIElfR0FJTjFfT1VUX0NIMiwgMSwgMCks DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiQUREQV9VTF9DSDIiLCBBRkVfQ09OTjMx LA0KKwkJCQkgICAgSV9BRERBX1VMX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRP RElTQUJMRSgiUENNXzFfQ0FQX0NIMSIsIEFGRV9DT05OMzEsDQorCQkJCSAgICBJX1BDTV8xX0NB UF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8yX0NBUF9D SDEiLCBBRkVfQ09OTjMxLA0KKwkJCQkgICAgSV9QQ01fMl9DQVBfQ0gxLCAxLCAwKSwNCisJU09D X0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJQQ01fMV9DQVBfQ0gyIiwgQUZFX0NPTk4zMSwNCisJ CQkJICAgIElfUENNXzFfQ0FQX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElT QUJMRSgiUENNXzJfQ0FQX0NIMiIsIEFGRV9DT05OMzEsDQorCQkJCSAgICBJX1BDTV8yX0NBUF9D SDIsIDEsIDApLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3 IG10a19pMnM3X2NoMV9taXhbXSA9IHsNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJE TDFfQ0gxIiwgQUZFX0NPTk41NCwgSV9ETDFfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xF X0FVVE9ESVNBQkxFKCJETDJfQ0gxIiwgQUZFX0NPTk41NCwgSV9ETDJfQ0gxLCAxLCAwKSwNCisJ U09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDNfQ0gxIiwgQUZFX0NPTk41NCwgSV9ETDNf Q0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDEyX0NIMSIsIEFG RV9DT05ONTQsIElfREwxMl9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FC TEUoIkRMNl9DSDEiLCBBRkVfQ09OTjU0XzEsIElfREw2X0NIMSwgMSwgMCksDQorCVNPQ19EQVBN X1NJTkdMRV9BVVRPRElTQUJMRSgiREw0X0NIMSIsIEFGRV9DT05ONTRfMSwgSV9ETDRfQ0gxLCAx LCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDVfQ0gxIiwgQUZFX0NPTk41 NF8xLCBJX0RMNV9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRM OV9DSDEiLCBBRkVfQ09OTjU0XzEsIElfREw5X0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdM RV9BVVRPRElTQUJMRSgiR0FJTjFfT1VUX0NIMSIsIEFGRV9DT05ONTQsDQorCQkJCSAgICBJX0dB SU4xX09VVF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkFEREFf VUxfQ0gxIiwgQUZFX0NPTk41NCwNCisJCQkJICAgIElfQUREQV9VTF9DSDEsIDEsIDApLA0KKwlT T0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8xX0NBUF9DSDEiLCBBRkVfQ09OTjU0LA0K KwkJCQkgICAgSV9QQ01fMV9DQVBfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJQQ01fMl9DQVBfQ0gxIiwgQUZFX0NPTk41NCwNCisJCQkJICAgIElfUENNXzJfQ0FQ X0NIMSwgMSwgMCksDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9u ZXcgbXRrX2kyczdfY2gyX21peFtdID0gew0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUo IkRMMV9DSDIiLCBBRkVfQ09OTjU1LCBJX0RMMV9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5H TEVfQVVUT0RJU0FCTEUoIkRMMl9DSDIiLCBBRkVfQ09OTjU1LCBJX0RMMl9DSDIsIDEsIDApLA0K KwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMM19DSDIiLCBBRkVfQ09OTjU1LCBJX0RM M19DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMTJfQ0gyIiwg QUZFX0NPTk41NSwgSV9ETDEyX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElT QUJMRSgiREw2X0NIMiIsIEFGRV9DT05ONTVfMSwgSV9ETDZfQ0gyLCAxLCAwKSwNCisJU09DX0RB UE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDRfQ0gyIiwgQUZFX0NPTk41NV8xLCBJX0RMNF9DSDIs IDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNV9DSDIiLCBBRkVfQ09O TjU1XzEsIElfREw1X0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgi REw5X0NIMiIsIEFGRV9DT05ONTVfMSwgSV9ETDlfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lO R0xFX0FVVE9ESVNBQkxFKCJHQUlOMV9PVVRfQ0gyIiwgQUZFX0NPTk41NSwNCisJCQkJICAgIElf R0FJTjFfT1VUX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiQURE QV9VTF9DSDIiLCBBRkVfQ09OTjU1LA0KKwkJCQkgICAgSV9BRERBX1VMX0NIMiwgMSwgMCksDQor CVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiUENNXzFfQ0FQX0NIMSIsIEFGRV9DT05ONTUs DQorCQkJCSAgICBJX1BDTV8xX0NBUF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVU T0RJU0FCTEUoIlBDTV8yX0NBUF9DSDEiLCBBRkVfQ09OTjU1LA0KKwkJCQkgICAgSV9QQ01fMl9D QVBfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJQQ01fMV9DQVBf Q0gyIiwgQUZFX0NPTk41NSwNCisJCQkJICAgIElfUENNXzFfQ0FQX0NIMiwgMSwgMCksDQorCVNP Q19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiUENNXzJfQ0FQX0NIMiIsIEFGRV9DT05ONTUsDQor CQkJCSAgICBJX1BDTV8yX0NBUF9DSDIsIDEsIDApLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0 cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG10a19pMnM5X2NoMV9taXhbXSA9IHsNCisJU09DX0RBUE1f U0lOR0xFX0FVVE9ESVNBQkxFKCJETDFfQ0gxIiwgQUZFX0NPTk41NiwgSV9ETDFfQ0gxLCAxLCAw KSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDJfQ0gxIiwgQUZFX0NPTk41Niwg SV9ETDJfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDNfQ0gx IiwgQUZFX0NPTk41NiwgSV9ETDNfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJETDEyX0NIMSIsIEFGRV9DT05ONTYsIElfREwxMl9DSDEsIDEsIDApLA0KKwlTT0Nf REFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNl9DSDEiLCBBRkVfQ09OTjU2XzEsIElfREw2X0NI MSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw0X0NIMSIsIEFGRV9D T05ONTZfMSwgSV9ETDRfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxF KCJETDVfQ0gxIiwgQUZFX0NPTk41Nl8xLCBJX0RMNV9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9T SU5HTEVfQVVUT0RJU0FCTEUoIkRMOF9DSDEiLCBBRkVfQ09OTjU2XzEsIElfREw4X0NIMSwgMSwg MCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw5X0NIMSIsIEFGRV9DT05ONTZf MSwgSV9ETDlfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJHQUlO MV9PVVRfQ0gxIiwgQUZFX0NPTk41NiwNCisJCQkJICAgIElfR0FJTjFfT1VUX0NIMSwgMSwgMCks DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiQUREQV9VTF9DSDEiLCBBRkVfQ09OTjU2 LA0KKwkJCQkgICAgSV9BRERBX1VMX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRP RElTQUJMRSgiUENNXzFfQ0FQX0NIMSIsIEFGRV9DT05ONTYsDQorCQkJCSAgICBJX1BDTV8xX0NB UF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8yX0NBUF9D SDEiLCBBRkVfQ09OTjU2LA0KKwkJCQkgICAgSV9QQ01fMl9DQVBfQ0gxLCAxLCAwKSwNCit9Ow0K Kw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBtdGtfaTJzOV9jaDJfbWl4 W10gPSB7DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwxX0NIMiIsIEFGRV9DT05O NTcsIElfREwxX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwy X0NIMiIsIEFGRV9DT05ONTcsIElfREwyX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9B VVRPRElTQUJMRSgiREwzX0NIMiIsIEFGRV9DT05ONTcsIElfREwzX0NIMiwgMSwgMCksDQorCVNP Q19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwxMl9DSDIiLCBBRkVfQ09OTjU3LCBJX0RMMTJf Q0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDZfQ0gyIiwgQUZF X0NPTk41N18xLCBJX0RMNl9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FC TEUoIkRMNF9DSDIiLCBBRkVfQ09OTjU3XzEsIElfREw0X0NIMiwgMSwgMCksDQorCVNPQ19EQVBN X1NJTkdMRV9BVVRPRElTQUJMRSgiREw1X0NIMiIsIEFGRV9DT05ONTdfMSwgSV9ETDVfQ0gyLCAx LCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDhfQ0gyIiwgQUZFX0NPTk41 N18xLCBJX0RMOF9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRM OV9DSDIiLCBBRkVfQ09OTjU3XzEsIElfREw5X0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdM RV9BVVRPRElTQUJMRSgiR0FJTjFfT1VUX0NIMiIsIEFGRV9DT05ONTcsDQorCQkJCSAgICBJX0dB SU4xX09VVF9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkFEREFf VUxfQ0gyIiwgQUZFX0NPTk41NywNCisJCQkJICAgIElfQUREQV9VTF9DSDIsIDEsIDApLA0KKwlT T0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8xX0NBUF9DSDEiLCBBRkVfQ09OTjU3LA0K KwkJCQkgICAgSV9QQ01fMV9DQVBfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJQQ01fMl9DQVBfQ0gxIiwgQUZFX0NPTk41NywNCisJCQkJICAgIElfUENNXzJfQ0FQ X0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiUENNXzFfQ0FQX0NI MiIsIEFGRV9DT05ONTcsDQorCQkJCSAgICBJX1BDTV8xX0NBUF9DSDIsIDEsIDApLA0KKwlTT0Nf REFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8yX0NBUF9DSDIiLCBBRkVfQ09OTjU3LA0KKwkJ CQkgICAgSV9QQ01fMl9DQVBfQ0gyLCAxLCAwKSwNCit9Ow0KKw0KK2VudW0gew0KKwlTVVBQTFlf U0VRX0FQTEwsDQorCVNVUFBMWV9TRVFfSTJTX01DTEtfRU4sDQorCVNVUFBMWV9TRVFfSTJTX0hE X0VOLA0KKwlTVVBQTFlfU0VRX0kyU19FTiwNCit9Ow0KKw0KK3N0YXRpYyBpbnQgbXRrX2kyc19l bl9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkgICAgc3RydWN0IHNu ZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRh cG0pOw0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRf ZHJ2ZGF0YShjbXBudCk7DQorCXN0cnVjdCBtdGtfYWZlX2kyc19wcml2ICppMnNfcHJpdjsNCisN CisJaTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZfYnlfbmFtZShhZmUsIHctPm5hbWUpOw0KKw0KKwlp ZiAoIWkyc19wcml2KSB7DQorCQlkZXZfd2FybihhZmUtPmRldiwgIiVzKCksIGkyc19wcml2ID09 IE5VTEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlkZXZfZGJn KGNtcG50LT5kZXYsICIlcygpLCBuYW1lICVzLCBldmVudCAweCV4XG4iLA0KKwkJX19mdW5jX18s IHctPm5hbWUsIGV2ZW50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0Nf REFQTV9QUkVfUE1VOg0KKwkJbXQ4MTkyX2FmZV9ncGlvX3JlcXVlc3QoYWZlLT5kZXYsIHRydWUs IGkyc19wcml2LT5pZCwgMCk7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9Q TUQ6DQorCQltdDgxOTJfYWZlX2dwaW9fcmVxdWVzdChhZmUtPmRldiwgZmFsc2UsIGkyc19wcml2 LT5pZCwgMCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10a19hcGxsX2V2ZW50KHN0cnVjdCBzbmRfc29j X2RhcG1fd2lkZ2V0ICp3LA0KKwkJCSAgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQor CQkJICBpbnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0g c25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19iYXNlX2Fm ZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlkZXZf ZGJnKGNtcG50LT5kZXYsICIlcygpLCBuYW1lICVzLCBldmVudCAweCV4XG4iLA0KKwkJX19mdW5j X18sIHctPm5hbWUsIGV2ZW50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9T T0NfREFQTV9QUkVfUE1VOg0KKwkJaWYgKHN0cmNtcCh3LT5uYW1lLCBBUExMMV9XX05BTUUpID09 IDApDQorCQkJbXQ4MTkyX2FwbGwxX2VuYWJsZShhZmUpOw0KKwkJZWxzZQ0KKwkJCW10ODE5Ml9h cGxsMl9lbmFibGUoYWZlKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BN RDoNCisJCWlmIChzdHJjbXAody0+bmFtZSwgQVBMTDFfV19OQU1FKSA9PSAwKQ0KKwkJCW10ODE5 Ml9hcGxsMV9kaXNhYmxlKGFmZSk7DQorCQllbHNlDQorCQkJbXQ4MTkyX2FwbGwyX2Rpc2FibGUo YWZlKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgaTJzX291dF90aW55Y29ubl9ldmVudChzdHJ1Y3Qgc25k X3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkJICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwNCisJCQkJICBpbnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNt cG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19i YXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwl1 bnNpZ25lZCBpbnQgcmVnOw0KKwl1bnNpZ25lZCBpbnQgcmVnX3NoaWZ0Ow0KKwl1bnNpZ25lZCBp bnQgcmVnX21hc2tfc2hpZnQ7DQorDQorCWRldl9kYmcoYWZlLT5kZXYsICIlcygpLCBldmVudCAw eCV4XG4iLCBfX2Z1bmNfXywgZXZlbnQpOw0KKw0KKwlpZiAoc3Ryc3RyKHctPm5hbWUsICJJMlMx IikpIHsNCisJCXJlZyA9IEFGRV9JMlNfQ09OMTsNCisJCXJlZ19zaGlmdCA9IEkyUzJfMzJCSVRf RU5fU0ZUOw0KKwkJcmVnX21hc2tfc2hpZnQgPSBJMlMyXzMyQklUX0VOX01BU0tfU0ZUOw0KKwl9 IGVsc2UgaWYgKHN0cnN0cih3LT5uYW1lLCAiSTJTMyIpKSB7DQorCQlyZWcgPSBBRkVfSTJTX0NP TjM7DQorCQlyZWdfc2hpZnQgPSBJMlM0XzMyQklUX0VOX1NGVDsNCisJCXJlZ19tYXNrX3NoaWZ0 ID0gSTJTNF8zMkJJVF9FTl9NQVNLX1NGVDsNCisJfSBlbHNlIGlmIChzdHJzdHIody0+bmFtZSwg IkkyUzUiKSkgew0KKwkJcmVnID0gQUZFX0kyU19DT040Ow0KKwkJcmVnX3NoaWZ0ID0gSTJTNV8z MkJJVF9FTl9TRlQ7DQorCQlyZWdfbWFza19zaGlmdCA9IEkyUzVfMzJCSVRfRU5fTUFTS19TRlQ7 DQorCX0gZWxzZSBpZiAoc3Ryc3RyKHctPm5hbWUsICJJMlM3IikpIHsNCisJCXJlZyA9IEFGRV9J MlNfQ09ONzsNCisJCXJlZ19zaGlmdCA9IEkyUzdfMzJCSVRfRU5fU0ZUOw0KKwkJcmVnX21hc2tf c2hpZnQgPSBJMlM3XzMyQklUX0VOX01BU0tfU0ZUOw0KKwl9IGVsc2UgaWYgKHN0cnN0cih3LT5u YW1lLCAiSTJTOSIpKSB7DQorCQlyZWcgPSBBRkVfSTJTX0NPTjk7DQorCQlyZWdfc2hpZnQgPSBJ MlM5XzMyQklUX0VOX1NGVDsNCisJCXJlZ19tYXNrX3NoaWZ0ID0gSTJTOV8zMkJJVF9FTl9NQVNL X1NGVDsNCisJfSBlbHNlIHsNCisJCXJlZyA9IEFGRV9JMlNfQ09OMTsNCisJCXJlZ19zaGlmdCA9 IEkyUzJfMzJCSVRfRU5fU0ZUOw0KKwkJcmVnX21hc2tfc2hpZnQgPSBJMlMyXzMyQklUX0VOX01B U0tfU0ZUOw0KKwkJZGV2X3dhcm4oYWZlLT5kZXYsICIlcygpLCBlcnJvciB3aWRnZXQgbmFtZSAl cywgdXNlIGkyczFcbiIsDQorCQkJIF9fZnVuY19fLCB3LT5uYW1lKTsNCisJfQ0KKw0KKwlzd2l0 Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6DQorCQlyZWdtYXBfdXBk YXRlX2JpdHMoYWZlLT5yZWdtYXAsIHJlZywgcmVnX21hc2tfc2hpZnQsDQorCQkJCSAgIDB4MSA8 PCByZWdfc2hpZnQpOw0KKwkJYnJlYWs7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTUQ6DQor CQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsIHJlZywgcmVnX21hc2tfc2hpZnQsDQor CQkJCSAgIDB4MCA8PCByZWdfc2hpZnQpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVh azsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdGtfbWNsa19lbl9l dmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkgICAgIHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFw bSk7DQorCXN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9k cnZkYXRhKGNtcG50KTsNCisJc3RydWN0IG10a19hZmVfaTJzX3ByaXYgKmkyc19wcml2Ow0KKw0K KwlkZXZfZGJnKGNtcG50LT5kZXYsICIlcygpLCBuYW1lICVzLCBldmVudCAweCV4XG4iLA0KKwkJ X19mdW5jX18sIHctPm5hbWUsIGV2ZW50KTsNCisNCisJaTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZf YnlfbmFtZShhZmUsIHctPm5hbWUpOw0KKwlpZiAoIWkyc19wcml2KSB7DQorCQlkZXZfd2Fybihh ZmUtPmRldiwgIiVzKCksIGkyc19wcml2ID09IE5VTEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4g LUVJTlZBTDsNCisJfQ0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05EX1NPQ19EQVBN X1BSRV9QTVU6DQorCQltdDgxOTJfbWNrX2VuYWJsZShhZmUsIGkyc19wcml2LT5tY2xrX2lkLCBp MnNfcHJpdi0+bWNsa19yYXRlKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NU X1BNRDoNCisJCWkyc19wcml2LT5tY2xrX3JhdGUgPSAwOw0KKwkJbXQ4MTkyX21ja19kaXNhYmxl KGFmZSwgaTJzX3ByaXYtPm1jbGtfaWQpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVh azsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf c29jX2RhcG1fd2lkZ2V0IG10a19kYWlfaTJzX3dpZGdldHNbXSA9IHsNCisJU05EX1NPQ19EQVBN X0lOUFVUKCJDT05OU1lTIiksDQorDQorCVNORF9TT0NfREFQTV9NSVhFUigiSTJTMV9DSDEiLCBT TkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgbXRrX2kyczFfY2gxX21peCwNCisJCQkgICBBUlJB WV9TSVpFKG10a19pMnMxX2NoMV9taXgpKSwNCisJU05EX1NPQ19EQVBNX01JWEVSKCJJMlMxX0NI MiIsIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICBtdGtfaTJzMV9jaDJfbWl4LA0KKwkJCSAg IEFSUkFZX1NJWkUobXRrX2kyczFfY2gyX21peCkpLA0KKw0KKwlTTkRfU09DX0RBUE1fTUlYRVIo IkkyUzNfQ0gxIiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgIG10a19pMnMzX2NoMV9taXgs DQorCQkJICAgQVJSQVlfU0laRShtdGtfaTJzM19jaDFfbWl4KSksDQorCVNORF9TT0NfREFQTV9N SVhFUigiSTJTM19DSDIiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgbXRrX2kyczNfY2gy X21peCwNCisJCQkgICBBUlJBWV9TSVpFKG10a19pMnMzX2NoMl9taXgpKSwNCisNCisJU05EX1NP Q19EQVBNX01JWEVSKCJJMlM1X0NIMSIsIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICBtdGtf aTJzNV9jaDFfbWl4LA0KKwkJCSAgIEFSUkFZX1NJWkUobXRrX2kyczVfY2gxX21peCkpLA0KKwlT TkRfU09DX0RBUE1fTUlYRVIoIkkyUzVfQ0gyIiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAg IG10a19pMnM1X2NoMl9taXgsDQorCQkJICAgQVJSQVlfU0laRShtdGtfaTJzNV9jaDJfbWl4KSks DQorDQorCVNORF9TT0NfREFQTV9NSVhFUigiSTJTN19DSDEiLCBTTkRfU09DX05PUE0sIDAsIDAs DQorCQkJICAgbXRrX2kyczdfY2gxX21peCwNCisJCQkgICBBUlJBWV9TSVpFKG10a19pMnM3X2No MV9taXgpKSwNCisJU05EX1NPQ19EQVBNX01JWEVSKCJJMlM3X0NIMiIsIFNORF9TT0NfTk9QTSwg MCwgMCwNCisJCQkgICBtdGtfaTJzN19jaDJfbWl4LA0KKwkJCSAgIEFSUkFZX1NJWkUobXRrX2ky czdfY2gyX21peCkpLA0KKw0KKwlTTkRfU09DX0RBUE1fTUlYRVIoIkkyUzlfQ0gxIiwgU05EX1NP Q19OT1BNLCAwLCAwLA0KKwkJCSAgIG10a19pMnM5X2NoMV9taXgsDQorCQkJICAgQVJSQVlfU0la RShtdGtfaTJzOV9jaDFfbWl4KSksDQorCVNORF9TT0NfREFQTV9NSVhFUigiSTJTOV9DSDIiLCBT TkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgbXRrX2kyczlfY2gyX21peCwNCisJCQkgICBBUlJB WV9TSVpFKG10a19pMnM5X2NoMl9taXgpKSwNCisNCisJU05EX1NPQ19EQVBNX01VWF9FKCJJMlMx X1RJTllDT05OX0NIMV9NVVgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgJmkyczFfdGlu eWNvbm5fY2gxX211eF9jb250cm9sLA0KKwkJCSAgIGkyc19vdXRfdGlueWNvbm5fZXZlbnQsDQor CQkJICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BNRCksDQorCVNO RF9TT0NfREFQTV9NVVhfRSgiSTJTMV9USU5ZQ09OTl9DSDJfTVVYIiwgU05EX1NPQ19OT1BNLCAw LCAwLA0KKwkJCSAgICZpMnMxX3Rpbnljb25uX2NoMl9tdXhfY29udHJvbCwNCisJCQkgICBpMnNf b3V0X3Rpbnljb25uX2V2ZW50LA0KKwkJCSAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NP Q19EQVBNX1BSRV9QTUQpLA0KKwlTTkRfU09DX0RBUE1fTVVYX0UoIkkyUzNfVElOWUNPTk5fQ0gx X01VWCIsIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICAmaTJzM190aW55Y29ubl9jaDFfbXV4 X2NvbnRyb2wsDQorCQkJICAgaTJzX291dF90aW55Y29ubl9ldmVudCwNCisJCQkgICBTTkRfU09D X0RBUE1fUFJFX1BNVSB8IFNORF9TT0NfREFQTV9QUkVfUE1EKSwNCisJU05EX1NPQ19EQVBNX01V WF9FKCJJMlMzX1RJTllDT05OX0NIMl9NVVgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAg JmkyczNfdGlueWNvbm5fY2gyX211eF9jb250cm9sLA0KKwkJCSAgIGkyc19vdXRfdGlueWNvbm5f ZXZlbnQsDQorCQkJICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BN RCksDQorDQorCS8qIGkycyBlbiovDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiSTJTMF9FTiIs IFNVUFBMWV9TRVFfSTJTX0VOLA0KKwkJCSAgICAgIEFGRV9JMlNfQ09OLCBJMlNfRU5fU0ZULCAw LA0KKwkJCSAgICAgIG10a19pMnNfZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BS RV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1Mo IkkyUzFfRU4iLCBTVVBQTFlfU0VRX0kyU19FTiwNCisJCQkgICAgICBBRkVfSTJTX0NPTjEsIEky U19FTl9TRlQsIDAsDQorCQkJICAgICAgbXRrX2kyc19lbl9ldmVudCwNCisJCQkgICAgICBTTkRf U09DX0RBUE1fUFJFX1BNVSB8IFNORF9TT0NfREFQTV9QT1NUX1BNRCksDQorCVNORF9TT0NfREFQ TV9TVVBQTFlfUygiSTJTMl9FTiIsIFNVUFBMWV9TRVFfSTJTX0VOLA0KKwkJCSAgICAgIEFGRV9J MlNfQ09OMiwgSTJTX0VOX1NGVCwgMCwNCisJCQkgICAgICBtdGtfaTJzX2VuX2V2ZW50LA0KKwkJ CSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisJ U05EX1NPQ19EQVBNX1NVUFBMWV9TKCJJMlMzX0VOIiwgU1VQUExZX1NFUV9JMlNfRU4sDQorCQkJ ICAgICAgQUZFX0kyU19DT04zLCBJMlNfRU5fU0ZULCAwLA0KKwkJCSAgICAgIG10a19pMnNfZW5f ZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9T VF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkkyUzVfRU4iLCBTVVBQTFlfU0VRX0ky U19FTiwNCisJCQkgICAgICBBRkVfSTJTX0NPTjQsIEkyUzVfRU5fU0ZULCAwLA0KKwkJCSAgICAg IG10a19pMnNfZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRf U09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkkyUzZfRU4iLCBT VVBQTFlfU0VRX0kyU19FTiwNCisJCQkgICAgICBBRkVfSTJTX0NPTjYsIEkyUzZfRU5fU0ZULCAw LA0KKwkJCSAgICAgIG10a19pMnNfZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BS RV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1Mo IkkyUzdfRU4iLCBTVVBQTFlfU0VRX0kyU19FTiwNCisJCQkgICAgICBBRkVfSTJTX0NPTjcsIEky UzdfRU5fU0ZULCAwLA0KKwkJCSAgICAgIG10a19pMnNfZW5fZXZlbnQsDQorCQkJICAgICAgU05E X1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RB UE1fU1VQUExZX1MoIkkyUzhfRU4iLCBTVVBQTFlfU0VRX0kyU19FTiwNCisJCQkgICAgICBBRkVf STJTX0NPTjgsIEkyUzhfRU5fU0ZULCAwLA0KKwkJCSAgICAgIG10a19pMnNfZW5fZXZlbnQsDQor CQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0K KwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkkyUzlfRU4iLCBTVVBQTFlfU0VRX0kyU19FTiwNCisJ CQkgICAgICBBRkVfSTJTX0NPTjksIEkyUzlfRU5fU0ZULCAwLA0KKwkJCSAgICAgIG10a19pMnNf ZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1f UE9TVF9QTUQpLA0KKwkvKiBpMnMgaGQgZW4gKi8NCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKEky UzBfSERfRU5fV19OQU1FLCBTVVBQTFlfU0VRX0kyU19IRF9FTiwNCisJCQkgICAgICBBRkVfSTJT X0NPTiwgSTJTMV9IRF9FTl9TRlQsIDAsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZ X1MoSTJTMV9IRF9FTl9XX05BTUUsIFNVUFBMWV9TRVFfSTJTX0hEX0VOLA0KKwkJCSAgICAgIEFG RV9JMlNfQ09OMSwgSTJTMl9IRF9FTl9TRlQsIDAsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1f U1VQUExZX1MoSTJTMl9IRF9FTl9XX05BTUUsIFNVUFBMWV9TRVFfSTJTX0hEX0VOLA0KKwkJCSAg ICAgIEFGRV9JMlNfQ09OMiwgSTJTM19IRF9FTl9TRlQsIDAsIE5VTEwsIDApLA0KKwlTTkRfU09D X0RBUE1fU1VQUExZX1MoSTJTM19IRF9FTl9XX05BTUUsIFNVUFBMWV9TRVFfSTJTX0hEX0VOLA0K KwkJCSAgICAgIEFGRV9JMlNfQ09OMywgSTJTNF9IRF9FTl9TRlQsIDAsIE5VTEwsIDApLA0KKwlT TkRfU09DX0RBUE1fU1VQUExZX1MoSTJTNV9IRF9FTl9XX05BTUUsIFNVUFBMWV9TRVFfSTJTX0hE X0VOLA0KKwkJCSAgICAgIEFGRV9JMlNfQ09ONCwgSTJTNV9IRF9FTl9TRlQsIDAsIE5VTEwsIDAp LA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTNl9IRF9FTl9XX05BTUUsIFNVUFBMWV9TRVFf STJTX0hEX0VOLA0KKwkJCSAgICAgIEFGRV9JMlNfQ09ONiwgSTJTNl9IRF9FTl9TRlQsIDAsIE5V TEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTN19IRF9FTl9XX05BTUUsIFNVUFBM WV9TRVFfSTJTX0hEX0VOLA0KKwkJCSAgICAgIEFGRV9JMlNfQ09ONywgSTJTN19IRF9FTl9TRlQs IDAsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTOF9IRF9FTl9XX05BTUUs IFNVUFBMWV9TRVFfSTJTX0hEX0VOLA0KKwkJCSAgICAgIEFGRV9JMlNfQ09OOCwgSTJTOF9IRF9F Tl9TRlQsIDAsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTOV9IRF9FTl9X X05BTUUsIFNVUFBMWV9TRVFfSTJTX0hEX0VOLA0KKwkJCSAgICAgIEFGRV9JMlNfQ09OOSwgSTJT OV9IRF9FTl9TRlQsIDAsIE5VTEwsIDApLA0KKw0KKwkvKiBpMnMgbWNsayBlbiAqLw0KKwlTTkRf U09DX0RBUE1fU1VQUExZX1MoSTJTMF9NQ0xLX0VOX1dfTkFNRSwgU1VQUExZX1NFUV9JMlNfTUNM S19FTiwNCisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRrX21jbGtf ZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1f UE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTMV9NQ0xLX0VOX1dfTkFNRSwg U1VQUExZX1NFUV9JMlNfTUNMS19FTiwNCisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQor CQkJICAgICAgbXRrX21jbGtfZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9Q TVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJT Ml9NQ0xLX0VOX1dfTkFNRSwgU1VQUExZX1NFUV9JMlNfTUNMS19FTiwNCisJCQkgICAgICBTTkRf U09DX05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRrX21jbGtfZW5fZXZlbnQsDQorCQkJICAgICAg U05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09D X0RBUE1fU1VQUExZX1MoSTJTM19NQ0xLX0VOX1dfTkFNRSwgU1VQUExZX1NFUV9JMlNfTUNMS19F TiwNCisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRrX21jbGtfZW5f ZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9T VF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTNV9NQ0xLX0VOX1dfTkFNRSwgU1VQ UExZX1NFUV9JMlNfTUNMS19FTiwNCisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJ ICAgICAgbXRrX21jbGtfZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUg fCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTNl9N Q0xLX0VOX1dfTkFNRSwgU1VQUExZX1NFUV9JMlNfTUNMS19FTiwNCisJCQkgICAgICBTTkRfU09D X05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRrX21jbGtfZW5fZXZlbnQsDQorCQkJICAgICAgU05E X1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RB UE1fU1VQUExZX1MoSTJTN19NQ0xLX0VOX1dfTkFNRSwgU1VQUExZX1NFUV9JMlNfTUNMS19FTiwN CisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRrX21jbGtfZW5fZXZl bnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9Q TUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTOF9NQ0xLX0VOX1dfTkFNRSwgU1VQUExZ X1NFUV9JMlNfTUNMS19FTiwNCisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAg ICAgbXRrX21jbGtfZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBT TkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoSTJTOV9NQ0xL X0VOX1dfTkFNRSwgU1VQUExZX1NFUV9JMlNfTUNMS19FTiwNCisJCQkgICAgICBTTkRfU09DX05P UE0sIDAsIDAsDQorCQkJICAgICAgbXRrX21jbGtfZW5fZXZlbnQsDQorCQkJICAgICAgU05EX1NP Q19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKw0KKwkvKiBhcGxsICov DQorCVNORF9TT0NfREFQTV9TVVBQTFlfUyhBUExMMV9XX05BTUUsIFNVUFBMWV9TRVFfQVBMTCwN CisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRrX2FwbGxfZXZlbnQs DQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQp LA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoQVBMTDJfV19OQU1FLCBTVVBQTFlfU0VRX0FQTEws DQorCQkJICAgICAgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgICAgIG10a19hcGxsX2V2ZW50 LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1RfUE1E KSwNCisNCisJLyogYWxsb3cgaTJzIG9uIHdpdGhvdXQgY29kZWMgb24gKi8NCisJU05EX1NPQ19E QVBNX09VVFBVVCgiSTJTX0RVTU1ZX09VVCIpLA0KKwlTTkRfU09DX0RBUE1fTVVYKCJJMlMxX091 dF9NdXgiLA0KKwkJCSBTTkRfU09DX05PUE0sIDAsIDAsICZpMnMxX291dF9tdXhfY29udHJvbCks DQorCVNORF9TT0NfREFQTV9NVVgoIkkyUzNfT3V0X011eCIsDQorCQkJIFNORF9TT0NfTk9QTSwg MCwgMCwgJmkyczNfb3V0X211eF9jb250cm9sKSwNCisJU05EX1NPQ19EQVBNX01VWCgiSTJTNV9P dXRfTXV4IiwNCisJCQkgU05EX1NPQ19OT1BNLCAwLCAwLCAmaTJzNV9vdXRfbXV4X2NvbnRyb2wp LA0KKwlTTkRfU09DX0RBUE1fTVVYKCJJMlM3X091dF9NdXgiLA0KKwkJCSBTTkRfU09DX05PUE0s IDAsIDAsICZpMnM3X291dF9tdXhfY29udHJvbCksDQorCVNORF9TT0NfREFQTV9NVVgoIkkyUzlf T3V0X011eCIsDQorCQkJIFNORF9TT0NfTk9QTSwgMCwgMCwgJmkyczlfb3V0X211eF9jb250cm9s KSwNCisNCisJU05EX1NPQ19EQVBNX0lOUFVUKCJJMlNfRFVNTVlfSU4iKSwNCisJU05EX1NPQ19E QVBNX01VWCgiSTJTMF9Jbl9NdXgiLA0KKwkJCSBTTkRfU09DX05PUE0sIDAsIDAsICZpMnMwX2lu X211eF9jb250cm9sKSwNCisJU05EX1NPQ19EQVBNX01VWCgiSTJTOF9Jbl9NdXgiLA0KKwkJCSBT TkRfU09DX05PUE0sIDAsIDAsICZpMnM4X2luX211eF9jb250cm9sKSwNCisNCisJLyogaTJzIGlu IGxwYmsgKi8NCisJU05EX1NPQ19EQVBNX01VWCgiSTJTMF9McGJrX011eCIsDQorCQkJIFNORF9T T0NfTk9QTSwgMCwgMCwgJmkyczBfbHBia19tdXhfY29udHJvbCksDQorCVNORF9TT0NfREFQTV9N VVgoIkkyUzJfTHBia19NdXgiLA0KKwkJCSBTTkRfU09DX05PUE0sIDAsIDAsICZpMnMyX2xwYmtf bXV4X2NvbnRyb2wpLA0KK307DQorDQorc3RhdGljIGludCBtdGtfYWZlX2kyc19zaGFyZV9jb25u ZWN0KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICpzb3VyY2UsDQorCQkJCSAgICAgc3RydWN0 IHNuZF9zb2NfZGFwbV93aWRnZXQgKnNpbmspDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19kYXBtX3dp ZGdldCAqdyA9IHNpbms7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRf c29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZlICph ZmUgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXN0cnVjdCBtdGtf YWZlX2kyc19wcml2ICppMnNfcHJpdjsNCisNCisJaTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZfYnlf bmFtZShhZmUsIHNpbmstPm5hbWUpOw0KKwlpZiAoIWkyc19wcml2KSB7DQorCQlkZXZfd2Fybihh ZmUtPmRldiwgIiVzKCksIGkyc19wcml2ID09IE5VTEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4g MDsNCisJfQ0KKw0KKwlpZiAoaTJzX3ByaXYtPnNoYXJlX2kyc19pZCA8IDApDQorCQlyZXR1cm4g MDsNCisNCisJcmV0dXJuIGkyc19wcml2LT5zaGFyZV9pMnNfaWQgPT0gZ2V0X2kyc19pZF9ieV9u YW1lKGFmZSwgc291cmNlLT5uYW1lKTsNCit9DQorDQorc3RhdGljIGludCBtdGtfYWZlX2kyc19o ZF9jb25uZWN0KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICpzb3VyY2UsDQorCQkJCSAgc3Ry dWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKnNpbmspDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19kYXBt X3dpZGdldCAqdyA9IHNpbms7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBz bmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZl ICphZmUgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXN0cnVjdCBt dGtfYWZlX2kyc19wcml2ICppMnNfcHJpdjsNCisNCisJaTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZf YnlfbmFtZShhZmUsIHNpbmstPm5hbWUpOw0KKwlpZiAoIWkyc19wcml2KSB7DQorCQlkZXZfd2Fy bihhZmUtPmRldiwgIiVzKCksIGkyc19wcml2ID09IE5VTEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1 cm4gMDsNCisJfQ0KKw0KKwlpZiAoZ2V0X2kyc19pZF9ieV9uYW1lKGFmZSwgc2luay0+bmFtZSkg PT0NCisJICAgIGdldF9pMnNfaWRfYnlfbmFtZShhZmUsIHNvdXJjZS0+bmFtZSkpDQorCQlyZXR1 cm4gaTJzX3ByaXYtPmxvd19qaXR0ZXJfZW47DQorDQorCS8qIGNoZWNrIGlmIHNoYXJlIGkycyBu ZWVkIGhkIGVuICovDQorCWlmIChpMnNfcHJpdi0+c2hhcmVfaTJzX2lkIDwgMCkNCisJCXJldHVy biAwOw0KKw0KKwlpZiAoaTJzX3ByaXYtPnNoYXJlX2kyc19pZCA9PSBnZXRfaTJzX2lkX2J5X25h bWUoYWZlLCBzb3VyY2UtPm5hbWUpKQ0KKwkJcmV0dXJuIGkyc19wcml2LT5sb3dfaml0dGVyX2Vu Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdGtfYWZlX2kyc19hcGxsX2Nv bm5lY3Qoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKnNvdXJjZSwNCisJCQkJICAgIHN0cnVj dCBzbmRfc29jX2RhcG1fd2lkZ2V0ICpzaW5rKQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfZGFwbV93 aWRnZXQgKncgPSBzaW5rOw0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25k X3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAq YWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXRr X2FmZV9pMnNfcHJpdiAqaTJzX3ByaXY7DQorCWludCBjdXJfYXBsbDsNCisJaW50IGkyc19uZWVk X2FwbGw7DQorDQorCWkyc19wcml2ID0gZ2V0X2kyc19wcml2X2J5X25hbWUoYWZlLCB3LT5uYW1l KTsNCisJaWYgKCFpMnNfcHJpdikgew0KKwkJZGV2X3dhcm4oYWZlLT5kZXYsICIlcygpLCBpMnNf cHJpdiA9PSBOVUxMIiwgX19mdW5jX18pOw0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJLyogd2hp Y2ggYXBsbCAqLw0KKwljdXJfYXBsbCA9IG10ODE5Ml9nZXRfYXBsbF9ieV9uYW1lKGFmZSwgc291 cmNlLT5uYW1lKTsNCisNCisJLyogY2hvb3NlIEFQTEwgZnJvbSBpMnMgcmF0ZSAqLw0KKwlpMnNf bmVlZF9hcGxsID0gbXQ4MTkyX2dldF9hcGxsX2J5X3JhdGUoYWZlLCBpMnNfcHJpdi0+cmF0ZSk7 DQorDQorCWlmIChpMnNfbmVlZF9hcGxsID09IGN1cl9hcGxsKQ0KKwkJcmV0dXJuIDE7DQorDQor CXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10a19hZmVfaTJzX21jbGtfY29ubmVjdChz dHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqc291cmNlLA0KKwkJCQkgICAgc3RydWN0IHNuZF9z b2NfZGFwbV93aWRnZXQgKnNpbmspDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAq dyA9IHNpbms7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2Rh cG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUgPSBz bmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXN0cnVjdCBtdGtfYWZlX2ky c19wcml2ICppMnNfcHJpdjsNCisNCisJaTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZfYnlfbmFtZShh ZmUsIHNpbmstPm5hbWUpOw0KKwlpZiAoIWkyc19wcml2KSB7DQorCQlkZXZfd2FybihhZmUtPmRl diwgIiVzKCksIGkyc19wcml2ID09IE5VTEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gMDsNCisJ fQ0KKw0KKwlpZiAoZ2V0X2kyc19pZF9ieV9uYW1lKGFmZSwgc2luay0+bmFtZSkgPT0NCisJICAg IGdldF9pMnNfaWRfYnlfbmFtZShhZmUsIHNvdXJjZS0+bmFtZSkpDQorCQlyZXR1cm4gKGkyc19w cml2LT5tY2xrX3JhdGUgPiAwKSA/IDEgOiAwOw0KKw0KKwkvKiBjaGVjayBpZiBzaGFyZSBpMnMg bmVlZCBtY2xrICovDQorCWlmIChpMnNfcHJpdi0+c2hhcmVfaTJzX2lkIDwgMCkNCisJCXJldHVy biAwOw0KKw0KKwlpZiAoaTJzX3ByaXYtPnNoYXJlX2kyc19pZCA9PSBnZXRfaTJzX2lkX2J5X25h bWUoYWZlLCBzb3VyY2UtPm5hbWUpKQ0KKwkJcmV0dXJuIChpMnNfcHJpdi0+bWNsa19yYXRlID4g MCkgPyAxIDogMDsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX2FmZV9t Y2xrX2FwbGxfY29ubmVjdChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqc291cmNlLA0KKwkJ CQkgICAgIHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICpzaW5rKQ0KK3sNCisJc3RydWN0IHNu ZF9zb2NfZGFwbV93aWRnZXQgKncgPSBzaW5rOw0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQg KmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10 a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0K KwlzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAqaTJzX3ByaXY7DQorCWludCBjdXJfYXBsbDsNCisN CisJaTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZfYnlfbmFtZShhZmUsIHctPm5hbWUpOw0KKwlpZiAo IWkyc19wcml2KSB7DQorCQlkZXZfd2FybihhZmUtPmRldiwgIiVzKCksIGkyc19wcml2ID09IE5V TEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwkvKiB3aGljaCBhcGxsICov DQorCWN1cl9hcGxsID0gbXQ4MTkyX2dldF9hcGxsX2J5X25hbWUoYWZlLCBzb3VyY2UtPm5hbWUp Ow0KKw0KKwlpZiAoaTJzX3ByaXYtPm1jbGtfYXBsbCA9PSBjdXJfYXBsbCkNCisJCXJldHVybiAx Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2Rh cG1fcm91dGUgbXRrX2RhaV9pMnNfcm91dGVzW10gPSB7DQorCXsiQ29ubnN5cyBJMlMiLCBOVUxM LCAiQ09OTlNZUyJ9LA0KKw0KKwkvKiBpMnMwICovDQorCXsiSTJTMCIsIE5VTEwsICJJMlMwX0VO In0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlMxX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlMyX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlMzX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlM1X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlM2X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlM3X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlM4X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorCXsiSTJTMCIsIE5VTEwsICJJMlM5X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVj dH0sDQorDQorCXsiSTJTMCIsIE5VTEwsIEkyUzBfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19o ZF9jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVMTCwgSTJTMV9IRF9FTl9XX05BTUUsIG10a19hZmVf aTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzAiLCBOVUxMLCBJMlMyX0hEX0VOX1dfTkFNRSwgbXRr X2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMCIsIE5VTEwsIEkyUzNfSERfRU5fV19OQU1F LCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVMTCwgSTJTNV9IRF9FTl9X X05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzAiLCBOVUxMLCBJMlM2X0hE X0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMCIsIE5VTEwsIEky UzdfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVM TCwgSTJTOF9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzAi LCBOVUxMLCBJMlM5X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXtJ MlMwX0hEX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDFfV19OQU1FLCBtdGtfYWZlX2kyc19hcGxsX2Nv bm5lY3R9LA0KKwl7STJTMF9IRF9FTl9XX05BTUUsIE5VTEwsIEFQTEwyX1dfTkFNRSwgbXRrX2Fm ZV9pMnNfYXBsbF9jb25uZWN0fSwNCisNCisJeyJJMlMwIiwgTlVMTCwgSTJTMF9NQ0xLX0VOX1df TkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVMTCwgSTJTMV9N Q0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVM TCwgSTJTMl9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJ MlMwIiwgTlVMTCwgSTJTM19NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0 fSwNCisJeyJJMlMwIiwgTlVMTCwgSTJTNV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNs a19jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVMTCwgSTJTNl9NQ0xLX0VOX1dfTkFNRSwgbXRrX2Fm ZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVMTCwgSTJTN19NQ0xLX0VOX1dfTkFN RSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVMTCwgSTJTOF9NQ0xL X0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlMwIiwgTlVMTCwg STJTOV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJe0kyUzBf TUNMS19FTl9XX05BTUUsIE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRrX2FmZV9tY2xrX2FwbGxfY29u bmVjdH0sDQorCXtJMlMwX01DTEtfRU5fV19OQU1FLCBOVUxMLCBBUExMMl9XX05BTUUsIG10a19h ZmVfbWNsa19hcGxsX2Nvbm5lY3R9LA0KKw0KKwkvKiBpMnMxICovDQorCXsiSTJTMV9DSDEiLCAi REwxX0NIMSIsICJETDEifSwNCisJeyJJMlMxX0NIMiIsICJETDFfQ0gyIiwgIkRMMSJ9LA0KKwl7 IkkyUzFfVElOWUNPTk5fQ0gxX01VWCIsICJETDFfQ0gxIiwgIkRMMSJ9LA0KKwl7IkkyUzFfVElO WUNPTk5fQ0gyX01VWCIsICJETDFfQ0gyIiwgIkRMMSJ9LA0KKw0KKwl7IkkyUzFfQ0gxIiwgIkRM Ml9DSDEiLCAiREwyIn0sDQorCXsiSTJTMV9DSDIiLCAiREwyX0NIMiIsICJETDIifSwNCisJeyJJ MlMxX1RJTllDT05OX0NIMV9NVVgiLCAiREwyX0NIMSIsICJETDIifSwNCisJeyJJMlMxX1RJTllD T05OX0NIMl9NVVgiLCAiREwyX0NIMiIsICJETDIifSwNCisNCisJeyJJMlMxX0NIMSIsICJETDNf Q0gxIiwgIkRMMyJ9LA0KKwl7IkkyUzFfQ0gyIiwgIkRMM19DSDIiLCAiREwzIn0sDQorCXsiSTJT MV9USU5ZQ09OTl9DSDFfTVVYIiwgIkRMM19DSDEiLCAiREwzIn0sDQorCXsiSTJTMV9USU5ZQ09O Tl9DSDJfTVVYIiwgIkRMM19DSDIiLCAiREwzIn0sDQorDQorCXsiSTJTMV9DSDEiLCAiREwxMl9D SDEiLCAiREwxMiJ9LA0KKwl7IkkyUzFfQ0gyIiwgIkRMMTJfQ0gyIiwgIkRMMTIifSwNCisJeyJJ MlMxX1RJTllDT05OX0NIMV9NVVgiLCAiREwxMl9DSDEiLCAiREwxMiJ9LA0KKwl7IkkyUzFfVElO WUNPTk5fQ0gyX01VWCIsICJETDEyX0NIMiIsICJETDEyIn0sDQorDQorCXsiSTJTMV9DSDEiLCAi REw0X0NIMSIsICJETDQifSwNCisJeyJJMlMxX0NIMiIsICJETDRfQ0gyIiwgIkRMNCJ9LA0KKw0K Kwl7IkkyUzFfQ0gxIiwgIkRMNV9DSDEiLCAiREw1In0sDQorCXsiSTJTMV9DSDIiLCAiREw1X0NI MiIsICJETDUifSwNCisNCisJeyJJMlMxX0NIMSIsICJETDZfQ0gxIiwgIkRMNiJ9LA0KKwl7Ikky UzFfQ0gyIiwgIkRMNl9DSDIiLCAiREw2In0sDQorDQorCXsiSTJTMV9DSDEiLCAiREw4X0NIMSIs ICJETDgifSwNCisJeyJJMlMxX0NIMiIsICJETDhfQ0gyIiwgIkRMOCJ9LA0KKw0KKwl7IkkyUzEi LCBOVUxMLCAiSTJTMV9DSDEifSwNCisJeyJJMlMxIiwgTlVMTCwgIkkyUzFfQ0gyIn0sDQorCXsi STJTMSIsIE5VTEwsICJJMlMzX1RJTllDT05OX0NIMV9NVVgifSwNCisJeyJJMlMxIiwgTlVMTCwg IkkyUzNfVElOWUNPTk5fQ0gyX01VWCJ9LA0KKw0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTMF9FTiIs IG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTMV9FTiJ9 LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTMl9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9 LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTM19FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9 LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTNV9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9 LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTNl9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9 LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTN19FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9 LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTOF9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9 LA0KKwl7IkkyUzEiLCBOVUxMLCAiSTJTOV9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9 LA0KKw0KKwl7IkkyUzEiLCBOVUxMLCBJMlMwX0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRf Y29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEwsIEkyUzFfSERfRU5fV19OQU1FLCBtdGtfYWZlX2ky c19oZF9jb25uZWN0fSwNCisJeyJJMlMxIiwgTlVMTCwgSTJTMl9IRF9FTl9XX05BTUUsIG10a19h ZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzEiLCBOVUxMLCBJMlMzX0hEX0VOX1dfTkFNRSwg bXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEwsIEkyUzVfSERfRU5fV19O QU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMxIiwgTlVMTCwgSTJTNl9IRF9F Tl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzEiLCBOVUxMLCBJMlM3 X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEws IEkyUzhfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMxIiwg TlVMTCwgSTJTOV9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7STJT MV9IRF9FTl9XX05BTUUsIE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRrX2FmZV9pMnNfYXBsbF9jb25u ZWN0fSwNCisJe0kyUzFfSERfRU5fV19OQU1FLCBOVUxMLCBBUExMMl9XX05BTUUsIG10a19hZmVf aTJzX2FwbGxfY29ubmVjdH0sDQorDQorCXsiSTJTMSIsIE5VTEwsIEkyUzBfTUNMS19FTl9XX05B TUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEwsIEkyUzFfTUNM S19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEws IEkyUzJfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJT MSIsIE5VTEwsIEkyUzNfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0s DQorCXsiSTJTMSIsIE5VTEwsIEkyUzVfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtf Y29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEwsIEkyUzZfTUNMS19FTl9XX05BTUUsIG10a19hZmVf aTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEwsIEkyUzdfTUNMS19FTl9XX05BTUUs IG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEwsIEkyUzhfTUNMS19F Tl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMSIsIE5VTEwsIEky UzlfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXtJMlMxX01D TEtfRU5fV19OQU1FLCBOVUxMLCBBUExMMV9XX05BTUUsIG10a19hZmVfbWNsa19hcGxsX2Nvbm5l Y3R9LA0KKwl7STJTMV9NQ0xLX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDJfV19OQU1FLCBtdGtfYWZl X21jbGtfYXBsbF9jb25uZWN0fSwNCisNCisJLyogaTJzMiAqLw0KKwl7IkkyUzIiLCBOVUxMLCAi STJTMF9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCAi STJTMV9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCAi STJTMl9FTiJ9LA0KKwl7IkkyUzIiLCBOVUxMLCAiSTJTM19FTiIsIG10a19hZmVfaTJzX3NoYXJl X2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCAiSTJTNV9FTiIsIG10a19hZmVfaTJzX3NoYXJl X2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCAiSTJTNl9FTiIsIG10a19hZmVfaTJzX3NoYXJl X2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCAiSTJTN19FTiIsIG10a19hZmVfaTJzX3NoYXJl X2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCAiSTJTOF9FTiIsIG10a19hZmVfaTJzX3NoYXJl X2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCAiSTJTOV9FTiIsIG10a19hZmVfaTJzX3NoYXJl X2Nvbm5lY3R9LA0KKw0KKwl7IkkyUzIiLCBOVUxMLCBJMlMwX0hEX0VOX1dfTkFNRSwgbXRrX2Fm ZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMiIsIE5VTEwsIEkyUzFfSERfRU5fV19OQU1FLCBt dGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMyIiwgTlVMTCwgSTJTMl9IRF9FTl9XX05B TUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBOVUxMLCBJMlMzX0hEX0VO X1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMiIsIE5VTEwsIEkyUzVf SERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMyIiwgTlVMTCwg STJTNl9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzIiLCBO VUxMLCBJMlM3X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJT MiIsIE5VTEwsIEkyUzhfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJ eyJJMlMyIiwgTlVMTCwgSTJTOV9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9 LA0KKwl7STJTMl9IRF9FTl9XX05BTUUsIE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRrX2FmZV9pMnNf YXBsbF9jb25uZWN0fSwNCisJe0kyUzJfSERfRU5fV19OQU1FLCBOVUxMLCBBUExMMl9XX05BTUUs IG10a19hZmVfaTJzX2FwbGxfY29ubmVjdH0sDQorDQorCXsiSTJTMiIsIE5VTEwsIEkyUzBfTUNM S19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMiIsIE5VTEws IEkyUzFfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJT MiIsIE5VTEwsIEkyUzJfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0s DQorCXsiSTJTMiIsIE5VTEwsIEkyUzNfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtf Y29ubmVjdH0sDQorCXsiSTJTMiIsIE5VTEwsIEkyUzVfTUNMS19FTl9XX05BTUUsIG10a19hZmVf aTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMiIsIE5VTEwsIEkyUzZfTUNMS19FTl9XX05BTUUs IG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMiIsIE5VTEwsIEkyUzdfTUNMS19F Tl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMiIsIE5VTEwsIEky UzhfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTMiIs IE5VTEwsIEkyUzlfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQor CXtJMlMyX01DTEtfRU5fV19OQU1FLCBOVUxMLCBBUExMMV9XX05BTUUsIG10a19hZmVfbWNsa19h cGxsX2Nvbm5lY3R9LA0KKwl7STJTMl9NQ0xLX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDJfV19OQU1F LCBtdGtfYWZlX21jbGtfYXBsbF9jb25uZWN0fSwNCisNCisJLyogaTJzMyAqLw0KKwl7IkkyUzNf Q0gxIiwgIkRMMV9DSDEiLCAiREwxIn0sDQorCXsiSTJTM19DSDIiLCAiREwxX0NIMiIsICJETDEi fSwNCisJeyJJMlMzX1RJTllDT05OX0NIMV9NVVgiLCAiREwxX0NIMSIsICJETDEifSwNCisJeyJJ MlMzX1RJTllDT05OX0NIMl9NVVgiLCAiREwxX0NIMiIsICJETDEifSwNCisNCisJeyJJMlMzX0NI MSIsICJETDJfQ0gxIiwgIkRMMiJ9LA0KKwl7IkkyUzNfQ0gyIiwgIkRMMl9DSDIiLCAiREwyIn0s DQorCXsiSTJTM19USU5ZQ09OTl9DSDFfTVVYIiwgIkRMMl9DSDEiLCAiREwyIn0sDQorCXsiSTJT M19USU5ZQ09OTl9DSDJfTVVYIiwgIkRMMl9DSDIiLCAiREwyIn0sDQorDQorCXsiSTJTM19DSDEi LCAiREwzX0NIMSIsICJETDMifSwNCisJeyJJMlMzX0NIMiIsICJETDNfQ0gyIiwgIkRMMyJ9LA0K Kwl7IkkyUzNfVElOWUNPTk5fQ0gxX01VWCIsICJETDNfQ0gxIiwgIkRMMyJ9LA0KKwl7IkkyUzNf VElOWUNPTk5fQ0gyX01VWCIsICJETDNfQ0gyIiwgIkRMMyJ9LA0KKw0KKwl7IkkyUzNfQ0gxIiwg IkRMMTJfQ0gxIiwgIkRMMTIifSwNCisJeyJJMlMzX0NIMiIsICJETDEyX0NIMiIsICJETDEyIn0s DQorCXsiSTJTM19USU5ZQ09OTl9DSDFfTVVYIiwgIkRMMTJfQ0gxIiwgIkRMMTIifSwNCisJeyJJ MlMzX1RJTllDT05OX0NIMl9NVVgiLCAiREwxMl9DSDIiLCAiREwxMiJ9LA0KKw0KKwl7IkkyUzNf Q0gxIiwgIkRMNF9DSDEiLCAiREw0In0sDQorCXsiSTJTM19DSDIiLCAiREw0X0NIMiIsICJETDQi fSwNCisNCisJeyJJMlMzX0NIMSIsICJETDVfQ0gxIiwgIkRMNSJ9LA0KKwl7IkkyUzNfQ0gyIiwg IkRMNV9DSDIiLCAiREw1In0sDQorDQorCXsiSTJTM19DSDEiLCAiREw2X0NIMSIsICJETDYifSwN CisJeyJJMlMzX0NIMiIsICJETDZfQ0gyIiwgIkRMNiJ9LA0KKw0KKwl7IkkyUzNfQ0gxIiwgIkRM OF9DSDEiLCAiREw4In0sDQorCXsiSTJTM19DSDIiLCAiREw4X0NIMiIsICJETDgifSwNCisNCisJ eyJJMlMzIiwgTlVMTCwgIkkyUzNfQ0gxIn0sDQorCXsiSTJTMyIsIE5VTEwsICJJMlMzX0NIMiJ9 LA0KKwl7IkkyUzMiLCBOVUxMLCAiSTJTM19USU5ZQ09OTl9DSDFfTVVYIn0sDQorCXsiSTJTMyIs IE5VTEwsICJJMlMzX1RJTllDT05OX0NIMl9NVVgifSwNCisNCisJeyJJMlMzIiwgTlVMTCwgIkky UzBfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9jb25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgIkky UzFfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9jb25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgIkky UzJfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9jb25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgIkky UzNfRU4ifSwNCisJeyJJMlMzIiwgTlVMTCwgIkkyUzVfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9j b25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgIkkyUzZfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9j b25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgIkkyUzdfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9j b25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgIkkyUzhfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9j b25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgIkkyUzlfRU4iLCBtdGtfYWZlX2kyc19zaGFyZV9j b25uZWN0fSwNCisNCisJeyJJMlMzIiwgTlVMTCwgSTJTMF9IRF9FTl9XX05BTUUsIG10a19hZmVf aTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzMiLCBOVUxMLCBJMlMxX0hEX0VOX1dfTkFNRSwgbXRr X2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMyIsIE5VTEwsIEkyUzJfSERfRU5fV19OQU1F LCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMzIiwgTlVMTCwgSTJTM19IRF9FTl9X X05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzMiLCBOVUxMLCBJMlM1X0hE X0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTMyIsIE5VTEwsIEky UzZfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlMzIiwgTlVM TCwgSTJTN19IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzMi LCBOVUxMLCBJMlM4X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsi STJTMyIsIE5VTEwsIEkyUzlfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwN CisJe0kyUzNfSERfRU5fV19OQU1FLCBOVUxMLCBBUExMMV9XX05BTUUsIG10a19hZmVfaTJzX2Fw bGxfY29ubmVjdH0sDQorCXtJMlMzX0hEX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDJfV19OQU1FLCBt dGtfYWZlX2kyc19hcGxsX2Nvbm5lY3R9LA0KKw0KKwl7IkkyUzMiLCBOVUxMLCBJMlMwX01DTEtf RU5fV19OQU1FLCBtdGtfYWZlX2kyc19tY2xrX2Nvbm5lY3R9LA0KKwl7IkkyUzMiLCBOVUxMLCBJ MlMxX01DTEtfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19tY2xrX2Nvbm5lY3R9LA0KKwl7IkkyUzMi LCBOVUxMLCBJMlMyX01DTEtfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19tY2xrX2Nvbm5lY3R9LA0K Kwl7IkkyUzMiLCBOVUxMLCBJMlMzX01DTEtfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19tY2xrX2Nv bm5lY3R9LA0KKwl7IkkyUzMiLCBOVUxMLCBJMlM1X01DTEtfRU5fV19OQU1FLCBtdGtfYWZlX2ky c19tY2xrX2Nvbm5lY3R9LA0KKwl7IkkyUzMiLCBOVUxMLCBJMlM2X01DTEtfRU5fV19OQU1FLCBt dGtfYWZlX2kyc19tY2xrX2Nvbm5lY3R9LA0KKwl7IkkyUzMiLCBOVUxMLCBJMlM3X01DTEtfRU5f V19OQU1FLCBtdGtfYWZlX2kyc19tY2xrX2Nvbm5lY3R9LA0KKwl7IkkyUzMiLCBOVUxMLCBJMlM4 X01DTEtfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19tY2xrX2Nvbm5lY3R9LA0KKwl7IkkyUzMiLCBO VUxMLCBJMlM5X01DTEtfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19tY2xrX2Nvbm5lY3R9LA0KKwl7 STJTM19NQ0xLX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDFfV19OQU1FLCBtdGtfYWZlX21jbGtfYXBs bF9jb25uZWN0fSwNCisJe0kyUzNfTUNMS19FTl9XX05BTUUsIE5VTEwsIEFQTEwyX1dfTkFNRSwg bXRrX2FmZV9tY2xrX2FwbGxfY29ubmVjdH0sDQorDQorCS8qIGkyczUgKi8NCisJeyJJMlM1X0NI MSIsICJETDFfQ0gxIiwgIkRMMSJ9LA0KKwl7IkkyUzVfQ0gyIiwgIkRMMV9DSDIiLCAiREwxIn0s DQorDQorCXsiSTJTNV9DSDEiLCAiREwyX0NIMSIsICJETDIifSwNCisJeyJJMlM1X0NIMiIsICJE TDJfQ0gyIiwgIkRMMiJ9LA0KKw0KKwl7IkkyUzVfQ0gxIiwgIkRMM19DSDEiLCAiREwzIn0sDQor CXsiSTJTNV9DSDIiLCAiREwzX0NIMiIsICJETDMifSwNCisNCisJeyJJMlM1X0NIMSIsICJETDEy X0NIMSIsICJETDEyIn0sDQorCXsiSTJTNV9DSDIiLCAiREwxMl9DSDIiLCAiREwxMiJ9LA0KKw0K Kwl7IkkyUzVfQ0gxIiwgIkRMNF9DSDEiLCAiREw0In0sDQorCXsiSTJTNV9DSDIiLCAiREw0X0NI MiIsICJETDQifSwNCisNCisJeyJJMlM1X0NIMSIsICJETDVfQ0gxIiwgIkRMNSJ9LA0KKwl7Ikky UzVfQ0gyIiwgIkRMNV9DSDIiLCAiREw1In0sDQorDQorCXsiSTJTNV9DSDEiLCAiREw2X0NIMSIs ICJETDYifSwNCisJeyJJMlM1X0NIMiIsICJETDZfQ0gyIiwgIkRMNiJ9LA0KKw0KKwl7IkkyUzVf Q0gxIiwgIkRMOF9DSDEiLCAiREw4In0sDQorCXsiSTJTNV9DSDIiLCAiREw4X0NIMiIsICJETDgi fSwNCisNCisJeyJJMlM1IiwgTlVMTCwgIkkyUzVfQ0gxIn0sDQorCXsiSTJTNSIsIE5VTEwsICJJ MlM1X0NIMiJ9LA0KKw0KKwl7IkkyUzUiLCBOVUxMLCAiSTJTMF9FTiIsIG10a19hZmVfaTJzX3No YXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBOVUxMLCAiSTJTMV9FTiIsIG10a19hZmVfaTJzX3No YXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBOVUxMLCAiSTJTMl9FTiIsIG10a19hZmVfaTJzX3No YXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBOVUxMLCAiSTJTM19FTiIsIG10a19hZmVfaTJzX3No YXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBOVUxMLCAiSTJTNV9FTiJ9LA0KKwl7IkkyUzUiLCBO VUxMLCAiSTJTNl9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBO VUxMLCAiSTJTN19FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBO VUxMLCAiSTJTOF9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBO VUxMLCAiSTJTOV9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKw0KKwl7IkkyUzUi LCBOVUxMLCBJMlMwX0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsi STJTNSIsIE5VTEwsIEkyUzFfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwN CisJeyJJMlM1IiwgTlVMTCwgSTJTMl9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5l Y3R9LA0KKwl7IkkyUzUiLCBOVUxMLCBJMlMzX0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRf Y29ubmVjdH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzVfSERfRU5fV19OQU1FLCBtdGtfYWZlX2ky c19oZF9jb25uZWN0fSwNCisJeyJJMlM1IiwgTlVMTCwgSTJTNl9IRF9FTl9XX05BTUUsIG10a19h ZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzUiLCBOVUxMLCBJMlM3X0hEX0VOX1dfTkFNRSwg bXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzhfSERfRU5fV19O QU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM1IiwgTlVMTCwgSTJTOV9IRF9F Tl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7STJTNV9IRF9FTl9XX05BTUUs IE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRrX2FmZV9pMnNfYXBsbF9jb25uZWN0fSwNCisJe0kyUzVf SERfRU5fV19OQU1FLCBOVUxMLCBBUExMMl9XX05BTUUsIG10a19hZmVfaTJzX2FwbGxfY29ubmVj dH0sDQorDQorCXsiSTJTNSIsIE5VTEwsIEkyUzBfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJz X21jbGtfY29ubmVjdH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzFfTUNMS19FTl9XX05BTUUsIG10 a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzJfTUNMS19FTl9X X05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzNf TUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNSIsIE5V TEwsIEkyUzVfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsi STJTNSIsIE5VTEwsIEkyUzZfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVj dH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzdfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21j bGtfY29ubmVjdH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzhfTUNMS19FTl9XX05BTUUsIG10a19h ZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNSIsIE5VTEwsIEkyUzlfTUNMS19FTl9XX05B TUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXtJMlM1X01DTEtfRU5fV19OQU1FLCBO VUxMLCBBUExMMV9XX05BTUUsIG10a19hZmVfbWNsa19hcGxsX2Nvbm5lY3R9LA0KKwl7STJTNV9N Q0xLX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDJfV19OQU1FLCBtdGtfYWZlX21jbGtfYXBsbF9jb25u ZWN0fSwNCisNCisJLyogaTJzNiAqLw0KKwl7IkkyUzYiLCBOVUxMLCAiSTJTMF9FTiIsIG10a19h ZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzYiLCBOVUxMLCAiSTJTMV9FTiIsIG10a19h ZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzYiLCBOVUxMLCAiSTJTMl9FTiIsIG10a19h ZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzYiLCBOVUxMLCAiSTJTM19FTiIsIG10a19h ZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzYiLCBOVUxMLCAiSTJTNV9FTiIsIG10a19h ZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7IkkyUzYiLCBOVUxMLCAiSTJTNl9FTiJ9LA0KKwl7 IkkyUzYiLCBOVUxMLCAiSTJTN19FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7 IkkyUzYiLCBOVUxMLCAiSTJTOF9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKwl7 IkkyUzYiLCBOVUxMLCAiSTJTOV9FTiIsIG10a19hZmVfaTJzX3NoYXJlX2Nvbm5lY3R9LA0KKw0K Kwl7IkkyUzYiLCBOVUxMLCBJMlMwX0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVj dH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzFfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9j b25uZWN0fSwNCisJeyJJMlM2IiwgTlVMTCwgSTJTMl9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJz X2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzYiLCBOVUxMLCBJMlMzX0hEX0VOX1dfTkFNRSwgbXRrX2Fm ZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzVfSERfRU5fV19OQU1FLCBt dGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM2IiwgTlVMTCwgSTJTNl9IRF9FTl9XX05B TUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzYiLCBOVUxMLCBJMlM3X0hEX0VO X1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzhf SERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM2IiwgTlVMTCwg STJTOV9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7STJTNl9IRF9F Tl9XX05BTUUsIE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRrX2FmZV9pMnNfYXBsbF9jb25uZWN0fSwN CisJe0kyUzZfSERfRU5fV19OQU1FLCBOVUxMLCBBUExMMl9XX05BTUUsIG10a19hZmVfaTJzX2Fw bGxfY29ubmVjdH0sDQorDQorCXsiSTJTNiIsIE5VTEwsIEkyUzBfTUNMS19FTl9XX05BTUUsIG10 a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzFfTUNMS19FTl9X X05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzJf TUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5V TEwsIEkyUzNfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsi STJTNiIsIE5VTEwsIEkyUzVfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVj dH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzZfTUNMS19FTl9XX05BTUUsIG10a19hZmVfaTJzX21j bGtfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzdfTUNMS19FTl9XX05BTUUsIG10a19h ZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzhfTUNMS19FTl9XX05B TUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXsiSTJTNiIsIE5VTEwsIEkyUzlfTUNM S19FTl9XX05BTUUsIG10a19hZmVfaTJzX21jbGtfY29ubmVjdH0sDQorCXtJMlM2X01DTEtfRU5f V19OQU1FLCBOVUxMLCBBUExMMV9XX05BTUUsIG10a19hZmVfbWNsa19hcGxsX2Nvbm5lY3R9LA0K Kwl7STJTNl9NQ0xLX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDJfV19OQU1FLCBtdGtfYWZlX21jbGtf YXBsbF9jb25uZWN0fSwNCisNCisJLyogaTJzNyAqLw0KKwl7IkkyUzciLCBOVUxMLCAiSTJTN19D SDEifSwNCisJeyJJMlM3IiwgTlVMTCwgIkkyUzdfQ0gyIn0sDQorDQorCXsiSTJTNyIsIE5VTEws ICJJMlMwX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEws ICJJMlMxX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEws ICJJMlMyX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEws ICJJMlMzX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEws ICJJMlM1X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEws ICJJMlM2X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEws ICJJMlM3X0VOIn0sDQorCXsiSTJTNyIsIE5VTEwsICJJMlM4X0VOIiwgbXRrX2FmZV9pMnNfc2hh cmVfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEwsICJJMlM5X0VOIiwgbXRrX2FmZV9pMnNfc2hh cmVfY29ubmVjdH0sDQorDQorCXsiSTJTNyIsIE5VTEwsIEkyUzBfSERfRU5fV19OQU1FLCBtdGtf YWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM3IiwgTlVMTCwgSTJTMV9IRF9FTl9XX05BTUUs IG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzciLCBOVUxMLCBJMlMyX0hEX0VOX1df TkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTNyIsIE5VTEwsIEkyUzNfSERf RU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM3IiwgTlVMTCwgSTJT NV9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzciLCBOVUxM LCBJMlM2X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTNyIs IE5VTEwsIEkyUzdfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJ MlM3IiwgTlVMTCwgSTJTOF9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0K Kwl7IkkyUzciLCBOVUxMLCBJMlM5X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVj dH0sDQorCXtJMlM3X0hEX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDFfV19OQU1FLCBtdGtfYWZlX2ky c19hcGxsX2Nvbm5lY3R9LA0KKwl7STJTN19IRF9FTl9XX05BTUUsIE5VTEwsIEFQTEwyX1dfTkFN RSwgbXRrX2FmZV9pMnNfYXBsbF9jb25uZWN0fSwNCisNCisJeyJJMlM3IiwgTlVMTCwgSTJTMF9N Q0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM3IiwgTlVM TCwgSTJTMV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJ MlM3IiwgTlVMTCwgSTJTMl9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0 fSwNCisJeyJJMlM3IiwgTlVMTCwgSTJTM19NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNs a19jb25uZWN0fSwNCisJeyJJMlM3IiwgTlVMTCwgSTJTNV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2Fm ZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM3IiwgTlVMTCwgSTJTNl9NQ0xLX0VOX1dfTkFN RSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM3IiwgTlVMTCwgSTJTN19NQ0xL X0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM3IiwgTlVMTCwg STJTOF9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM3 IiwgTlVMTCwgSTJTOV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwN CisJe0kyUzdfTUNMS19FTl9XX05BTUUsIE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRrX2FmZV9tY2xr X2FwbGxfY29ubmVjdH0sDQorCXtJMlM3X01DTEtfRU5fV19OQU1FLCBOVUxMLCBBUExMMl9XX05B TUUsIG10a19hZmVfbWNsa19hcGxsX2Nvbm5lY3R9LA0KKw0KKwkvKiBpMnM4ICovDQorCXsiSTJT OCIsIE5VTEwsICJJMlMwX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJT OCIsIE5VTEwsICJJMlMxX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJT OCIsIE5VTEwsICJJMlMyX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJT OCIsIE5VTEwsICJJMlMzX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJT OCIsIE5VTEwsICJJMlM1X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJT OCIsIE5VTEwsICJJMlM2X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJT OCIsIE5VTEwsICJJMlM3X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJT OCIsIE5VTEwsICJJMlM4X0VOIn0sDQorCXsiSTJTOCIsIE5VTEwsICJJMlM5X0VOIiwgbXRrX2Fm ZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorDQorCXsiSTJTOCIsIE5VTEwsIEkyUzBfSERfRU5fV19O QU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM4IiwgTlVMTCwgSTJTMV9IRF9F Tl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzgiLCBOVUxMLCBJMlMy X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTOCIsIE5VTEws IEkyUzNfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM4Iiwg TlVMTCwgSTJTNV9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7Ikky UzgiLCBOVUxMLCBJMlM2X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQor CXsiSTJTOCIsIE5VTEwsIEkyUzdfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0 fSwNCisJeyJJMlM4IiwgTlVMTCwgSTJTOF9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nv bm5lY3R9LA0KKwl7IkkyUzgiLCBOVUxMLCBJMlM5X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNf aGRfY29ubmVjdH0sDQorCXtJMlM4X0hEX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDFfV19OQU1FLCBt dGtfYWZlX2kyc19hcGxsX2Nvbm5lY3R9LA0KKwl7STJTOF9IRF9FTl9XX05BTUUsIE5VTEwsIEFQ TEwyX1dfTkFNRSwgbXRrX2FmZV9pMnNfYXBsbF9jb25uZWN0fSwNCisNCisJeyJJMlM4IiwgTlVM TCwgSTJTMF9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJ MlM4IiwgTlVMTCwgSTJTMV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0 fSwNCisJeyJJMlM4IiwgTlVMTCwgSTJTMl9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNs a19jb25uZWN0fSwNCisJeyJJMlM4IiwgTlVMTCwgSTJTM19NQ0xLX0VOX1dfTkFNRSwgbXRrX2Fm ZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM4IiwgTlVMTCwgSTJTNV9NQ0xLX0VOX1dfTkFN RSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM4IiwgTlVMTCwgSTJTNl9NQ0xL X0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM4IiwgTlVMTCwg STJTN19NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM4 IiwgTlVMTCwgSTJTOF9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwN CisJeyJJMlM4IiwgTlVMTCwgSTJTOV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19j b25uZWN0fSwNCisJe0kyUzhfTUNMS19FTl9XX05BTUUsIE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRr X2FmZV9tY2xrX2FwbGxfY29ubmVjdH0sDQorCXtJMlM4X01DTEtfRU5fV19OQU1FLCBOVUxMLCBB UExMMl9XX05BTUUsIG10a19hZmVfbWNsa19hcGxsX2Nvbm5lY3R9LA0KKw0KKwkvKiBpMnM5ICov DQorCXsiSTJTOV9DSDEiLCAiREwxX0NIMSIsICJETDEifSwNCisJeyJJMlM5X0NIMiIsICJETDFf Q0gyIiwgIkRMMSJ9LA0KKw0KKwl7IkkyUzlfQ0gxIiwgIkRMMl9DSDEiLCAiREwyIn0sDQorCXsi STJTOV9DSDIiLCAiREwyX0NIMiIsICJETDIifSwNCisNCisJeyJJMlM5X0NIMSIsICJETDNfQ0gx IiwgIkRMMyJ9LA0KKwl7IkkyUzlfQ0gyIiwgIkRMM19DSDIiLCAiREwzIn0sDQorDQorCXsiSTJT OV9DSDEiLCAiREwxMl9DSDEiLCAiREwxMiJ9LA0KKwl7IkkyUzlfQ0gyIiwgIkRMMTJfQ0gyIiwg IkRMMTIifSwNCisNCisJeyJJMlM5X0NIMSIsICJETDRfQ0gxIiwgIkRMNCJ9LA0KKwl7IkkyUzlf Q0gyIiwgIkRMNF9DSDIiLCAiREw0In0sDQorDQorCXsiSTJTOV9DSDEiLCAiREw1X0NIMSIsICJE TDUifSwNCisJeyJJMlM5X0NIMiIsICJETDVfQ0gyIiwgIkRMNSJ9LA0KKw0KKwl7IkkyUzlfQ0gx IiwgIkRMNl9DSDEiLCAiREw2In0sDQorCXsiSTJTOV9DSDIiLCAiREw2X0NIMiIsICJETDYifSwN CisNCisJeyJJMlM5X0NIMSIsICJETDhfQ0gxIiwgIkRMOCJ9LA0KKwl7IkkyUzlfQ0gyIiwgIkRM OF9DSDIiLCAiREw4In0sDQorDQorCXsiSTJTOV9DSDEiLCAiREw5X0NIMSIsICJETDkifSwNCisJ eyJJMlM5X0NIMiIsICJETDlfQ0gyIiwgIkRMOSJ9LA0KKw0KKwl7IkkyUzkiLCBOVUxMLCAiSTJT OV9DSDEifSwNCisJeyJJMlM5IiwgTlVMTCwgIkkyUzlfQ0gyIn0sDQorDQorCXsiSTJTOSIsIE5V TEwsICJJMlMwX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlMxX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlMyX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlMzX0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlM1X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlM2X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlM3X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlM4X0VOIiwgbXRrX2FmZV9pMnNfc2hhcmVfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5V TEwsICJJMlM5X0VOIn0sDQorDQorCXsiSTJTOSIsIE5VTEwsIEkyUzBfSERfRU5fV19OQU1FLCBt dGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM5IiwgTlVMTCwgSTJTMV9IRF9FTl9XX05B TUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzkiLCBOVUxMLCBJMlMyX0hEX0VO X1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJTOSIsIE5VTEwsIEkyUzNf SERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJeyJJMlM5IiwgTlVMTCwg STJTNV9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9LA0KKwl7IkkyUzkiLCBO VUxMLCBJMlM2X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29ubmVjdH0sDQorCXsiSTJT OSIsIE5VTEwsIEkyUzdfSERfRU5fV19OQU1FLCBtdGtfYWZlX2kyc19oZF9jb25uZWN0fSwNCisJ eyJJMlM5IiwgTlVMTCwgSTJTOF9IRF9FTl9XX05BTUUsIG10a19hZmVfaTJzX2hkX2Nvbm5lY3R9 LA0KKwl7IkkyUzkiLCBOVUxMLCBJMlM5X0hEX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfaGRfY29u bmVjdH0sDQorCXtJMlM5X0hEX0VOX1dfTkFNRSwgTlVMTCwgQVBMTDFfV19OQU1FLCBtdGtfYWZl X2kyc19hcGxsX2Nvbm5lY3R9LA0KKwl7STJTOV9IRF9FTl9XX05BTUUsIE5VTEwsIEFQTEwyX1df TkFNRSwgbXRrX2FmZV9pMnNfYXBsbF9jb25uZWN0fSwNCisNCisJeyJJMlM5IiwgTlVMTCwgSTJT MF9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM5Iiwg TlVMTCwgSTJTMV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJ eyJJMlM5IiwgTlVMTCwgSTJTMl9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25u ZWN0fSwNCisJeyJJMlM5IiwgTlVMTCwgSTJTM19NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNf bWNsa19jb25uZWN0fSwNCisJeyJJMlM5IiwgTlVMTCwgSTJTNV9NQ0xLX0VOX1dfTkFNRSwgbXRr X2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM5IiwgTlVMTCwgSTJTNl9NQ0xLX0VOX1df TkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM5IiwgTlVMTCwgSTJTN19N Q0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJMlM5IiwgTlVM TCwgSTJTOF9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0fSwNCisJeyJJ MlM5IiwgTlVMTCwgSTJTOV9NQ0xLX0VOX1dfTkFNRSwgbXRrX2FmZV9pMnNfbWNsa19jb25uZWN0 fSwNCisJe0kyUzlfTUNMS19FTl9XX05BTUUsIE5VTEwsIEFQTEwxX1dfTkFNRSwgbXRrX2FmZV9t Y2xrX2FwbGxfY29ubmVjdH0sDQorCXtJMlM5X01DTEtfRU5fV19OQU1FLCBOVUxMLCBBUExMMl9X X05BTUUsIG10a19hZmVfbWNsa19hcGxsX2Nvbm5lY3R9LA0KKw0KKwkvKiBhbGxvdyBpMnMgb24g d2l0aG91dCBjb2RlYyBvbiAqLw0KKwl7IkkyUzAiLCBOVUxMLCAiSTJTMF9Jbl9NdXgifSwNCisJ eyJJMlMwX0luX011eCIsICJEdW1teV9XaWRnZXQiLCAiSTJTX0RVTU1ZX0lOIn0sDQorDQorCXsi STJTOCIsIE5VTEwsICJJMlM4X0luX011eCJ9LA0KKwl7IkkyUzhfSW5fTXV4IiwgIkR1bW15X1dp ZGdldCIsICJJMlNfRFVNTVlfSU4ifSwNCisNCisJeyJJMlMxX091dF9NdXgiLCAiRHVtbXlfV2lk Z2V0IiwgIkkyUzEifSwNCisJeyJJMlNfRFVNTVlfT1VUIiwgTlVMTCwgIkkyUzFfT3V0X011eCJ9 LA0KKw0KKwl7IkkyUzNfT3V0X011eCIsICJEdW1teV9XaWRnZXQiLCAiSTJTMyJ9LA0KKwl7Ikky U19EVU1NWV9PVVQiLCBOVUxMLCAiSTJTM19PdXRfTXV4In0sDQorDQorCXsiSTJTNV9PdXRfTXV4 IiwgIkR1bW15X1dpZGdldCIsICJJMlM1In0sDQorCXsiSTJTX0RVTU1ZX09VVCIsIE5VTEwsICJJ MlM1X091dF9NdXgifSwNCisNCisJeyJJMlM3X091dF9NdXgiLCAiRHVtbXlfV2lkZ2V0IiwgIkky UzcifSwNCisJeyJJMlNfRFVNTVlfT1VUIiwgTlVMTCwgIkkyUzdfT3V0X011eCJ9LA0KKw0KKwl7 IkkyUzlfT3V0X011eCIsICJEdW1teV9XaWRnZXQiLCAiSTJTOSJ9LA0KKwl7IkkyU19EVU1NWV9P VVQiLCBOVUxMLCAiSTJTOV9PdXRfTXV4In0sDQorDQorCS8qIGkycyBpbiBscGJrICovDQorCXsi STJTMF9McGJrX011eCIsICJMcGJrIiwgIkkyUzMifSwNCisJeyJJMlMyX0xwYmtfTXV4IiwgIkxw YmsiLCAiSTJTMSJ9LA0KKwl7IkkyUzAiLCBOVUxMLCAiSTJTMF9McGJrX011eCJ9LA0KKwl7Ikky UzIiLCBOVUxMLCAiSTJTMl9McGJrX011eCJ9LA0KK307DQorDQorLyogZGFpIG9wcyAqLw0KK3N0 YXRpYyBpbnQgbXRrX2RhaV9jb25uc3lzX2kyc19od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vi c3RyZWFtICpzdWJzdHJlYW0sDQorCQkJCQkgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJh bXMsDQorCQkJCQkgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpDQorew0KKwlzdHJ1Y3QgbXRrX2Jh c2VfYWZlICphZmUgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShkYWkpOw0KKwl1bnNpZ25lZCBp bnQgcmF0ZSA9IHBhcmFtc19yYXRlKHBhcmFtcyk7DQorCXVuc2lnbmVkIGludCByYXRlX3JlZyA9 IG10ODE5Ml9yYXRlX3RyYW5zZm9ybShhZmUtPmRldiwNCisJCQkJCQkgICAgICByYXRlLCBkYWkt PmlkKTsNCisJdW5zaWduZWQgaW50IGkyc19jb24gPSAwOw0KKw0KKwlkZXZfZGJnKGFmZS0+ZGV2 LCAiJXMoKSwgaWQgJWQsIHN0cmVhbSAlZCwgcmF0ZSAlZFxuIiwNCisJCV9fZnVuY19fLCBkYWkt PmlkLCBzdWJzdHJlYW0tPnN0cmVhbSwgcmF0ZSk7DQorDQorCS8qIG5vbi1pbnZlcnNlLCBpMnMg bW9kZSwgcHJveHkgbW9kZSwgMTZiaXRzLCBmcm9tIGNvbm5zeXMgKi8NCisJaTJzX2NvbiB8PSAw IDw8IElOVl9QQURfQ1RSTF9TRlQ7DQorCWkyc19jb24gfD0gSTJTX0ZNVF9JMlMgPDwgSTJTX0ZN VF9TRlQ7DQorCWkyc19jb24gfD0gMSA8PCBJMlNfU1JDX1NGVDsNCisJaTJzX2NvbiB8PSBnZXRf aTJzX3dsZW4oU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUpIDw8IEkyU19XTEVOX1NGVDsNCisJaTJz X2NvbiB8PSAwIDw8IEkyU0lOX1BBRF9TRUxfU0ZUOw0KKwlyZWdtYXBfd3JpdGUoYWZlLT5yZWdt YXAsIEFGRV9DT05OU1lTX0kyU19DT04sIGkyc19jb24pOw0KKw0KKwkvKiB1c2UgYXNyYyAqLw0K KwlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJICAgQUZFX0NPTk5TWVNfSTJT X0NPTiwNCisJCQkgICBJMlNfQllQU1JDX01BU0tfU0ZULA0KKwkJCSAgIDB4MCA8PCBJMlNfQllQ U1JDX1NGVCk7DQorDQorCS8qIHByb3h5IG1vZGUsIHNldCBpMnMgZm9yIGFzcmMgKi8NCisJcmVn bWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0KKwkJCSAgIEFGRV9DT05OU1lTX0kyU19DT04s DQorCQkJICAgSTJTX01PREVfTUFTS19TRlQsDQorCQkJICAgcmF0ZV9yZWcgPDwgSTJTX01PREVf U0ZUKTsNCisNCisJc3dpdGNoIChyYXRlKSB7DQorCWNhc2UgMzIwMDA6DQorCQlyZWdtYXBfd3Jp dGUoYWZlLT5yZWdtYXAsIEFGRV9BU1JDXzJDSF9DT04zLCAweDE0MDAwMCk7DQorCQlicmVhazsN CisJY2FzZSA0NDEwMDoNCisJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwgQUZFX0FTUkNfMkNI X0NPTjMsIDB4MDAxQjkwMDApOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZWdtYXBfd3Jp dGUoYWZlLT5yZWdtYXAsIEFGRV9BU1JDXzJDSF9DT04zLCAweDAwMUUwMDAwKTsNCisJCWJyZWFr Ow0KKwl9DQorDQorCS8qIENhbGlicmF0aW9uIHNldHRpbmcgKi8NCisJcmVnbWFwX3dyaXRlKGFm ZS0+cmVnbWFwLCBBRkVfQVNSQ18yQ0hfQ09ONCwgMHgwMDE0MDAwMCk7DQorCXJlZ21hcF93cml0 ZShhZmUtPnJlZ21hcCwgQUZFX0FTUkNfMkNIX0NPTjksIDB4MDAwMzYwMDApOw0KKwlyZWdtYXBf d3JpdGUoYWZlLT5yZWdtYXAsIEFGRV9BU1JDXzJDSF9DT04xMCwgMHgwMDAyRkMwMCk7DQorCXJl Z21hcF93cml0ZShhZmUtPnJlZ21hcCwgQUZFX0FTUkNfMkNIX0NPTjYsIDB4MDAwMDdFRjQpOw0K KwlyZWdtYXBfd3JpdGUoYWZlLT5yZWdtYXAsIEFGRV9BU1JDXzJDSF9DT041LCAweDAwRkY1OTg2 KTsNCisNCisJLyogMDpTdGVyZW8gMTpNb25vICovDQorCXJlZ21hcF91cGRhdGVfYml0cyhhZmUt PnJlZ21hcCwNCisJCQkgICBBRkVfQVNSQ18yQ0hfQ09OMiwNCisJCQkgICBDSFNFVF9JU19NT05P X01BU0tfU0ZULA0KKwkJCSAgIDB4MCA8PCBDSFNFVF9JU19NT05PX1NGVCk7DQorDQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgaW50IG10a19kYWlfY29ubnN5c19pMnNfdHJpZ2dlcihzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwNCisJCQkJICAgICAgIGludCBjbWQsIHN0 cnVjdCBzbmRfc29jX2RhaSAqZGFpKQ0KK3sNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0g c25kX3NvY19kYWlfZ2V0X2RydmRhdGEoZGFpKTsNCisJc3RydWN0IG10ODE5Ml9hZmVfcHJpdmF0 ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRmb3JtX3ByaXY7DQorDQorCWRldl9kYmcoYWZlLT5kZXYs ICIlcygpLCBjbWQgJWQsIHN0cmVhbSAlZFxuIiwNCisJCV9fZnVuY19fLCBjbWQsIHN1YnN0cmVh bS0+c3RyZWFtKTsNCisNCisJc3dpdGNoIChjbWQpIHsNCisJY2FzZSBTTkRSVl9QQ01fVFJJR0dF Ul9TVEFSVDoNCisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9SRVNVTUU6DQorCQkvKiBpMnMgZW5h YmxlICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCSAgIEFGRV9D T05OU1lTX0kyU19DT04sDQorCQkJCSAgIEkyU19FTl9NQVNLX1NGVCwNCisJCQkJICAgMHgxIDw8 IEkyU19FTl9TRlQpOw0KKw0KKwkJLyogY2FsaWJyYXRvciBlbmFibGUgKi8NCisJCXJlZ21hcF91 cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJCQkJICAgQUZFX0FTUkNfMkNIX0NPTjUsDQorCQkJ CSAgIENBTElfRU5fTUFTS19TRlQsDQorCQkJCSAgIDB4MSA8PCBDQUxJX0VOX1NGVCk7DQorDQor CQkvKiBhc3JjIGVuYWJsZSAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0K KwkJCQkgICBBRkVfQVNSQ18yQ0hfQ09OMCwNCisJCQkJICAgQ09OMF9DSFNFVF9TVFJfQ0xSX01B U0tfU0ZULA0KKwkJCQkgICAweDEgPDwgQ09OMF9DSFNFVF9TVFJfQ0xSX1NGVCk7DQorCQlyZWdt YXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCSAgIEFGRV9BU1JDXzJDSF9DT04wLA0K KwkJCQkgICBDT04wX0FTTV9PTl9NQVNLX1NGVCwNCisJCQkJICAgMHgxIDw8IENPTjBfQVNNX09O X1NGVCk7DQorDQorCQlhZmVfcHJpdi0+ZGFpX29uW2RhaS0+aWRdID0gdHJ1ZTsNCisJCWJyZWFr Ow0KKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6DQorCWNhc2UgU05EUlZfUENNX1RSSUdH RVJfU1VTUEVORDoNCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJCQkJICAg QUZFX0FTUkNfMkNIX0NPTjAsDQorCQkJCSAgIENPTjBfQVNNX09OX01BU0tfU0ZULA0KKwkJCQkg ICAwIDw8IENPTjBfQVNNX09OX1NGVCk7DQorCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdt YXAsDQorCQkJCSAgIEFGRV9BU1JDXzJDSF9DT041LA0KKwkJCQkgICBDQUxJX0VOX01BU0tfU0ZU LA0KKwkJCQkgICAwIDw8IENBTElfRU5fU0ZUKTsNCisNCisJCS8qIGkycyBkaXNhYmxlICovDQor CQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCSAgIEFGRV9DT05OU1lTX0ky U19DT04sDQorCQkJCSAgIEkyU19FTl9NQVNLX1NGVCwNCisJCQkJICAgMHgwIDw8IEkyU19FTl9T RlQpOw0KKw0KKwkJLyogYnlwYXNzIGFzcmMgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUt PnJlZ21hcCwNCisJCQkJICAgQUZFX0NPTk5TWVNfSTJTX0NPTiwNCisJCQkJICAgSTJTX0JZUFNS Q19NQVNLX1NGVCwNCisJCQkJICAgMHgxIDw8IEkyU19CWVBTUkNfU0ZUKTsNCisNCisJCWFmZV9w cml2LT5kYWlfb25bZGFpLT5pZF0gPSBmYWxzZTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJ cmV0dXJuIC1FSU5WQUw7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc25kX3NvY19kYWlfb3BzIG10a19kYWlfY29ubnN5c19pMnNfb3BzID0gew0KKwkuaHdf cGFyYW1zID0gbXRrX2RhaV9jb25uc3lzX2kyc19od19wYXJhbXMsDQorCS50cmlnZ2VyID0gbXRr X2RhaV9jb25uc3lzX2kyc190cmlnZ2VyLA0KK307DQorDQorLyogaTJzICovDQorc3RhdGljIGlu dCBtdGtfZGFpX2kyc19jb25maWcoc3RydWN0IG10a19iYXNlX2FmZSAqYWZlLA0KKwkJCSAgICAg IHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgIGludCBpMnNfaWQp DQorew0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICphZmVfcHJpdiA9IGFmZS0+cGxhdGZv cm1fcHJpdjsNCisJc3RydWN0IG10a19hZmVfaTJzX3ByaXYgKmkyc19wcml2ID0gYWZlX3ByaXYt PmRhaV9wcml2W2kyc19pZF07DQorDQorCXVuc2lnbmVkIGludCByYXRlID0gcGFyYW1zX3JhdGUo cGFyYW1zKTsNCisJdW5zaWduZWQgaW50IHJhdGVfcmVnID0gbXQ4MTkyX3JhdGVfdHJhbnNmb3Jt KGFmZS0+ZGV2LA0KKwkJCQkJCSAgICAgIHJhdGUsIGkyc19pZCk7DQorCXNuZF9wY21fZm9ybWF0 X3QgZm9ybWF0ID0gcGFyYW1zX2Zvcm1hdChwYXJhbXMpOw0KKwl1bnNpZ25lZCBpbnQgaTJzX2Nv biA9IDA7DQorCWludCByZXQgPSAwOw0KKw0KKwlkZXZfZGJnKGFmZS0+ZGV2LCAiJXMoKSwgaWQg JWQsIHJhdGUgJWQsIGZvcm1hdCAlZFxuIiwNCisJCV9fZnVuY19fLCBpMnNfaWQsIHJhdGUsIGZv cm1hdCk7DQorDQorCWlmIChpMnNfcHJpdikNCisJCWkyc19wcml2LT5yYXRlID0gcmF0ZTsNCisJ ZWxzZQ0KKwkJZGV2X3dhcm4oYWZlLT5kZXYsICIlcygpLCBpMnNfcHJpdiA9PSBOVUxMIiwgX19m dW5jX18pOw0KKw0KKwlzd2l0Y2ggKGkyc19pZCkgew0KKwljYXNlIE1UODE5Ml9EQUlfSTJTXzA6 DQorCQlpMnNfY29uID0gSTJTX0lOX1BBRF9JT19NVVggPDwgSTJTSU5fUEFEX1NFTF9TRlQ7DQor CQlpMnNfY29uIHw9IHJhdGVfcmVnIDw8IEkyU19PVVRfTU9ERV9TRlQ7DQorCQlpMnNfY29uIHw9 IEkyU19GTVRfSTJTIDw8IEkyU19GTVRfU0ZUOw0KKwkJaTJzX2NvbiB8PSBnZXRfaTJzX3dsZW4o Zm9ybWF0KSA8PCBJMlNfV0xFTl9TRlQ7DQorCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdt YXAsIEFGRV9JMlNfQ09OLA0KKwkJCQkgICAweGZmZmZlZmZlLCBpMnNfY29uKTsNCisJCWJyZWFr Ow0KKwljYXNlIE1UODE5Ml9EQUlfSTJTXzE6DQorCQlpMnNfY29uID0gSTJTMV9TRUxfTzI4X08y OSA8PCBJMlMyX1NFTF9PMDNfTzA0X1NGVDsNCisJCWkyc19jb24gfD0gcmF0ZV9yZWcgPDwgSTJT Ml9PVVRfTU9ERV9TRlQ7DQorCQlpMnNfY29uIHw9IEkyU19GTVRfSTJTIDw8IEkyUzJfRk1UX1NG VDsNCisJCWkyc19jb24gfD0gZ2V0X2kyc193bGVuKGZvcm1hdCkgPDwgSTJTMl9XTEVOX1NGVDsN CisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZFX0kyU19DT04xLA0KKwkJCQkg ICAweGZmZmZlZmZlLCBpMnNfY29uKTsNCisJCWJyZWFrOw0KKwljYXNlIE1UODE5Ml9EQUlfSTJT XzI6DQorCQlpMnNfY29uID0gOCA8PCBJMlMzX1VQREFURV9XT1JEX1NGVDsNCisJCWkyc19jb24g fD0gcmF0ZV9yZWcgPDwgSTJTM19PVVRfTU9ERV9TRlQ7DQorCQlpMnNfY29uIHw9IEkyU19GTVRf STJTIDw8IEkyUzNfRk1UX1NGVDsNCisJCWkyc19jb24gfD0gZ2V0X2kyc193bGVuKGZvcm1hdCkg PDwgSTJTM19XTEVOX1NGVDsNCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZF X0kyU19DT04yLA0KKwkJCQkgICAweGZmZmZlZmZlLCBpMnNfY29uKTsNCisJCWJyZWFrOw0KKwlj YXNlIE1UODE5Ml9EQUlfSTJTXzM6DQorCQlpMnNfY29uID0gcmF0ZV9yZWcgPDwgSTJTNF9PVVRf TU9ERV9TRlQ7DQorCQlpMnNfY29uIHw9IEkyU19GTVRfSTJTIDw8IEkyUzRfRk1UX1NGVDsNCisJ CWkyc19jb24gfD0gZ2V0X2kyc193bGVuKGZvcm1hdCkgPDwgSTJTNF9XTEVOX1NGVDsNCisJCXJl Z21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZFX0kyU19DT04zLA0KKwkJCQkgICAweGZm ZmZlZmZlLCBpMnNfY29uKTsNCisJCWJyZWFrOw0KKwljYXNlIE1UODE5Ml9EQUlfSTJTXzU6DQor CQlpMnNfY29uID0gcmF0ZV9yZWcgPDwgSTJTNV9PVVRfTU9ERV9TRlQ7DQorCQlpMnNfY29uIHw9 IEkyU19GTVRfSTJTIDw8IEkyUzVfRk1UX1NGVDsNCisJCWkyc19jb24gfD0gZ2V0X2kyc193bGVu KGZvcm1hdCkgPDwgSTJTNV9XTEVOX1NGVDsNCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJl Z21hcCwgQUZFX0kyU19DT040LA0KKwkJCQkgICAweGZmZmZlZmZlLCBpMnNfY29uKTsNCisJCWJy ZWFrOw0KKwljYXNlIE1UODE5Ml9EQUlfSTJTXzY6DQorCQlpMnNfY29uID0gcmF0ZV9yZWcgPDwg STJTNl9PVVRfTU9ERV9TRlQ7DQorCQlpMnNfY29uIHw9IEkyU19GTVRfSTJTIDw8IEkyUzZfRk1U X1NGVDsNCisJCWkyc19jb24gfD0gZ2V0X2kyc193bGVuKGZvcm1hdCkgPDwgSTJTNl9XTEVOX1NG VDsNCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZFX0kyU19DT042LA0KKwkJ CQkgICAweGZmZmZlZmZlLCBpMnNfY29uKTsNCisJCWJyZWFrOw0KKwljYXNlIE1UODE5Ml9EQUlf STJTXzc6DQorCQlpMnNfY29uID0gcmF0ZV9yZWcgPDwgSTJTN19PVVRfTU9ERV9TRlQ7DQorCQlp MnNfY29uIHw9IEkyU19GTVRfSTJTIDw8IEkyUzdfRk1UX1NGVDsNCisJCWkyc19jb24gfD0gZ2V0 X2kyc193bGVuKGZvcm1hdCkgPDwgSTJTN19XTEVOX1NGVDsNCisJCXJlZ21hcF91cGRhdGVfYml0 cyhhZmUtPnJlZ21hcCwgQUZFX0kyU19DT043LA0KKwkJCQkgICAweGZmZmZlZmZlLCBpMnNfY29u KTsNCisJCWJyZWFrOw0KKwljYXNlIE1UODE5Ml9EQUlfSTJTXzg6DQorCQlpMnNfY29uID0gcmF0 ZV9yZWcgPDwgSTJTOF9PVVRfTU9ERV9TRlQ7DQorCQlpMnNfY29uIHw9IEkyU19GTVRfSTJTIDw8 IEkyUzhfRk1UX1NGVDsNCisJCWkyc19jb24gfD0gZ2V0X2kyc193bGVuKGZvcm1hdCkgPDwgSTJT OF9XTEVOX1NGVDsNCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZFX0kyU19D T044LA0KKwkJCQkgICAweGZmZmZlZmZlLCBpMnNfY29uKTsNCisJCWJyZWFrOw0KKwljYXNlIE1U ODE5Ml9EQUlfSTJTXzk6DQorCQlpMnNfY29uID0gcmF0ZV9yZWcgPDwgSTJTOV9PVVRfTU9ERV9T RlQ7DQorCQlpMnNfY29uIHw9IEkyU19GTVRfSTJTIDw8IEkyUzlfRk1UX1NGVDsNCisJCWkyc19j b24gfD0gZ2V0X2kyc193bGVuKGZvcm1hdCkgPDwgSTJTOV9XTEVOX1NGVDsNCisJCXJlZ21hcF91 cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZFX0kyU19DT045LA0KKwkJCQkgICAweGZmZmZlZmZl LCBpMnNfY29uKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJZGV2X3dhcm4oYWZlLT5kZXYs ICIlcygpLCBpZCAlZCBub3Qgc3VwcG9ydFxuIiwNCisJCQkgX19mdW5jX18sIGkyc19pZCk7DQor CQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwkvKiBzZXQgc2hhcmUgaTJzICovDQorCWlmIChp MnNfcHJpdiAmJiBpMnNfcHJpdi0+c2hhcmVfaTJzX2lkID49IDApDQorCQlyZXQgPSBtdGtfZGFp X2kyc19jb25maWcoYWZlLCBwYXJhbXMsIGkyc19wcml2LT5zaGFyZV9pMnNfaWQpOw0KKw0KKwly ZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IG10a19kYWlfaTJzX2h3X3BhcmFtcyhzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwNCisJCQkJIHN0cnVjdCBzbmRfcGNtX2h3 X3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpDQorew0KKwlz dHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShkYWkpOw0K Kw0KKwlyZXR1cm4gbXRrX2RhaV9pMnNfY29uZmlnKGFmZSwgcGFyYW1zLCBkYWktPmlkKTsNCit9 DQorDQorc3RhdGljIGludCBtdGtfZGFpX2kyc19zZXRfc3lzY2xrKHN0cnVjdCBzbmRfc29jX2Rh aSAqZGFpLA0KKwkJCQkgIGludCBjbGtfaWQsIHVuc2lnbmVkIGludCBmcmVxLCBpbnQgZGlyKQ0K K3sNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gZGV2X2dldF9kcnZkYXRhKGRhaS0+ZGV2 KTsNCisJc3RydWN0IG10ODE5Ml9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRmb3Jt X3ByaXY7DQorCXN0cnVjdCBtdGtfYWZlX2kyc19wcml2ICppMnNfcHJpdiA9IGFmZV9wcml2LT5k YWlfcHJpdltkYWktPmlkXTsNCisJaW50IGFwbGw7DQorCWludCBhcGxsX3JhdGU7DQorDQorCWlm ICghaTJzX3ByaXYpIHsNCisJCWRldl93YXJuKGFmZS0+ZGV2LCAiJXMoKSwgaTJzX3ByaXYgPT0g TlVMTCIsIF9fZnVuY19fKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCWlmIChkaXIg IT0gU05EX1NPQ19DTE9DS19PVVQpIHsNCisJCWRldl93YXJuKGFmZS0+ZGV2LCAiJXMoKSwgZGly ICE9IFNORF9TT0NfQ0xPQ0tfT1VUIiwgX19mdW5jX18pOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQor CX0NCisNCisJZGV2X2RiZyhhZmUtPmRldiwgIiVzKCksIGZyZXEgJWRcbiIsIF9fZnVuY19fLCBm cmVxKTsNCisNCisJYXBsbCA9IG10ODE5Ml9nZXRfYXBsbF9ieV9yYXRlKGFmZSwgZnJlcSk7DQor CWFwbGxfcmF0ZSA9IG10ODE5Ml9nZXRfYXBsbF9yYXRlKGFmZSwgYXBsbCk7DQorDQorCWlmIChm cmVxID4gYXBsbF9yYXRlKSB7DQorCQlkZXZfd2FybihhZmUtPmRldiwgIiVzKCksIGZyZXEgPiBh cGxsIHJhdGUiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlpZiAo YXBsbF9yYXRlICUgZnJlcSAhPSAwKSB7DQorCQlkZXZfd2FybihhZmUtPmRldiwgIiVzKCksIEFQ TEwgY2FuJ3QgZ2VuIGZyZXEgSHoiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJ fQ0KKw0KKwlpMnNfcHJpdi0+bWNsa19yYXRlID0gZnJlcTsNCisJaTJzX3ByaXYtPm1jbGtfYXBs bCA9IGFwbGw7DQorDQorCWlmIChpMnNfcHJpdi0+c2hhcmVfaTJzX2lkID4gMCkgew0KKwkJc3Ry dWN0IG10a19hZmVfaTJzX3ByaXYgKnNoYXJlX2kyc19wcml2Ow0KKw0KKwkJc2hhcmVfaTJzX3By aXYgPSBhZmVfcHJpdi0+ZGFpX3ByaXZbaTJzX3ByaXYtPnNoYXJlX2kyc19pZF07DQorCQlpZiAo IXNoYXJlX2kyc19wcml2KSB7DQorCQkJZGV2X3dhcm4oYWZlLT5kZXYsICIlcygpLCBzaGFyZV9p MnNfcHJpdiA9IE5VTEwiLA0KKwkJCQkgX19mdW5jX18pOw0KKwkJCXJldHVybiAtRUlOVkFMOw0K KwkJfQ0KKw0KKwkJc2hhcmVfaTJzX3ByaXYtPm1jbGtfcmF0ZSA9IGkyc19wcml2LT5tY2xrX3Jh dGU7DQorCQlzaGFyZV9pMnNfcHJpdi0+bWNsa19hcGxsID0gaTJzX3ByaXYtPm1jbGtfYXBsbDsN CisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29j X2RhaV9vcHMgbXRrX2RhaV9pMnNfb3BzID0gew0KKwkuaHdfcGFyYW1zID0gbXRrX2RhaV9pMnNf aHdfcGFyYW1zLA0KKwkuc2V0X3N5c2NsayA9IG10a19kYWlfaTJzX3NldF9zeXNjbGssDQorfTsN CisNCisvKiBkYWkgZHJpdmVyICovDQorI2RlZmluZSBNVEtfQ09OTlNZU19JMlNfUkFURVMgKFNO RFJWX1BDTV9SQVRFXzQ0MTAwIHwgU05EUlZfUENNX1JBVEVfNDgwMDApDQorDQorI2RlZmluZSBN VEtfSTJTX1JBVEVTIChTTkRSVl9QQ01fUkFURV84MDAwXzQ4MDAwIHxcDQorCQkgICAgICAgU05E UlZfUENNX1JBVEVfODgyMDAgfFwNCisJCSAgICAgICBTTkRSVl9QQ01fUkFURV85NjAwMCB8XA0K KwkJICAgICAgIFNORFJWX1BDTV9SQVRFXzE3NjQwMCB8XA0KKwkJICAgICAgIFNORFJWX1BDTV9S QVRFXzE5MjAwMCkNCisNCisjZGVmaW5lIE1US19JMlNfRk9STUFUUyAoU05EUlZfUENNX0ZNVEJJ VF9TMTZfTEUgfFwNCisJCQkgU05EUlZfUENNX0ZNVEJJVF9TMjRfTEUgfFwNCisJCQkgU05EUlZf UENNX0ZNVEJJVF9TMzJfTEUpDQorDQorc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9kcml2ZXIg bXRrX2RhaV9pMnNfZHJpdmVyW10gPSB7DQorCXsNCisJCS5uYW1lID0gIkNPTk5TWVNfSTJTIiwN CisJCS5pZCA9IE1UODE5Ml9EQUlfQ09OTlNZU19JMlMsDQorCQkuY2FwdHVyZSA9IHsNCisJCQku c3RyZWFtX25hbWUgPSAiQ29ubnN5cyBJMlMiLA0KKwkJCS5jaGFubmVsc19taW4gPSAxLA0KKwkJ CS5jaGFubmVsc19tYXggPSAyLA0KKwkJCS5yYXRlcyA9IE1US19DT05OU1lTX0kyU19SQVRFUywN CisJCQkuZm9ybWF0cyA9IE1US19JMlNfRk9STUFUUywNCisJCX0sDQorCQkub3BzID0gJm10a19k YWlfY29ubnN5c19pMnNfb3BzLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJJMlMwIiwNCisJCS5p ZCA9IE1UODE5Ml9EQUlfSTJTXzAsDQorCQkuY2FwdHVyZSA9IHsNCisJCQkuc3RyZWFtX25hbWUg PSAiSTJTMCIsDQorCQkJLmNoYW5uZWxzX21pbiA9IDEsDQorCQkJLmNoYW5uZWxzX21heCA9IDIs DQorCQkJLnJhdGVzID0gTVRLX0kyU19SQVRFUywNCisJCQkuZm9ybWF0cyA9IE1US19JMlNfRk9S TUFUUywNCisJCX0sDQorCQkub3BzID0gJm10a19kYWlfaTJzX29wcywNCisJfSwNCisJew0KKwkJ Lm5hbWUgPSAiSTJTMSIsDQorCQkuaWQgPSBNVDgxOTJfREFJX0kyU18xLA0KKwkJLnBsYXliYWNr ID0gew0KKwkJCS5zdHJlYW1fbmFtZSA9ICJJMlMxIiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwN CisJCQkuY2hhbm5lbHNfbWF4ID0gMiwNCisJCQkucmF0ZXMgPSBNVEtfSTJTX1JBVEVTLA0KKwkJ CS5mb3JtYXRzID0gTVRLX0kyU19GT1JNQVRTLA0KKwkJfSwNCisJCS5vcHMgPSAmbXRrX2RhaV9p MnNfb3BzLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJJMlMyIiwNCisJCS5pZCA9IE1UODE5Ml9E QUlfSTJTXzIsDQorCQkuY2FwdHVyZSA9IHsNCisJCQkuc3RyZWFtX25hbWUgPSAiSTJTMiIsDQor CQkJLmNoYW5uZWxzX21pbiA9IDEsDQorCQkJLmNoYW5uZWxzX21heCA9IDIsDQorCQkJLnJhdGVz ID0gTVRLX0kyU19SQVRFUywNCisJCQkuZm9ybWF0cyA9IE1US19JMlNfRk9STUFUUywNCisJCX0s DQorCQkub3BzID0gJm10a19kYWlfaTJzX29wcywNCisJfSwNCisJew0KKwkJLm5hbWUgPSAiSTJT MyIsDQorCQkuaWQgPSBNVDgxOTJfREFJX0kyU18zLA0KKwkJLnBsYXliYWNrID0gew0KKwkJCS5z dHJlYW1fbmFtZSA9ICJJMlMzIiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5l bHNfbWF4ID0gMiwNCisJCQkucmF0ZXMgPSBNVEtfSTJTX1JBVEVTLA0KKwkJCS5mb3JtYXRzID0g TVRLX0kyU19GT1JNQVRTLA0KKwkJfSwNCisJCS5vcHMgPSAmbXRrX2RhaV9pMnNfb3BzLA0KKwl9 LA0KKwl7DQorCQkubmFtZSA9ICJJMlM1IiwNCisJCS5pZCA9IE1UODE5Ml9EQUlfSTJTXzUsDQor CQkucGxheWJhY2sgPSB7DQorCQkJLnN0cmVhbV9uYW1lID0gIkkyUzUiLA0KKwkJCS5jaGFubmVs c19taW4gPSAxLA0KKwkJCS5jaGFubmVsc19tYXggPSAyLA0KKwkJCS5yYXRlcyA9IE1US19JMlNf UkFURVMsDQorCQkJLmZvcm1hdHMgPSBNVEtfSTJTX0ZPUk1BVFMsDQorCQl9LA0KKwkJLm9wcyA9 ICZtdGtfZGFpX2kyc19vcHMsDQorCX0sDQorCXsNCisJCS5uYW1lID0gIkkyUzYiLA0KKwkJLmlk ID0gTVQ4MTkyX0RBSV9JMlNfNiwNCisJCS5jYXB0dXJlID0gew0KKwkJCS5zdHJlYW1fbmFtZSA9 ICJJMlM2IiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5lbHNfbWF4ID0gMiwN CisJCQkucmF0ZXMgPSBNVEtfSTJTX1JBVEVTLA0KKwkJCS5mb3JtYXRzID0gTVRLX0kyU19GT1JN QVRTLA0KKwkJfSwNCisJCS5vcHMgPSAmbXRrX2RhaV9pMnNfb3BzLA0KKwl9LA0KKwl7DQorCQku bmFtZSA9ICJJMlM3IiwNCisJCS5pZCA9IE1UODE5Ml9EQUlfSTJTXzcsDQorCQkucGxheWJhY2sg PSB7DQorCQkJLnN0cmVhbV9uYW1lID0gIkkyUzciLA0KKwkJCS5jaGFubmVsc19taW4gPSAxLA0K KwkJCS5jaGFubmVsc19tYXggPSAyLA0KKwkJCS5yYXRlcyA9IE1US19JMlNfUkFURVMsDQorCQkJ LmZvcm1hdHMgPSBNVEtfSTJTX0ZPUk1BVFMsDQorCQl9LA0KKwkJLm9wcyA9ICZtdGtfZGFpX2ky c19vcHMsDQorCX0sDQorCXsNCisJCS5uYW1lID0gIkkyUzgiLA0KKwkJLmlkID0gTVQ4MTkyX0RB SV9JMlNfOCwNCisJCS5jYXB0dXJlID0gew0KKwkJCS5zdHJlYW1fbmFtZSA9ICJJMlM4IiwNCisJ CQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5lbHNfbWF4ID0gMiwNCisJCQkucmF0ZXMg PSBNVEtfSTJTX1JBVEVTLA0KKwkJCS5mb3JtYXRzID0gTVRLX0kyU19GT1JNQVRTLA0KKwkJfSwN CisJCS5vcHMgPSAmbXRrX2RhaV9pMnNfb3BzLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJJMlM5 IiwNCisJCS5pZCA9IE1UODE5Ml9EQUlfSTJTXzksDQorCQkucGxheWJhY2sgPSB7DQorCQkJLnN0 cmVhbV9uYW1lID0gIkkyUzkiLA0KKwkJCS5jaGFubmVsc19taW4gPSAxLA0KKwkJCS5jaGFubmVs c19tYXggPSAyLA0KKwkJCS5yYXRlcyA9IE1US19JMlNfUkFURVMsDQorCQkJLmZvcm1hdHMgPSBN VEtfSTJTX0ZPUk1BVFMsDQorCQl9LA0KKwkJLm9wcyA9ICZtdGtfZGFpX2kyc19vcHMsDQorCX0N Cit9Ow0KKw0KKy8qIHRoaXMgZW51bSBpcyBtZXJlbHkgZm9yIG10a19hZmVfaTJzX3ByaXYgZGVj bGFyZSAqLw0KK2VudW0gew0KKwlEQUlfSTJTMCA9IDAsDQorCURBSV9JMlMxLA0KKwlEQUlfSTJT MiwNCisJREFJX0kyUzMsDQorCURBSV9JMlM1LA0KKwlEQUlfSTJTNiwNCisJREFJX0kyUzcsDQor CURBSV9JMlM4LA0KKwlEQUlfSTJTOSwNCisJREFJX0kyU19OVU0sDQorfTsNCisNCitzdGF0aWMg Y29uc3Qgc3RydWN0IG10a19hZmVfaTJzX3ByaXYgbXQ4MTkyX2kyc19wcml2W0RBSV9JMlNfTlVN XSA9IHsNCisJW0RBSV9JMlMwXSA9IHsNCisJCS5pZCA9IE1UODE5Ml9EQUlfSTJTXzAsDQorCQku bWNsa19pZCA9IE1UODE5Ml9JMlMwX01DSywNCisJCS5zaGFyZV9wcm9wZXJ0eV9uYW1lID0gImky czAtc2hhcmUiLA0KKwkJLnNoYXJlX2kyc19pZCA9IC0xLA0KKwl9LA0KKwlbREFJX0kyUzFdID0g ew0KKwkJLmlkID0gTVQ4MTkyX0RBSV9JMlNfMSwNCisJCS5tY2xrX2lkID0gTVQ4MTkyX0kyUzFf TUNLLA0KKwkJLnNoYXJlX3Byb3BlcnR5X25hbWUgPSAiaTJzMS1zaGFyZSIsDQorCQkuc2hhcmVf aTJzX2lkID0gLTEsDQorCX0sDQorCVtEQUlfSTJTMl0gPSB7DQorCQkuaWQgPSBNVDgxOTJfREFJ X0kyU18yLA0KKwkJLm1jbGtfaWQgPSBNVDgxOTJfSTJTMl9NQ0ssDQorCQkuc2hhcmVfcHJvcGVy dHlfbmFtZSA9ICJpMnMyLXNoYXJlIiwNCisJCS5zaGFyZV9pMnNfaWQgPSAtMSwNCisJfSwNCisJ W0RBSV9JMlMzXSA9IHsNCisJCS5pZCA9IE1UODE5Ml9EQUlfSTJTXzMsDQorCQkubWNsa19pZCA9 IE1UODE5Ml9JMlMzX01DSywNCisJCS5zaGFyZV9wcm9wZXJ0eV9uYW1lID0gImkyczMtc2hhcmUi LA0KKwkJLnNoYXJlX2kyc19pZCA9IC0xLA0KKwl9LA0KKwlbREFJX0kyUzVdID0gew0KKwkJLmlk ID0gTVQ4MTkyX0RBSV9JMlNfNSwNCisJCS5tY2xrX2lkID0gTVQ4MTkyX0kyUzVfTUNLLA0KKwkJ LnNoYXJlX3Byb3BlcnR5X25hbWUgPSAiaTJzNS1zaGFyZSIsDQorCQkuc2hhcmVfaTJzX2lkID0g LTEsDQorCX0sDQorCVtEQUlfSTJTNl0gPSB7DQorCQkuaWQgPSBNVDgxOTJfREFJX0kyU182LA0K KwkJLm1jbGtfaWQgPSBNVDgxOTJfSTJTNl9NQ0ssDQorCQkuc2hhcmVfcHJvcGVydHlfbmFtZSA9 ICJpMnM2LXNoYXJlIiwNCisJCS5zaGFyZV9pMnNfaWQgPSAtMSwNCisJfSwNCisJW0RBSV9JMlM3 XSA9IHsNCisJCS5pZCA9IE1UODE5Ml9EQUlfSTJTXzcsDQorCQkubWNsa19pZCA9IE1UODE5Ml9J MlM3X01DSywNCisJCS5zaGFyZV9wcm9wZXJ0eV9uYW1lID0gImkyczctc2hhcmUiLA0KKwkJLnNo YXJlX2kyc19pZCA9IC0xLA0KKwl9LA0KKwlbREFJX0kyUzhdID0gew0KKwkJLmlkID0gTVQ4MTky X0RBSV9JMlNfOCwNCisJCS5tY2xrX2lkID0gTVQ4MTkyX0kyUzhfTUNLLA0KKwkJLnNoYXJlX3By b3BlcnR5X25hbWUgPSAiaTJzOC1zaGFyZSIsDQorCQkuc2hhcmVfaTJzX2lkID0gLTEsDQorCX0s DQorCVtEQUlfSTJTOV0gPSB7DQorCQkuaWQgPSBNVDgxOTJfREFJX0kyU185LA0KKwkJLm1jbGtf aWQgPSBNVDgxOTJfSTJTOV9NQ0ssDQorCQkuc2hhcmVfcHJvcGVydHlfbmFtZSA9ICJpMnM5LXNo YXJlIiwNCisJCS5zaGFyZV9pMnNfaWQgPSAtMSwNCisJfSwNCit9Ow0KKw0KK2ludCBtdDgxOTJf ZGFpX2kyc19nZXRfc2hhcmUoc3RydWN0IG10a19iYXNlX2FmZSAqYWZlKQ0KK3sNCisJc3RydWN0 IG10ODE5Ml9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRmb3JtX3ByaXY7DQorCWNv bnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zfbm9kZSA9IGFmZS0+ZGV2LT5vZl9ub2RlOw0KKwlj b25zdCBjaGFyICpvZl9zdHI7DQorCWNvbnN0IGNoYXIgKnByb3BlcnR5X25hbWU7DQorCXN0cnVj dCBtdGtfYWZlX2kyc19wcml2ICppMnNfcHJpdjsNCisJaW50IGk7DQorDQorCWZvciAoaSA9IDA7 IGkgPCBEQUlfSTJTX05VTTsgaSsrKSB7DQorCQlpMnNfcHJpdiA9IGFmZV9wcml2LT5kYWlfcHJp dlttdDgxOTJfaTJzX3ByaXZbaV0uaWRdOw0KKwkJcHJvcGVydHlfbmFtZSA9IG10ODE5Ml9pMnNf cHJpdltpXS5zaGFyZV9wcm9wZXJ0eV9uYW1lOw0KKwkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfc3Ry aW5nKG9mX25vZGUsIHByb3BlcnR5X25hbWUsICZvZl9zdHIpKQ0KKwkJCWNvbnRpbnVlOw0KKwkJ aTJzX3ByaXYtPnNoYXJlX2kyc19pZCA9IGdldF9pMnNfaWRfYnlfbmFtZShhZmUsIG9mX3N0cik7 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBtdDgxOTJfZGFpX2kyc19zZXRfcHJp dihzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUpDQorew0KKwlpbnQgaTsNCisJaW50IHJldDsNCisN CisJZm9yIChpID0gMDsgaSA8IERBSV9JMlNfTlVNOyBpKyspIHsNCisJCXJldCA9IG10ODE5Ml9k YWlfc2V0X3ByaXYoYWZlLCBtdDgxOTJfaTJzX3ByaXZbaV0uaWQsDQorCQkJCQkgIHNpemVvZihz dHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiksDQorCQkJCQkgICZtdDgxOTJfaTJzX3ByaXZbaV0pOw0K KwkJaWYgKHJldCkNCisJCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisN CitpbnQgbXQ4MTkyX2RhaV9pMnNfcmVnaXN0ZXIoc3RydWN0IG10a19iYXNlX2FmZSAqYWZlKQ0K K3sNCisJc3RydWN0IG10a19iYXNlX2FmZV9kYWkgKmRhaTsNCisJaW50IHJldDsNCisNCisJZGV2 X2RiZyhhZmUtPmRldiwgIiVzKClcbiIsIF9fZnVuY19fKTsNCisNCisJZGFpID0gZGV2bV9remFs bG9jKGFmZS0+ZGV2LCBzaXplb2YoKmRhaSksIEdGUF9LRVJORUwpOw0KKwlpZiAoIWRhaSkNCisJ CXJldHVybiAtRU5PTUVNOw0KKw0KKwlsaXN0X2FkZCgmZGFpLT5saXN0LCAmYWZlLT5zdWJfZGFp cyk7DQorDQorCWRhaS0+ZGFpX2RyaXZlcnMgPSBtdGtfZGFpX2kyc19kcml2ZXI7DQorCWRhaS0+ bnVtX2RhaV9kcml2ZXJzID0gQVJSQVlfU0laRShtdGtfZGFpX2kyc19kcml2ZXIpOw0KKw0KKwlk YWktPmNvbnRyb2xzID0gbXRrX2RhaV9pMnNfY29udHJvbHM7DQorCWRhaS0+bnVtX2NvbnRyb2xz ID0gQVJSQVlfU0laRShtdGtfZGFpX2kyc19jb250cm9scyk7DQorCWRhaS0+ZGFwbV93aWRnZXRz ID0gbXRrX2RhaV9pMnNfd2lkZ2V0czsNCisJZGFpLT5udW1fZGFwbV93aWRnZXRzID0gQVJSQVlf U0laRShtdGtfZGFpX2kyc193aWRnZXRzKTsNCisJZGFpLT5kYXBtX3JvdXRlcyA9IG10a19kYWlf aTJzX3JvdXRlczsNCisJZGFpLT5udW1fZGFwbV9yb3V0ZXMgPSBBUlJBWV9TSVpFKG10a19kYWlf aTJzX3JvdXRlcyk7DQorDQorCS8qIHNldCBhbGwgZGFpIGkycyBwcml2YXRlIGRhdGEgKi8NCisJ cmV0ID0gbXQ4MTkyX2RhaV9pMnNfc2V0X3ByaXYoYWZlKTsNCisJaWYgKHJldCkNCisJCXJldHVy biByZXQ7DQorDQorCS8qIHBhcnNlIHNoYXJlIGkycyAqLw0KKwlyZXQgPSBtdDgxOTJfZGFpX2ky c19nZXRfc2hhcmUoYWZlKTsNCisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7DQorDQorCXJldHVy biAwOw0KK30NCi0tIA0KMi4xOC4wDQo=