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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E023CCA0EF8 for ; Thu, 21 Aug 2025 12:50:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version: Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=87UpOEU7pc6F0nXDXNak1SAoABCrATO72/wzwhP7xLw=; b=AR7IbykpvybnKRuFOILkYTUwFk QQuRjqQnS62Dd0CAgkJQcospXnE0VauHdFk1ve4f3dO3qn+S9FW2UhAu3IpmXsV0BDOhIQWx7zMYR /i2XiB2PTAEWaL/GKpm0QO9osoY2q8FVz7wvgEJHfA9xw/M3ebFOE5JwQzpODA8gNZUVHeeZr5JnA fKggx6CsmeZy6CE0xBGYzSsvhtZ9NVKuJYb+DbTI67WgcuN7KcW+At8WmLy/AYzz3vU621unveST3 OGe5uWOud7j9b6VsPym0wRXf7JK5G2wCNCUpXVq+YaYbIaAkXE8TkiAUCPWOPe7EuKl5r85nkNcVm zbjtel8g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1up4kU-0000000GxQt-39m5; Thu, 21 Aug 2025 12:50:35 +0000 Received: from [216.200.240.184] (helo=mailgw01.mediatek.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1up1Jb-0000000GM8y-3Ty6; Thu, 21 Aug 2025 09:10:37 +0000 X-UUID: af4aa4467e6e11f09f706fa2197c6ceb-20250821 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=87UpOEU7pc6F0nXDXNak1SAoABCrATO72/wzwhP7xLw=; b=oebHZ9dY9z5CeqCTPpFR5/guBAZY2nk+2SG7YhswHCG8Hs8iQsOmInv0mqeFwVXjR7+Wfyk/xIpnIXoE9bxohAU6PRH93ruLsYnruj3QQqHdOgYXGUrfFHlSjNNuUonfb8nOVPZNv4tsmcm4uaxWc47fRJ8TtKlhFq9/CB0YBpE=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.3,REQID:653b4295-080e-4c48-bb0f-ed8bfefe05ae,IP:0,UR L:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION:r elease,TS:0 X-CID-META: VersionHash:f1326cf,CLOUDID:978d5e7a-966c-41bd-96b5-7d0b3c22e782,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:80|81|82|83|102|110|111,TC:-5,Conten t:0|15|50,EDM:-3,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL: 1,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: af4aa4467e6e11f09f706fa2197c6ceb-20250821 Received: from mtkmbs14n1.mediatek.inc [(172.21.101.75)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1122418933; Thu, 21 Aug 2025 02:10:30 -0700 Received: from mtkmbs10n1.mediatek.inc (172.21.101.34) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.39; Thu, 21 Aug 2025 17:10:27 +0800 Received: from SEYPR02CU001.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server id 15.2.1258.39 via Frontend Transport; Thu, 21 Aug 2025 17:10:26 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ruSGjVOvNRi4LzNDiYiSERyDMnyFLG4l6PKi/X1l5LlY4fiUSPp2LRVP3Gj5mVL5g/YY42aMkc63Ibj5f4SgYtXqQb4Uz4OiqpBqu90qWwRpgYM3l6iasUK9Qtv2DQLKCn0HGc0KSFN/VhyMTZxhfftj3WjJr3gy7M2TOsvfZtVDNh/yOLRK8E/qjupZl8q/dHgUIWdil168pgf8qOmcLkJJxaGy3qhCWGKaIOl/WpF5VffIxnvQr7APQpTVmP01Fr0gXpZ6ttNeDryFAj2TldUTpDPVOu1Wy6YLlpwLEBEWGnee0belS9Pk67Tq8CLZZKxmCs3/yKVcdM3zauGilg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=87UpOEU7pc6F0nXDXNak1SAoABCrATO72/wzwhP7xLw=; b=eox9zNXcd8yWz12Cme8KKbD6vc2xVy3Axt6l9TfV28KTo3X/cm9SHSxvPIHmJ6AXVXb9yKwlHME633bh0FiBycXVY2eWfL+94OVwXOpTvUnjMwiyP0t1Eq2Tyclui0VMJYluXpfUb9SIOPMEzeCMebUyns+eyNVzJCeFi05ufCfh/qURIWlZnfeCTetODhROBXgA7Y8SULphAJzAlwdbYTnP9PpWET+pX762CL/xnVyeVHDHqY+D3/nn+WnqsahBBCpCQnWq21oEIIWx1UXrwzpqq227PR+tFEeWh2gi8U/zd46adYSy99061kDr/W6UoD/DFHwVP1NJy8cmIIZcdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=87UpOEU7pc6F0nXDXNak1SAoABCrATO72/wzwhP7xLw=; b=vLQmDKkG6+YCj45BdsECuX7vxkBHFqOcyXribtM3y+H+9oLecR2QaDgSIzc3wY5T+ETm0KflOA7427QXNM/HtLNmfflfiJA1qJJVqxqkpTN52rREfA/GpxK9UCsEGJL9e7p3LfaLEgwS/z/5DkqxsssQyugryT5RWQw5SHmjcHY= Received: from SEYPR03MB7588.apcprd03.prod.outlook.com (2603:1096:101:146::10) by KL1PR03MB8194.apcprd03.prod.outlook.com (2603:1096:820:105::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.13; Thu, 21 Aug 2025 09:10:24 +0000 Received: from SEYPR03MB7588.apcprd03.prod.outlook.com ([fe80::f427:bd2f:f38d:17dd]) by SEYPR03MB7588.apcprd03.prod.outlook.com ([fe80::f427:bd2f:f38d:17dd%6]) with mapi id 15.20.9052.013; Thu, 21 Aug 2025 09:10:24 +0000 From: =?utf-8?B?RGFycmVuIFllICjlj7bpo54p?= To: "wenst@chromium.org" CC: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "devicetree@vger.kernel.org" , "linus.walleij@linaro.org" , "linux-sound@vger.kernel.org" , "linux-gpio@vger.kernel.org" , "broonie@kernel.org" , "brgl@bgdev.pl" , "conor+dt@kernel.org" , "tiwai@suse.com" , "robh@kernel.org" , "lgirdwood@gmail.com" , "linux-arm-kernel@lists.infradead.org" , "matthias.bgg@gmail.com" , "krzk+dt@kernel.org" , "perex@perex.cz" , AngeloGioacchino Del Regno Subject: Re: [PATCH v6 05/10] ASoC: mediatek: mt8196: support I2S in platform driver Thread-Topic: [PATCH v6 05/10] ASoC: mediatek: mt8196: support I2S in platform driver Thread-Index: AQHb7/oxiSdonJwuAU6BihpOLDUC77RdfxSAgA+X0AA= Date: Thu, 21 Aug 2025 09:10:24 +0000 Message-ID: References: <20250708111806.3992-1-darren.ye@mediatek.com> <20250708111806.3992-6-darren.ye@mediatek.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SEYPR03MB7588:EE_|KL1PR03MB8194:EE_ x-ms-office365-filtering-correlation-id: 64bc4531-a9df-4520-abd0-08dde0928ffb x-ld-processed: a7687ede-7a6b-4ef6-bace-642f677fbe31,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?OTZZWGxVblEvbFpKYU1mL201U0NlNTcxVmxNQ0gyQ3FoVTNzZkowajNzM1pa?= =?utf-8?B?VGZpNTkyaVdsNklUQzZvVXExbThTQ1JTQnB6aUN3RUYrMktxTWVzaVRGSWV1?= =?utf-8?B?Q1hLZVdDckpWc2M3RWZqSDZrbmFwSUJpc2U0ZDA0Z2NnWmNJQXZXdG9LSm9L?= =?utf-8?B?VnpxdVozeFpIdmttRCs5cWs2dGlSUE00RlpHenFEZ0VFaUJvS0RxODNjSnI0?= =?utf-8?B?WStMS0cvNW95RHNLVHdMTk9FVTNCd3ZLN2dzd0JUOFhTM1pkZFRxWnFUT0VX?= =?utf-8?B?NjBaSVphUkV4N1JKM2JkNlZTMFo5MHNUck5NOWFROWpPZzBqa1FmMFd1SVlL?= =?utf-8?B?S0tCNjlkZ09nLzdRQUFDNGs5eEtTeVNvYUdpNVFWZEZzcW1paUlIcC94YXJ6?= =?utf-8?B?Zm9JSFBSbngzQksxTG9uWTkvSEh6c3BudVFDaVFOY3BlVTI4VURpMzhkS3Y0?= =?utf-8?B?aCtGcWFXQlQwVUgzTTlLMmI5dUo0U3BTdjZEYlZ6VjJIeGtzT001dFkxN3Va?= =?utf-8?B?MU41Z3R0eldwSkhmUWphTnF0NFF5WWZTL1Nkc2ZCS0c5S3NVejAzY1VqWG1r?= =?utf-8?B?eVRLUFh2RHYvd1AxM3FYMTg5YXF4RkFUYlo2MHJIRXMwRkx5cUtDTGlwZld0?= =?utf-8?B?dnJmRDZlUDUxNjBEVm5TK0xmVVdETC80UFZlVWJyc2R2SXVaOHpFbU9hOXJv?= =?utf-8?B?WEwyVlJ4OUNqdkViNjhsSi8ybUp3dFZOTEVITlo5dXM4cXhwUXFoL25rdW9l?= =?utf-8?B?OHFYRFd3U1ZNRHA3VTMxeStlMERkU2VZWUE1LzYvMi9ZUDBmcUw0MkgzaXp6?= =?utf-8?B?a2lsS1ZNTG9mK0ozK1F3YWJoSU16Nld1eXJPQlo5cWpxQUZpUFplSXhtanVx?= =?utf-8?B?RkJPV2xyYzNPMkZyNHpUTlhOeWFTZmFSTWtDNHlVZjZsb0JvWUhIMkdvTXRX?= =?utf-8?B?OU9pM0l1b09MMTlpR29IQWVyTlhZSVJ4T2ZmWCtwOGtGT0tBK0JMcWRxR1dD?= =?utf-8?B?clZ0Q0krcTdhRWxPcXZuRWdWWVRMLzhUUm1ZbWNyOGFtdWFlb3hFMjFMY2F4?= =?utf-8?B?bU9Qcy9WUXRBN21yT0M4N0hkdGM2VE1KbmJQN2t0UEpOL2NVVlhvSEJGWTRl?= =?utf-8?B?UXowbUxSK0ZrSXFpYjJoL0hrZXpPZ212YnFMRU5TM09WRUVwUjlac0xsckNC?= =?utf-8?B?ZDRwZXFuR0ZHelRKQWxnVG9oQ0p2MDdtUUNKM0U5WGhyQnFQYnpJcldoUnc0?= =?utf-8?B?SURqM3hhLzYxdGhKVG80ZWhqb1JYc1FwRDZ3WXBCazd1Zng5T2VraVdrTHhz?= =?utf-8?B?cnFTbHJkWjZHdGZ6WXh4V3ovWEhsOHY3MTlJQkY2aXNOT0ZaZmR3amFNV0Ji?= =?utf-8?B?enBvRVdLeWhxeWljaVQxZkJudHpmRTFTNCtySjlnY01Oakp4b29TVmRqVHRp?= =?utf-8?B?YUhOekl4UnRwY3Y3NGVXZENyRVZqc3JCQ0lLcklPcnZMdElqTUEwVlI5VU05?= =?utf-8?B?b3hjM3BEUllIR1V1YUx6T0FoaHRRbCtXcXRwMHA4SDc5RWRtY3ovN3ZqWXZo?= =?utf-8?B?Qnd6TmVhSmJjRWR6U20wMFNnNmpvZGIwN29rQ0g5bnpoSFArU3NRTmdhY2Fh?= =?utf-8?B?aC96Tm5MMmVvYU9vQnlkQWRWMTJ6UDRsYjhuNFNubjZyUHoyTzNQazQ2V0Zv?= =?utf-8?B?OGo4T0lnMkYwdWpzOUlkREhyT0JXVUdha3ArcUhSMyszSWpmUEJkeTlMOFlC?= =?utf-8?B?b2lEeWgyTTlnTnFDZVdEL1NqVk5nNGVSSnJHK2pjU1Qzcloxay8vUE1WVk9s?= =?utf-8?B?ZVR2STN1STdpVWJKblBLcDY5Ly9jSmZqWVlMWkNLYlJnNHluOVBRQzJxRk4v?= =?utf-8?B?K0M4VGYzL3NKY1dNWlFUeDM2cUpkbGNvdWYrZ0JrUWxzVEs0ZlFidXJoLzdZ?= =?utf-8?B?b0ZlcWZwREUrUkFKQXNGdHBLS0JhMm5pd1lQOXMzaWZRVzZ2MlcwNmx2UHRB?= =?utf-8?Q?Jgff/aFKTOnftI5BhhpK+jrgqVDZR8=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEYPR03MB7588.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?alVzNndobFJaSW9hMHNZL1hySWN4UzdsY0JHODU0c2QvVzJTaE1UTW5rUVF3?= =?utf-8?B?TDhjQ29ybDFtQUFTV1huVVNWSUxhVDdkd3FrTzdaUzAwbUVLN2dCSFVROS9Y?= =?utf-8?B?aFAvT3B0QVdMdm9XZkpYSWx2V2RxRUpDV3lpWW1LS2VSYnlyaXl1K1RQZkdk?= =?utf-8?B?b05xWjczbnk0VXdiVHdPY3BmNW5Jam50VmMzMDVCR0hVcnJPZ3RpZlZwNnho?= =?utf-8?B?L2NxdzMyMFRlMmw4cUZNNktWc0ZxaGpOVjhNOXN3dzlrYzJoaXZzQXl4RGVt?= =?utf-8?B?akpwTHJIbFZaTlRYWXBKSjhPZWo1UDdRL2NEdndaQ0wvdEl0TXJneTRWOTB4?= =?utf-8?B?dEprczRwNENQaDlUZkVmMXdRYTV4eW16a1JLWFdPUnpSbzdob1JZdTZoUitK?= =?utf-8?B?WTR0YWxYYU83VXg3QzZMODdtVitoOElYbGtZOHBXOXdTb0RSb01yRStSeTQ5?= =?utf-8?B?N1I5TXNPMzhTekpqUlRBYytKdEVxdTFLMThYSEQ4OHRCekdwL21oKzVicDBl?= =?utf-8?B?YVU0bGJZL2cxYURDLzAxSGJuUUlWODQzUUJxbk1ZdWNib0JmVUR2VHFmYkxj?= =?utf-8?B?SkprRjFRcGU5QlQzd09wZGdOdEVYVG9KOXd2ZlVvVXpNdkE5WVYxRSsxL20x?= =?utf-8?B?Y0RMNHlOUTBXYkNLRXBzajZRQ1RxdGs1M3dkMExrNUFUUWRpSks4VE5DU005?= =?utf-8?B?WUJLbzIzTktkaTY1SmNWSVQvOVdsaWJvcHlYZkg3WTJYa0JwMzN3ckFrVFFh?= =?utf-8?B?VW1EZVRnN3pjOUE1cDQxWDAxeVB4Ynd0R2xNOFFlUDJTV1ZadlVCelBrYWZX?= =?utf-8?B?THhyQXdVak03VEpLaGlFdGRFR1Z5UWpxWUVSWERUNSsrRm1lejBKV1pqMHov?= =?utf-8?B?aFRONTJuYmVTTS93Y2RveGVkd1FHSjZ3cnZ5RU9ZWStQRHY2NmtWSmljVEJX?= =?utf-8?B?ai9qYk1hQTR2anpDbzRXTlZmZmhPMmlGU25pVjQ1b3VBWDhkLzhHV3ZMUFUz?= =?utf-8?B?NFJIdEEyU2VGY1JiQXZMZGVua2tLK2lnQTN3QTVEOWRnYk9NejlZdTlxZ0wy?= =?utf-8?B?Q2hhVitpYk5wUS9EbVpzY0tPUU9PUkdwVmNTeGxTc3YxZzV1SUdQTStyeWMx?= =?utf-8?B?RFBuUFc4c2RVZVl4aXlSL09hZWpxamM4cWs4bURBbmV0VVdBejNNUGwwTG91?= =?utf-8?B?a21QRU51aVQ4T09GcmJLMm4ySmJXWXdtWTl0YzRzdkdpUEpJdm9jZzBSUjZa?= =?utf-8?B?WCtMNk1wTHh2eGx4YzVkVUZyVUZ3eG5MbE1ybzAwbmlvU21DcHQzSmlCVXpo?= =?utf-8?B?bEZRNmo4QzVYV3EwMmNaeUtLV2J4QkNBb3JsK0syQXBaRGFlZk1SVEQ1SE5o?= =?utf-8?B?Y2FXTStUZ0dhdDF0OFdZRlBjdUYwUCsyUHM3dmQ3Z0ZTeTIyWW95b1lkRkww?= =?utf-8?B?bDl1TjZEeHFHZGhxTUhIZVdZaVUwYzVUNzVZbFRFOXBkbGdHaTRJdUd5RlhP?= =?utf-8?B?Mk1BeThCK1pTSHp1VUlEQ1lKZjU0QXJITyt1cmpSV3lxcDhwT0NodWYzanJq?= =?utf-8?B?NFBXNFBseDdYQ09jRFNGajRENjR1QmZhcFllcXZubUswYVM4OFc1NWdMaXNy?= =?utf-8?B?OW5IVHJPQlFwZGZhTGJZay9uVExNeVlTdWNCa1BualU3OUNFQmRHbnVSbllV?= =?utf-8?B?VDJDWnJiY1pMT1ZJWU9UbXllREw0SHoxcG9sRlhzaENsVE95bmpiV0xoZmdo?= =?utf-8?B?UzN0ZVd0OGRtOURiaUxYWnZYTTNEQXZRMFo3TXhxekt5anpRcVpNTUx4N2NV?= =?utf-8?B?TzVnUy9Sdk5QRDVwNGkxMzV2eUVObWdOd2JZN3dBZmdQQVVxVGJWcUFKVzk1?= =?utf-8?B?aHRxSmtvQ29HdEM4ME1xY001YzBrRXlKdGdGSkJwdWdTQ1FPc1Njdk9tVUdi?= =?utf-8?B?Zjgrb3RyVWxpblhpMXhhQWYvZDQ2cnFzdlMrMm5kUVNCTVJRdmVHM2dZY3dI?= =?utf-8?B?K2FyamtJTWdlc1lTeWJWVnJrbkFya3R3akFQM0lyQzVqQUxTS0h1eHBFSlV6?= =?utf-8?B?TjZqRGJlZzBrdnp6UURYYlpvRE1zaWg0SWJqQ3NJVERrSEdTVkk4Rk9jaC9a?= =?utf-8?B?N095VDZtMkRrWENCRVh1WU1vczFnRnRDelE3MVpGdzZ6WVFha3lNRlZUUkRx?= =?utf-8?B?bGc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <1BC7678D47E6AB4A8EE841785A8C8540@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SEYPR03MB7588.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64bc4531-a9df-4520-abd0-08dde0928ffb X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Aug 2025 09:10:24.1795 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Zm97DpAko9BZlWeSo/fW1RNxCRFbZJ39bMzt46siRiuWRQycyLSihpHvTwa5BZ9LiJeYafHNe+TSjMGtiEx7gw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR03MB8194 X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCAyMDI1LTA4LTExIGF0IDE5OjAzICswODAwLCBDaGVuLVl1IFRzYWkgd3JvdGU6DQo+ IEV4dGVybmFsIGVtYWlsIDogUGxlYXNlIGRvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFj aG1lbnRzIHVudGlsDQo+IHlvdSBoYXZlIHZlcmlmaWVkIHRoZSBzZW5kZXIgb3IgdGhlIGNvbnRl bnQuDQo+IA0KPiANCj4gT24gVHVlLCBKdWwgOCwgMjAyNSBhdCA3OjM04oCvUE0gRGFycmVuLlll IDxkYXJyZW4ueWVAbWVkaWF0ZWsuY29tPg0KPiB3cm90ZToNCj4gPiANCj4gPiBGcm9tOiBEYXJy ZW4gWWUgPGRhcnJlbi55ZUBtZWRpYXRlay5jb20+DQo+ID4gDQo+ID4gQWRkIG10ODE5NiBJMlMg REFJIGRyaXZlciBzdXBwb3J0Lg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IERhcnJlbiBZZSA8 ZGFycmVuLnllQG1lZGlhdGVrLmNvbT4NCj4gPiAtLS0NCj4gPiAgc291bmQvc29jL21lZGlhdGVr L210ODE5Ni9tdDgxOTYtZGFpLWkycy5jIHwgMzk0NA0KPiA+ICsrKysrKysrKysrKysrKysrKysr DQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAzOTQ0IGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHNvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTYvbXQ4MTk2LWRhaS1pMnMuYw0KPiA+ IA0KPiA+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbWVkaWF0ZWsvbXQ4MTk2L210ODE5Ni1kYWkt aTJzLmMNCj4gPiBiL3NvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTYvbXQ4MTk2LWRhaS1pMnMuYw0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi41OWY2NmFi OGZhOWYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvc291bmQvc29jL21lZGlhdGVrL210 ODE5Ni9tdDgxOTYtZGFpLWkycy5jDQo+ID4gQEAgLTAsMCArMSwzOTQ0IEBADQo+ID4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gKy8qDQo+ID4gKyAqICBNZWRpYVRl ayBBTFNBIFNvQyBBdWRpbyBEQUkgSTJTIENvbnRyb2wNCj4gPiArICoNCj4gPiArICogIENvcHly aWdodCAoYykgMjAyNCBNZWRpYVRlayBJbmMuDQo+IA0KPiAgICAgICAgICAgICAgICAgICAgICBe IHVwZGF0ZSB0byAyMDI1IChmb3IgYWxsIG5ldyBmaWxlcykNCj4gDQo+ID4gKyAqICBBdXRob3I6 IERhcnJlbiBZZSA8ZGFycmVuLnllQG1lZGlhdGVrLmNvbT4NCj4gPiArICovDQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAu aD4NCj4gPiArI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4NCj4gPiArI2luY2x1ZGUgIm10 ODE5Ni1hZmUtY2xrLmgiDQo+ID4gKyNpbmNsdWRlICJtdDgxOTYtYWZlLWNvbW1vbi5oIg0KPiA+ ICsjaW5jbHVkZSAibXQ4MTk2LWludGVyY29ubmVjdGlvbi5oIg0KPiA+ICsjaW5jbHVkZSAibXRr LWFmZS1mZS1kYWkuaCINCj4gDQo+IFBsZWFzZSBhZGQgb25lIGVtcHR5IGxpbmUgYmV0d2VlbiBl YWNoIGdyb3VwIG9mIGhlYWRlcnMgKGxpbnV4LyosDQo+IHNvdW5kLyosDQo+IGxvY2FsKS4gQW5k IHBsZWFzZSB1c2UgcmVsYXRpdmUgcGF0aHMgZm9yIHRoZSBsb2NhbCBoZWFkZXJzLg0KPiANCj4g PiArDQo+ID4gKyNkZWZpbmUgRVRETV8yMk1fQ0xPQ0tfVEhSRVMgMTEyODk2MDANCj4gPiArDQo+ ID4gK2VudW0gew0KPiA+ICsgICAgICAgRVRETV9DTEtfU09VUkNFX0gyNk0sDQo+ID4gKyAgICAg ICBFVERNX0NMS19TT1VSQ0VfQVBMTCwNCj4gPiArICAgICAgIEVURE1fQ0xLX1NPVVJDRV9TUERJ RiwNCj4gPiArICAgICAgIEVURE1fQ0xLX1NPVVJDRV9IRE1JLA0KPiA+ICsgICAgICAgRVRETV9D TEtfU09VUkNFX0VBUkMsDQo+ID4gKyAgICAgICBFVERNX0NMS19TT1VSQ0VfTElORUlOLA0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArZW51bSB7DQo+ID4gKyAgICAgICBFVERNX1JFTEFUQ0hfU0VMX0gy Nk0sDQo+ID4gKyAgICAgICBFVERNX1JFTEFUQ0hfU0VMX0FQTEwsDQo+ID4gK307DQo+ID4gKw0K PiA+ICtlbnVtIHsNCj4gPiArICAgICAgIEVURE1fUkFURV84SywNCj4gPiArICAgICAgIEVURE1f UkFURV8xMkssDQo+ID4gKyAgICAgICBFVERNX1JBVEVfMTZLLA0KPiA+ICsgICAgICAgRVRETV9S QVRFXzI0SywNCj4gPiArICAgICAgIEVURE1fUkFURV8zMkssDQo+ID4gKyAgICAgICBFVERNX1JB VEVfNDhLLA0KPiA+ICsgICAgICAgRVRETV9SQVRFXzY0SywNCj4gPiArICAgICAgIEVURE1fUkFU RV85NkssDQo+ID4gKyAgICAgICBFVERNX1JBVEVfMTI4SywNCj4gPiArICAgICAgIEVURE1fUkFU RV8xOTJLLA0KPiA+ICsgICAgICAgRVRETV9SQVRFXzI1NkssDQo+ID4gKyAgICAgICBFVERNX1JB VEVfMzg0SywNCj4gPiArICAgICAgIEVURE1fUkFURV8xMTAyNSA9IDE2LA0KPiA+ICsgICAgICAg RVRETV9SQVRFXzIyMDUwLA0KPiA+ICsgICAgICAgRVRETV9SQVRFXzQ0MTAwLA0KPiA+ICsgICAg ICAgRVRETV9SQVRFXzg4MjAwLA0KPiA+ICsgICAgICAgRVRETV9SQVRFXzE3NjQwMCwNCj4gPiAr ICAgICAgIEVURE1fUkFURV8zNTI4MDAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIHsNCj4g PiArICAgICAgIEVURE1fQ09OTl84SywNCj4gPiArICAgICAgIEVURE1fQ09OTl8xMUssDQo+ID4g KyAgICAgICBFVERNX0NPTk5fMTJLLA0KPiA+ICsgICAgICAgRVRETV9DT05OXzE2SyA9IDQsDQo+ ID4gKyAgICAgICBFVERNX0NPTk5fMjJLLA0KPiA+ICsgICAgICAgRVRETV9DT05OXzI0SywNCj4g PiArICAgICAgIEVURE1fQ09OTl8zMksgPSA4LA0KPiA+ICsgICAgICAgRVRETV9DT05OXzQ0SywN Cj4gPiArICAgICAgIEVURE1fQ09OTl80OEssDQo+ID4gKyAgICAgICBFVERNX0NPTk5fODhLID0g MTMsDQo+ID4gKyAgICAgICBFVERNX0NPTk5fOTZLLA0KPiA+ICsgICAgICAgRVRETV9DT05OXzE3 NksgPSAxNywNCj4gPiArICAgICAgIEVURE1fQ09OTl8xOTJLLA0KPiA+ICsgICAgICAgRVRETV9D T05OXzM1MksgPSAyMSwNCj4gPiArICAgICAgIEVURE1fQ09OTl8zODRLLA0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArZW51bSB7DQo+ID4gKyAgICAgICBFVERNX1dMRU5fOF9CSVQgPSAweDcsDQo+ID4g KyAgICAgICBFVERNX1dMRU5fMTZfQklUID0gMHhmLA0KPiA+ICsgICAgICAgRVRETV9XTEVOXzMy X0JJVCA9IDB4MWYsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIHsNCj4gPiArICAgICAgIEVU RE1fU0xBVkVfU0VMX0VURE1JTjBfTUFTVEVSLA0KPiA+ICsgICAgICAgRVRETV9TTEFWRV9TRUxf RVRETUlOMF9TTEFWRSwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1JTjFfTUFTVEVS LA0KPiA+ICsgICAgICAgRVRETV9TTEFWRV9TRUxfRVRETUlOMV9TTEFWRSwNCj4gPiArICAgICAg IEVURE1fU0xBVkVfU0VMX0VURE1JTjJfTUFTVEVSLA0KPiA+ICsgICAgICAgRVRETV9TTEFWRV9T RUxfRVRETUlOMl9TTEFWRSwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1JTjNfTUFT VEVSLA0KPiA+ICsgICAgICAgRVRETV9TTEFWRV9TRUxfRVRETUlOM19TTEFWRSwNCj4gPiArICAg ICAgIEVURE1fU0xBVkVfU0VMX0VURE1PVVQwX01BU1RFUiwNCj4gPiArICAgICAgIEVURE1fU0xB VkVfU0VMX0VURE1PVVQwX1NMQVZFLA0KPiA+ICsgICAgICAgRVRETV9TTEFWRV9TRUxfRVRETU9V VDFfTUFTVEVSLA0KPiA+ICsgICAgICAgRVRETV9TTEFWRV9TRUxfRVRETU9VVDFfU0xBVkUsDQo+ ID4gKyAgICAgICBFVERNX1NMQVZFX1NFTF9FVERNT1VUMl9NQVNURVIsDQo+ID4gKyAgICAgICBF VERNX1NMQVZFX1NFTF9FVERNT1VUMl9TTEFWRSwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VM X0VURE1PVVQzX01BU1RFUiwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1PVVQzX1NM QVZFLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSB7DQo+ID4gKyAgICAgICBFVERNX1NMQVZF X1NFTF9FVERNSU40X01BU1RFUiwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1JTjRf U0xBVkUsDQo+ID4gKyAgICAgICBFVERNX1NMQVZFX1NFTF9FVERNSU41X01BU1RFUiwNCj4gPiAr ICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1JTjVfU0xBVkUsDQo+ID4gKyAgICAgICBFVERNX1NM QVZFX1NFTF9FVERNSU42X01BU1RFUiwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1J TjZfU0xBVkUsDQo+ID4gKyAgICAgICBFVERNX1NMQVZFX1NFTF9FVERNSU43X01BU1RFUiwNCj4g PiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1JTjdfU0xBVkUsDQo+ID4gKyAgICAgICBFVERN X1NMQVZFX1NFTF9FVERNT1VUNF9NQVNURVIsDQo+ID4gKyAgICAgICBFVERNX1NMQVZFX1NFTF9F VERNT1VUNF9TTEFWRSwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1PVVQ1X01BU1RF UiwNCj4gPiArICAgICAgIEVURE1fU0xBVkVfU0VMX0VURE1PVVQ1X1NMQVZFLA0KPiA+ICsgICAg ICAgRVRETV9TTEFWRV9TRUxfRVRETU9VVDZfTUFTVEVSLA0KPiA+ICsgICAgICAgRVRETV9TTEFW RV9TRUxfRVRETU9VVDZfU0xBVkUsDQo+ID4gKyAgICAgICBFVERNX1NMQVZFX1NFTF9FVERNT1VU N19NQVNURVIsDQo+ID4gKyAgICAgICBFVERNX1NMQVZFX1NFTF9FVERNT1VUN19TTEFWRSwNCj4g PiArfTsNCj4gPiArDQo+ID4gK2VudW0gew0KPiA+ICsgICAgICAgTVRLX0RBSV9FVERNX0ZPUk1B VF9JMlMsDQo+ID4gKyAgICAgICBNVEtfREFJX0VURE1fRk9STUFUX0xKLA0KPiA+ICsgICAgICAg TVRLX0RBSV9FVERNX0ZPUk1BVF9SSiwNCj4gPiArICAgICAgIE1US19EQUlfRVRETV9GT1JNQVRf RUlBSiwNCj4gPiArICAgICAgIE1US19EQUlfRVRETV9GT1JNQVRfRFNQQSwNCj4gPiArICAgICAg IE1US19EQUlfRVRETV9GT1JNQVRfRFNQQiwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQgZ2V0X2V0ZG1fd2xlbihzbmRfcGNtX2Zvcm1hdF90IGZvcm1hdCkNCj4gPiAr ew0KPiA+ICsgICAgICAgcmV0dXJuIHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoKGZvcm1h dCkgPCAxNiA/DQo+ID4gKyAgICAgICAgICAgICAgIEVURE1fV0xFTl8xNl9CSVQgOiBFVERNX1dM RU5fMzJfQklUOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IGdldF9l dGRtX2xyY2tfd2lkdGgoc25kX3BjbV9mb3JtYXRfdCBmb3JtYXQpDQo+ID4gK3sNCj4gPiArICAg ICAgIC8qIFRoZSB2YWxpZCBkYXRhIGJpdCBudW1iZXIgc2hvdWxkIGJlIGxhcmdlIHRoYW4gNyBk dWUgdG8NCj4gPiBoYXJkd2FyZSBsaW1pdGF0aW9uLiAqLw0KPiANCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gbGFyZ2VyPw0KPiANCj4gPiArICAg ICAgIHJldHVybiBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93aWR0aChmb3JtYXQpIC0gMTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBnZXRfZXRkbV9yYXRlKHVuc2ln bmVkIGludCByYXRlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzd2l0Y2ggKHJhdGUpIHsNCj4gPiAr ICAgICAgIGNhc2UgODAwMDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIEVURE1fUkFURV84 SzsNCj4gPiArICAgICAgIGNhc2UgMTIwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBF VERNX1JBVEVfMTJLOw0KPiA+ICsgICAgICAgY2FzZSAxNjAwMDoNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIEVURE1fUkFURV8xNks7DQo+ID4gKyAgICAgICBjYXNlIDI0MDAwOg0KPiA+ICsg ICAgICAgICAgICAgICByZXR1cm4gRVRETV9SQVRFXzI0SzsNCj4gPiArICAgICAgIGNhc2UgMzIw MDA6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFVERNX1JBVEVfMzJLOw0KPiA+ICsgICAg ICAgY2FzZSA0ODAwMDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIEVURE1fUkFURV80OEs7 DQo+ID4gKyAgICAgICBjYXNlIDY0MDAwOg0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gRVRE TV9SQVRFXzY0SzsNCj4gPiArICAgICAgIGNhc2UgOTYwMDA6DQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiBFVERNX1JBVEVfOTZLOw0KPiA+ICsgICAgICAgY2FzZSAxMjgwMDA6DQo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiBFVERNX1JBVEVfMTI4SzsNCj4gPiArICAgICAgIGNhc2UgMTky MDAwOg0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gRVRETV9SQVRFXzE5Mks7DQo+ID4gKyAg ICAgICBjYXNlIDI1NjAwMDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIEVURE1fUkFURV8y NTZLOw0KPiA+ICsgICAgICAgY2FzZSAzODQwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVy biBFVERNX1JBVEVfMzg0SzsNCj4gPiArICAgICAgIGNhc2UgMTEwMjU6DQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiBFVERNX1JBVEVfMTEwMjU7DQo+ID4gKyAgICAgICBjYXNlIDIyMDUwOg0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gRVRETV9SQVRFXzIyMDUwOw0KPiA+ICsgICAgICAg Y2FzZSA0NDEwMDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIEVURE1fUkFURV80NDEwMDsN Cj4gPiArICAgICAgIGNhc2UgODgyMDA6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFVERN X1JBVEVfODgyMDA7DQo+ID4gKyAgICAgICBjYXNlIDE3NjQwMDoNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIEVURE1fUkFURV8xNzY0MDA7DQo+ID4gKyAgICAgICBjYXNlIDM1MjgwMDoNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIEVURE1fUkFURV8zNTI4MDA7DQo+ID4gKyAgICAgICBk ZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArICAgICAgIH0NCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBnZXRfZXRkbV9pbmNvbm5fcmF0 ZSh1bnNpZ25lZCBpbnQgcmF0ZSkNCj4gPiArew0KPiA+ICsgICAgICAgc3dpdGNoIChyYXRlKSB7 DQo+ID4gKyAgICAgICBjYXNlIDgwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFVERN X0NPTk5fOEs7DQo+ID4gKyAgICAgICBjYXNlIDEyMDAwOg0KPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gRVRETV9DT05OXzEySzsNCj4gPiArICAgICAgIGNhc2UgMTYwMDA6DQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiBFVERNX0NPTk5fMTZLOw0KPiA+ICsgICAgICAgY2FzZSAyNDAwMDoN Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIEVURE1fQ09OTl8yNEs7DQo+ID4gKyAgICAgICBj YXNlIDMyMDAwOg0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gRVRETV9DT05OXzMySzsNCj4g PiArICAgICAgIGNhc2UgNDgwMDA6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFVERNX0NP Tk5fNDhLOw0KPiA+ICsgICAgICAgY2FzZSA5NjAwMDoNCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIEVURE1fQ09OTl85Nks7DQo+ID4gKyAgICAgICBjYXNlIDE5MjAwMDoNCj4gPiArICAgICAg ICAgICAgICAgcmV0dXJuIEVURE1fQ09OTl8xOTJLOw0KPiA+ICsgICAgICAgY2FzZSAzODQwMDA6 DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFVERNX0NPTk5fMzg0SzsNCj4gPiArICAgICAg IGNhc2UgMTEwMjU6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFVERNX0NPTk5fMTFLOw0K PiA+ICsgICAgICAgY2FzZSAyMjA1MDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIEVURE1f Q09OTl8yMks7DQo+ID4gKyAgICAgICBjYXNlIDQ0MTAwOg0KPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gRVRETV9DT05OXzQ0SzsNCj4gPiArICAgICAgIGNhc2UgODgyMDA6DQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiBFVERNX0NPTk5fODhLOw0KPiA+ICsgICAgICAgY2FzZSAxNzY0MDA6 DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFVERNX0NPTk5fMTc2SzsNCj4gPiArICAgICAg IGNhc2UgMzUyODAwOg0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gRVRETV9DT05OXzM1Mks7 DQo+ID4gKyAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4g PiArICAgICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RydWN0IG10a19hZmVfaTJzX3ByaXYg ew0KPiA+ICsgICAgICAgdTggaWQ7DQo+ID4gKyAgICAgICB1MzIgcmF0ZTsgLyogZm9yIGRldGVy bWluZSB3aGljaCBhcGxsIHRvIHVzZSAqLw0KPiA+ICsgICAgICAgaW50IGxvd19qaXR0ZXJfZW47 DQo+ID4gKyAgICAgICBjb25zdCBjaGFyICpzaGFyZV9wcm9wZXJ0eV9uYW1lOw0KPiA+ICsgICAg ICAgaW50IHNoYXJlX2kyc19pZDsNCj4gPiArICAgICAgIHUzMiBtY2xrX3JhdGU7DQo+ID4gKyAg ICAgICB1OCBtY2xrX2lkOw0KPiA+ICsgICAgICAgdTggbWNsa19hcGxsOw0KPiA+ICsgICAgICAg dTggY2hfbnVtOw0KPiA+ICsgICAgICAgdTggc3luYzsNCj4gPiArICAgICAgIHU4IGlwX21vZGU7 DQo+ID4gKyAgICAgICB1OCBmb3JtYXQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiB0aGlzIGVu dW0gaXMgbWVyZWx5IGZvciBtdGtfYWZlX2kyc19wcml2ICYgbXRrX2Jhc2VfZXRkbV9kYXRhDQo+ ID4gZGVjbGFyZSAqLw0KPiA+ICtlbnVtIHsNCj4gPiArICAgICAgIERBSV9JMlNJTjAsDQo+ID4g KyAgICAgICBEQUlfSTJTSU4xLA0KPiA+ICsgICAgICAgREFJX0kyU0lOMiwNCj4gPiArICAgICAg IERBSV9JMlNJTjMsDQo+ID4gKyAgICAgICBEQUlfSTJTSU40LA0KPiA+ICsgICAgICAgREFJX0ky U0lONiwNCj4gPiArICAgICAgIERBSV9JMlNPVVQwLA0KPiA+ICsgICAgICAgREFJX0kyU09VVDEs DQo+ID4gKyAgICAgICBEQUlfSTJTT1VUMiwNCj4gPiArICAgICAgIERBSV9JMlNPVVQzLA0KPiA+ ICsgICAgICAgREFJX0kyU09VVDQsDQo+ID4gKyAgICAgICBEQUlfSTJTT1VUNiwNCj4gPiArICAg ICAgIERBSV9GTUkyU19NQVNURVIsDQo+ID4gKyAgICAgICBEQUlfSTJTX05VTSwNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyBib29sIGlzX2V0ZG1faW5fcGFkX3RvcCh1bnNpZ25lZCBpbnQg ZGFpX251bSkNCj4gPiArew0KPiA+ICsgICAgICAgc3dpdGNoIChkYWlfbnVtKSB7DQo+ID4gKyAg ICAgICBjYXNlIERBSV9JMlNPVVQ0Og0KPiA+ICsgICAgICAgY2FzZSBEQUlfSTJTSU40Og0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gPiArICAgICAgIGRlZmF1bHQ6DQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiArICAgICAgIH0NCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RydWN0IG10a19iYXNlX2V0ZG1fZGF0YSB7DQo+ID4gKyAgICAgICB1MTYgZW5h YmxlX3JlZzsNCj4gPiArICAgICAgIHUxNiBlbmFibGVfbWFzazsNCj4gPiArICAgICAgIHU4IGVu YWJsZV9zaGlmdDsNCj4gPiArICAgICAgIHUxNiBzeW5jX3JlZzsNCj4gPiArICAgICAgIHUxNiBz eW5jX21hc2s7DQo+ID4gKyAgICAgICB1OCBzeW5jX3NoaWZ0Ow0KPiA+ICsgICAgICAgdTE2IGNo X3JlZzsNCj4gPiArICAgICAgIHUxNiBjaF9tYXNrOw0KPiA+ICsgICAgICAgdTggY2hfc2hpZnQ7 DQo+ID4gKyAgICAgICB1MTYgaXBfbW9kZV9yZWc7DQo+ID4gKyAgICAgICB1MTYgaXBfbW9kZV9t YXNrOw0KPiA+ICsgICAgICAgdTggaXBfbW9kZV9zaGlmdDsNCj4gPiArICAgICAgIHUxNiBpbml0 X2NvdW50X3JlZzsNCj4gPiArICAgICAgIHUxNiBpbml0X2NvdW50X21hc2s7DQo+ID4gKyAgICAg ICB1OCBpbml0X2NvdW50X3NoaWZ0Ow0KPiA+ICsgICAgICAgdTE2IGluaXRfcG9pbnRfcmVnOw0K PiA+ICsgICAgICAgdTE2IGluaXRfcG9pbnRfbWFzazsNCj4gPiArICAgICAgIHU4IGluaXRfcG9p bnRfc2hpZnQ7DQo+ID4gKyAgICAgICB1MTYgbHJja19yZXNldF9yZWc7DQo+ID4gKyAgICAgICB1 MTYgbHJja19yZXNldF9tYXNrOw0KPiA+ICsgICAgICAgdTggbHJja19yZXNldF9zaGlmdDsNCj4g PiArICAgICAgIHUxNiBjbGtfc291cmNlX3JlZzsNCj4gPiArICAgICAgIHUxNiBjbGtfc291cmNl X21hc2s7DQo+ID4gKyAgICAgICB1OCBjbGtfc291cmNlX3NoaWZ0Ow0KPiA+ICsgICAgICAgdTE2 IGNrX2VuX3NlbF9yZWc7DQo+ID4gKyAgICAgICB1MTYgY2tfZW5fc2VsX21hc2s7DQo+ID4gKyAg ICAgICB1OCBja19lbl9zZWxfc2hpZnQ7DQo+ID4gKyAgICAgICB1MTYgZnNfdGltaW5nX3JlZzsN Cj4gPiArICAgICAgIHUxNiBmc190aW1pbmdfbWFzazsNCj4gPiArICAgICAgIHU4IGZzX3RpbWlu Z19zaGlmdDsNCj4gPiArICAgICAgIHUxNiByZWxhdGNoX2VuX3NlbF9yZWc7DQo+ID4gKyAgICAg ICB1MTYgcmVsYXRjaF9lbl9zZWxfbWFzazsNCj4gPiArICAgICAgIHU4IHJlbGF0Y2hfZW5fc2Vs X3NoaWZ0Ow0KPiA+ICsgICAgICAgdTE2IHVzZV9hZmlmb19yZWc7DQo+ID4gKyAgICAgICB1MTYg dXNlX2FmaWZvX21hc2s7DQo+ID4gKyAgICAgICB1OCB1c2VfYWZpZm9fc2hpZnQ7DQo+ID4gKyAg ICAgICB1MTYgYWZpZm9fbW9kZV9yZWc7DQo+ID4gKyAgICAgICB1MTYgYWZpZm9fbW9kZV9tYXNr Ow0KPiA+ICsgICAgICAgdTggYWZpZm9fbW9kZV9zaGlmdDsNCj4gPiArICAgICAgIHUxNiBhbG1v c3RfZW5kX2NoX3JlZzsNCj4gPiArICAgICAgIHUxNiBhbG1vc3RfZW5kX2NoX21hc2s7DQo+ID4g KyAgICAgICB1OCBhbG1vc3RfZW5kX2NoX3NoaWZ0Ow0KPiA+ICsgICAgICAgdTE2IGFsbW9zdF9l bmRfYml0X3JlZzsNCj4gPiArICAgICAgIHUxNiBhbG1vc3RfZW5kX2JpdF9tYXNrOw0KPiA+ICsg ICAgICAgdTggYWxtb3N0X2VuZF9iaXRfc2hpZnQ7DQo+ID4gKyAgICAgICB1MTYgb3V0MmxhdGNo X3RpbWVfcmVnOw0KPiA+ICsgICAgICAgdTE2IG91dDJsYXRjaF90aW1lX21hc2s7DQo+ID4gKyAg ICAgICB1OCBvdXQybGF0Y2hfdGltZV9zaGlmdDsNCj4gPiArICAgICAgIHUxNiB0ZG1fbW9kZV9y ZWc7DQo+ID4gKyAgICAgICB1MTYgdGRtX21vZGVfbWFzazsNCj4gPiArICAgICAgIHU4IHRkbV9t b2RlX3NoaWZ0Ow0KPiA+ICsgICAgICAgdTE2IHJlbGF0Y2hfZG9tYWluX3NlbF9yZWc7DQo+ID4g KyAgICAgICB1MTYgcmVsYXRjaF9kb21haW5fc2VsX21hc2s7DQo+ID4gKyAgICAgICB1OCByZWxh dGNoX2RvbWFpbl9zZWxfc2hpZnQ7DQo+ID4gKyAgICAgICB1MTYgYml0X2xlbmd0aF9yZWc7DQo+ ID4gKyAgICAgICB1MTYgYml0X2xlbmd0aF9tYXNrOw0KPiA+ICsgICAgICAgdTggYml0X2xlbmd0 aF9zaGlmdDsNCj4gPiArICAgICAgIHUxNiB3b3JkX2xlbmd0aF9yZWc7DQo+ID4gKyAgICAgICB1 MTYgd29yZF9sZW5ndGhfbWFzazsNCj4gPiArICAgICAgIHU4IHdvcmRfbGVuZ3RoX3NoaWZ0Ow0K PiA+ICsgICAgICAgdTE2IGNvd29ya19yZWc7DQo+ID4gKyAgICAgICB1MTYgY293b3JrX21hc2s7 DQo+ID4gKyAgICAgICB1OCBjb3dvcmtfc2hpZnQ7DQo+ID4gKyAgICAgICB1MzIgY293b3JrX3Zh bDsNCj4gPiArICAgICAgIHUxNiBpbjJsYXRjaF90aW1lX3JlZzsNCj4gPiArICAgICAgIHUxNiBp bjJsYXRjaF90aW1lX21hc2s7DQo+ID4gKyAgICAgICB1OCBpbjJsYXRjaF90aW1lX3NoaWZ0Ow0K PiA+ICsgICAgICAgdTE2IHBhZF90b3BfY2tfZW5fcmVnOw0KPiA+ICsgICAgICAgdTE2IHBhZF90 b3BfY2tfZW5fbWFzazsNCj4gPiArICAgICAgIHU4IHBhZF90b3BfY2tfZW5fc2hpZnQ7DQo+ID4g KyAgICAgICB1MTYgbWFzdGVyX2xhdGNoX3JlZzsNCj4gPiArICAgICAgIHUxNiBtYXN0ZXJfbGF0 Y2hfbWFzazsNCj4gPiArICAgICAgIHU4IG1hc3Rlcl9sYXRjaF9zaGlmdDsNCj4gPiArfTsNCj4g PiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Jhc2VfZXRkbV9kYXRhIG10a19ldGRt X2RhdGFbREFJX0kyU19OVU1dDQo+ID4gPSB7DQo+ID4gKyAgICAgICBbREFJX0kyU0lOMF0gPSB7 DQo+ID4gKyAgICAgICAgICAgICAgIC5lbmFibGVfcmVnID0gRVRETV9JTjBfQ09OMCwNCj4gPiAr ICAgICAgICAgICAgICAgLmVuYWJsZV9tYXNrID0gUkVHX0VURE1fSU5fRU5fTUFTSywNCj4gPiAr ICAgICAgICAgICAgICAgLmVuYWJsZV9zaGlmdCA9IFJFR19FVERNX0lOX0VOX1NGVCwNCj4gPiAr ICAgICAgICAgICAgICAgLnN5bmNfcmVnID0gRVRETV9JTjBfQ09OMCwNCj4gPiArICAgICAgICAg ICAgICAgLnN5bmNfbWFzayA9IFJFR19TWU5DX01PREVfTUFTSywNCj4gPiArICAgICAgICAgICAg ICAgLnN5bmNfc2hpZnQgPSBSRUdfU1lOQ19NT0RFX1NGVCwNCj4gPiArICAgICAgICAgICAgICAg LmNoX3JlZyA9IEVURE1fSU4wX0NPTjAsDQo+ID4gKyAgICAgICAgICAgICAgIC5jaF9tYXNrID0g UkVHX0NIX05VTV9NQVNLLA0KPiA+ICsgICAgICAgICAgICAgICAuY2hfc2hpZnQgPSBSRUdfQ0hf TlVNX1NGVCwNCj4gPiArICAgICAgICAgICAgICAgLmlwX21vZGVfcmVnID0gRVRETV9JTjBfQ09O MiwNCj4gPiArICAgICAgICAgICAgICAgLmlwX21vZGVfbWFzayA9IFJFR19NVUxUSV9JUF9NT0RF X01BU0ssDQo+ID4gKyAgICAgICAgICAgICAgIC5pcF9tb2RlX3NoaWZ0ID0gUkVHX01VTFRJX0lQ X01PREVfU0ZULA0KPiA+ICsgICAgICAgICAgICAgICAuaW5pdF9jb3VudF9yZWcgPSBFVERNX0lO MF9DT04xLA0KPiA+ICsgICAgICAgICAgICAgICAuaW5pdF9jb3VudF9tYXNrID0gUkVHX0lOSVRJ QUxfQ09VTlRfTUFTSywNCj4gPiArICAgICAgICAgICAgICAgLmluaXRfY291bnRfc2hpZnQgPSBS RUdfSU5JVElBTF9DT1VOVF9TRlQsDQo+ID4gKyAgICAgICAgICAgICAgIC5pbml0X3BvaW50X3Jl ZyA9IEVURE1fSU4wX0NPTjEsDQo+ID4gKyAgICAgICAgICAgICAgIC5pbml0X3BvaW50X21hc2sg PSBSRUdfSU5JVElBTF9QT0lOVF9NQVNLLA0KPiA+ICsgICAgICAgICAgICAgICAuaW5pdF9wb2lu dF9zaGlmdCA9IFJFR19JTklUSUFMX1BPSU5UX1NGVCwNCj4gPiArICAgICAgICAgICAgICAgLmxy Y2tfcmVzZXRfcmVnID0gRVRETV9JTjBfQ09OMSwNCj4gPiArICAgICAgICAgICAgICAgLmxyY2tf cmVzZXRfbWFzayA9IFJFR19MUkNLX1JFU0VUX01BU0ssDQo+ID4gKyAgICAgICAgICAgICAgIC5s cmNrX3Jlc2V0X3NoaWZ0ID0gUkVHX0xSQ0tfUkVTRVRfU0ZULA0KPiA+ICsgICAgICAgICAgICAg ICAuY2xrX3NvdXJjZV9yZWcgPSBFVERNX0lOMF9DT04yLA0KPiA+ICsgICAgICAgICAgICAgICAu Y2xrX3NvdXJjZV9tYXNrID0gUkVHX0NMT0NLX1NPVVJDRV9TRUxfTUFTSywNCj4gPiArICAgICAg ICAgICAgICAgLmNsa19zb3VyY2Vfc2hpZnQgPSBSRUdfQ0xPQ0tfU09VUkNFX1NFTF9TRlQsDQo+ ID4gKyAgICAgICAgICAgICAgIC5ja19lbl9zZWxfcmVnID0gRVRETV9JTjBfQ09OMiwNCj4gPiAr ICAgICAgICAgICAgICAgLmNrX2VuX3NlbF9tYXNrID0gUkVHX0NLX0VOX1NFTF9BVVRPX01BU0ss DQo+ID4gKyAgICAgICAgICAgICAgIC5ja19lbl9zZWxfc2hpZnQgPSBSRUdfQ0tfRU5fU0VMX0FV VE9fU0ZULA0KPiA+ICsgICAgICAgICAgICAgICAuZnNfdGltaW5nX3JlZyA9IEVURE1fSU4wX0NP TjMsDQo+ID4gKyAgICAgICAgICAgICAgIC5mc190aW1pbmdfbWFzayA9IFJFR19GU19USU1JTkdf U0VMX01BU0ssDQo+ID4gKyAgICAgICAgICAgICAgIC5mc190aW1pbmdfc2hpZnQgPSBSRUdfRlNf VElNSU5HX1NFTF9TRlQsDQo+ID4gKyAgICAgICAgICAgICAgIC5yZWxhdGNoX2VuX3NlbF9yZWcg PSBFVERNX0lOMF9DT040LA0KPiA+ICsgICAgICAgICAgICAgICAucmVsYXRjaF9lbl9zZWxfbWFz ayA9IFJFR19SRUxBVENIXzFYX0VOX1NFTF9NQVNLLA0KPiA+ICsgICAgICAgICAgICAgICAucmVs YXRjaF9lbl9zZWxfc2hpZnQgPSBSRUdfUkVMQVRDSF8xWF9FTl9TRUxfU0ZULA0KPiA+ICsgICAg ICAgICAgICAgICAudXNlX2FmaWZvX3JlZyA9IEVURE1fSU4wX0NPTjgsDQo+ID4gKyAgICAgICAg ICAgICAgIC51c2VfYWZpZm9fbWFzayA9IFJFR19FVERNX1VTRV9BRklGT19NQVNLLA0KPiA+ICsg ICAgICAgICAgICAgICAudXNlX2FmaWZvX3NoaWZ0ID0gUkVHX0VURE1fVVNFX0FGSUZPX1NGVCwN Cj4gPiArICAgICAgICAgICAgICAgLmFmaWZvX21vZGVfcmVnID0gRVRETV9JTjBfQ09OOCwNCj4g PiArICAgICAgICAgICAgICAgLmFmaWZvX21vZGVfbWFzayA9IFJFR19BRklGT19NT0RFX01BU0ss DQo+ID4gKyAgICAgICAgICAgICAgIC5hZmlmb19tb2RlX3NoaWZ0ID0gUkVHX0FGSUZPX01PREVf U0ZULA0KPiA+ICsgICAgICAgICAgICAgICAuYWxtb3N0X2VuZF9jaF9yZWcgPSBFVERNX0lOMF9D T045LA0KPiA+ICsgICAgICAgICAgICAgICAuYWxtb3N0X2VuZF9jaF9tYXNrID0gUkVHX0FMTU9T VF9FTkRfQ0hfQ09VTlRfTUFTSywNCj4gPiArICAgICAgICAgICAgICAgLmFsbW9zdF9lbmRfY2hf c2hpZnQgPSBSRUdfQUxNT1NUX0VORF9DSF9DT1VOVF9TRlQsDQo+ID4gKyAgICAgICAgICAgICAg IC5hbG1vc3RfZW5kX2JpdF9yZWcgPSBFVERNX0lOMF9DT045LA0KPiA+ICsgICAgICAgICAgICAg ICAuYWxtb3N0X2VuZF9iaXRfbWFzayA9DQo+ID4gUkVHX0FMTU9TVF9FTkRfQklUX0NPVU5UX01B U0ssDQo+ID4gKyAgICAgICAgICAgICAgIC5hbG1vc3RfZW5kX2JpdF9zaGlmdCA9DQo+ID4gUkVH X0FMTU9TVF9FTkRfQklUX0NPVU5UX1NGVCwNCj4gPiArICAgICAgICAgICAgICAgLm91dDJsYXRj aF90aW1lX3JlZyA9IEVURE1fSU4wX0NPTjksDQo+ID4gKyAgICAgICAgICAgICAgIC5vdXQybGF0 Y2hfdGltZV9tYXNrID0gUkVHX09VVDJMQVRDSF9USU1FX01BU0ssDQo+ID4gKyAgICAgICAgICAg ICAgIC5vdXQybGF0Y2hfdGltZV9zaGlmdCA9IFJFR19PVVQyTEFUQ0hfVElNRV9TRlQsDQo+ID4g KyAgICAgICAgICAgICAgIC50ZG1fbW9kZV9yZWcgPSBFVERNX0lOMF9DT04wLA0KPiA+ICsgICAg ICAgICAgICAgICAudGRtX21vZGVfbWFzayA9IFJFR19GTVRfTUFTSywNCj4gPiArICAgICAgICAg ICAgICAgLnRkbV9tb2RlX3NoaWZ0ID0gUkVHX0ZNVF9TRlQsDQo+ID4gKyAgICAgICAgICAgICAg IC5yZWxhdGNoX2RvbWFpbl9zZWxfcmVnID0gRVRETV9JTjBfQ09OMCwNCj4gPiArICAgICAgICAg ICAgICAgLnJlbGF0Y2hfZG9tYWluX3NlbF9tYXNrID0NCj4gPiBSRUdfUkVMQVRDSF8xWF9FTl9E T01BSU5fU0VMX01BU0ssDQo+ID4gKyAgICAgICAgICAgICAgIC5yZWxhdGNoX2RvbWFpbl9zZWxf c2hpZnQgPQ0KPiA+IFJFR19SRUxBVENIXzFYX0VOX0RPTUFJTl9TRUxfU0ZULA0KPiA+ICsgICAg ICAgICAgICAgICAuYml0X2xlbmd0aF9yZWcgPSBFVERNX0lOMF9DT04wLA0KPiA+ICsgICAgICAg ICAgICAgICAuYml0X2xlbmd0aF9tYXNrID0gUkVHX0JJVF9MRU5HVEhfTUFTSywNCj4gPiArICAg ICAgICAgICAgICAgLmJpdF9sZW5ndGhfc2hpZnQgPSBSRUdfQklUX0xFTkdUSF9TRlQsDQo+ID4g KyAgICAgICAgICAgICAgIC53b3JkX2xlbmd0aF9yZWcgPSBFVERNX0lOMF9DT04wLA0KPiA+ICsg ICAgICAgICAgICAgICAud29yZF9sZW5ndGhfbWFzayA9IFJFR19XT1JEX0xFTkdUSF9NQVNLLA0K PiA+ICsgICAgICAgICAgICAgICAud29yZF9sZW5ndGhfc2hpZnQgPSBSRUdfV09SRF9MRU5HVEhf U0ZULA0KPiA+ICsgICAgICAgICAgICAgICAuY293b3JrX3JlZyA9IEVURE1fMF8zX0NPV09SS19D T04wLA0KPiA+ICsgICAgICAgICAgICAgICAuY293b3JrX21hc2sgPSBFVERNX0lOMF9TTEFWRV9T RUxfTUFTSywNCj4gPiArICAgICAgICAgICAgICAgLmNvd29ya19zaGlmdCA9IEVURE1fSU4wX1NM QVZFX1NFTF9TRlQsDQo+ID4gKyAgICAgICAgICAgICAgIC5jb3dvcmtfdmFsID0gRVRETV9TTEFW RV9TRUxfRVRETU9VVDBfTUFTVEVSLA0KPiA+ICsgICAgICAgICAgICAgICAucGFkX3RvcF9ja19l bl9yZWcgPSAwLA0KPiA+ICsgICAgICAgICAgICAgICAubWFzdGVyX2xhdGNoX3JlZyA9IDAsDQo+ ID4gKyAgICAgICB9LA0KPiANCj4gQ291bGQgdGhpcyBiZSBjb21wcmVzc2VkIHNvbWVob3cgd2l0 aCBzb21lIG1hY3JvIG1hZ2ljPyBUaGlzIHdob2xlDQo+IGJsb2NrIGlzIHJlYWxseSBsb25nLiBT b21ldGhpbmcgbGlrZToNCj4gDQo+ICNkZWZpbmUgTVRLX0VURE1fREFUQShfZGlyLCBfaWQpIFwN Cj4gICAgICAgICBbREFJX0kyUyMjX2RpciMjX2lkXSA9IHsNCj4gICAgICAgICAgICAgICAgICAg ICAuZW5hYmxlX3JlZyA9IEVURE1fIyNfZGlyIyNfaWQjI19DT04wLCBcDQo+ICAgICAgICAgICAg ICAgICAgICAgLi4uDQo+IA0KPiBbLi4uXQ0KPiANCj4gQWRkIG1vcmUgcGFyYW1ldGVycyBhcyBu ZWVkZWQuDQo+IA0KPiA+ICsNCj4gDQo+IERyb3AgdGhlIGV4dHJhIGVtcHR5IGxpbmUgYXQgdGhl IGVuZCBvZiB0aGUgbGlzdC4NCj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiBscGJrICovDQo+ ID4gK3N0YXRpYyBjb25zdCB1OCBldGRtX2xwYmtfaWR4XzBbXSA9IHsNCj4gPiArICAgICAgIDB4 MCwgMHg4LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHU4IGV0ZG1fbHBia19p ZHhfMVtdID0gew0KPiA+ICsgICAgICAgMHgyLCAweGEsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtz dGF0aWMgY29uc3QgdTggZXRkbV9scGJrX2lkeF8yW10gPSB7DQo+ID4gKyAgICAgICAweDQsIDB4 YywNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCB1OCBldGRtX2xwYmtfaWR4XzNb XSA9IHsNCj4gPiArICAgICAgIDB4NiwgMHhlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBldGRtX2xwYmtfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJv bCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25l bnQgPQ0KPiA+ICsgICAgICAgICAgICAgICBzbmRfc29jX2tjb250cm9sX2NvbXBvbmVudChrY29u dHJvbCk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUgPQ0KPiA+IHNuZF9z b2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7DQo+ID4gKyAgICAgICB1MzIgdmFs dWU7DQo+ID4gKyAgICAgICB1MzIgdmFsdWVfaXBtb2RlOw0KPiA+ICsgICAgICAgdTMyIHJlZzsN Cj4gPiArICAgICAgIHUzMiBtYXNrOw0KPiA+ICsgICAgICAgdTggc2hpZnQ7DQo+ID4gKw0KPiA+ ICsgICAgICAgaWYgKCFzdHJjbXAoa2NvbnRyb2wtPmlkLm5hbWUsICJJMlNJTjBfTFBCSyIpKSB7 DQo+ID4gKyAgICAgICAgICAgICAgIHJlZyA9IEVURE1fMF8zX0NPV09SS19DT04xOw0KPiA+ICsg ICAgICAgICAgICAgICBtYXNrID0gRVRETV9JTjBfU0RBVEEwX1NFTF9NQVNLX1NGVDsNCj4gPiAr ICAgICAgICAgICAgICAgc2hpZnQgPSBFVERNX0lOMF9TREFUQTBfU0VMX1NGVDsNCj4gPiArICAg ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrY29udHJvbC0+aWQubmFtZSwgIkkyU0lOMV9MUEJLIikp IHsNCj4gPiArICAgICAgICAgICAgICAgcmVnID0gRVRETV8wXzNfQ09XT1JLX0NPTjE7DQo+ID4g KyAgICAgICAgICAgICAgIG1hc2sgPSBFVERNX0lOMV9TREFUQTBfU0VMX01BU0tfU0ZUOw0KPiA+ ICsgICAgICAgICAgICAgICBzaGlmdCA9IEVURE1fSU4xX1NEQVRBMF9TRUxfU0ZUOw0KPiA+ICsg ICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtjb250cm9sLT5pZC5uYW1lLCAiSTJTSU4yX0xQQksi KSkgew0KPiA+ICsgICAgICAgICAgICAgICByZWcgPSBFVERNXzBfM19DT1dPUktfQ09OMzsNCj4g PiArICAgICAgICAgICAgICAgbWFzayA9IEVURE1fSU4yX1NEQVRBMF9TRUxfTUFTS19TRlQ7DQo+ ID4gKyAgICAgICAgICAgICAgIHNoaWZ0ID0gRVRETV9JTjJfU0RBVEEwX1NFTF9TRlQ7DQo+ID4g KyAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2NvbnRyb2wtPmlkLm5hbWUsICJJMlNJTjNfTFBC SyIpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJlZyA9IEVURE1fMF8zX0NPV09SS19DT04zOw0K PiA+ICsgICAgICAgICAgICAgICBtYXNrID0gRVRETV9JTjNfU0RBVEEwX1NFTF9NQVNLX1NGVDsN Cj4gPiArICAgICAgICAgICAgICAgc2hpZnQgPSBFVERNX0lOM19TREFUQTBfU0VMX1NGVDsNCj4g PiArICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrY29udHJvbC0+aWQubmFtZSwgIkkyU0lONF9M UEJLIikpIHsNCj4gPiArICAgICAgICAgICAgICAgcmVnID0gRVRETV80XzdfQ09XT1JLX0NPTjE7 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAvLyBHZXQgSTJTSU40IG11bHRpLWlwIG1vZGUN Cj4gPiArICAgICAgICAgICAgICAgcmVnbWFwX3JlYWQoYWZlLT5yZWdtYXAsIEVURE1fSU40X0NP TjIsDQo+ID4gJnZhbHVlX2lwbW9kZSk7DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlX2lwbW9k ZSA9IEZJRUxEX0dFVChCSVQoMzEpLCB2YWx1ZV9pcG1vZGUpOw0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAgaWYgKHZhbHVlX2lwbW9kZSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IG1hc2sgPSBFVERNX0lONF9TREFUQTFfMTVfU0VMX01BU0tfU0ZUOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHNoaWZ0ID0gRVRETV9JTjRfU0RBVEExXzE1X1NFTF9TRlQ7DQo+ID4gKyAg ICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWFzayA9 IEVURE1fSU40X1NEQVRBMF9TRUxfTUFTS19TRlQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgc2hpZnQgPSBFVERNX0lONF9TREFUQTBfU0VMX1NGVDsNCj4gPiArICAgICAgICAgICAgICAg fQ0KPiANCj4gSXQgc2VlbXMgdG8gbWUgdGhhdCBvbmx5IEkyUzRJTl9MUEJLIG5lZWRzIHNwZWNp YWwgaGFuZGxpbmcsIHdoaWxlDQo+IHRoZSBvdGhlcnMgY2FuIGp1c3QgdXNlIGVudW0gbWFwIHZh bHVlcyB3aXRoIHRoZSBzdGFuZGFyZCBFTlVNDQo+IGNvbnRyb2wuDQo+IFRoYXQgd291bGQgc2lt cGxpZnkgdGhlIGNvZGUgYnkgYSBsb3QsIGFuZCBhbHNvIGdldCByaWQgb2YgYWxsIHRoZQ0KPiBz dHJpbmcgY29tcGFyaXNvbnMuDQo+IA0KPiA+ICsgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtj b250cm9sLT5pZC5uYW1lLCAiSTJTSU42X0xQQksiKSkgew0KPiA+ICsgICAgICAgICAgICAgICBy ZWcgPSBFVERNXzRfN19DT1dPUktfQ09OMzsNCj4gPiArICAgICAgICAgICAgICAgbWFzayA9IEVU RE1fSU42X1NEQVRBMF9TRUxfTUFTS19TRlQ7DQo+ID4gKyAgICAgICAgICAgICAgIHNoaWZ0ID0g RVRETV9JTjZfU0RBVEEwX1NFTF9TRlQ7DQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAg ICAgICAgICAgICBkZXZfd2FybihhZmUtPmRldiwgImkycyBscGJrIG5vIG1hdGNoXG4iKTsNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKHJlZykNCj4gPiArICAgICAgICAgICAgICAgcmVnbWFwX3JlYWQoYWZlLT5yZWdt YXAsIHJlZywgJnZhbHVlKTsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAg dmFsdWUgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgIHZhbHVlICY9IG1hc2s7DQo+ID4gKyAgICAg ICB2YWx1ZSA+Pj0gc2hpZnQ7DQo+ID4gKyAgICAgICB1Y29udHJvbC0+dmFsdWUuZW51bWVyYXRl ZC5pdGVtWzBdID0gdmFsdWU7DQo+ID4gKw0KPiA+ICsgICAgICAgc3dpdGNoICh2YWx1ZSkgew0K PiA+ICsgICAgICAgY2FzZSAweDg6DQo+ID4gKyAgICAgICBjYXNlIDB4YToNCj4gPiArICAgICAg IGNhc2UgMHhjOg0KPiA+ICsgICAgICAgY2FzZSAweGU6DQo+ID4gKyAgICAgICAgICAgICAgIHVj b250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMF0gPSAxOw0KPiA+ICsgICAgICAgICAgICAg ICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICAgIHVjb250 cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMF0gPSAwOw0KPiA+ICsgICAgICAgICAgICAgICBi cmVhazsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBldGRtX2xwYmtfcHV0KHN0cnVjdCBzbmRfa2NvbnRy b2wgKmtjb250cm9sLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX2N0 bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHNuZF9z b2NfY29tcG9uZW50ICpjb21wb25lbnQgPQ0KPiA+IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9s KTsNCj4gDQo+IFBsZWFzZSB1c2Ugc25kX3NvY19rY29udHJvbF9jb21wb25lbnQoKSBhcyBzZWVu IGluIHRoZSBwcmV2aW91cw0KPiBmdW5jdGlvbi4NCj4gVGhleSBhcmUgZWZmZWN0aXZlbHkgdGhl IHNhbWUsIGJ1dCB0aGlzIG9uZSBpcyBwYXJ0IG9mIHRoZSBBU29DIEFQSS4NCj4gDQo+ID4gKyAg ICAgICBzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUgPQ0KPiA+IHNuZF9zb2NfY29tcG9uZW50X2dl dF9kcnZkYXRhKGNvbXBvbmVudCk7DQo+ID4gKyAgICAgICB1MzIgdmFsdWUgPSB1Y29udHJvbC0+ dmFsdWUuaW50ZWdlci52YWx1ZVswXTsNCj4gPiArICAgICAgIHUzMiB2YWx1ZV9pcG1vZGU7DQo+ ID4gKyAgICAgICB1MzIgcmVnOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArICAgICAgIHUz MiBtYXNrOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICh2YWx1ZSA+PSBBUlJBWV9TSVpFKGV0ZG1f bHBia19pZHhfMCkpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsN Cj4gPiArICAgICAgIGlmICghc3RyY21wKGtjb250cm9sLT5pZC5uYW1lLCAiSTJTSU4wX0xQQksi KSkgew0KPiA+ICsgICAgICAgICAgICAgICByZWcgPSBFVERNXzBfM19DT1dPUktfQ09OMTsNCj4g PiArICAgICAgICAgICAgICAgbWFzayA9IEVURE1fSU4wX1NEQVRBMF9TRUxfTUFTS19TRlQ7DQo+ ID4gKyAgICAgICAgICAgICAgIHZhbCA9IGV0ZG1fbHBia19pZHhfMFt2YWx1ZV0gPDwNCj4gPiBF VERNX0lOMF9TREFUQTBfU0VMX1NGVDsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChr Y29udHJvbC0+aWQubmFtZSwgIkkyU0lOMV9MUEJLIikpIHsNCj4gPiArICAgICAgICAgICAgICAg cmVnID0gRVRETV8wXzNfQ09XT1JLX0NPTjE7DQo+ID4gKyAgICAgICAgICAgICAgIG1hc2sgPSBF VERNX0lOMV9TREFUQTBfU0VMX01BU0tfU0ZUOw0KPiA+ICsgICAgICAgICAgICAgICB2YWwgPSBl dGRtX2xwYmtfaWR4XzFbdmFsdWVdIDw8DQo+ID4gRVRETV9JTjFfU0RBVEEwX1NFTF9TRlQ7DQo+ ID4gKyAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2NvbnRyb2wtPmlkLm5hbWUsICJJMlNJTjJf TFBCSyIpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJlZyA9IEVURE1fMF8zX0NPV09SS19DT04z Ow0KPiA+ICsgICAgICAgICAgICAgICBtYXNrID0gRVRETV9JTjJfU0RBVEEwX1NFTF9NQVNLX1NG VDsNCj4gPiArICAgICAgICAgICAgICAgdmFsID0gZXRkbV9scGJrX2lkeF8yW3ZhbHVlXSA8PA0K PiA+IEVURE1fSU4yX1NEQVRBMF9TRUxfU0ZUOw0KPiA+ICsgICAgICAgfSBlbHNlIGlmICghc3Ry Y21wKGtjb250cm9sLT5pZC5uYW1lLCAiSTJTSU4zX0xQQksiKSkgew0KPiA+ICsgICAgICAgICAg ICAgICByZWcgPSBFVERNXzBfM19DT1dPUktfQ09OMzsNCj4gPiArICAgICAgICAgICAgICAgbWFz ayA9IEVURE1fSU4zX1NEQVRBMF9TRUxfTUFTS19TRlQ7DQo+ID4gKyAgICAgICAgICAgICAgIHZh bCA9IGV0ZG1fbHBia19pZHhfM1t2YWx1ZV0gPDwNCj4gPiBFVERNX0lOM19TREFUQTBfU0VMX1NG VDsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrY29udHJvbC0+aWQubmFtZSwgIkky U0lONF9MUEJLIikpIHsNCj4gPiArICAgICAgICAgICAgICAgcmVnID0gRVRETV80XzdfQ09XT1JL X0NPTjE7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAvLyBHZXQgSTJTSU40IG11bHRpLWlw IG1vZGUNCj4gPiArICAgICAgICAgICAgICAgcmVnbWFwX3JlYWQoYWZlLT5yZWdtYXAsIEVURE1f SU40X0NPTjIsDQo+ID4gJnZhbHVlX2lwbW9kZSk7DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVl X2lwbW9kZSA9IEZJRUxEX0dFVChCSVQoMzEpLCB2YWx1ZV9pcG1vZGUpOw0KPiA+ICsNCj4gPiAr ICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IG1hc2sgPSBFVERNX0lONF9TREFUQTFfMTVfU0VMX01BU0tfU0ZUIHwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVURE1fSU40X1NEQVRBMF9TRUxfTUFTS19TRlQ7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gKGV0ZG1fbHBia19pZHhfMFt2YWx1ZV0gPDwN Cj4gPiBFVERNX0lONF9TREFUQTFfMTVfU0VMX1NGVCkgfA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGV0ZG1fbHBia19pZHhfMFt2YWx1ZV0gPDwNCj4gPiBFVERNX0lONF9T REFUQTBfU0VMX1NGVCk7DQo+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVfaXBt b2RlKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWFzayA9IEVURE1fSU40X1NEQVRB MV8xNV9TRUxfTUFTS19TRlQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gZXRk bV9scGJrX2lkeF8wW3ZhbHVlXSA8PA0KPiA+IEVURE1fSU40X1NEQVRBMV8xNV9TRUxfU0ZUOw0K PiA+ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IG1hc2sgPSBFVERNX0lONF9TREFUQTBfU0VMX01BU0tfU0ZUOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHZhbCA9IGV0ZG1fbHBia19pZHhfMFt2YWx1ZV0gPDwNCj4gPiBFVERNX0lONF9T REFUQTBfU0VMX1NGVDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfSBlbHNl IHsNCj4gPiArICAgICAgICAgICAgICAgcmVnID0gRVRETV80XzdfQ09XT1JLX0NPTjM7DQo+ID4g KyAgICAgICAgICAgICAgIG1hc2sgPSBFVERNX0lONl9TREFUQTBfU0VMX01BU0tfU0ZUOw0KPiA+ ICsgICAgICAgICAgICAgICB2YWwgPSBldGRtX2xwYmtfaWR4XzJbdmFsdWVdIDw8DQo+ID4gRVRE TV9JTjZfU0RBVEEwX1NFTF9TRlQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAg aWYgKHJlZykNCj4gPiArICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVn bWFwLCByZWcsIG1hc2ssIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBldGRtX2xwYmtfbWFwW10g PSB7DQo+ID4gKyAgICAgICAiT2ZmIiwgIk9uIiwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRp YyBTT0NfRU5VTV9TSU5HTEVfRVhUX0RFQ0woZXRkbV9scGJrX21hcF9lbnVtLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRkbV9scGJrX21hcCk7DQo+ID4gKy8qIGxwYmsg Ki8NCj4gPiArDQo+ID4gKy8qIG11bHRpLWlwIG1vZGUgKi8NCj4gPiArc3RhdGljIGNvbnN0IGlu dCBldGRtX2lwX21vZGVfaWR4W10gPSB7DQo+ID4gKyAgICAgICAweDAsIDB4MSwNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZXRkbV9pcF9tb2RlX2dldChzdHJ1Y3Qgc25kX2tjb250 cm9sICprY29udHJvbCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNu ZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0NCj4gPiArICAgICAgICAgICAgICAgc25kX3Nv Y19rY29udHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOw0KPiA+ICsgICAgICAgc3RydWN0IG10a19i YXNlX2FmZSAqYWZlID0NCj4gPiBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25l bnQpOw0KPiA+ICsgICAgICAgc3RydWN0IG10ODE5Nl9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBh ZmUtPnBsYXRmb3JtX3ByaXY7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAq aTJzaW40X3ByaXYgPSBhZmVfcHJpdi0NCj4gPiA+ZGFpX3ByaXZbTVQ4MTk2X0RBSV9JMlNfSU40 XTsNCj4gPiArDQo+ID4gKyAgICAgICB1Y29udHJvbC0+dmFsdWUuZW51bWVyYXRlZC5pdGVtWzBd ID0gaTJzaW40X3ByaXYtPmlwX21vZGU7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZXRkbV9pcF9tb2RlX3B1dChzdHJ1Y3Qgc25k X2tjb250cm9sICprY29udHJvbCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0 cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0NCj4gPiBzbmRfa2NvbnRyb2xfY2hp cChrY29udHJvbCk7DQo+IA0KPiBQbGVhc2UgdXNlIHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50 KCkgYXMgc2VlbiBpbiB0aGUgcHJldmlvdXMNCj4gZnVuY3Rpb24uDQo+IFRoZXkgYXJlIGVmZmVj dGl2ZWx5IHRoZSBzYW1lLCBidXQgdGhpcyBvbmUgaXMgcGFydCBvZiB0aGUgQVNvQyBBUEkuDQo+ IA0KPiBQbGVhc2UgcmVwbGFjZSBhbnkgb3RoZXIgc25kX2tjb250cm9sX2NoaXAoKSBpbnZvY2F0 aW9ucyBhcyB3ZWxsLg0KPiANCj4gPiArICAgICAgIHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9 DQo+ID4gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsNCj4gPiArICAg ICAgIHN0cnVjdCBtdDgxOTZfYWZlX3ByaXZhdGUgKmFmZV9wcml2ID0gYWZlLT5wbGF0Zm9ybV9w cml2Ow0KPiA+ICsgICAgICAgc3RydWN0IG10a19hZmVfaTJzX3ByaXYgKmkyc2luNF9wcml2ID0g YWZlX3ByaXYtDQo+ID4gPmRhaV9wcml2W01UODE5Nl9EQUlfSTJTX0lONF07DQo+ID4gKyAgICAg ICB1bnNpZ25lZCBpbnQgdmFsdWUgPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsN Cj4gPiArDQo+ID4gKyAgICAgICBpZiAodmFsdWUgPj0gQVJSQVlfU0laRShldGRtX2lwX21vZGVf aWR4KSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsg ICAgICAgLyogMDogT25lIElQIG11bHRpLWNoYW5uZWwgMTogTXVsdGktSVAgMi1jaGFubmVsICov DQo+ID4gKyAgICAgICBpMnNpbjRfcHJpdi0+aXBfbW9kZSA9IGV0ZG1faXBfbW9kZV9pZHhbdmFs dWVdOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgY29uc3QgY2hhciAqY29uc3QgZXRkbV9pcF9tb2RlX21hcFtdID0gew0KPiA+ICsgICAg ICAgIk9mZiIsICJPbiIsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgU09DX0VOVU1fU0lO R0xFX0VYVF9ERUNMKGV0ZG1faXBfbW9kZV9tYXBfZW51bSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGV0ZG1faXBfbW9kZV9tYXApOw0KPiANCj4gUHV0IGl0IG9uIHRoZSBz YW1lIGxpbmUuDQo+IA0KPiA+ICsvKiBtdWx0aS1pcCBtb2RlICovDQo+ID4gKw0KPiA+ICsvKiBj aCBudW0gKi8NCj4gPiArc3RhdGljIGNvbnN0IGludCBldGRtX2NoX251bV9pZHhbXSA9IHsNCj4g PiArICAgICAgIDB4MiwgMHg0LCAweDYsIDB4OCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQgZXRkbV9jaF9udW1fZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVj b250cm9sKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCA9DQo+ID4gKyAgICAgICAgICAgICAgIHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50 KGtjb250cm9sKTsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9DQo+ID4g c25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsNCj4gPiArICAgICAgIHN0 cnVjdCBtdDgxOTZfYWZlX3ByaXZhdGUgKmFmZV9wcml2ID0gYWZlLT5wbGF0Zm9ybV9wcml2Ow0K PiA+ICsgICAgICAgc3RydWN0IG10a19hZmVfaTJzX3ByaXYgKmkyc2luNF9wcml2ID0gYWZlX3By aXYtDQo+ID4gPmRhaV9wcml2W01UODE5Nl9EQUlfSTJTX0lONF07DQo+ID4gKyAgICAgICBzdHJ1 Y3QgbXRrX2FmZV9pMnNfcHJpdiAqaTJzb3V0NF9wcml2ID0gYWZlX3ByaXYtDQo+ID4gPmRhaV9w cml2W01UODE5Nl9EQUlfSTJTX09VVDRdOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IHZhbHVl ID0gMDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIXN0cmNtcChrY29udHJvbC0+aWQubmFtZSwg IkkyU0lONF9DSF9OVU0iKSkNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBpMnNpbjRfcHJp di0+Y2hfbnVtOw0KPiA+ICsgICAgICAgZWxzZSBpZiAoIXN0cmNtcChrY29udHJvbC0+aWQubmFt ZSwgIkkyU09VVDRfQ0hfTlVNIikpDQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlID0gaTJzb3V0 NF9wcml2LT5jaF9udW07DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKHZhbHVlID09IDB4MikNCj4g PiArICAgICAgICAgICAgICAgdWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSA9IDA7 DQo+ID4gKyAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAweDQpDQo+ID4gKyAgICAgICAgICAgICAg IHVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMF0gPSAxOw0KPiA+ICsgICAgICAgZWxz ZSBpZiAodmFsdWUgPT0gMHg2KQ0KPiA+ICsgICAgICAgICAgICAgICB1Y29udHJvbC0+dmFsdWUu ZW51bWVyYXRlZC5pdGVtWzBdID0gMjsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAg ICAgICAgdWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSA9IDM7DQo+IA0KPiBSZXBs YWNlIHRoZSBpZi1lbHNlIGlmLWVsc2UgYmxvY2tzIHdpdGg6DQo+IA0KPiAgICAgICAgICAgdWNv bnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSA9ICh2YWx1ZSA+PiAxKSAtIDE7DQo+IA0K PiBUaGUgaW50ZXJuYWwgdmFsdWUgaXMgY29udHJvbGxlZCBieSB0aGUgZHJpdmVyIGFuZCBuZXZl ciBnb2VzIG91dCBvZg0KPiByYW5nZS4NCj4gDQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZXRkbV9jaF9udW1fcHV0KHN0cnVjdCBz bmRfa2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBz dHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9DQo+ID4gc25kX2tjb250cm9sX2No aXAoa2NvbnRyb2wpOw0KPiA+ICsgICAgICAgc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0NCj4g PiBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOw0KPiA+ICsgICAgICAg c3RydWN0IG10ODE5Nl9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRmb3JtX3ByaXY7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAqaTJzaW40X3ByaXYgPSBhZmVf cHJpdi0NCj4gPiA+ZGFpX3ByaXZbTVQ4MTk2X0RBSV9JMlNfSU40XTsNCj4gPiArICAgICAgIHN0 cnVjdCBtdGtfYWZlX2kyc19wcml2ICppMnNvdXQ0X3ByaXYgPSBhZmVfcHJpdi0NCj4gPiA+ZGFp X3ByaXZbTVQ4MTk2X0RBSV9JMlNfT1VUNF07DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgdmFs dWUgPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsNCj4gPiArDQo+ID4gKyAgICAg ICBpZiAodmFsdWUgPj0gQVJSQVlfU0laRShldGRtX2NoX251bV9pZHgpKQ0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIXN0cmNtcChr Y29udHJvbC0+aWQubmFtZSwgIkkyU0lONF9DSF9OVU0iKSkNCj4gPiArICAgICAgICAgICAgICAg aTJzaW40X3ByaXYtPmNoX251bSA9IGV0ZG1fY2hfbnVtX2lkeFt2YWx1ZV07DQo+IA0KPiAgICAg ICAgICAgICAgICAgICBpMnNpbjRfcHJpdi0+Y2hfbnVtID0gKHZhbHVlICsgMSkgPDwgMTsNCj4g DQo+IEFuZCB0aGVuIGV0ZG1fY2hfbnVtX2lkeCBjYW4gYmUgZHJvcHBlZC4NCj4gDQo+ID4gKyAg ICAgICBlbHNlIGlmICghc3RyY21wKGtjb250cm9sLT5pZC5uYW1lLCAiSTJTT1VUNF9DSF9OVU0i KSkNCj4gPiArICAgICAgICAgICAgICAgaTJzb3V0NF9wcml2LT5jaF9udW0gPSBldGRtX2NoX251 bV9pZHhbdmFsdWVdOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgZXRkbV9jaF9udW1fbWFwW10gPSB7DQo+ ID4gKyAgICAgICAiMkNIIiwgIjRDSCIsICI2Q0giLCAiOENIIiwNCj4gPiArfTsNCj4gPiArDQo+ ID4gK3N0YXRpYyBTT0NfRU5VTV9TSU5HTEVfRVhUX0RFQ0woZXRkbV9jaF9udW1fbWFwX2VudW0s DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGRtX2NoX251bV9tYXApOw0K PiA+ICsvKiBjaCBudW0gKi8NCj4gPiArDQo+ID4gK2VudW0gew0KPiA+ICsgICAgICAgSTJTX0ZN VF9FSUFKID0gMCwNCj4gPiArICAgICAgIEkyU19GTVRfSTJTID0gMSwNCj4gPiArfTsNCj4gPiAr DQo+ID4gK2VudW0gew0KPiA+ICsgICAgICAgSTJTX1dMRU5fMTZfQklUID0gMCwNCj4gPiArICAg ICAgIEkyU19XTEVOXzMyX0JJVCA9IDEsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIHsNCj4g PiArICAgICAgIEkyU19IRF9OT1JNQUwgPSAwLA0KPiA+ICsgICAgICAgSTJTX0hEX0xPV19KSVRU RVIgPSAxLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSB7DQo+ID4gKyAgICAgICBJMlMxX1NF TF9PMjhfTzI5ID0gMCwNCj4gPiArICAgICAgIEkyUzFfU0VMX08wM19PMDQgPSAxLA0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArZW51bSB7DQo+ID4gKyAgICAgICBJMlNfSU5fUEFEX0NPTk5TWVMgPSAw LA0KPiA+ICsgICAgICAgSTJTX0lOX1BBRF9JT19NVVggPSAxLA0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RhdGljIHVuc2lnbmVkIGludCBnZXRfaTJzX3dsZW4oc25kX3BjbV9mb3JtYXRfdCBmb3Jt YXQpDQo+ID4gK3sNCj4gPiArICAgICAgIHJldHVybiBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93 aWR0aChmb3JtYXQpIDw9IDE2ID8NCj4gPiArICAgICAgICAgICAgICBJMlNfV0xFTl8xNl9CSVQg OiBJMlNfV0xFTl8zMl9CSVQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgTVRLX0FGRV9J MlNJTjBfS0NPTlRST0xfTkFNRSAiSTJTSU4wX0hEX011eCINCj4gPiArI2RlZmluZSBNVEtfQUZF X0kyU0lOMV9LQ09OVFJPTF9OQU1FICJJMlNJTjFfSERfTXV4Ig0KPiA+ICsjZGVmaW5lIE1US19B RkVfSTJTSU4yX0tDT05UUk9MX05BTUUgIkkyU0lOMl9IRF9NdXgiDQo+ID4gKyNkZWZpbmUgTVRL X0FGRV9JMlNJTjRfS0NPTlRST0xfTkFNRSAiSTJTSU40X0hEX011eCINCj4gPiArI2RlZmluZSBN VEtfQUZFX0kyU0lONl9LQ09OVFJPTF9OQU1FICJJMlNJTjZfSERfTXV4Ig0KPiA+ICsjZGVmaW5l IE1US19BRkVfSTJTT1VUMF9LQ09OVFJPTF9OQU1FICJJMlNPVVQwX0hEX011eCINCj4gPiArI2Rl ZmluZSBNVEtfQUZFX0kyU09VVDFfS0NPTlRST0xfTkFNRSAiSTJTT1VUMV9IRF9NdXgiDQo+ID4g KyNkZWZpbmUgTVRLX0FGRV9JMlNPVVQyX0tDT05UUk9MX05BTUUgIkkyU09VVDJfSERfTXV4Ig0K PiA+ICsjZGVmaW5lIE1US19BRkVfSTJTT1VUNF9LQ09OVFJPTF9OQU1FICJJMlNPVVQ0X0hEX011 eCINCj4gPiArI2RlZmluZSBNVEtfQUZFX0kyU09VVDZfS0NPTlRST0xfTkFNRSAiSTJTT1VUNl9I RF9NdXgiDQo+ID4gKyNkZWZpbmUgTVRLX0FGRV9GTUkyU19NQVNURVJfS0NPTlRST0xfTkFNRSAi Rk1JMlNfTUFTVEVSX0hEX011eCINCj4gPiArDQo+ID4gKyNkZWZpbmUgSTJTSU4wX0hEX0VOX1df TkFNRSAiSTJTSU4wX0hEX0VOIg0KPiA+ICsjZGVmaW5lIEkyU0lOMV9IRF9FTl9XX05BTUUgIkky U0lOMV9IRF9FTiINCj4gPiArI2RlZmluZSBJMlNJTjJfSERfRU5fV19OQU1FICJJMlNJTjJfSERf RU4iDQo+ID4gKyNkZWZpbmUgSTJTSU4zX0hEX0VOX1dfTkFNRSAiSTJTSU4zX0hEX0VOIg0KPiA+ ICsjZGVmaW5lIEkyU0lONF9IRF9FTl9XX05BTUUgIkkyU0lONF9IRF9FTiINCj4gPiArI2RlZmlu ZSBJMlNJTjZfSERfRU5fV19OQU1FICJJMlNJTjZfSERfRU4iDQo+ID4gKyNkZWZpbmUgSTJTT1VU MF9IRF9FTl9XX05BTUUgIkkyU09VVDBfSERfRU4iDQo+ID4gKyNkZWZpbmUgSTJTT1VUMV9IRF9F Tl9XX05BTUUgIkkyU09VVDFfSERfRU4iDQo+ID4gKyNkZWZpbmUgSTJTT1VUMl9IRF9FTl9XX05B TUUgIkkyU09VVDJfSERfRU4iDQo+ID4gKyNkZWZpbmUgSTJTT1VUM19IRF9FTl9XX05BTUUgIkky U09VVDNfSERfRU4iDQo+ID4gKyNkZWZpbmUgSTJTT1VUNF9IRF9FTl9XX05BTUUgIkkyU09VVDRf SERfRU4iDQo+ID4gKyNkZWZpbmUgSTJTT1VUNl9IRF9FTl9XX05BTUUgIkkyU09VVDZfSERfRU4i DQo+ID4gKyNkZWZpbmUgRk1JMlNfTUFTVEVSX0hEX0VOX1dfTkFNRSAiRk1JMlNfTUFTVEVSX0hE X0VOIg0KPiA+ICsNCj4gPiArI2RlZmluZSBJMlNJTjBfTUNMS19FTl9XX05BTUUgIkkyU0lOMF9N Q0xLX0VOIg0KPiA+ICsjZGVmaW5lIEkyU0lOMV9NQ0xLX0VOX1dfTkFNRSAiSTJTSU4xX01DTEtf RU4iDQo+ID4gKyNkZWZpbmUgSTJTSU4yX01DTEtfRU5fV19OQU1FICJJMlNJTjJfTUNMS19FTiIN Cj4gPiArI2RlZmluZSBJMlNJTjNfTUNMS19FTl9XX05BTUUgIkkyU0lOM19NQ0xLX0VOIg0KPiA+ ICsjZGVmaW5lIEkyU0lONF9NQ0xLX0VOX1dfTkFNRSAiSTJTSU40X01DTEtfRU4iDQo+ID4gKyNk ZWZpbmUgSTJTSU42X01DTEtfRU5fV19OQU1FICJJMlNJTjZfTUNMS19FTiINCj4gPiArI2RlZmlu ZSBJMlNPVVQwX01DTEtfRU5fV19OQU1FICJJMlNPVVQwX01DTEtfRU4iDQo+ID4gKyNkZWZpbmUg STJTT1VUMV9NQ0xLX0VOX1dfTkFNRSAiSTJTT1VUMV9NQ0xLX0VOIg0KPiA+ICsjZGVmaW5lIEky U09VVDJfTUNMS19FTl9XX05BTUUgIkkyU09VVDJfTUNMS19FTiINCj4gPiArI2RlZmluZSBJMlNP VVQzX01DTEtfRU5fV19OQU1FICJJMlNPVVQzX01DTEtfRU4iDQo+ID4gKyNkZWZpbmUgSTJTT1VU NF9NQ0xLX0VOX1dfTkFNRSAiSTJTT1VUNF9NQ0xLX0VOIg0KPiA+ICsjZGVmaW5lIEkyU09VVDZf TUNMS19FTl9XX05BTUUgIkkyU09VVDZfTUNMS19FTiINCj4gPiArI2RlZmluZSBGTUkyU19NQVNU RVJfTUNMS19FTl9XX05BTUUgIkZNSTJTX01BU1RFUl9NQ0xLX0VOIg0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBnZXRfaTJzX2lkX2J5X25hbWUoc3RydWN0IG10a19iYXNlX2FmZSAqYWZlLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpDQo+ID4gK3sN Cj4gPiArICAgICAgIGlmIChzdHJuY21wKG5hbWUsICJJMlNJTjAiLCA2KSA9PSAwKQ0KPiA+ICsg ICAgICAgICAgICAgICByZXR1cm4gTVQ4MTk2X0RBSV9JMlNfSU4wOw0KPiA+ICsgICAgICAgZWxz ZSBpZiAoc3RybmNtcChuYW1lLCAiSTJTSU4xIiwgNikgPT0gMCkNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIE1UODE5Nl9EQUlfSTJTX0lOMTsNCj4gPiArICAgICAgIGVsc2UgaWYgKHN0cm5j bXAobmFtZSwgIkkyU0lOMiIsIDYpID09IDApDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBN VDgxOTZfREFJX0kyU19JTjI7DQo+ID4gKyAgICAgICBlbHNlIGlmIChzdHJuY21wKG5hbWUsICJJ MlNJTjMiLCA2KSA9PSAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gTVQ4MTk2X0RBSV9J MlNfSU4zOw0KPiA+ICsgICAgICAgZWxzZSBpZiAoc3RybmNtcChuYW1lLCAiSTJTSU40IiwgNikg PT0gMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE1UODE5Nl9EQUlfSTJTX0lONDsNCj4g PiArICAgICAgIGVsc2UgaWYgKHN0cm5jbXAobmFtZSwgIkkyU0lONiIsIDYpID09IDApDQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiBNVDgxOTZfREFJX0kyU19JTjY7DQo+ID4gKyAgICAgICBl bHNlIGlmIChzdHJuY21wKG5hbWUsICJJMlNPVVQwIiwgNykgPT0gMCkNCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIE1UODE5Nl9EQUlfSTJTX09VVDA7DQo+ID4gKyAgICAgICBlbHNlIGlmIChz dHJuY21wKG5hbWUsICJJMlNPVVQxIiwgNykgPT0gMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIE1UODE5Nl9EQUlfSTJTX09VVDE7DQo+ID4gKyAgICAgICBlbHNlIGlmIChzdHJuY21wKG5h bWUsICJJMlNPVVQyIiwgNykgPT0gMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE1UODE5 Nl9EQUlfSTJTX09VVDI7DQo+ID4gKyAgICAgICBlbHNlIGlmIChzdHJuY21wKG5hbWUsICJJMlNP VVQzIiwgNykgPT0gMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE1UODE5Nl9EQUlfSTJT X09VVDM7DQo+ID4gKyAgICAgICBlbHNlIGlmIChzdHJuY21wKG5hbWUsICJJMlNPVVQ0IiwgNykg PT0gMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE1UODE5Nl9EQUlfSTJTX09VVDQ7DQo+ ID4gKyAgICAgICBlbHNlIGlmIChzdHJuY21wKG5hbWUsICJJMlNPVVQ2IiwgNykgPT0gMCkNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIE1UODE5Nl9EQUlfSTJTX09VVDY7DQo+ID4gKyAgICAg ICBlbHNlIGlmIChzdHJuY21wKG5hbWUsICJGTUkyU19NQVNURVIiLCAxMikgPT0gMCkNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIE1UODE5Nl9EQUlfRk1fSTJTX01BU1RFUjsNCj4gPiArICAg ICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAqZ2V0X2kyc19wcml2X2J5 X25hbWUoc3RydWN0DQo+ID4gbXRrX2Jhc2VfYWZlICphZmUsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyDQo+ID4gKm5h bWUpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBtdDgxOTZfYWZlX3ByaXZhdGUgKmFmZV9w cml2ID0gYWZlLT5wbGF0Zm9ybV9wcml2Ow0KPiA+ICsgICAgICAgaW50IGRhaV9pZCA9IGdldF9p MnNfaWRfYnlfbmFtZShhZmUsIG5hbWUpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChkYWlfaWQg PCAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiArDQo+ID4gKyAgICAg ICByZXR1cm4gYWZlX3ByaXYtPmRhaV9wcml2W2RhaV9pZF07DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qDQo+ID4gKyAqIGJpdCBtYXNrIGZvciBpMnMgbG93IHBvd2VyIGNvbnRyb2wNCj4gPiArICog c3VjaCBhcyBiaXQwIGZvciBpMnMwLCBiaXQxIGZvciBpMnMxLi4uDQo+ID4gKyAqIGlmIHNldCAx LCBtZWFucyBpMnMgbG93IHBvd2VyIG1vZGUNCj4gPiArICogaWYgc2V0IDAsIG1lYW5zIGkycyBs b3cgaml0dGVyIG1vZGUNCj4gPiArICogMCBmb3IgYWxsIGkycyBiaXQgaW4gZGVmYXVsdA0KPiA+ ICsgKi8NCj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBpMnNfbG93X3Bvd2VyX21hc2s7DQo+ID4g K3N0YXRpYyBpbnQgbXRrX2kyc19sb3dfcG93ZXJfbWFza19nZXQoc3RydWN0IHNuZF9rY29udHJv bA0KPiA+ICprY29udHJvbCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUNCj4gPiAqdWNvbnRyb2wpDQo+ID4gK3sNCj4g PiArICAgICAgIHByX2RlYnVnKCIlcygpLCBtYXNrOiAleFxuIiwgX19mdW5jX18sIGkyc19sb3df cG93ZXJfbWFzayk7DQo+ID4gKyAgICAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsw XSA9IGkyc19sb3dfcG93ZXJfbWFzazsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IG10a19pMnNfbG93X3Bvd2VyX21hc2tfc2V0KHN0cnVjdCBz bmRfa2NvbnRyb2wNCj4gPiAqa2NvbnRyb2wsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlDQo+ID4gKnVjb250cm9sKQ0K PiA+ICt7DQo+ID4gKyAgICAgICBpMnNfbG93X3Bvd2VyX21hc2sgPSB1Y29udHJvbC0+dmFsdWUu aW50ZWdlci52YWx1ZVswXTsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IG10a19pc19pMnNfbG93X3Bvd2VyKGludCBpMnNfbnVtKQ0KPiA+ICt7 DQo+ID4gKyAgICAgICBpbnQgaTJzX2JpdF9zaGlmdDsNCj4gPiArDQo+ID4gKyAgICAgICBpMnNf Yml0X3NoaWZ0ID0gaTJzX251bSAtIE1UODE5Nl9EQUlfSTJTX0lOMDsNCj4gPiArICAgICAgIGlm IChpMnNfYml0X3NoaWZ0IDwgMCB8fCBpMnNfYml0X3NoaWZ0ID4NCj4gPiBNVDgxOTZfREFJX0ky U19NQVhfTlVNKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArDQo+ID4gKyAg ICAgICByZXR1cm4gKGkyc19sb3dfcG93ZXJfbWFzayA+PiBpMnNfYml0X3NoaWZ0KSAmIDB4MTsN Cj4gPiArfQ0KPiANCj4gVGhpcyBkb2Vzbid0IHJlYWxseSBkbyBhbnl0aGluZyBiZXNpZGVzIGJs b2NrIHRoZSBIRCBFTiByb3V0ZQ0KPiBjb25uZWN0aW9uLg0KPiBJcyB0aGVyZSBzdXBwb3NlZCB0 byBiZSBhIG1hdGNoaW5nIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24/IEkgZG9uJ3QNCj4gdW5kZXJz dGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIGNvbnRyb2wuIElmIGl0IHNlcnZlcyBubyBwdXJwb3Nl LCBpdA0KPiBtaWdodCBiZSBiZXR0ZXIgdG8ganVzdCByZW1vdmUgaXQuDQo+IA0KPiBBbmQgSSB0 aGluayBjb250cm9scyBzaG91bGRuJ3QgYmUganVzdCBhIGJpdG1hc2suIEl0J3MgaGFyZCBmb3Ig dXNlcnMNCj4gdG8NCj4gdW5kZXJzdGFuZCB3aGF0IGJpdCBtYXAgdG8gd2hpY2ggaW50ZXJmYWNl Lg0KPiANCj4gPiArLyogbG93IGppdHRlciBjb250cm9sICovDQo+ID4gK3N0YXRpYyBjb25zdCBj aGFyICpjb25zdCBtdDgxOTZfaTJzX2hkX3N0cltdID0gew0KPiA+ICsgICAgICAgIk5vcm1hbCIs ICJMb3dfSml0dGVyIg0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBz b2NfZW51bSBtdDgxOTZfaTJzX2VudW1bXSA9IHsNCj4gPiArICAgICAgIFNPQ19FTlVNX1NJTkdM RV9FWFQoQVJSQVlfU0laRShtdDgxOTZfaTJzX2hkX3N0ciksDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIG10ODE5Nl9pMnNfaGRfc3RyKSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgbXQ4MTk2X2kyc19oZF9nZXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2ws DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3Zh bHVlICp1Y29udHJvbCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHNuZF9zb2NfY29tcG9u ZW50ICpjbXBudCA9DQo+ID4gc25kX3NvY19rY29udHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOw0K PiA+ICsgICAgICAgc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0NCj4gPiBzbmRfc29jX2NvbXBv bmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2FmZV9pMnNf cHJpdiAqaTJzX3ByaXY7DQo+ID4gKw0KPiA+ICsgICAgICAgaTJzX3ByaXYgPSBnZXRfaTJzX3By aXZfYnlfbmFtZShhZmUsIGtjb250cm9sLT5pZC5uYW1lKTsNCj4gPiArDQo+ID4gKyAgICAgICBp ZiAoIWkyc19wcml2KQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAr DQo+ID4gKyAgICAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9IGkyc19wcml2 LT5sb3dfaml0dGVyX2VuOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IG10ODE5Nl9pMnNfaGRfc2V0KHN0cnVjdCBzbmRfa2NvbnRy b2wgKmtjb250cm9sLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNu ZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY21wbnQgPQ0KPiA+IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50 KGtjb250cm9sKTsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9DQo+ID4g c25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KPiA+ICsgICAgICAgc3RydWN0 IG10a19hZmVfaTJzX3ByaXYgKmkyc19wcml2Ow0KPiA+ICsgICAgICAgc3RydWN0IHNvY19lbnVt ICplID0gKHN0cnVjdCBzb2NfZW51bSAqKWtjb250cm9sLQ0KPiA+ID5wcml2YXRlX3ZhbHVlOw0K PiA+ICsgICAgICAgaW50IGhkX2VuOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICh1Y29udHJvbC0+ dmFsdWUuZW51bWVyYXRlZC5pdGVtWzBdID49IGUtPml0ZW1zKQ0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBoZF9lbiA9IHVjb250cm9sLT52 YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdOw0KPiA+ICsNCj4gPiArICAgICAgIGRldl9kYmcoYWZlLT5k ZXYsICJrY29udHJvbCBuYW1lICVzLCBoZF9lbiAlZFxuIiwga2NvbnRyb2wtDQo+ID4gPmlkLm5h bWUsIGhkX2VuKTsNCj4gPiArDQo+ID4gKyAgICAgICBpMnNfcHJpdiA9IGdldF9pMnNfcHJpdl9i eV9uYW1lKGFmZSwga2NvbnRyb2wtPmlkLm5hbWUpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICgh aTJzX3ByaXYpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4g PiArICAgICAgIGkyc19wcml2LT5sb3dfaml0dGVyX2VuID0gaGRfZW47DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg c25kX2tjb250cm9sX25ldyBtdGtfZGFpX2kyc19jb250cm9sc1tdID0gew0KPiA+ICsgICAgICAg U09DX0VOVU1fRVhUKE1US19BRkVfSTJTSU4wX0tDT05UUk9MX05BTUUsDQo+ID4gbXQ4MTk2X2ky c19lbnVtWzBdLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIG10ODE5Nl9pMnNfaGRfZ2V0LCBt dDgxOTZfaTJzX2hkX3NldCksDQo+ID4gKyAgICAgICBTT0NfRU5VTV9FWFQoTVRLX0FGRV9JMlNJ TjFfS0NPTlRST0xfTkFNRSwNCj4gPiBtdDgxOTZfaTJzX2VudW1bMF0sDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgbXQ4MTk2X2kyc19oZF9nZXQsIG10ODE5Nl9pMnNfaGRfc2V0KSwNCj4gPiAr ICAgICAgIFNPQ19FTlVNX0VYVChNVEtfQUZFX0kyU0lOMl9LQ09OVFJPTF9OQU1FLA0KPiA+IG10 ODE5Nl9pMnNfZW51bVswXSwNCj4gPiArICAgICAgICAgICAgICAgICAgICBtdDgxOTZfaTJzX2hk X2dldCwgbXQ4MTk2X2kyc19oZF9zZXQpLA0KPiA+ICsgICAgICAgU09DX0VOVU1fRVhUKE1US19B RkVfSTJTSU40X0tDT05UUk9MX05BTUUsDQo+ID4gbXQ4MTk2X2kyc19lbnVtWzBdLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIG10ODE5Nl9pMnNfaGRfZ2V0LCBtdDgxOTZfaTJzX2hkX3NldCks DQo+ID4gKyAgICAgICBTT0NfRU5VTV9FWFQoTVRLX0FGRV9JMlNJTjZfS0NPTlRST0xfTkFNRSwN Cj4gPiBtdDgxOTZfaTJzX2VudW1bMF0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgbXQ4MTk2 X2kyc19oZF9nZXQsIG10ODE5Nl9pMnNfaGRfc2V0KSwNCj4gPiArICAgICAgIFNPQ19FTlVNX0VY VChNVEtfQUZFX0kyU09VVDBfS0NPTlRST0xfTkFNRSwNCj4gPiBtdDgxOTZfaTJzX2VudW1bMF0s DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgbXQ4MTk2X2kyc19oZF9nZXQsIG10ODE5Nl9pMnNf aGRfc2V0KSwNCj4gPiArICAgICAgIFNPQ19FTlVNX0VYVChNVEtfQUZFX0kyU09VVDFfS0NPTlRS T0xfTkFNRSwNCj4gPiBtdDgxOTZfaTJzX2VudW1bMF0sDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgbXQ4MTk2X2kyc19oZF9nZXQsIG10ODE5Nl9pMnNfaGRfc2V0KSwNCj4gPiArICAgICAgIFNP Q19FTlVNX0VYVChNVEtfQUZFX0kyU09VVDJfS0NPTlRST0xfTkFNRSwNCj4gPiBtdDgxOTZfaTJz X2VudW1bMF0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgbXQ4MTk2X2kyc19oZF9nZXQsIG10 ODE5Nl9pMnNfaGRfc2V0KSwNCj4gPiArICAgICAgIFNPQ19FTlVNX0VYVChNVEtfQUZFX0kyU09V VDRfS0NPTlRST0xfTkFNRSwNCj4gPiBtdDgxOTZfaTJzX2VudW1bMF0sDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgbXQ4MTk2X2kyc19oZF9nZXQsIG10ODE5Nl9pMnNfaGRfc2V0KSwNCj4gPiAr ICAgICAgIFNPQ19FTlVNX0VYVChNVEtfQUZFX0kyU09VVDZfS0NPTlRST0xfTkFNRSwNCj4gPiBt dDgxOTZfaTJzX2VudW1bMF0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgbXQ4MTk2X2kyc19o ZF9nZXQsIG10ODE5Nl9pMnNfaGRfc2V0KSwNCj4gPiArICAgICAgIFNPQ19FTlVNX0VYVChNVEtf QUZFX0ZNSTJTX01BU1RFUl9LQ09OVFJPTF9OQU1FLA0KPiA+IG10ODE5Nl9pMnNfZW51bVswXSwN Cj4gPiArICAgICAgICAgICAgICAgICAgICBtdDgxOTZfaTJzX2hkX2dldCwgbXQ4MTk2X2kyc19o ZF9zZXQpLA0KPiA+ICsgICAgICAgU09DX1NJTkdMRV9FWFQoImkyc19sb3dfcG93ZXJfbWFzayIs IFNORF9TT0NfTk9QTSwgMCwNCj4gPiAweGZmZmYsIDAsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICBtdGtfaTJzX2xvd19wb3dlcl9tYXNrX2dldCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIG10a19pMnNfbG93X3Bvd2VyX21hc2tfc2V0KSwNCj4gPiArDQo+ID4gKyAgICAgICBTT0Nf RU5VTV9FWFQoIkkyU0lOMF9MUEJLIiwgZXRkbV9scGJrX21hcF9lbnVtLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGV0ZG1fbHBia19nZXQsIGV0ZG1fbHBia19wdXQpLA0KPiA+ICsgICAgICAg U09DX0VOVU1fRVhUKCJJMlNJTjFfTFBCSyIsIGV0ZG1fbHBia19tYXBfZW51bSwNCj4gPiArICAg ICAgICAgICAgICAgICAgICBldGRtX2xwYmtfZ2V0LCBldGRtX2xwYmtfcHV0KSwNCj4gPiArICAg ICAgIFNPQ19FTlVNX0VYVCgiSTJTSU4yX0xQQksiLCBldGRtX2xwYmtfbWFwX2VudW0sDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgZXRkbV9scGJrX2dldCwgZXRkbV9scGJrX3B1dCksDQo+ID4g KyAgICAgICBTT0NfRU5VTV9FWFQoIkkyU0lOM19MUEJLIiwgZXRkbV9scGJrX21hcF9lbnVtLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgIGV0ZG1fbHBia19nZXQsIGV0ZG1fbHBia19wdXQpLA0K PiA+ICsgICAgICAgU09DX0VOVU1fRVhUKCJJMlNJTjRfTFBCSyIsIGV0ZG1fbHBia19tYXBfZW51 bSwNCj4gPiArICAgICAgICAgICAgICAgICAgICBldGRtX2xwYmtfZ2V0LCBldGRtX2xwYmtfcHV0 KSwNCj4gPiArICAgICAgIFNPQ19FTlVNX0VYVCgiSTJTSU42X0xQQksiLCBldGRtX2xwYmtfbWFw X2VudW0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZXRkbV9scGJrX2dldCwgZXRkbV9scGJr X3B1dCksDQo+IA0KPiBQbGVhc2UgdXNlIGEgbW9yZSBzYW5lIG5hbWUgZm9yIHRoZSBjb250cm9s LiBKdXN0IGNhbGwgaXQgIkkyU0lOeA0KPiBMb29wYmFjayIuDQo+IA0KPiA+ICsgICAgICAgU09D X0VOVU1fRVhUKCJJMlNJTjRfSVBfTU9ERSIsIGV0ZG1faXBfbW9kZV9tYXBfZW51bSwNCj4gDQo+ IEkyU0lONCBJUCBtb2RlDQo+IA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGV0ZG1faXBfbW9k ZV9nZXQsIGV0ZG1faXBfbW9kZV9wdXQpLA0KPiA+ICsgICAgICAgU09DX0VOVU1fRVhUKCJJMlNJ TjRfQ0hfTlVNIiwgZXRkbV9jaF9udW1fbWFwX2VudW0sDQo+IA0KPiBJMlNJTjQgIyBvZiBjaGFu bmVscw0KPiANCj4gPiArICAgICAgICAgICAgICAgICAgICBldGRtX2NoX251bV9nZXQsIGV0ZG1f Y2hfbnVtX3B1dCksDQo+ID4gKyAgICAgICBTT0NfRU5VTV9FWFQoIkkyU09VVDRfQ0hfTlVNIiwg ZXRkbV9jaF9udW1fbWFwX2VudW0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZXRkbV9jaF9u dW1fZ2V0LCBldGRtX2NoX251bV9wdXQpLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogZGFpIGNv bXBvbmVudCAqLw0KPiA+ICsvKiBpMnMgdmlydHVhbCBtdXggdG8gb3V0cHV0IHdpZGdldCAqLw0K PiA+ICtzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaTJzX211eF9tYXBbXSA9IHsNCj4gPiArICAg ICAgICJOb3JtYWwiLCAiRHVtbXlfV2lkZ2V0IiwNCj4gPiArfTsNCj4gDQo+IEkgdGhpbmsgdGhp cyBuZWVkcyBzb21lIGV4cGxhbmF0aW9uIGFib3V0IHdoeSBhIGR1bW15IHdpZGdldCBhY3R1YWxs eQ0KPiBleGlzdHMsIG9yIHdoeSBpdCBpcyBuZWVkZWQuDQo+IA0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBpMnNfbXV4X21hcF92YWx1ZVtdID0gew0KPiA+ICsgICAgICAgMCwgMSwNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfQVVUT0RJU0FCTEVfREVD TChpMnNfbXV4X21hcF9lbnVtLA0KPiA+ICsgICAgICAgICAgICAgICBTTkRfU09DX05PUE0sDQo+ ID4gKyAgICAgICAgICAgICAgIDAsDQo+ID4gKyAgICAgICAgICAgICAgIDEsDQo+ID4gKyAgICAg ICAgICAgICAgIGkyc19tdXhfbWFwLA0KPiA+ICsgICAgICAgICAgICAgICBpMnNfbXV4X21hcF92 YWx1ZSk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcg aTJzX2luMF9tdXhfY29udHJvbCA9DQo+ID4gKyAgICAgICBTT0NfREFQTV9FTlVNKCJJMlMgSU4w IFNlbGVjdCIsIGkyc19tdXhfbWFwX2VudW0pOw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNu ZF9rY29udHJvbF9uZXcgaTJzX2luMV9tdXhfY29udHJvbCA9DQo+ID4gKyAgICAgICBTT0NfREFQ TV9FTlVNKCJJMlMgSU4xIFNlbGVjdCIsIGkyc19tdXhfbWFwX2VudW0pOw0KPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJzX2luMl9tdXhfY29udHJvbCA9DQo+ID4g KyAgICAgICBTT0NfREFQTV9FTlVNKCJJMlMgSU4yIFNlbGVjdCIsIGkyc19tdXhfbWFwX2VudW0p Ow0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJzX2luM19tdXhf Y29udHJvbCA9DQo+ID4gKyAgICAgICBTT0NfREFQTV9FTlVNKCJJMlMgSU4zIFNlbGVjdCIsIGky c19tdXhfbWFwX2VudW0pOw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9u ZXcgaTJzX2luNF9tdXhfY29udHJvbCA9DQo+ID4gKyAgICAgICBTT0NfREFQTV9FTlVNKCJJMlMg SU40IFNlbGVjdCIsIGkyc19tdXhfbWFwX2VudW0pOw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHNuZF9rY29udHJvbF9uZXcgaTJzX2luNl9tdXhfY29udHJvbCA9DQo+ID4gKyAgICAgICBTT0Nf REFQTV9FTlVNKCJJMlMgSU42IFNlbGVjdCIsIGkyc19tdXhfbWFwX2VudW0pOw0KPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJzX291dDBfbXV4X2NvbnRyb2wgPQ0K PiA+ICsgICAgICAgU09DX0RBUE1fRU5VTSgiSTJTIE9VVDAgU2VsZWN0IiwgaTJzX211eF9tYXBf ZW51bSk7DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnNfb3V0 MV9tdXhfY29udHJvbCA9DQo+ID4gKyAgICAgICBTT0NfREFQTV9FTlVNKCJJMlMgT1VUMSBTZWxl Y3QiLCBpMnNfbXV4X21hcF9lbnVtKTsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2Nv bnRyb2xfbmV3IGkyc19vdXQyX211eF9jb250cm9sID0NCj4gPiArICAgICAgIFNPQ19EQVBNX0VO VU0oIkkyUyBPVVQyIFNlbGVjdCIsIGkyc19tdXhfbWFwX2VudW0pOw0KPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaTJzX291dDNfbXV4X2NvbnRyb2wgPQ0KPiA+ICsg ICAgICAgU09DX0RBUE1fRU5VTSgiSTJTIE9VVDMgU2VsZWN0IiwgaTJzX211eF9tYXBfZW51bSk7 DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBpMnNfb3V0NF9tdXhf Y29udHJvbCA9DQo+ID4gKyAgICAgICBTT0NfREFQTV9FTlVNKCJJMlMgT1VUNCBTZWxlY3QiLCBp MnNfbXV4X21hcF9lbnVtKTsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xf bmV3IGkyc19vdXQ2X211eF9jb250cm9sID0NCj4gPiArICAgICAgIFNPQ19EQVBNX0VOVU0oIkky UyBPVVQ2IFNlbGVjdCIsIGkyc19tdXhfbWFwX2VudW0pOw0KPiA+ICsNCj4gPiArLyogaW50ZXJj b25uZWN0aW9uICovDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBt dGtfaTJzb3V0MF9jaDFfbWl4W10gPSB7DQo+ID4gKyAgICAgICBTT0NfREFQTV9TSU5HTEVfQVVU T0RJU0FCTEUoIkRMMF9DSDEiLCBBRkVfQ09OTjEwOF8xLA0KPiA+IElfREwwX0NIMSwgMSwgMCks DQo+IA0KPiBJIHRoaW5rIHRoZXJlIHNob3VsZCBiZSBzb21lIGV4cGxhbmF0aW9uIG9uIHdoeSB0 aGVzZSBhcmUNCj4gIkFVVE9ESVNBQkxFIi4NCj4gDQo+IFsuLi5dDQo+IA0KPiA+ICtlbnVtIHsN Cj4gPiArICAgICAgIFNVUFBMWV9TRVFfQVBMTCwNCj4gPiArICAgICAgIFNVUFBMWV9TRVFfSTJT X01DTEtfRU4sDQo+ID4gKyAgICAgICBTVVBQTFlfU0VRX0kyU19DR19FTiwNCj4gPiArICAgICAg IFNVUFBMWV9TRVFfSTJTX0hEX0VOLA0KPiA+ICsgICAgICAgU1VQUExZX1NFUV9JMlNfRU4sDQo+ IA0KPiBJJ20gbm90IHN1cmUgd2h5IGV4cGxpY2l0IHNlcXVlbmNpbmcgaXMgbmVlZGVkLiBUaGUg REFQTSB3aWRnZXRzIGFyZQ0KPiBjb25uZWN0ZWQgaW4gYSBkaXJlY3RlZCBncmFwaCwgYW5kIHdp ZGdldHMgZmVlZGluZyBvdGhlciB3aWRnZXRzIGFyZQ0KPiBlbmFibGVkIGJlZm9yZSB0aGUgb25l cyB0aGF0IGFyZSBmZWQuDQo+IA0KPiBJZiB0aGUgQVBMTCB3aWRnZXQgZmVlZHMgdGhlIE1DTEsg d2lkZ2V0LCBhbmQgdGhlIE1DTEsgd2lkZ2V0IGZlZWRzDQo+IHRoZSBJMlMgd2lkZ2V0LCB0aGVu IHRoZSBBUExMIGlzIGVuYWJsZWQgZmlyc3QsIHRoZW4gdGhlIE1DTEssIHRoZW4NCj4gdGhlIEky Uy4NCj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IG10a19pMnNfaGRfZW5fZXZl bnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXZlbnQpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0 cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPQ0KPiA+IHNuZF9zb2NfZGFwbV90b19jb21w b25lbnQody0+ZGFwbSk7DQo+ID4gKw0KPiA+ICsgICAgICAgZGV2X2RiZyhjbXBudC0+ZGV2LCAi bmFtZSAlcywgZXZlbnQgMHgleFxuIiwgdy0+bmFtZSwNCj4gPiBldmVudCk7DQo+ID4gKw0KPiA+ ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gDQo+IFRoaXMgZG9lc24ndCBkbyBhbnl0aGlu Zy4gUGxlYXNlIGRyb3AgaXQuDQo+IA0KPiA+ICsNCj4gPiArc3RhdGljIGludCBtdGtfYXBsbF9l dmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGV2ZW50KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgc25k X3NvY19jb21wb25lbnQgKmNtcG50ID0NCj4gPiBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHct PmRhcG0pOw0KPiA+ICsgICAgICAgc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0NCj4gPiBzbmRf c29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQo+ID4gKw0KPiA+ICsgICAgICAgZGV2 X2RiZyhjbXBudC0+ZGV2LCAibmFtZSAlcywgZXZlbnQgMHgleFxuIiwgdy0+bmFtZSwNCj4gPiBl dmVudCk7DQo+ID4gKw0KPiA+ICsgICAgICAgc3dpdGNoIChldmVudCkgew0KPiA+ICsgICAgICAg Y2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCj4gPiArICAgICAgICAgICAgICAgaWYgKHN0cmNt cCh3LT5uYW1lLCBBUExMMV9XX05BTUUpID09IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgbXQ4MTk2X2FwbGwxX2VuYWJsZShhZmUpOw0KPiA+ICsgICAgICAgICAgICAgICBlbHNlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbXQ4MTk2X2FwbGwyX2VuYWJsZShhZmUpOw0KPiA+ ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgU05EX1NPQ19EQVBNX1BP U1RfUE1EOg0KPiA+ICsgICAgICAgICAgICAgICBpZiAoc3RyY21wKHctPm5hbWUsIEFQTEwxX1df TkFNRSkgPT0gMCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBtdDgxOTZfYXBsbDFfZGlz YWJsZShhZmUpOw0KPiA+ICsgICAgICAgICAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgbXQ4MTk2X2FwbGwyX2Rpc2FibGUoYWZlKTsNCj4gPiArICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsN Cj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBtdGtfbWNsa19lbl9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBt X3dpZGdldCAqdywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGV2ZW50KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNt cG50ID0NCj4gPiBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KPiA+ICsgICAg ICAgc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0NCj4gPiBzbmRfc29jX2NvbXBvbmVudF9nZXRf ZHJ2ZGF0YShjbXBudCk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAqaTJz X3ByaXY7DQo+ID4gKw0KPiA+ICsgICAgICAgZGV2X2RiZyhjbXBudC0+ZGV2LCAibmFtZSAlcywg ZXZlbnQgMHgleFxuIiwgdy0+bmFtZSwNCj4gPiBldmVudCk7DQo+ID4gKw0KPiA+ICsgICAgICAg aTJzX3ByaXYgPSBnZXRfaTJzX3ByaXZfYnlfbmFtZShhZmUsIHctPm5hbWUpOw0KPiA+ICsNCj4g PiArICAgICAgIGlmICghaTJzX3ByaXYpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOw0KPiA+ICsNCj4gPiArICAgICAgIHN3aXRjaCAoZXZlbnQpIHsNCj4gPiArICAgICAgIGNh c2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6DQo+ID4gKyAgICAgICAgICAgICAgIG10ODE5Nl9tY2tf ZW5hYmxlKGFmZSwgaTJzX3ByaXYtPm1jbGtfaWQsIGkyc19wcml2LQ0KPiA+ID5tY2xrX3JhdGUp Ow0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgU05EX1NPQ19E QVBNX1BPU1RfUE1EOg0KPiA+ICsgICAgICAgICAgICAgICBpMnNfcHJpdi0+bWNsa19yYXRlID0g MDsNCj4gDQo+IEkgdGhpbmsgdGhpcyBzaG91bGRuJ3QgYmUgcmVzZXQgaGVyZS4gSXQgc2hvdWxk IGJlIGRvbmUgb25seSBpbg0KPiAuaHdwYXJhbXMNCj4gYW5kIG1heWJlIC5jbG9zZSBvciAuc2h1 dGRvd24gY2FsbGJhY2tzLiBJIGJlbGlldmUgaXQncyBhY3R1YWxseQ0KPiBwb3NzaWJsZQ0KPiB0 byB0b2dnbGUgdGhlIGludGVyZmFjZSAoYW5kIHRodXMgdGhlIG1jbGspIG9uIGFuZCBvZmYgd2hp bGUgdGhlDQo+IHN0cmVhbQ0KPiBpcyBydW5uaW5nLg0KPiANCj4gPiArICAgICAgICAgICAgICAg bXQ4MTk2X21ja19kaXNhYmxlKGFmZSwgaTJzX3ByaXYtPm1jbGtfaWQpOw0KPiA+ICsgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICAg IGJyZWFrOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQg bXRrX2RhaV9pMnNfd2lkZ2V0c1tdID0gew0KPiANCj4gWy4uLl0NCj4gDQo+ID4gKw0KPiA+ICsg ICAgICAgLyogaTJzIGhkIGVuICovDQo+ID4gKyAgICAgICBTTkRfU09DX0RBUE1fU1VQUExZX1Mo STJTSU4wX0hEX0VOX1dfTkFNRSwNCj4gPiBTVVBQTFlfU0VRX0kyU19IRF9FTiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbXRrX2kyc19oZF9lbl9ldmVudCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTTkRfU09DX0RBUE1fUFJFX1BNVSB8DQo+ID4gU05EX1NP Q19EQVBNX1BPU1RfUE1EKSwNCj4gDQo+IEFzIG1lbnRpb25lZCBhYm92ZSwgcGxlYXNlIGRyb3Ag dGhlIG5vLW9wIGV2ZW50LiBTYW1lIGZvciB0aGUgb3RoZXINCj4gKl9IRF9FTg0KPiB3aWRnZXRz IGJlbG93Lg0KPiANCj4gWy4uLl0NCj4gDQo+ID4gKyAgICAgICAvKiBhbGxvdyBpMnMgb24gd2l0 aG91dCBjb2RlYyBvbiAqLw0KPiA+ICsgICAgICAgU05EX1NPQ19EQVBNX09VVFBVVCgiSTJTX0RV TU1ZX09VVCIpLA0KPiA+ICsgICAgICAgU05EX1NPQ19EQVBNX01VWCgiSTJTX09VVDBfTXV4IiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgU05EX1NPQ19OT1BNLCAwLCAwLA0KPiA+ICZp MnNfb3V0MF9tdXhfY29udHJvbCksDQo+ID4gKyAgICAgICBTTkRfU09DX0RBUE1fTVVYKCJJMlNf T1VUMV9NdXgiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBTTkRfU09DX05PUE0sIDAs IDAsDQo+ID4gJmkyc19vdXQxX211eF9jb250cm9sKSwNCj4gPiArICAgICAgIFNORF9TT0NfREFQ TV9NVVgoIkkyU19PVVQyX011eCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNORF9T T0NfTk9QTSwgMCwgMCwNCj4gPiAmaTJzX291dDJfbXV4X2NvbnRyb2wpLA0KPiA+ICsgICAgICAg U05EX1NPQ19EQVBNX01VWCgiSTJTX09VVDNfTXV4IiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgU05EX1NPQ19OT1BNLCAwLCAwLA0KPiA+ICZpMnNfb3V0M19tdXhfY29udHJvbCksDQo+ ID4gKyAgICAgICBTTkRfU09DX0RBUE1fTVVYKCJJMlNfT1VUNF9NdXgiLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQo+ID4gJmkyc19vdXQ0X211eF9j b250cm9sKSwNCj4gPiArICAgICAgIFNORF9TT0NfREFQTV9NVVgoIkkyU19PVVQ2X011eCIsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNORF9TT0NfTk9QTSwgMCwgMCwNCj4gPiAmaTJz X291dDZfbXV4X2NvbnRyb2wpLA0KPiA+ICsNCj4gPiArICAgICAgIFNORF9TT0NfREFQTV9JTlBV VCgiSTJTX0RVTU1ZX0lOIiksDQo+ID4gKyAgICAgICBTTkRfU09DX0RBUE1fTVVYKCJJMlNfSU4w X011eCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNORF9TT0NfTk9QTSwgMCwgMCwg Jmkyc19pbjBfbXV4X2NvbnRyb2wpLA0KPiA+ICsgICAgICAgU05EX1NPQ19EQVBNX01VWCgiSTJT X0lOMV9NdXgiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBTTkRfU09DX05PUE0sIDAs IDAsICZpMnNfaW4xX211eF9jb250cm9sKSwNCj4gPiArICAgICAgIFNORF9TT0NfREFQTV9NVVgo IkkyU19JTjJfTXV4IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgU05EX1NPQ19OT1BN LCAwLCAwLCAmaTJzX2luMl9tdXhfY29udHJvbCksDQo+ID4gKyAgICAgICBTTkRfU09DX0RBUE1f TVVYKCJJMlNfSU4zX011eCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNORF9TT0Nf Tk9QTSwgMCwgMCwgJmkyc19pbjNfbXV4X2NvbnRyb2wpLA0KPiA+ICsgICAgICAgU05EX1NPQ19E QVBNX01VWCgiSTJTX0lONF9NdXgiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBTTkRf U09DX05PUE0sIDAsIDAsICZpMnNfaW40X211eF9jb250cm9sKSwNCj4gPiArICAgICAgIFNORF9T T0NfREFQTV9NVVgoIkkyU19JTjZfTXV4IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg U05EX1NPQ19OT1BNLCAwLCAwLCAmaTJzX2luNl9tdXhfY29udHJvbCksDQo+IA0KPiBTYW1lIHF1 ZXN0aW9uIGFib3V0IGR1bW15IHdpZGdldHMuDQo+IA0KPiA+ICsgICAgICAgU05EX1NPQ19EQVBN X01JWEVSKCJTT0ZfRE1BX0RMXzI0Q0giLCBTTkRfU09DX05PUE0sIDAsIDAsDQo+ID4gTlVMTCwg MCksDQo+ID4gKyAgICAgICBTTkRfU09DX0RBUE1fTUlYRVIoIlNPRl9ETUFfREwxIiwgU05EX1NP Q19OT1BNLCAwLCAwLCBOVUxMLA0KPiA+IDApLA0KPiANCj4gU09GIHdpZGdldHMgYmVsb25nIGlu IHRoZSBjYXJkL21hY2hpbmUgZHJpdmVyLg0KPiANCj4gPiArfTsNCj4gDQo+IFsuLi5dDQo+IA0K PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV9yb3V0ZSBtdGtfZGFpX2kyc19y b3V0ZXNbXSA9IHsNCj4gDQo+IFsuLi5dDQo+IA0KPiA+ICsgICAgICAgLyogU09GIERvd25saW5r ICovDQo+ID4gKyAgICAgICB7IkkyU09VVDRfQ0gxIiwgIkRMXzI0Q0hfQ0gxIiwgIlNPRl9ETUFf RExfMjRDSCJ9LA0KPiA+ICsgICAgICAgeyJJMlNPVVQ0X0NIMiIsICJETF8yNENIX0NIMiIsICJT T0ZfRE1BX0RMXzI0Q0gifSwNCj4gPiArICAgICAgIHsiSTJTT1VUNF9DSDMiLCAiRExfMjRDSF9D SDMiLCAiU09GX0RNQV9ETF8yNENIIn0sDQo+ID4gKyAgICAgICB7IkkyU09VVDRfQ0g0IiwgIkRM XzI0Q0hfQ0g0IiwgIlNPRl9ETUFfRExfMjRDSCJ9LA0KPiANCj4gU09GIHdpZGdldHMgYW5kIHJv dXRlcyBiZWxvbmcgaW4gdGhlIGNhcmQgZHJpdmVyLg0KDQpEZWJ1Z2dpbmcgZm91bmQgdGhhdCB0 aGUgd2lkZ2V0IG9uIHRoZSBtYWNoaW5lIGRyaXZlciBjYW5ub3QgdXNlIHRoZQ0KcGFyYW1ldGVy IHdpdGgga2NvbnRyb2wgYmVjYXVzZSB0aGUgd2lkZ2V0IGRvbWFpbiBpcyBpdHMgcGxhdGZvcm0N CmRyaXZlciBhbmQgdGh1cyBpcyBub3QgYXBwbGljYWJsZSBpbiB0aGUgbWFjaGluZSBkcml2ZXIu IA0KDQo+IA0KPiBbLi4uXQ0KPiANCj4gPiArICAgICAgIC8qIFNPRiBEb3dubGluayAqLw0KPiA+ ICsgICAgICAgeyJJMlNPVVQ2X0NIMSIsICJETDFfQ0gxIiwgIlNPRl9ETUFfREwxIn0sDQo+ID4g KyAgICAgICB7IkkyU09VVDZfQ0gyIiwgIkRMMV9DSDIiLCAiU09GX0RNQV9ETDEifSwNCj4gPiAr ICAgICAgIHsiSTJTT1VUNl9DSDEiLCAiRExfMjRDSF9DSDEiLCAiU09GX0RNQV9ETF8yNENIIn0s DQo+ID4gKyAgICAgICB7IkkyU09VVDZfQ0gyIiwgIkRMXzI0Q0hfQ0gyIiwgIlNPRl9ETUFfRExf MjRDSCJ9LA0KPiANCj4gU2FtZSBjb21tZW50IGFib3V0IFNPRi4NCj4gDQo+IFsuLi5dDQo+IA0K PiA+ICsgICAgICAgLyogYWxsb3cgaTJzIG9uIHdpdGhvdXQgY29kZWMgb24gKi8NCj4gPiArICAg ICAgIHsiSTJTSU4wIiwgTlVMTCwgIkkyU19JTjBfTXV4In0sDQo+ID4gKyAgICAgICB7IkkyU19J TjBfTXV4IiwgIkR1bW15X1dpZGdldCIsICJJMlNfRFVNTVlfSU4ifSwNCj4gPiArDQo+ID4gKyAg ICAgICB7IkkyU0lOMSIsIE5VTEwsICJJMlNfSU4xX011eCJ9LA0KPiA+ICsgICAgICAgeyJJMlNf SU4xX011eCIsICJEdW1teV9XaWRnZXQiLCAiSTJTX0RVTU1ZX0lOIn0sDQo+ID4gKw0KPiA+ICsg ICAgICAgeyJJMlNJTjIiLCBOVUxMLCAiSTJTX0lOMl9NdXgifSwNCj4gPiArICAgICAgIHsiSTJT X0lOMl9NdXgiLCAiRHVtbXlfV2lkZ2V0IiwgIkkyU19EVU1NWV9JTiJ9LA0KPiA+ICsNCj4gPiAr ICAgICAgIHsiSTJTSU4zIiwgTlVMTCwgIkkyU19JTjNfTXV4In0sDQo+ID4gKyAgICAgICB7Ikky U19JTjNfTXV4IiwgIkR1bW15X1dpZGdldCIsICJJMlNfRFVNTVlfSU4ifSwNCj4gPiArDQo+ID4g KyAgICAgICB7IkkyU0lONCIsIE5VTEwsICJJMlNfSU40X011eCJ9LA0KPiA+ICsgICAgICAgeyJJ MlNfSU40X011eCIsICJEdW1teV9XaWRnZXQiLCAiSTJTX0RVTU1ZX0lOIn0sDQo+ID4gKw0KPiA+ ICsgICAgICAgeyJJMlNJTjYiLCBOVUxMLCAiSTJTX0lONl9NdXgifSwNCj4gPiArICAgICAgIHsi STJTX0lONl9NdXgiLCAiRHVtbXlfV2lkZ2V0IiwgIkkyU19EVU1NWV9JTiJ9LA0KPiA+ICsNCj4g PiArICAgICAgIHsiSTJTX09VVDBfTXV4IiwgIkR1bW15X1dpZGdldCIsICJJMlNPVVQwIn0sDQo+ ID4gKyAgICAgICB7IkkyU19EVU1NWV9PVVQiLCBOVUxMLCAiSTJTX09VVDBfTXV4In0sDQo+ID4g Kw0KPiA+ICsgICAgICAgeyJJMlNfT1VUMV9NdXgiLCAiRHVtbXlfV2lkZ2V0IiwgIkkyU09VVDEi fSwNCj4gPiArICAgICAgIHsiSTJTX0RVTU1ZX09VVCIsIE5VTEwsICJJMlNfT1VUMV9NdXgifSwN Cj4gPiArDQo+ID4gKyAgICAgICB7IkkyU19PVVQyX011eCIsICJEdW1teV9XaWRnZXQiLCAiSTJT T1VUMiJ9LA0KPiA+ICsgICAgICAgeyJJMlNfRFVNTVlfT1VUIiwgTlVMTCwgIkkyU19PVVQyX011 eCJ9LA0KPiA+ICsNCj4gPiArICAgICAgIHsiSTJTX09VVDNfTXV4IiwgIkR1bW15X1dpZGdldCIs ICJJMlNPVVQzIn0sDQo+ID4gKyAgICAgICB7IkkyU19EVU1NWV9PVVQiLCBOVUxMLCAiSTJTX09V VDNfTXV4In0sDQo+ID4gKyAgICAgICB7IkkyU19PVVQ0X011eCIsICJEdW1teV9XaWRnZXQiLCAi STJTT1VUNCJ9LA0KPiA+ICsgICAgICAgeyJJMlNfRFVNTVlfT1VUIiwgTlVMTCwgIkkyU19PVVQ0 X011eCJ9LA0KPiA+ICsNCj4gPiArICAgICAgIHsiSTJTX09VVDZfTXV4IiwgIkR1bW15X1dpZGdl dCIsICJJMlNPVVQ2In0sDQo+ID4gKyAgICAgICB7IkkyU19EVU1NWV9PVVQiLCBOVUxMLCAiSTJT X09VVDZfTXV4In0sDQo+IA0KPiBTYW1lIHF1ZXN0aW9uIGFib3V0IGR1bW15IHdpZGdldHMuDQo+ IA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogaTJzIGRhaSBvcHMqLw0KPiA+ICtzdGF0aWMgaW50 IG10a19kYWlfaTJzX2NvbmZpZyhzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkyc19pZCkNCj4gPiArew0K PiA+ICsgICAgICAgc3RydWN0IG10ODE5Nl9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBs YXRmb3JtX3ByaXY7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAqaTJzX3By aXY7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAqaTJzaW5fcHJpdiA9IE5V TEw7DQo+ID4gKyAgICAgICBpbnQgaWQgPSBpMnNfaWQgLSBNVDgxOTZfREFJX0kyU19JTjA7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2Jhc2VfZXRkbV9kYXRhIGV0ZG1fZGF0YTsNCj4gPiArICAg ICAgIHVuc2lnbmVkIGludCByYXRlID0gcGFyYW1zX3JhdGUocGFyYW1zKTsNCj4gPiArICAgICAg IHVuc2lnbmVkIGludCByYXRlX3JlZyA9IGdldF9ldGRtX2luY29ubl9yYXRlKHJhdGUpOw0KPiA+ ICsgICAgICAgc25kX3BjbV9mb3JtYXRfdCBmb3JtYXQgPSBwYXJhbXNfZm9ybWF0KHBhcmFtcyk7 DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgY2hhbm5lbHMgPSBwYXJhbXNfY2hhbm5lbHMocGFy YW1zKTsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgaTJz X2NvbjsNCj4gPiArICAgICAgIGludCBwYWRfdG9wOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChp MnNfaWQgPj0gTVQ4MTk2X0RBSV9OVU0gfHwgaTJzX2lkIDwgMCB8fCBpZCA8IDAgfHwgaWQNCj4g PiA+PSBEQUlfSTJTX05VTSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ ID4gKw0KPiA+ICsgICAgICAgaTJzX3ByaXYgPSBhZmVfcHJpdi0+ZGFpX3ByaXZbaTJzX2lkXTsN Cj4gPiArDQo+IA0KPiBEcm9wIHRoZSBlbXB0eSBsaW5lIGhlcmUgc28gdGhhdCB0aGUgY2hlY2sg aW1tZWRpYXRlbHkgZm9sbG93cyB0aGUNCj4gYXNzaWdubWVudC4NCj4gDQo+ID4gKyAgICAgICBp ZiAoIWkyc19wcml2KQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAr DQo+ID4gKyAgICAgICBkZXZfaW5mbyhhZmUtPmRldiwgImlkOiAlZCwgcmF0ZTogJWQsIHBjbV9m bXQ6ICVkLCBmbXQ6ICVkLA0KPiA+IGNoOiAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgIGky c19pZCwgcmF0ZSwgZm9ybWF0LCBpMnNfcHJpdi0+Zm9ybWF0LCBjaGFubmVscyk7DQo+IA0KPiBN YWtlIHRoaXMgZGVidWcgbGV2ZWwuDQo+IA0KPiA+ICsgICAgICAgaTJzX3ByaXYtPnJhdGUgPSBy YXRlOw0KPiA+ICsgICAgICAgZXRkbV9kYXRhID0gbXRrX2V0ZG1fZGF0YVtpZF07DQo+ID4gKw0K PiA+ICsgICAgICAgaWYgKGlzX2V0ZG1faW5fcGFkX3RvcChpZCkpDQo+ID4gKyAgICAgICAgICAg ICAgIHBhZF90b3AgPSAweDM7DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAg IHBhZF90b3AgPSAweDU7DQo+ID4gKw0KPiA+ICsgICAgICAgc3dpdGNoIChpZCkgew0KPiA+ICsg ICAgICAgY2FzZSBEQUlfRk1JMlNfTUFTVEVSOg0KPiA+ICsgICAgICAgICAgICAgICBpMnNfY29u ID0gSTJTX0lOX1BBRF9JT19NVVggPDwgSTJTSU5fUEFEX1NFTF9TRlQ7DQo+ID4gKyAgICAgICAg ICAgICAgIGkyc19jb24gfD0gcmF0ZV9yZWcgPDwgSTJTX01PREVfU0ZUOw0KPiA+ICsgICAgICAg ICAgICAgICBpMnNfY29uIHw9IEkyU19GTVRfSTJTIDw8IEkyU19GTVRfU0ZUOw0KPiA+ICsgICAg ICAgICAgICAgICBpMnNfY29uIHw9IGdldF9pMnNfd2xlbihmb3JtYXQpIDw8IEkyU19XTEVOX1NG VDsNCj4gPiArICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0K PiA+IEFGRV9DT05OU1lTX0kyU19DT04sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweGZmZmZlZmZlLCBpMnNfY29uKTsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7 DQo+IA0KPiBQbGVhc2UgYWRkIGFuIGVtcHR5IGxpbmUgYWZ0ZXIgdGhlICJicmVhayIgc3RhdGVt ZW50IHRvIGNsZWFybHkNCj4gc2VwYXJhdGUNCj4gZWFjaCBibG9jay4gU2FtZSBmb3IgdGhlIGZv bGxvd2luZyBibG9ja3MuDQo+IA0KPiA+ICsgICAgICAgY2FzZSBEQUlfSTJTSU4wOg0KPiA+ICsg ICAgICAgY2FzZSBEQUlfSTJTSU4xOg0KPiA+ICsgICAgICAgY2FzZSBEQUlfSTJTSU4yOg0KPiA+ ICsgICAgICAgY2FzZSBEQUlfSTJTSU4zOg0KPiA+ICsgICAgICAgY2FzZSBEQUlfSTJTSU40Og0K PiA+ICsgICAgICAgY2FzZSBEQUlfSTJTSU42Og0KPiA+ICsgICAgICAgICAgICAgICAvKiAtLS1l dGRtIGluIC0tLSAqLw0KPiA+ICsgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoYWZl LT5yZWdtYXAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGRtX2Rh dGEuaW5pdF9jb3VudF9yZWcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBldGRtX2RhdGEuaW5pdF9jb3VudF9tYXNrIDw8DQo+ID4gZXRkbV9kYXRhLmluaXRfY291bnRf c2hpZnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUgPDwNCj4g PiBldGRtX2RhdGEuaW5pdF9jb3VudF9zaGlmdCk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAg ICAvKiAzOiBwYWQgdG9wIDU6IG5vIHBhZCB0b3AgKi8NCj4gPiArICAgICAgICAgICAgICAgcmVn bWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXRkbV9kYXRhLmluaXRfcG9pbnRfcmVnLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXRkbV9kYXRhLmluaXRfcG9pbnRfbWFzayA8PA0KPiA+IGV0 ZG1fZGF0YS5pbml0X3BvaW50X3NoaWZ0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFkX3RvcCA8PA0KPiA+IGV0ZG1fZGF0YS5pbml0X3BvaW50X3NoaWZ0KTsNCj4g PiArDQo+ID4gKyAgICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1fZGF0YS5scmNrX3Jl c2V0X3JlZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1fZGF0 YS5scmNrX3Jlc2V0X21hc2sgPDwNCj4gPiBldGRtX2RhdGEubHJja19yZXNldF9zaGlmdCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSA8PA0KPiA+IGV0ZG1fZGF0 YS5scmNrX3Jlc2V0X3NoaWZ0KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHJlZ21hcF91 cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV0ZG1fZGF0YS5jbGtfc291cmNlX3JlZywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGV0ZG1fZGF0YS5jbGtfc291cmNlX21hc2sgPDwNCj4gPiBldGRtX2Rh dGEuY2xrX3NvdXJjZV9zaGlmdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVURE1fQ0xLX1NPVVJDRV9BUExMIDw8DQo+ID4gZXRkbV9kYXRhLmNsa19zb3VyY2Vfc2hp ZnQpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgLyogMDogbWFudWFsIDE6IGF1dG8gKi8N Cj4gPiArICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRkbV9kYXRhLmNrX2VuX3NlbF9y ZWcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGRtX2RhdGEuY2tf ZW5fc2VsX21hc2sgPDwNCj4gPiBldGRtX2RhdGEuY2tfZW5fc2VsX3NoaWZ0LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxIDw8DQo+ID4gZXRkbV9kYXRhLmNrX2Vu X3NlbF9zaGlmdCk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2Jp dHMoYWZlLT5yZWdtYXAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl dGRtX2RhdGEuZnNfdGltaW5nX3JlZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV0ZG1fZGF0YS5mc190aW1pbmdfbWFzayA8PA0KPiA+IGV0ZG1fZGF0YS5mc190aW1p bmdfc2hpZnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZXRk bV9yYXRlKHJhdGUpIDw8DQo+ID4gZXRkbV9kYXRhLmZzX3RpbWluZ19zaGlmdCk7DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGRtX2RhdGEucmVsYXRjaF9lbl9z ZWxfcmVnLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRkbV9kYXRh LnJlbGF0Y2hfZW5fc2VsX21hc2sgPDwNCj4gPiBldGRtX2RhdGEucmVsYXRjaF9lbl9zZWxfc2hp ZnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZXRkbV9pbmNv bm5fcmF0ZShyYXRlKSA8PA0KPiA+IGV0ZG1fZGF0YS5yZWxhdGNoX2VuX3NlbF9zaGlmdCk7DQo+ ID4gKw0KPiA+ICsgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGRtX2RhdGEudXNlX2Fm aWZvX3JlZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1fZGF0 YS51c2VfYWZpZm9fbWFzayA8PA0KPiA+IGV0ZG1fZGF0YS51c2VfYWZpZm9fc2hpZnQsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDApOw0KPiA+ICsNCj4gPiArICAg ICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRkbV9kYXRhLmFmaWZvX21vZGVfcmVnLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRkbV9kYXRhLmFmaWZvX21vZGVf bWFzayA8PA0KPiA+IGV0ZG1fZGF0YS5hZmlmb19tb2RlX3NoaWZ0LA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAg IHJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGV0ZG1fZGF0YS5hbG1vc3RfZW5kX2NoX3JlZywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1fZGF0YS5hbG1vc3RfZW5kX2NoX21hc2sg PDwNCj4gPiBldGRtX2RhdGEuYWxtb3N0X2VuZF9jaF9zaGlmdCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MCk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBy ZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBldGRtX2RhdGEuYWxtb3N0X2VuZF9iaXRfcmVnLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRkbV9kYXRhLmFsbW9zdF9lbmRfYml0X21hc2sg PDwNCj4gPiBldGRtX2RhdGEuYWxtb3N0X2VuZF9iaXRfc2hpZnQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDApOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAg aWYgKGlzX2V0ZG1faW5fcGFkX3RvcChpZCkpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICByZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1fZGF0YS5vdXQybGF0Y2hfdGltZQ0KPiA+IF9y ZWcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1f ZGF0YS5vdXQybGF0Y2hfdGltZQ0KPiA+IF9tYXNrIDw8DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1fZGF0YS5vdXQybGF0Y2hfdGltZQ0KPiA+IF9z aGlmdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2 IDw8DQo+ID4gZXRkbV9kYXRhLm91dDJsYXRjaF90aW1lX3NoaWZ0KTsNCj4gPiArICAgICAgICAg ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRl X2JpdHMoYWZlLT5yZWdtYXAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV0ZG1fZGF0YS5vdXQybGF0Y2hfdGltZQ0KPiA+IF9yZWcsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0ZG1fZGF0YS5vdXQybGF0Y2hf dGltZQ0KPiA+IF9tYXNrIDw8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV0ZG1fZGF0YS5vdXQybGF0Y2hfdGltZQ0KPiA+IF9zaGlmdCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0IDw8DQo+ID4gZXRkbV9k YXRhLm91dDJsYXRjaF90aW1lX3NoaWZ0KTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgICAgICAgICAgaWYgKGlkID09IERBSV9JMlNJTjQpIHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBkZXZfZGJnKGFmZS0+ZGV2LCAiaTJzaW40LCBpZDogJWQsIGZtdDog JWQsDQo+ID4gY2g6ICVkLCBpcF9tb2RlOiAlZCwgc3luYzogJWRcbiIsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGkyc19wcml2LT5mb3JtYXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFubmVscywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyc19w cml2LT5pcF9tb2RlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTJzX3By aXYtPnN5bmMpOw0KPiANCj4gUHV0IG1vcmUgcGFyYW1ldGVycyBvbiBvbmUgbGluZS4NCj4gDQo+ IFsuLi5dDQo+IA0KPiA+ICtzdGF0aWMgaW50IG10a19kYWlfaTJzX3NldF9zeXNjbGsoc3RydWN0 IHNuZF9zb2NfZGFpICpkYWksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBjbGtfaWQsIHVuc2lnbmVkIGludCBmcmVxLA0KPiA+IGludCBkaXIpDQo+ID4gK3sNCj4g PiArICAgICAgIHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IGRldl9nZXRfZHJ2ZGF0YShkYWkt PmRldik7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXQ4MTk2X2FmZV9wcml2YXRlICphZmVfcHJpdiA9 IGFmZS0+cGxhdGZvcm1fcHJpdjsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfYWZlX2kyc19wcml2 ICppMnNfcHJpdjsNCj4gPiArICAgICAgIGludCBhcGxsOw0KPiA+ICsgICAgICAgaW50IGFwbGxf cmF0ZTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoZGFpLT5pZCA+PSBNVDgxOTZfREFJX05VTSB8 fCBkYWktPmlkIDwgMCB8fCBkaXIgIT0NCj4gPiBTTkRfU09DX0NMT0NLX09VVCkNCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgaTJzX3ByaXYg PSBhZmVfcHJpdi0+ZGFpX3ByaXZbZGFpLT5pZF07DQo+ID4gKw0KPiA+ICsgICAgICAgZGV2X2Ri ZyhhZmUtPmRldiwgImZyZXE6ICV1XG4iLCBmcmVxKTsNCj4gPiArDQo+IA0KPiBEcm9wIGVtcHR5 IGxpbmUgaGVyZSBhbmQgbWFrZSB0aGUgY2hlY2sgYmVsb3cgaW1tZWRpYXRlbHkgZm9sbG93DQo+ IHRoZSBpMnNfcHJpdiBhc3NpZ25tZW50Lg0KPiANCj4gWW91IG1pZ2h0IHdhbnQgdG8gbW92ZSB0 aGUgZGVidWcgdHJhY2UgYmVmb3JlIHRoZSBhc3NpZ25tZW50IGFuZA0KPiBtYWtlIGl0IGluY2x1 ZGUgbW9yZSBpbmZvcm1hdGlvbj8NCj4gDQo+ID4gKyAgICAgICBpZiAoIWkyc19wcml2KQ0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBhcGxs ID0gbXQ4MTk2X2dldF9hcGxsX2J5X3JhdGUoYWZlLCBmcmVxKTsNCj4gPiArICAgICAgIGFwbGxf cmF0ZSA9IG10ODE5Nl9nZXRfYXBsbF9yYXRlKGFmZSwgYXBsbCk7DQo+ID4gKw0KPiA+ICsgICAg ICAgaWYgKGZyZXEgPiBhcGxsX3JhdGUgfHwgYXBsbF9yYXRlICUgZnJlcSkNCj4gPiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgaTJzX3ByaXYtPm1j bGtfcmF0ZSA9IGZyZXE7DQo+ID4gKyAgICAgICBpMnNfcHJpdi0+bWNsa19hcGxsID0gYXBsbDsN Cj4gPiArDQo+ID4gKyAgICAgICBpZiAoaTJzX3ByaXYtPnNoYXJlX2kyc19pZCA+IDApIHsNCj4g PiArICAgICAgICAgICAgICAgc3RydWN0IG10a19hZmVfaTJzX3ByaXYgKnNoYXJlX2kyc19wcml2 Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgc2hhcmVfaTJzX3ByaXYgPSBhZmVfcHJpdi0+ ZGFpX3ByaXZbaTJzX3ByaXYtDQo+ID4gPnNoYXJlX2kyc19pZF07DQo+ID4gKyAgICAgICAgICAg ICAgIGlmICghc2hhcmVfaTJzX3ByaXYpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBzaGFyZV9pMnNfcHJpdi0+ bWNsa19yYXRlID0gaTJzX3ByaXYtPm1jbGtfcmF0ZTsNCj4gPiArICAgICAgICAgICAgICAgc2hh cmVfaTJzX3ByaXYtPm1jbGtfYXBsbCA9IGkyc19wcml2LT5tY2xrX2FwbGw7DQo+ID4gKyAgICAg ICB9DQo+IA0KPiBBZGQgZW1wdHkgbGluZSBoZXJlIGJlZm9yZSBmaW5hbCByZXR1cm4gc3RhdGVt ZW50Lg0KPiANCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IG10a19kYWlfaTJzX3NldF9mbXQoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksIHVuc2ln bmVkDQo+ID4gaW50IGZtdCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IG10a19iYXNlX2Fm ZSAqYWZlID0gc25kX3NvY19kYWlfZ2V0X2RydmRhdGEoZGFpKTsNCj4gPiArICAgICAgIHN0cnVj dCBtdDgxOTZfYWZlX3ByaXZhdGUgKmFmZV9wcml2ID0gYWZlLT5wbGF0Zm9ybV9wcml2Ow0KPiA+ ICsgICAgICAgc3RydWN0IG10a19hZmVfaTJzX3ByaXYgKmkyc19wcml2Ow0KPiA+ICsNCj4gPiAr ICAgICAgIGlmIChkYWktPmlkID49IE1UODE5Nl9EQUlfTlVNIHx8IGRhaS0+aWQgPCAwKQ0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBpMnNf cHJpdiA9IGFmZV9wcml2LT5kYWlfcHJpdltkYWktPmlkXTsNCj4gPiArDQo+IA0KPiBEcm9wIGVt cHR5IGxpbmUgaGVyZS4NCj4gDQo+ID4gKyAgICAgICBpZiAoIWkyc19wcml2KQ0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBkZXZfZGJnKGFm ZS0+ZGV2LCAiZGFpLT5pZDogJWQsIGZtdDogMHgleFxuIiwgZGFpLT5pZCwNCj4gPiBmbXQpOw0K PiA+ICsNCj4gPiArICAgICAgIHN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01B U0spIHsNCj4gPiArICAgICAgIGNhc2UgU05EX1NPQ19EQUlGTVRfSTJTOg0KPiA+ICsgICAgICAg ICAgICAgICBpMnNfcHJpdi0+Zm9ybWF0ID0gTVRLX0RBSV9FVERNX0ZPUk1BVF9JMlM7DQo+ID4g KyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSBTTkRfU09DX0RBSUZNVF9M RUZUX0o6DQo+ID4gKyAgICAgICAgICAgICAgIGkyc19wcml2LT5mb3JtYXQgPSBNVEtfREFJX0VU RE1fRk9STUFUX0xKOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNh c2UgU05EX1NPQ19EQUlGTVRfUklHSFRfSjoNCj4gPiArICAgICAgICAgICAgICAgaTJzX3ByaXYt PmZvcm1hdCA9IE1US19EQUlfRVRETV9GT1JNQVRfUko7DQo+ID4gKyAgICAgICAgICAgICAgIGJy ZWFrOw0KPiA+ICsgICAgICAgY2FzZSBTTkRfU09DX0RBSUZNVF9EU1BfQToNCj4gPiArICAgICAg ICAgICAgICAgaTJzX3ByaXYtPmZvcm1hdCA9IE1US19EQUlfRVRETV9GT1JNQVRfRFNQQTsNCj4g PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIFNORF9TT0NfREFJRk1U X0RTUF9COg0KPiA+ICsgICAgICAgICAgICAgICBpMnNfcHJpdi0+Zm9ybWF0ID0gTVRLX0RBSV9F VERNX0ZPUk1BVF9EU1BCOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAg IGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGRldl9kYmcoYWZlLT5kZXYsICJkYWktPmlkOiAlZCwg aTJzX3ByaXYtPmZvcm1hdDogMHgleFxuIiwNCj4gPiArICAgICAgICAgICAgICAgZGFpLT5pZCwg aTJzX3ByaXYtPmZvcm1hdCk7DQo+IA0KPiBEcm9wIHRoaXMgb25lLiBPbmUgZGVidWcgdHJhY2Ug aXMgZW5vdWdoLg0KPiANCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhaV9vcHMgbXRrX2RhaV9pMnNf b3BzID0gew0KPiA+ICsgICAgICAgLmh3X3BhcmFtcyA9IG10a19kYWlfaTJzX2h3X3BhcmFtcywN Cj4gPiArICAgICAgIC5zZXRfc3lzY2xrID0gbXRrX2RhaV9pMnNfc2V0X3N5c2NsaywNCj4gPiAr ICAgICAgIC5zZXRfZm10ID0gbXRrX2RhaV9pMnNfc2V0X2ZtdCwNCj4gPiArfTsNCj4gPiArDQo+ ID4gKy8qIGRhaSBkcml2ZXIgKi8NCj4gPiArI2RlZmluZSBNVEtfRVRETV9SQVRFUyAoU05EUlZf UENNX1JBVEVfODAwMF8zODQwMDApDQo+ID4gKyNkZWZpbmUgTVRLX0VURE1fRk9STUFUUyAoU05E UlZfUENNX0ZNVEJJVF9TOCB8XA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU05EUlZf UENNX0ZNVEJJVF9TMTZfTEUgfFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNORFJW X1BDTV9GTVRCSVRfUzI0X0xFIHxcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTTkRS Vl9QQ01fRk1UQklUX1MzMl9MRSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgTVQ4MTk2X0kyU19EQUko X25hbWUsIF9pZCwgbWF4X2NoLCBkaXIpIFwNCj4gPiAreyBcDQo+ID4gKyAgICAgICAubmFtZSA9 ICNfbmFtZSwgXA0KPiA+ICsgICAgICAgLmlkID0gX2lkLCBcDQo+ID4gKyAgICAgICAuZGlyID0g eyBcDQo+ID4gKyAgICAgICAgICAgICAgIC5zdHJlYW1fbmFtZSA9ICNfbmFtZSwgXA0KPiA+ICsg ICAgICAgICAgICAgICAuY2hhbm5lbHNfbWluID0gMSwgXA0KPiA+ICsgICAgICAgICAgICAgICAu Y2hhbm5lbHNfbWF4ID0gbWF4X2NoLCBcDQo+ID4gKyAgICAgICAgICAgICAgIC5yYXRlcyA9IE1U S19FVERNX1JBVEVTLCBcDQo+ID4gKyAgICAgICAgICAgICAgIC5mb3JtYXRzID0gTVRLX0VURE1f Rk9STUFUUywgXA0KPiA+ICsgICAgICAgfSwgXA0KPiA+ICsgICAgICAgLm9wcyA9ICZtdGtfZGFp X2kyc19vcHMsIFwNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBzbmRfc29jX2Rh aV9kcml2ZXIgbXRrX2RhaV9pMnNfZHJpdmVyW10gPSB7DQo+ID4gKyAgICAgICAvKiBjYXB0dXJl ICovDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShJMlNJTjAsIE1UODE5Nl9EQUlfSTJTX0lO MCwgMiwgY2FwdHVyZSksDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShJMlNJTjEsIE1UODE5 Nl9EQUlfSTJTX0lOMSwgMiwgY2FwdHVyZSksDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShJ MlNJTjIsIE1UODE5Nl9EQUlfSTJTX0lOMiwgMiwgY2FwdHVyZSksDQo+ID4gKyAgICAgICBNVDgx OTZfSTJTX0RBSShJMlNJTjMsIE1UODE5Nl9EQUlfSTJTX0lOMywgMiwgY2FwdHVyZSksDQo+ID4g KyAgICAgICBNVDgxOTZfSTJTX0RBSShJMlNJTjQsIE1UODE5Nl9EQUlfSTJTX0lONCwgOCwgY2Fw dHVyZSksDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShJMlNJTjYsIE1UODE5Nl9EQUlfSTJT X0lONiwgMiwgY2FwdHVyZSksDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShGTUkyU19NQVNU RVIsIE1UODE5Nl9EQUlfRk1fSTJTX01BU1RFUiwgMiwNCj4gPiBjYXB0dXJlKSwNCj4gPiArICAg ICAgIC8qIHBsYXliYWNrICovDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShJMlNPVVQwLCBN VDgxOTZfREFJX0kyU19PVVQwLCAyLCBwbGF5YmFjayksDQo+ID4gKyAgICAgICBNVDgxOTZfSTJT X0RBSShJMlNPVVQxLCBNVDgxOTZfREFJX0kyU19PVVQxLCAyLCBwbGF5YmFjayksDQo+ID4gKyAg ICAgICBNVDgxOTZfSTJTX0RBSShJMlNPVVQyLCBNVDgxOTZfREFJX0kyU19PVVQyLCAyLCBwbGF5 YmFjayksDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShJMlNPVVQzLCBNVDgxOTZfREFJX0ky U19PVVQzLCAyLCBwbGF5YmFjayksDQo+ID4gKyAgICAgICBNVDgxOTZfSTJTX0RBSShJMlNPVVQ0 LCBNVDgxOTZfREFJX0kyU19PVVQ0LCA4LCBwbGF5YmFjayksDQo+ID4gKyAgICAgICBNVDgxOTZf STJTX0RBSShJMlNPVVQ2LCBNVDgxOTZfREFJX0kyU19PVVQ2LCAyLCBwbGF5YmFjayksDQo+ID4g K307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10a19hZmVfaTJzX3ByaXYgbXQ4 MTk2X2kyc19wcml2W0RBSV9JMlNfTlVNXQ0KPiA+ID0gew0KPiA+ICsgICAgICAgW0RBSV9JMlNJ TjBdID0gew0KPiA+ICsgICAgICAgICAgICAgICAuaWQgPSBNVDgxOTZfREFJX0kyU19JTjAsDQo+ ID4gKyAgICAgICAgICAgICAgIC5tY2xrX2lkID0gTVQ4MTk2X0kyU0lOMF9NQ0ssDQo+ID4gKyAg ICAgICAgICAgICAgIC5zaGFyZV9wcm9wZXJ0eV9uYW1lID0gImkyc2luMC1zaGFyZSIsDQo+ID4g KyAgICAgICAgICAgICAgIC5zaGFyZV9pMnNfaWQgPSAtMSwNCj4gPiArICAgICAgIH0sDQo+ID4g KyAgICAgICBbREFJX0kyU0lOMV0gPSB7DQo+ID4gKyAgICAgICAgICAgICAgIC5pZCA9IE1UODE5 Nl9EQUlfSTJTX0lOMSwNCj4gPiArICAgICAgICAgICAgICAgLm1jbGtfaWQgPSBNVDgxOTZfSTJT SU4xX01DSywNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJlX3Byb3BlcnR5X25hbWUgPSAiaTJz aW4xLXNoYXJlIiwNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJlX2kyc19pZCA9IC0xLA0KPiA+ ICsgICAgICAgfSwNCj4gPiArICAgICAgIFtEQUlfSTJTSU4yXSA9IHsNCj4gPiArICAgICAgICAg ICAgICAgLmlkID0gTVQ4MTk2X0RBSV9JMlNfSU4yLA0KPiA+ICsgICAgICAgICAgICAgICAubWNs a19pZCA9IE1UODE5Nl9JMlNJTjBfTUNLLA0KPiA+ICsgICAgICAgICAgICAgICAuc2hhcmVfcHJv cGVydHlfbmFtZSA9ICJpMnNpbjItc2hhcmUiLA0KPiA+ICsgICAgICAgICAgICAgICAuc2hhcmVf aTJzX2lkID0gLTEsDQo+ID4gKyAgICAgICB9LA0KPiA+ICsgICAgICAgW0RBSV9JMlNJTjNdID0g ew0KPiA+ICsgICAgICAgICAgICAgICAuaWQgPSBNVDgxOTZfREFJX0kyU19JTjMsDQo+ID4gKyAg ICAgICAgICAgICAgIC5tY2xrX2lkID0gTVQ4MTk2X0kyU0lOMF9NQ0ssDQo+ID4gKyAgICAgICAg ICAgICAgIC5zaGFyZV9wcm9wZXJ0eV9uYW1lID0gImkyc2luMy1zaGFyZSIsDQo+ID4gKyAgICAg ICAgICAgICAgIC5zaGFyZV9pMnNfaWQgPSAtMSwNCj4gPiArICAgICAgIH0sDQo+ID4gKyAgICAg ICBbREFJX0kyU0lONF0gPSB7DQo+ID4gKyAgICAgICAgICAgICAgIC5pZCA9IE1UODE5Nl9EQUlf STJTX0lONCwNCj4gPiArICAgICAgICAgICAgICAgLm1jbGtfaWQgPSBNVDgxOTZfSTJTSU4wX01D SywNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJlX3Byb3BlcnR5X25hbWUgPSAiaTJzaW40LXNo YXJlIiwNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJlX2kyc19pZCA9IC0xLA0KPiA+ICsgICAg ICAgICAgICAgICAuc3luYyA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgIC5pcF9tb2RlID0gMCwN Cj4gPiArICAgICAgIH0sDQo+ID4gKyAgICAgICBbREFJX0kyU0lONl0gPSB7DQo+ID4gKyAgICAg ICAgICAgICAgIC5pZCA9IE1UODE5Nl9EQUlfSTJTX0lONiwNCj4gPiArICAgICAgICAgICAgICAg Lm1jbGtfaWQgPSBNVDgxOTZfSTJTSU4wX01DSywNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJl X3Byb3BlcnR5X25hbWUgPSAiaTJzb3V0Ni1zaGFyZSIsDQo+ID4gKyAgICAgICAgICAgICAgIC5z aGFyZV9pMnNfaWQgPSAtMSwNCj4gPiArICAgICAgIH0sDQo+ID4gKyAgICAgICBbREFJX0kyU09V VDBdID0gew0KPiA+ICsgICAgICAgICAgICAgICAuaWQgPSBNVDgxOTZfREFJX0kyU19PVVQwLA0K PiA+ICsgICAgICAgICAgICAgICAubWNsa19pZCA9IE1UODE5Nl9JMlNJTjBfTUNLLA0KPiA+ICsg ICAgICAgICAgICAgICAuc2hhcmVfcHJvcGVydHlfbmFtZSA9ICJpMnNvdXQwLXNoYXJlIiwNCj4g PiArICAgICAgICAgICAgICAgLnNoYXJlX2kyc19pZCA9IE1UODE5Nl9EQUlfSTJTX0lOMCwNCj4g PiArICAgICAgIH0sDQo+ID4gKyAgICAgICBbREFJX0kyU09VVDFdID0gew0KPiA+ICsgICAgICAg ICAgICAgICAuaWQgPSBNVDgxOTZfREFJX0kyU19PVVQxLA0KPiA+ICsgICAgICAgICAgICAgICAu bWNsa19pZCA9IE1UODE5Nl9JMlNJTjFfTUNLLA0KPiA+ICsgICAgICAgICAgICAgICAuc2hhcmVf cHJvcGVydHlfbmFtZSA9ICJpMnNvdXQxLXNoYXJlIiwNCj4gPiArICAgICAgICAgICAgICAgLnNo YXJlX2kyc19pZCA9IE1UODE5Nl9EQUlfSTJTX0lOMSwNCj4gPiArICAgICAgIH0sDQo+ID4gKyAg ICAgICBbREFJX0kyU09VVDJdID0gew0KPiA+ICsgICAgICAgICAgICAgICAuaWQgPSBNVDgxOTZf REFJX0kyU19PVVQyLA0KPiA+ICsgICAgICAgICAgICAgICAubWNsa19pZCA9IE1UODE5Nl9JMlNJ TjBfTUNLLA0KPiA+ICsgICAgICAgICAgICAgICAuc2hhcmVfcHJvcGVydHlfbmFtZSA9ICJpMnNv dXQyLXNoYXJlIiwNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJlX2kyc19pZCA9IE1UODE5Nl9E QUlfSTJTX0lOMiwNCj4gPiArICAgICAgIH0sDQo+ID4gKyAgICAgICBbREFJX0kyU09VVDNdID0g ew0KPiA+ICsgICAgICAgICAgICAgICAuaWQgPSBNVDgxOTZfREFJX0kyU19PVVQzLA0KPiA+ICsg ICAgICAgICAgICAgICAubWNsa19pZCA9IE1UODE5Nl9JMlNJTjBfTUNLLA0KPiA+ICsgICAgICAg ICAgICAgICAuc2hhcmVfcHJvcGVydHlfbmFtZSA9ICJpMnNvdXQzLXNoYXJlIiwNCj4gPiArICAg ICAgICAgICAgICAgLnNoYXJlX2kyc19pZCA9IE1UODE5Nl9EQUlfSTJTX0lOMywNCj4gPiArICAg ICAgIH0sDQo+ID4gKyAgICAgICBbREFJX0kyU09VVDRdID0gew0KPiA+ICsgICAgICAgICAgICAg ICAuaWQgPSBNVDgxOTZfREFJX0kyU19PVVQ0LA0KPiA+ICsgICAgICAgICAgICAgICAubWNsa19p ZCA9IE1UODE5Nl9JMlNJTjBfTUNLLA0KPiA+ICsgICAgICAgICAgICAgICAuc2hhcmVfcHJvcGVy dHlfbmFtZSA9ICJpMnNvdXQ0LXNoYXJlIiwNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJlX2ky c19pZCA9IE1UODE5Nl9EQUlfSTJTX0lONCwNCj4gPiArICAgICAgICAgICAgICAgLnN5bmMgPSAw LA0KPiA+ICsgICAgICAgfSwNCj4gPiArICAgICAgIFtEQUlfSTJTT1VUNl0gPSB7DQo+ID4gKyAg ICAgICAgICAgICAgIC5pZCA9IE1UODE5Nl9EQUlfSTJTX09VVDYsDQo+ID4gKyAgICAgICAgICAg ICAgIC5tY2xrX2lkID0gTVQ4MTk2X0kyU0lOMF9NQ0ssDQo+ID4gKyAgICAgICAgICAgICAgIC5z aGFyZV9wcm9wZXJ0eV9uYW1lID0gImkyc291dDYtc2hhcmUiLA0KPiA+ICsgICAgICAgICAgICAg ICAuc2hhcmVfaTJzX2lkID0gTVQ4MTk2X0RBSV9JMlNfSU42LA0KPiA+ICsgICAgICAgfSwNCj4g PiArICAgICAgIFtEQUlfRk1JMlNfTUFTVEVSXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgLmlk ID0gTVQ4MTk2X0RBSV9GTV9JMlNfTUFTVEVSLA0KPiA+ICsgICAgICAgICAgICAgICAubWNsa19p ZCA9IE1UODE5Nl9GTUkyU19NQ0ssDQo+ID4gKyAgICAgICAgICAgICAgIC5zaGFyZV9wcm9wZXJ0 eV9uYW1lID0gImZtaTJzLXNoYXJlIiwNCj4gPiArICAgICAgICAgICAgICAgLnNoYXJlX2kyc19p ZCA9IC0xLA0KPiA+ICsgICAgICAgfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQg bXQ4MTk2X2RhaV9pMnNfZ2V0X3NoYXJlKHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSkNCj4gPiAr ew0KPiA+ICsgICAgICAgc3RydWN0IG10ODE5Nl9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUt PnBsYXRmb3JtX3ByaXY7DQo+ID4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm9m X25vZGUgPSBhZmUtPmRldi0+b2Zfbm9kZTsNCj4gPiArICAgICAgIGNvbnN0IGNoYXIgKm9mX3N0 cjsNCj4gPiArICAgICAgIGNvbnN0IGNoYXIgKnByb3BlcnR5X25hbWU7DQo+ID4gKyAgICAgICBz dHJ1Y3QgbXRrX2FmZV9pMnNfcHJpdiAqaTJzX3ByaXY7DQo+IA0KPiBvZl9zdHIsIHByb3BlcnR5 X25hbWUsIGFuZCBpMnNfcHJpdiBkZWNsYXJhdGlvbnMgY2FuIGJlIG1vdmVkIGluc2lkZQ0KPiB0 aGUNCj4gbG9vcC4NCj4gDQo+ID4gKyAgICAgICBpbnQgaTsNCj4gPiArDQo+ID4gKyAgICAgICBm b3IgKGkgPSAwOyBpIDwgREFJX0kyU19OVU07IGkrKykgew0KPiANCj4gSGVyZSB5b3UgY2FuIHdy aXRlIEM5OSBzdHlsZSwgYW5kIGFsc28gdXNlIHVuc2lnbmVkIHR5cGUgZm9yIGluZGV4Og0KPiAN Cj4gICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IERBSV9JMlNfTlVNOyBpKysp IHsNCj4gDQo+ID4gKyAgICAgICAgICAgICAgIGkyc19wcml2ID0gYWZlX3ByaXYtDQo+ID4gPmRh aV9wcml2W210ODE5Nl9pMnNfcHJpdltpXS5pZF07DQo+ID4gKyAgICAgICAgICAgICAgIHByb3Bl cnR5X25hbWUgPQ0KPiA+IG10ODE5Nl9pMnNfcHJpdltpXS5zaGFyZV9wcm9wZXJ0eV9uYW1lOw0K PiA+ICsgICAgICAgICAgICAgICBpZiAob2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcob2Zfbm9kZSwg cHJvcGVydHlfbmFtZSwNCj4gPiAmb2Zfc3RyKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAgaTJzX3ByaXYtPnNoYXJlX2kyc19pZCA9 IGdldF9pMnNfaWRfYnlfbmFtZShhZmUsDQo+ID4gb2Zfc3RyKTsNCj4gPiArICAgICAgIH0NCj4g DQo+IE5pdDogYWRkIGVtcHR5IGxpbmUgaGVyZS4NCj4gDQo+ID4gKyAgICAgICByZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBpbml0X2kyc19wcml2X2RhdGEoc3RydWN0 IG10a19iYXNlX2FmZSAqYWZlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXQ4MTk2X2Fm ZV9wcml2YXRlICphZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCj4gPiArICAgICAgIHN0 cnVjdCBtdGtfYWZlX2kyc19wcml2ICppMnNfcHJpdjsNCj4gPiArICAgICAgIGludCBzaXplOw0K PiANCj4gUGxlYXNlIHVzZSBzaXplX3QgZm9yIHNpemUgdmFyaWFibGUuDQo+IA0KPiA+ICsgICAg ICAgaW50IGlkOw0KPiANCj4gWW91IGNhbiBtb3ZlIGkyc19wcml2LCBzaXplLCBhbmQgaWQgZGVj bGFyYXRpb25zIGluc2lkZSB0aGUgbG9vcC4NCj4gDQo+ID4gKyAgICAgICBpbnQgaTsNCj4gPiAr DQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgREFJX0kyU19OVU07IGkrKykgew0KPiANCj4g SGVyZSB5b3UgY2FuIHdyaXRlIEM5OSBzdHlsZSwgYW5kIGFsc28gdXNlIHVuc2lnbmVkIHR5cGUg Zm9yIGluZGV4Og0KPiANCj4gICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IERB SV9JMlNfTlVNOyBpKyspIHsNCj4gDQo+ID4gKyAgICAgICAgICAgICAgIGlkID0gbXQ4MTk2X2ky c19wcml2W2ldLmlkOw0KPiA+ICsgICAgICAgICAgICAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBt dGtfYWZlX2kyc19wcml2KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChpZCA+PSBN VDgxOTZfREFJX05VTSB8fCBpZCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpMnNfcHJpdiA9IGRldm1f a3phbGxvYyhhZmUtPmRldiwgc2l6ZSwNCj4gPiBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAgICAg ICAgICAgaWYgKCFpMnNfcHJpdikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g LUVOT01FTTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIG1lbWNweShpMnNfcHJpdiwgJm10 ODE5Nl9pMnNfcHJpdltpXSwgc2l6ZSk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBhZmVf cHJpdi0+ZGFpX3ByaXZbaWRdID0gaTJzX3ByaXY7DQo+ID4gKyAgICAgICB9DQo+IA0KPiBOaXQ6 IGFkZCBhbiBlbXB0eSBsaW5lIGhlcmUuDQo+IA0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4g K30NCj4gPiArDQo+ID4gK2ludCBtdDgxOTZfZGFpX2kyc19yZWdpc3RlcihzdHJ1Y3QgbXRrX2Jh c2VfYWZlICphZmUpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfYmFzZV9hZmVfZGFp ICpkYWk7DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIGRhaSA9IGRl dm1fa3phbGxvYyhhZmUtPmRldiwgc2l6ZW9mKCpkYWkpLCBHRlBfS0VSTkVMKTsNCj4gPiArICAg ICAgIGlmICghZGFpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiAr DQo+ID4gKyAgICAgICBsaXN0X2FkZCgmZGFpLT5saXN0LCAmYWZlLT5zdWJfZGFpcyk7DQo+ID4g Kw0KPiA+ICsgICAgICAgZGFpLT5kYWlfZHJpdmVycyA9IG10a19kYWlfaTJzX2RyaXZlcjsNCj4g PiArICAgICAgIGRhaS0+bnVtX2RhaV9kcml2ZXJzID0gQVJSQVlfU0laRShtdGtfZGFpX2kyc19k cml2ZXIpOw0KPiA+ICsNCj4gPiArICAgICAgIGRhaS0+Y29udHJvbHMgPSBtdGtfZGFpX2kyc19j b250cm9sczsNCj4gPiArICAgICAgIGRhaS0+bnVtX2NvbnRyb2xzID0gQVJSQVlfU0laRShtdGtf ZGFpX2kyc19jb250cm9scyk7DQo+ID4gKyAgICAgICBkYWktPmRhcG1fd2lkZ2V0cyA9IG10a19k YWlfaTJzX3dpZGdldHM7DQo+ID4gKyAgICAgICBkYWktPm51bV9kYXBtX3dpZGdldHMgPSBBUlJB WV9TSVpFKG10a19kYWlfaTJzX3dpZGdldHMpOw0KPiA+ICsgICAgICAgZGFpLT5kYXBtX3JvdXRl cyA9IG10a19kYWlfaTJzX3JvdXRlczsNCj4gPiArICAgICAgIGRhaS0+bnVtX2RhcG1fcm91dGVz ID0gQVJSQVlfU0laRShtdGtfZGFpX2kyc19yb3V0ZXMpOw0KPiA+ICsNCj4gPiArICAgICAgIC8q IHNldCBhbGwgZGFpIGkycyBwcml2YXRlIGRhdGEgKi8NCj4gPiArICAgICAgIHJldCA9IGluaXRf aTJzX3ByaXZfZGF0YShhZmUpOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBwYXJzZSBzaGFyZSBpMnMg Ki8NCj4gPiArICAgICAgIHJldCA9IG10ODE5Nl9kYWlfaTJzX2dldF9zaGFyZShhZmUpOw0KPiA+ ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAr DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+IC0tDQo+ID4gMi40NS4yDQo+ID4g DQo+ID4gDQo=