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 BEA53CCD1BF for ; Tue, 28 Oct 2025 12:17:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From:References:Cc:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=aE0bxvFZa0jy4Ap44DUYgqMBuNZ9jk8KM9Kz0ttvdEc=; b=aUcVXBAOYGykPJQuqyJSmboAwy LgpjihP5wyN4crbU/clr+7SX9PM3Ruqh8tHYFvK59go4evXoadmhOnIRjGwviN0DJfYUH3pb0hK1M 9KCmIiBGrvoYG8IvhQc7/7f8vPv0R4J3UpbOFf8sJr7aey40shieW527jMgrEHoF0CdXzAi5u/zA5 XJq3TPTSOpDGItvcNj44QI+nWlZYUNVKoOAvw2KVFIBYZ8YBD8t0qP1K5qkjXDctdoDOwl86+hyaQ wqk7Ldbcx+eG/Q2xBE/6njJ0I96ftcDbv7vs0LonGfziWnth39bTh7KnGZ/3+mZurvb5JtC/jarQ7 nglGgpGQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vDidO-0000000FuEn-3aSo; Tue, 28 Oct 2025 12:17:06 +0000 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vDidI-0000000FuEH-2lms; Tue, 28 Oct 2025 12:17:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NkVGDzuz3ZNxvhziLLfwvLCmMS+oKp4fMZMDmga3k2W5ejwCITVW9TUntSXzp4UvLa9GVYKdisC9PRglc0axJHxM9GRp9mQM/0vt90FTEVjuKIsOmfUmzo6WXIkBnvTY65yMLvgCpRKKICnSed2O/mJOtfz7aEatIoZprEFZnBsO4BoYDYBH3f5cr9FePMWWyYZWQRM/cxwmzMe7XVwI01zTXKPQA2X+/0Yz64Jqx3sBXi2081FvLSIB9UpJsGGgYmrDwAkbPNVen9Z37bkEkfGqWUErpS0PSJCrBsAaiuLYYodyAtb4B5i5kA8A192LOjxIz2UZTieQ2vyaOf4Tjw== 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=ExmnfowaAsGK3Ws4U6GUxG467+XXEGekAMRI6OSoVUQ=; b=gJ14FqIsu8Te8xudhNBX+QyzHFkrPA82I2DlhxbcHqjaawAQlpGZAPk+SAmz+D6GWKZUQeMCUzWxz25svn95xP1Xyoz+8BlfokXRe7b4iFvoHFBqhOBDRP4j06L4dF7nNjmLkcRisySw9Y/AP5ENt4wRi6y3uJZJbluMt7oZsJ0zQ/j6aQG4NCOQLp+LKxexuOIoLE8qUKqoo6Xj827XCZZUb7gq9zV98h5ErOOOqTbpRhC1EfckaT/qbGen91T+/6ngdsifYw7BY4Bzoz9OdJguJzRXLXakorXTb/xyEgcQXVe9NAikcr1kwZ0p5aAPxmO/r50Q9ZbfQ18IhLSn+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amlogic.com; dmarc=pass action=none header.from=amlogic.com; dkim=pass header.d=amlogic.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amlogic.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ExmnfowaAsGK3Ws4U6GUxG467+XXEGekAMRI6OSoVUQ=; b=fhLXJ/p+U7JHzt/FUVS4jtMv6kBibrAl//i9SGIFEIou2cRZNMldktgbjuaTAKkEWGEuzC+C4u0lTTc1LFrJb9N+lkrc3PCmFC3n/ABqdxq2MgSgzUUC++RlvlB52S6IOLHA5Me4I9QJMpuaSm2vQa67GC7ABlJYYYH4HC58znpTZe4S8YNLMf08jQ/Kkp2ti8fSXEhwo+9aZumWF/sIL01HgUT2ZsBhaUDlTAKztMnZl/sA/NrnxPagF9rW3CtVMXrE9hxa0tcOLiIDJK8Y/TXtYHPv5esn8CupOATjjTNMD2Fjs1tZ2wUoRkwtuD/mjI6FuvSnPsO24Es5keEv6w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amlogic.com; Received: from TYZPR03MB5536.apcprd03.prod.outlook.com (2603:1096:400:5e::9) by SEZPR03MB7811.apcprd03.prod.outlook.com (2603:1096:101:18b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.18; Tue, 28 Oct 2025 12:16:50 +0000 Received: from TYZPR03MB5536.apcprd03.prod.outlook.com ([fe80::9a50:1a8:fa6a:579e]) by TYZPR03MB5536.apcprd03.prod.outlook.com ([fe80::9a50:1a8:fa6a:579e%7]) with mapi id 15.20.9253.017; Tue, 28 Oct 2025 12:16:50 +0000 Message-ID: <107081de-8ef5-4ad8-9482-424e218d49e2@amlogic.com> Date: Tue, 28 Oct 2025 20:16:44 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/3] decoder: Add V4L2 stateless H.264 decoder driver To: Neil Armstrong , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Kevin Hilman , Jerome Brunet , Martin Blumenstingl Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org References: <20251027-b4-s4-vdec-upstream-v1-0-620401813b5d@amlogic.com> <20251027-b4-s4-vdec-upstream-v1-3-620401813b5d@amlogic.com> <42909f90-e2d3-4911-ae6d-47d180ccb367@linaro.org> From: Zhentao Guo In-Reply-To: <42909f90-e2d3-4911-ae6d-47d180ccb367@linaro.org> X-ClientProxiedBy: SI1PR02CA0050.apcprd02.prod.outlook.com (2603:1096:4:1f5::12) To TYZPR03MB5536.apcprd03.prod.outlook.com (2603:1096:400:5e::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR03MB5536:EE_|SEZPR03MB7811:EE_ X-MS-Office365-Filtering-Correlation-Id: a9897d4f-990c-4fd2-6aae-08de161bdf1d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MDhFMjJWaDl0UmJ3Y09TNjgxbkxpR3NoRkVJZC9OY2c5dm4rUm1POWliM05C?= =?utf-8?B?VXliVWE5ZkgrT3d0NjhWOTAvV3M1MjRsRlByNjB1NjNhSElVTk1sNXAyY2Ni?= =?utf-8?B?azhxSjVzM2tJMG5MTC95U0ZHdlYvVzdzWVhyVGtxK254UW1ZQUNlZFZZRXRo?= =?utf-8?B?Z2NYQUI3Qnh0ZWk2UGZySHhyUTFuUFo5SDVvc1ZIWHJqazBEUWxHMnJiUmpk?= =?utf-8?B?UFdCeDI3ZG5vRFR6Vi9NYWRCZHpOTFhrUXhtc2ZkVzZ0Z0RmSG94ZTdTWVR1?= =?utf-8?B?ZHMyNTR5UDNqcDFaVXRqMnBiZElBQ3N5NzJsT1VpOUhVVWk4VVZWMkwrKy9o?= =?utf-8?B?T2hveWFGUktKUGpQNGpZTHVKNnFzbVJ3a2FSblFGcDJrMklTVzh3RnIyYXdN?= =?utf-8?B?MzVPWFl3c01Ic05iL2Z6VEIzSkdNOHhVVDUyWDJFRVdJQ2cwbGx5NkUzTzJJ?= =?utf-8?B?amttaFdBOXBaTFZGNE5aanpWendMMitZYkRhUVlQUWxwYUJvZkxCdmc3NlJk?= =?utf-8?B?Y2czeUlBKzFFb3V5cTY0SGhZdStIOGp2bWRsN3kwekNiVU1RTVpsNVN5UTBY?= =?utf-8?B?Y0lHQTRlZ0lRRlIxUEhpUXA3cTBTZHYxQm5aakliYkJsL2MvQ3BZdStuMFdD?= =?utf-8?B?aXdCRm1iZC84M2crdWdZL1FWaThNaktZdWZNTy9ZZ21ZN0tienplVVEwQzFL?= =?utf-8?B?ZGxMREI5b0dzazhUMlNmQ2FxQzFyQzlxZWNNK1pFT1U0enBOQmozN2pFYjNZ?= =?utf-8?B?cVBOWlFLaXRMNmZRalZUTTYrZHlUZEE3MjF3QmpuZTNGZkErMFZzS0pUTll3?= =?utf-8?B?WnplQjV6NmcvOU93aFQrbzdBS1pvbUt2MDR0WUJSeXBKbjRFUHpmdUQ1bUp5?= =?utf-8?B?ZVFZdFF3b0RETTVJc0xVM1d2dmxQMlB3QjZUa09jQ01ldCt5VmdrYStFb0Zs?= =?utf-8?B?eVM4TzFrTFlVdGZtZyt6TllmRkNYN2tvNW43UlMzQzdsdGIwV2xrT0ZRRXp0?= =?utf-8?B?cjZDbVdVRzJiT09Hb3kybk1OdXF4NHl1eWhiR2swK2c1MEUwcVZIN3FnRW5a?= =?utf-8?B?dzZRSlZCc2NDUVhOM0NzVi9Sdk1zdklEdkxDODRLRkViZFY3KzdtUE5qamtB?= =?utf-8?B?dUNTODB6R2loM2tYRFViNXZSdDJDSWQvUkEwSCtVM1g5VkhRR0FlOUlQVGYw?= =?utf-8?B?OVRBTXBIVjJ1RHV6bThzcVlTdXlOd2xtMkFLd0hLUERLNFVwVlgyTmJmaGht?= =?utf-8?B?eFp2cVM1TnVKZkN0SUtJVTE0NCszcnliRGFaU3oveThjbjJJY3pBWW00ZEZr?= =?utf-8?B?QUt6QmlJZVVkNnVHS204TVJ0NGx5bGlaRWl5Q0I5OWZsdmlwQ2ZtZUFWS3JZ?= =?utf-8?B?a3owV0U5dzRBblBxRm9PbEE3Wm0rdy9DNTJ1d2wzalNiVWVEaHNsRTVvZU9h?= =?utf-8?B?VWhHd2pZU0YwaVRpZys1MDRUMG9BZ29EbnZ5Ky9tQzRHQ0NwMnYwM2lsdkF2?= =?utf-8?B?V21xamdJWEtGd1VPU1duNW51anNzaXN5LysyYWYxQnRsdmhYVk8yL0EydlJD?= =?utf-8?B?Zm55YVNSOTI5SWdqODFNVWQwVHgzVW9TRW9oVGIyaWJlMXEydU9KcExOc3dS?= =?utf-8?B?S3BnZjRkcjZKZzBNQkpYY1VPUXJmYklGV05sK2ZkeWZyYmg5d2xVSVRreTdr?= =?utf-8?B?aXlmWXpISkY1M0tzTkg2Ync1ZE5CQjJFYWw1dVJJZmt3Qk9uc2hHbUMweDA0?= =?utf-8?B?V1lZMlFuc3JQbGEvNEFYYm5xWUprb1ZuTzBSMk5BeTN3SEpNYUdyQ3BSTUZr?= =?utf-8?B?UHJXUXhEYzBIMHNZQm43TU9HT0xQZHlaRnp0SUQrNndodXhpbFJpTGQ0bWFs?= =?utf-8?B?SGsrb242d2doLzZVbzZOTVU5ZUh5cDRZTnVCTEdodTlMeFNleEczVEsvcG1K?= =?utf-8?Q?y1RgS7F3eZN8AKQi2JlswGaGkYHoz8mw?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR03MB5536.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WGJjdE1VMUxnV2JBV0hCS3BERWlHdUhKay95alRvTExrOWNKN202c2hYd0do?= =?utf-8?B?RW44MHcyY0FneFFXVk9WdDlIOGthWlovWi9oU3FvNS9ZQU9wcHVHUEM2SzM0?= =?utf-8?B?bFhCbVo5b2lQR0NGRnB0SmdsZXU0dWUvbldjRkdLRXY3MitHZ3E0bTlCNmZ2?= =?utf-8?B?VCtCMVhzQVdNZDFRTmhRSVdWYzh4a2xDK2p3d214YXRzUTVxTkRCSTlJaW11?= =?utf-8?B?U3FPU0dVejhqWHBLdnFyaDJVbU9DZXhKNWxSZ3FoWDNDdDBHZXZsaW5HaWVJ?= =?utf-8?B?a0kvVUtDa0tmbnlzbThoNTVWZEFIVC9PQkVnS3A5Yis4L2JCM1pha1lnd1ZN?= =?utf-8?B?RGwyaG9rWWtLWVBlTFI1K3U4WnNTOFdMczlUOWZpZTVYcE84dGgzVFJJVVoz?= =?utf-8?B?RkdsK1B1Z3hLcVN5NE5kamZVRG56UlVrQzNsOWpLZnVqSDRCUUZnQ21xL2hH?= =?utf-8?B?aVpOS2gzdE5ITTVyS2hhNG5hdllTOGg4VU9tSkZnb1didmgvZzJZZWFBaU94?= =?utf-8?B?S3RmdXpnamVPaWQ5OG5RUU0yeTN2Q1dDczVNZ0ZPMlJGUlhmZlJEUitlN2hY?= =?utf-8?B?czR1dmtuUHdmU0JUaVNuOHJ3ditKMk1CYzNRV3IxeC9LUVE1L3MxNGd1cE5w?= =?utf-8?B?UTRhMENidGRxVHNjQkU1SFY2V29hQ25lUVNsMEI1UzdFYjJhK29NK0g0N1p5?= =?utf-8?B?THFxLzdyY2F2YTluUHRkTkNGNlZYVGd5TVIvQ3BJNkNxUWUreisyWEdEbEJ2?= =?utf-8?B?TUUzRXM5Zi90MndiYWw4ZWY0MHZjM1FpRVUvOTYyQXlJOGk1UEtJWCtXdDlY?= =?utf-8?B?aFY1SkhZOFhTY3NCc2lvSUZERFRqYk9JRlA3ZGFCZWZTMnBkZExEZlN4U2gr?= =?utf-8?B?NExFNkpoMHgxVDd5R0dCRmJWOVo2dzBsMURpSVhDckl4VzZLbkVyaGtDL0ZI?= =?utf-8?B?K0FQVHQ2ZnNua25lNlc2MGRVNklWdWFxVWRjdVNTZ0F6Z0hJOUZRbmlHbnho?= =?utf-8?B?eHBaRWZYcENQT1VuUG9JcGtHaHl5QmhkbG4weVo5SEkzYXFQNmQ3WkdZNDVD?= =?utf-8?B?VXM1eHkwTnpQVlZRdUFlKzh5dE11SWdIK21MWUM5SGVvMnpxcUdoOWRHNysx?= =?utf-8?B?UUZXaS84WFFvRndhY3ovQzl1UWs3ZmNNTHozMVBLY0Q2bUVvdVRYQWJ2NzNG?= =?utf-8?B?em9FY1UvNjRuTy9udk8wVGE5Y2tkNXRzUmUySnVSYjRidjhNeEwvNDNQQWtz?= =?utf-8?B?cUxTMENzc2VIMG1CajBBSkJVa2RBSlhJejVrQ09pbGdZd2xMU1FvbE0zOVJQ?= =?utf-8?B?aDVkWnk2ZW9lQThETVdnM09HMjI2SEFHZ0s1TFF2R3R0Z0FhY3FrWHVvSWFX?= =?utf-8?B?cjlFWEtnZDVMTk9lbVNsVU8zN20rNk9kNHJBVlJLVTB6enNmcWx2WkZSWHVm?= =?utf-8?B?NGNKUnZXMkNVTk1lcnRFOHRhMUYxK2NNc0NoM1Y2a3BxWC9pd1pxSG9TZHl6?= =?utf-8?B?dHBZR3d2d09yanlDaUhOYkhhcjF1VE84T3lsR3V0eXJ4NjhldFZ3TGtFUzli?= =?utf-8?B?dXBRa3RsR0ZKU1IxM09CT0ZXeDd5d2JaYTc1UnVORE1xZy9CeE9UdGVEQU1o?= =?utf-8?B?U3Mzd2RjditpdmJmcS9EZUM4Ui90MFZubkY5RnNlcDlDbjJZS3cyU01pUnRY?= =?utf-8?B?N1loaGNvMDhlSGhiclEyTENuV2tDbTJzVHRPOUE1QnBLVXNrdGJMWWNuWlQ1?= =?utf-8?B?MVp1bEdDZ1djblJXVnhIM2M3NVZaWHRRbE5YVk1ZLzhuOUc0Tjlxd3ROZG1E?= =?utf-8?B?YkJTenJNdFJEYjhQTjliaFoyUWxBa3JKOW90eVVEMDRKY1JJYTdZS2duVmZK?= =?utf-8?B?Y0tyRktUU20wTHlEcXF2YnBjMjRTQi9SeFV5LzRjSGwwcGJsQjcwUlN4U0l2?= =?utf-8?B?VW5DWlA5Q2J4ZDkzRjZrV1hjVmVTdFdVWmtvcmJXcjRnck4yL0o0bFFzdVkx?= =?utf-8?B?c1MwTlVlUEdYUXRTQThsQjdEeVhIODA0aWo3NURIK2RYeWlzdEJrbGV2T0tI?= =?utf-8?B?akY2blpVaGJYVjhGR25QbU8zd2s5SFUrcjRtb3dCdDVyYTJ4dHhtU3ExREc2?= =?utf-8?B?ekdDbkUwajZFMGMyS0gzUVNZS1VUUVBxVlhWQ0lTQTc2a2xudi9valZITGtG?= =?utf-8?B?VEE9PQ==?= X-OriginatorOrg: amlogic.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9897d4f-990c-4fd2-6aae-08de161bdf1d X-MS-Exchange-CrossTenant-AuthSource: TYZPR03MB5536.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2025 12:16:50.3332 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0df2add9-25ca-4b3a-acb4-c99ddf0b1114 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /ge881ll7himgtLKU4NzLedj7Dp3wYWZqERX8j6DRIUyG2SPqUUYMFx5YAoBO54r5ZU4gk/Tx/U9C5PMqc5CMg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR03MB7811 X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org CuWcqCAyMDI1LzEwLzI4IDE5OjAxLCBOZWlsIEFybXN0cm9uZyDlhpnpgZM6Cj4gWyBFWFRFUk5B TCBFTUFJTCBdCj4KPiBIaSwKPgo+IE9uIDEwLzI3LzI1IDA2OjQyLCBaaGVudGFvIEd1byB2aWEg QjQgUmVsYXkgd3JvdGU6Cj4+IEZyb206IFpoZW50YW8gR3VvIDx6aGVudGFvLmd1b0BhbWxvZ2lj LmNvbT4KPj4KPj4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGluaXRpYWwgZHJpdmVyIHN1cHBvcnQg Zm9yIEFtbG9naWMncyBuZXcKPj4gdmlkZW8gYWNjZWxlcmF0aW9uIGhhcmR3YXJlIGFyY2hpdGVj dHVyZSwgZGVzaWduZWQgZm9yIHZpZGVvCj4+IHN0cmVhbSBkZWNvZGluZy4gVGhlIGRyaXZlciBp cyBkZXNpZ25lZCB0byBzdXBwb3J0IHRoZQo+PiBWNEwyIE0yTSBzdGF0ZWxlc3MgZGVjb2RlciBB UEkuIEluIHBoYXNlIDEsIGl0IHN1cHBvcnRzIEguMjY0Cj4+IGJpdHN0cmVhbXMgZGVjb2Rpbmcu Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFpoZW50YW8gR3VvIDx6aGVudGFvLmd1b0BhbWxvZ2ljLmNv bT4KPj4gLS0tCj4+IMKgIE1BSU5UQUlORVJTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAg NyArCj4+IMKgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy9LY29uZmlnwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMiArCj4+IMKgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YW1sb2dpYy9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAxICsKPj4gwqAg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvS2NvbmZpZ8KgwqDCoMKgwqDCoMKg IHzCoMKgIDE1ICsKPj4gwqAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvTWFr ZWZpbGXCoMKgwqDCoMKgwqAgfMKgwqDCoCA0ICsKPj4gwqAgZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWMuY8KgwqDCoMKgIHzCoCA3NTkgKysrKysrKysrCj4+IMKg IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjLmjCoMKgwqDCoCB8 wqDCoCAzMSArCj4+IMKgIC4uLi9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfY2FudmFz X3V0aWxzLmPCoCB8wqAgMTU0ICsrCj4+IMKgIC4uLi9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1s X3ZkZWNfY2FudmFzX3V0aWxzLmjCoCB8wqDCoCAyMiArCj4+IMKgIGRyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2Rydi5jIHzCoCAyNjMgKysrCj4+IMKgIGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2Rydi5oIHzCoCAxOTQgKysr Cj4+IMKgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2h3LmPC oCB8wqAgNjUyICsrKysrKysKPj4gwqAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3Zk ZWMvYW1sX3ZkZWNfaHcuaMKgIHzCoCAxODIgKysKPj4gwqAgLi4uL3BsYXRmb3JtL2FtbG9naWMv dmRlYy9hbWxfdmRlY19wbGF0Zm9ybS5jwqDCoMKgwqDCoCB8wqDCoCAzNyArCj4+IMKgIC4uLi9w bGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfcGxhdGZvcm0uaMKgwqDCoMKgwqAgfMKgwqAg NjIgKwo+PiDCoCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9oMjY0LmPCoMKg wqDCoMKgwqDCoMKgIHwgMTc5MCAKPj4gKysrKysrKysrKysrKysrKysrKysKPj4gwqAgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvaDI2NC5owqDCoMKgwqDCoMKgwqDCoCB8wqAg MzAwICsrKysKPj4gwqAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvcmVnX2Rl ZmluZXMuaMKgIHzCoCAxNzUgKysKPj4gwqAgMTggZmlsZXMgY2hhbmdlZCwgNDY1MCBpbnNlcnRp b25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCj4+IGlu ZGV4IDVlYTc4NDQ0ZjAzNS4uZjQwMGI1ZGFiZjMwIDEwMDY0NAo+PiAtLS0gYS9NQUlOVEFJTkVS Uwo+PiArKysgYi9NQUlOVEFJTkVSUwo+PiBAQCAtMTM1Miw2ICsxMzUyLDEzIEBAIFM6wqDCoMKg wqAgTWFpbnRhaW5lZAo+PiDCoCBGOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv c3BpL2FtbG9naWMsYTQtc3Bpc2cueWFtbAo+PiDCoCBGOsKgIGRyaXZlcnMvc3BpL3NwaS1hbWxv Z2ljLXNwaXNnLmMKPj4KPj4gK0FNTE9HSUMgVkNPREVDIERSSVZFUgo+PiArTTrCoMKgIFpoZW50 YW8gR3VvIDx6aGVudGFvLmd1b0BhbWxvZ2ljLmNvbT4KPj4gK0w6wqDCoCBsaW51eC1tZWRpYUB2 Z2VyLmtlcm5lbC5vcmcKPj4gK1M6wqDCoCBNYWludGFpbmVkCj4+ICtGOiBEb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvYW1sb2dpYyx2Y29kZWMtZGVjLnlhbWwKPj4gK0Y6 wqDCoCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy8KPj4gKwo+PiDCoCBBTVBI RU5PTCBDSElQQ0FQIDIgRFJJVkVSCj4+IMKgIE06wqAgSmF2aWVyIENhcnJhc2NvIDxqYXZpZXIu Y2FycmFzY28uY3J1ekBnbWFpbC5jb20+Cj4+IMKgIEw6wqAgbGludXgtaHdtb25Admdlci5rZXJu ZWwub3JnCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvS2Nv bmZpZyAKPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvS2NvbmZpZwo+PiBpbmRl eCA0NThhY2YzZDVmYTguLjgxMzJmNWI5MjgyYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9hbWxvZ2ljL0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9hbWxvZ2ljL0tjb25maWcKPj4gQEAgLTQsMyArNCw1IEBAIGNvbW1lbnQgIkFtbG9naWMgbWVk aWEgcGxhdGZvcm0gZHJpdmVycyIKPj4KPj4gwqAgc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRm b3JtL2FtbG9naWMvYzMvS2NvbmZpZyIKPj4gwqAgc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRm b3JtL2FtbG9naWMvbWVzb24tZ2UyZC9LY29uZmlnIgo+PiArCj4+ICtzb3VyY2UgImRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL0tjb25maWciCj4KPiBQTGVhc2UgcmVzcGVjdCBv cmlnaW5hbCBmb3JtYXR0aW5nIGFuZCBkcm9wIHRoZSBlbXB0eSBsaW5lCkdvdCBpdCwgSSdsbCBj b3JyZWN0IHRoaXMuCj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1s b2dpYy9NYWtlZmlsZSAKPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvTWFrZWZp bGUKPj4gaW5kZXggYzc0NGFmY2QxYjllLi43NDA5ZGU2NzRjMGIgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL2FtbG9naWMvTWFrZWZpbGUKPj4gQEAgLTIsMyArMiw0IEBACj4+Cj4+IMKg IG9iai15ICs9IGMzLwo+PiDCoCBvYmoteSArPSBtZXNvbi1nZTJkLwo+PiArb2JqLXkgKz0gdmRl Yy8KPgo+IERpdHRvPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2lj L3ZkZWMvS2NvbmZpZyAKPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL0tj b25maWcKSSdtIHNvcnJ5LCBJIGRpZCBub3QgZ2V0IHdoYXQgeW91IG1lYW4gaGVyZS4gSXQgaXMg YSBtaXN0YWtlPwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAu LjA1YzQ1NjhlMDU4Ygo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1sb2dpYy92ZGVjL0tjb25maWcKPj4gQEAgLTAsMCArMSwxNSBAQAo+PiArIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBNSVQpCj4+ICsKPj4gK2NvbmZp ZyBWSURFT19BTUxPR0lDX1ZDT0RFQwo+PiArwqDCoMKgIHRyaXN0YXRlICJBbWxvZ2ljIFZpZGVv IENvZGVjIERyaXZlciIKPj4gK8KgwqDCoCBkZXBlbmRzIG9uIEFSQ0hfTUVTT04gfHwgQ09NUElM RV9URVNUCj4+ICvCoMKgwqAgZGVwZW5kcyBvbiBWSURFT19ERVYKPj4gK8KgwqDCoCBkZXBlbmRz IG9uIFY0TF9NRU0yTUVNX0RSSVZFUlMKPj4gK8KgwqDCoCBzZWxlY3QgVklERU9CVUYyX0RNQV9D T05USUcKPj4gK8KgwqDCoCBzZWxlY3QgVjRMMl9IMjY0Cj4+ICvCoMKgwqAgc2VsZWN0IFY0TDJf TUVNMk1FTV9ERVYKPj4gK8KgwqDCoCBoZWxwCj4+ICvCoMKgwqDCoMKgIFRoaXMgaXMgYSB2NGwy IGRyaXZlciBmb3IgQW1sb2dpYyB2aWRlbyBjb2RlYyBkcml2ZXIuCj4+ICvCoMKgwqDCoMKgwqAg VGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gc3VwcG9ydCBWNEwyIE0yTSBTVEFURUxFU1MKPj4g K8KgwqDCoMKgwqDCoCBpbnRlcmZhY2UuCj4+ICvCoMKgwqDCoMKgIFRvIGNvbXBpbGUgdGhpcyBk cml2ZXIgYXMgYSBtb2R1bGUgY2hvb3NlIG0gaGVyZS4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL01ha2VmaWxlIAo+PiBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYW1sb2dpYy92ZGVjL01ha2VmaWxlCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+ IGluZGV4IDAwMDAwMDAwMDAwMC4uZjY0NWY3Y2E1ZTJkCj4+IC0tLSAvZGV2L251bGwKPj4gKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvTWFrZWZpbGUKPj4gQEAgLTAs MCArMSw0IEBACj4+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4g K2FtbC12ZGVjLWRydi1vYmpzIDo9IGFtbF92ZGVjLm8gYW1sX3ZkZWNfZHJ2Lm8gYW1sX3ZkZWNf aHcubyAKPj4gYW1sX3ZkZWNfcGxhdGZvcm0ubyBoMjY0Lm8gYW1sX3ZkZWNfY2FudmFzX3V0aWxz Lm9cCj4+ICsKPj4gK29iai0kKENPTkZJR19WSURFT19BTUxPR0lDX1ZDT0RFQykgKz0gYW1sLXZk ZWMtZHJ2Lm8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92 ZGVjL2FtbF92ZGVjLmMgCj4+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMv YW1sX3ZkZWMuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAu LmU4YTY2YmRlMDM5Nwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjLmMKPj4gQEAgLTAsMCArMSw3NTkgQEAKPj4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIE1JVCkKPj4gKy8qCj4+ ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgQW1sb2dpYywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk Cj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItbWVtMm1lbS5oPgo+PiArI2lu Y2x1ZGUgPG1lZGlhL3Y0bDItY3RybHMuaD4KPj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWV2ZW50 Lmg+Cj4+ICsjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLXY0bDIuaD4KPj4gKyNpbmNsdWRlIDxt ZWRpYS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oPgo+PiArCj4+ICsjaW5jbHVkZSAiYW1sX3ZkZWMu aCIKPj4gKyNpbmNsdWRlICJhbWxfdmRlY19ody5oIgo+PiArI2luY2x1ZGUgImFtbF92ZGVjX3Bs YXRmb3JtLmgiCj4+ICsKPj4gKyNkZWZpbmUgVkNPREVDX0RSVl9OQU1FICJhbWwtdmRlYy1kcnYi Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1sX3ZkZWNfdjRsMl9jdHJsIGNvbnRyb2xz W10gPSB7Cj4+ICvCoMKgwqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNvZGVj X3R5cGUgPSBDT0RFQ19UWVBFX0gyNjQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNm ZyA9IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkID0g VjRMMl9DSURfU1RBVEVMRVNTX0gyNjRfREVDT0RFX1BBUkFNUywKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9LAo+PiArwqDCoMKgwqAgfSwgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5jb2RlY190eXBlID0gQ09ERUNfVFlQRV9IMjY0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC5jZmcgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1NQUywKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9LAo+PiArwqDCoMKgwqAgfSwgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5jb2RlY190eXBlID0gQ09ERUNfVFlQRV9IMjY0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC5jZmcgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1BQUywKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9LAo+PiArwqDCoMKgwqAgfSwgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5jb2RlY190eXBlID0gQ09ERUNfVFlQRV9IMjY0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC5jZmcgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1NDQUxJTkdfTUFUUklYLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0sCj4+ICvCoMKgwqDCoCB9LCB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLmNvZGVjX3R5cGUgPSBDT0RFQ19UWVBFX0gyNjQsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLmNmZyA9IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLmlkID0gVjRMMl9DSURfU1RBVEVMRVNTX0gyNjRfREVDT0RFX01PREUs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5taW4gPSAKPj4g VjRMMl9TVEFURUxFU1NfSDI2NF9ERUNPREVfTU9ERV9GUkFNRV9CQVNFRCwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRlZiA9IAo+PiBWNEwyX1NUQVRFTEVT U19IMjY0X0RFQ09ERV9NT0RFX0ZSQU1FX0JBU0VELAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAubWF4ID0gCj4+IFY0TDJfU1RBVEVMRVNTX0gyNjRfREVDT0RF X01PREVfRlJBTUVfQkFTRUQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwKPj4gK8Kg wqDCoMKgIH0sIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuY29kZWNfdHlwZSA9IENP REVDX1RZUEVfSDI2NCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuY2ZnID0gewo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuaWQgPSBWNEwyX0NJRF9N UEVHX1ZJREVPX0gyNjRfTEVWRUwsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwKPj4g K8KgwqDCoMKgIH0sIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuY29kZWNfdHlwZSA9 IENPREVDX1RZUEVfSDI2NCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuY2ZnID0gewo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuaWQgPSBWNEwyX0NJ RF9TVEFURUxFU1NfSDI2NF9TVEFSVF9DT0RFLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAubWluID0gVjRMMl9TVEFURUxFU1NfSDI2NF9TVEFSVF9DT0RFX0FO TkVYX0IsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5kZWYg PSBWNEwyX1NUQVRFTEVTU19IMjY0X1NUQVJUX0NPREVfQU5ORVhfQiwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm1heCA9IFY0TDJfU1RBVEVMRVNTX0gyNjRf U1RBUlRfQ09ERV9BTk5FWF9CLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0sCj4+ICvC oMKgwqDCoCB9LCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNvZGVjX3R5cGUgPSBD T0RFQ19UWVBFX0gyNjQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNmZyA9IHsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkID0gVjRMMl9DSURf TVBFR19WSURFT19IMjY0X1BST0ZJTEUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC5taW4gPSBWNEwyX01QRUdfVklERU9fSDI2NF9QUk9GSUxFX0JBU0VMSU5F LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAubWF4ID0gVjRM Ml9NUEVHX1ZJREVPX0gyNjRfUFJPRklMRV9ISUdILAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAuZGVmID0gVjRMMl9NUEVHX1ZJREVPX0gyNjRfUFJPRklMRV9N QUlOLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0sCj4+ICvCoMKgwqDCoCB9Cj4+ICt9 Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGFtbF92aWRlb19mbXQgYW1sX3ZpZGVvX2Zvcm1hdHNb XSA9IHsKPj4gK8KgwqDCoMKgIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAubmFtZSA9 ICJILjI2NCIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmZvdXJjYyA9IFY0TDJfUElY X0ZNVF9IMjY0X1NMSUNFLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC50eXBlID0gQU1M X0ZNVF9ERUMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNvZGVjX3R5cGUgPSBDT0RF Q19UWVBFX0gyNjQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm51bV9wbGFuZXMgPSAx LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5zdGVwd2lzZSA9IHtBTUxfVkRFQ19NSU5f VywgQU1MX1ZERUNfMTA4MFBfTUFYX1csIDIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEFNTF9WREVDX01JTl9ILCBBTUxfVkRFQ18xMDgwUF9NQVhfSCwgMn0s Cj4+ICvCoMKgwqDCoCB9LAo+PiArwqDCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5uYW1lID0gIk5WMjFNIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuZm91cmNj ID0gVjRMMl9QSVhfRk1UX05WMjFNLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC50eXBl ID0gQU1MX0ZNVF9GUkFNRSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuY29kZWNfdHlw ZSA9IENPREVDX1RZUEVfRlJBTUUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm51bV9w bGFuZXMgPSAyLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5zdGVwd2lzZSA9IHtBTUxf VkRFQ19NSU5fVywgQU1MX1ZERUNfMTA4MFBfTUFYX1csIDIsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNTF9WREVDX01JTl9ILCBBTUxfVkRFQ18xMDgwUF9N QVhfSCwgMn0sCj4+ICvCoMKgwqDCoCB9LAo+PiArwqDCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC5uYW1lID0gIk5WMjEiLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfTlYyMSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAudHlwZSA9IEFNTF9GTVRfRlJBTUUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNv ZGVjX3R5cGUgPSBDT0RFQ19UWVBFX0ZSQU1FLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC5udW1fcGxhbmVzID0gMSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuc3RlcHdpc2Ug PSB7QU1MX1ZERUNfTUlOX1csIEFNTF9WREVDXzEwODBQX01BWF9XLCAyLAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTUxfVkRFQ19NSU5fSCwgQU1MX1ZERUNf MTA4MFBfTUFYX0gsIDJ9LAo+PiArwqDCoMKgwqAgfSwKPj4gK8KgwqDCoMKgIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAubmFtZSA9ICJOVjEyTSIsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9OVjEyTSwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAudHlwZSA9IEFNTF9GTVRfRlJBTUUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLmNvZGVjX3R5cGUgPSBDT0RFQ19UWVBFX0ZSQU1FLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC5udW1fcGxhbmVzID0gMiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAu c3RlcHdpc2UgPSB7QU1MX1ZERUNfTUlOX1csIEFNTF9WREVDXzEwODBQX01BWF9XLCAyLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTUxfVkRFQ19NSU5fSCwg QU1MX1ZERUNfMTA4MFBfTUFYX0gsIDJ9LAo+PiArCj4+ICvCoMKgwqDCoCB9LAo+PiArwqDCoMKg wqAgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5uYW1lID0gIk5WMTIiLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfTlYxMiwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAudHlwZSA9IEFNTF9GTVRfRlJBTUUsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLmNvZGVjX3R5cGUgPSBDT0RFQ19UWVBFX0ZSQU1FLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5udW1fcGxhbmVzID0gMSwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAuc3RlcHdpc2UgPSB7QU1MX1ZERUNfTUlOX1csIEFNTF9WREVDXzEwODBQX01B WF9XLCAyLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTUxf VkRFQ19NSU5fSCwgQU1MX1ZERUNfMTA4MFBfTUFYX0gsIDJ9LAo+PiArwqDCoMKgwqAgfSwKPj4g K307Cj4+ICsKPj4gK3ZvaWQgYW1sX3ZkZWNfc2V0X2RlZmF1bHRfcGFyYW1zKHN0cnVjdCBhbWxf dmRlY19jdHggKmN0eCkKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfcV9kYXRhICpxX2Rh dGEgPSBOVUxMOwo+PiArCj4+ICvCoMKgwqDCoCBjdHgtPm0ybV9jdHgtPnFfbG9jayA9ICZjdHgt PnY0bDJfaW50Zl9sb2NrOwo+PiArCj4+ICvCoMKgwqDCoCBjdHgtPnBpY19pbmZvLmNvbG9yc3Bh Y2UgPSBWNEwyX0NPTE9SU1BBQ0VfREVGQVVMVDsKPj4gK8KgwqDCoMKgIGN0eC0+cGljX2luZm8u eWNiY3JfZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsKPj4gK8KgwqDCoMKgIGN0eC0+cGlj X2luZm8ucXVhbnRpemF0aW9uID0gVjRMMl9RVUFOVElaQVRJT05fREVGQVVMVDsKPj4gK8KgwqDC oMKgIGN0eC0+cGljX2luZm8ueGZlcl9mdW5jID0gVjRMMl9YRkVSX0ZVTkNfREVGQVVMVDsKPj4g Kwo+PiArwqDCoMKgwqAgcV9kYXRhID0gJmN0eC0+cV9kYXRhW0FNTF9RX0RBVEFfU1JDXTsKPj4g K8KgwqDCoMKgIG1lbXNldChxX2RhdGEsIDAsIHNpemVvZihzdHJ1Y3QgYW1sX3FfZGF0YSkpOwo+ PiArwqDCoMKgwqAgcV9kYXRhLT52aXNpYmxlX3dpZHRoID0gQU1MX1ZERUNfTUlOX1c7Cj4+ICvC oMKgwqDCoCBxX2RhdGEtPnZpc2libGVfaGVpZ2h0ID0gQU1MX1ZERUNfTUlOX0g7Cj4+ICvCoMKg wqDCoCBxX2RhdGEtPmNvZGVkX3dpZHRoID0gQU1MX1ZERUNfTUlOX1c7Cj4+ICvCoMKgwqDCoCBx X2RhdGEtPmNvZGVkX2hlaWdodCA9IEFNTF9WREVDX01JTl9IOwo+PiArwqDCoMKgwqAgcV9kYXRh LT5maWxlZF9mbGFnID0gVjRMMl9GSUVMRF9OT05FOwo+PiArwqDCoMKgwqAgcV9kYXRhLT5ieXRl c3BlcmxpbmVbMF0gPSAwOwo+PiArwqDCoMKgwqAgcV9kYXRhLT5zaXplaW1hZ2VbMF0gPSAoMTAy NCAqIDEwMjQpOwo+PiArwqDCoMKgwqAgcV9kYXRhLT5mbXQgPSAmYW1sX3ZpZGVvX2Zvcm1hdHNb REVGQVVMVF9PVVRfSURYXTsKPj4gKwo+PiArwqDCoMKgwqAgcV9kYXRhID0gJmN0eC0+cV9kYXRh W0FNTF9RX0RBVEFfRFNUXTsKPj4gK8KgwqDCoMKgIG1lbXNldChxX2RhdGEsIDAsIHNpemVvZihz dHJ1Y3QgYW1sX3FfZGF0YSkpOwo+PiArwqDCoMKgwqAgcV9kYXRhLT52aXNpYmxlX3dpZHRoID0g QU1MX1ZERUNfTUlOX1c7Cj4+ICvCoMKgwqDCoCBxX2RhdGEtPnZpc2libGVfaGVpZ2h0ID0gQU1M X1ZERUNfTUlOX0g7Cj4+ICvCoMKgwqDCoCBxX2RhdGEtPmNvZGVkX3dpZHRoID0gQU1MX1ZERUNf TUlOX1c7Cj4+ICvCoMKgwqDCoCBxX2RhdGEtPmNvZGVkX2hlaWdodCA9IEFNTF9WREVDX01JTl9I Owo+PiArwqDCoMKgwqAgcV9kYXRhLT5maWxlZF9mbGFnID0gVjRMMl9GSUVMRF9OT05FOwo+PiAr wqDCoMKgwqAgcV9kYXRhLT5ieXRlc3BlcmxpbmVbMF0gPSBxX2RhdGEtPmNvZGVkX3dpZHRoOwo+ PiArwqDCoMKgwqAgcV9kYXRhLT5zaXplaW1hZ2VbMF0gPSBxX2RhdGEtPmNvZGVkX3dpZHRoICog cV9kYXRhLT5jb2RlZF9oZWlnaHQ7Cj4+ICvCoMKgwqDCoCBxX2RhdGEtPmJ5dGVzcGVybGluZVsx XSA9IHFfZGF0YS0+Y29kZWRfd2lkdGg7Cj4+ICvCoMKgwqDCoCBxX2RhdGEtPnNpemVpbWFnZVsx XSA9IHFfZGF0YS0+c2l6ZWltYWdlWzBdIC8gMjsKPj4gK8KgwqDCoMKgIHFfZGF0YS0+Zm10ID0g JmFtbF92aWRlb19mb3JtYXRzW0RFRkFVTFRfQ0FQX0lEWF07Cj4+ICt9Cj4+ICsKPj4gK2ludCBh bWxfdmRlY19jdHJsc19zZXR1cChzdHJ1Y3QgYW1sX3ZkZWNfY3R4ICpjdHgpCj4+ICt7Cj4+ICvC oMKgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoMKgIGludCBjdHJsc19zaXplID0gc2l6ZW9mKGNvbnRy b2xzKSAvIHNpemVvZihzdHJ1Y3QgCj4+IGFtbF92ZGVjX3Y0bDJfY3RybCk7Cj4+ICsKPj4gK8Kg wqDCoMKgIHY0bDJfY3RybF9oYW5kbGVyX2luaXQoJmN0eC0+Y3RybF9oYW5kbGVyLCBjdHJsc19z aXplKTsKPj4gK8KgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBjdHJsc19zaXplOyBpKyspIHsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2NGwyX2N0cmxfbmV3X2N1c3RvbSgmY3R4LT5jdHJs X2hhbmRsZXIsIAo+PiAmY29udHJvbHNbaV0uY2ZnLCBOVUxMKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoY3R4LT5jdHJsX2hhbmRsZXIuZXJyb3IpIHsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoImFkZCBjdHJsIGZvciAoJWQp IGZhaWxlZCVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb250cm9sc1tpXS5jZmcuaWQsIAo+PiBjdHgtPmN0cmxfaGFu ZGxlci5lcnJvcik7Cj4+ICsgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmY3R4LT5jdHJsX2hhbmRs ZXIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g Y3R4LT5jdHJsX2hhbmRsZXIuZXJyb3I7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ PiArwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgY3R4LT5maC5jdHJsX2hhbmRsZXIgPSAmY3R4LT5j dHJsX2hhbmRsZXI7Cj4+ICvCoMKgwqDCoCByZXR1cm4gdjRsMl9jdHJsX2hhbmRsZXJfc2V0dXAo JmN0eC0+Y3RybF9oYW5kbGVyKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgbTJtb3BzX3Zk ZWNfZGV2aWNlX3J1bih2b2lkICptMm1fcHJpdikKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBh bWxfdmRlY19jdHggKmN0eCA9IChzdHJ1Y3QgYW1sX3ZkZWNfY3R4ICopbTJtX3ByaXY7Cj4+ICvC oMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNfZGV2ICpkZXYgPSBjdHgtPmRldjsKPj4gK8KgwqDCoMKg IHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyYywgKmRzdDsKPj4gK8KgwqDCoMKgIHN0cnVjdCBt ZWRpYV9yZXF1ZXN0ICpzcmNfcmVxOwo+PiArwqDCoMKgwqAgY29uc3QgY2hhciAqZndfcGF0aCA9 IAo+PiBkZXYtPnB2ZGVjX2RhdGEtPmZ3X3BhdGhbY3R4LT5jdXJyX2RlY190eXBlXTsKPj4gKwo+ PiArwqDCoMKgwqAgc3JjID0gdjRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0eC0+ZmgubTJtX2N0eCk7 Cj4+ICvCoMKgwqDCoCBkc3QgPSB2NGwyX20ybV9uZXh0X2RzdF9idWYoY3R4LT5maC5tMm1fY3R4 KTsKPj4gK8KgwqDCoMKgIHByX2RlYnVnKCJkZXZpY2UgcnVuIDogc3JjIGJ1ZiA6ICVkIGRzdCBi dWYgJWRcbiIsIAo+PiBzcmMtPnZiMl9idWYuaW5kZXgsIGRzdC0+dmIyX2J1Zi5pbmRleCk7Cj4K PiBTd2l0Y2ggdG8gZGV2X2RiZyBldmVyeXdoZXJlCk9LLCBJJ2xsIHJlcGxhY2UgYWxsIHRoZXNl IHByX3h4eCB3aXRoIGRldl9kZWJ1Zy4KPgo+PiArCj4+ICvCoMKgwqDCoCBzcmNfcmVxID0gc3Jj LT52YjJfYnVmLnJlcV9vYmoucmVxOwo+PiArwqDCoMKgwqAgaWYgKHNyY19yZXEpCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdjRsMl9jdHJsX3JlcXVlc3Rfc2V0dXAoc3JjX3JlcSwgJmN0 eC0+Y3RybF9oYW5kbGVyKTsKPj4gKwo+PiArwqDCoMKgwqAgZG9zX2VuYWJsZSgpOwo+PiArwqDC oMKgwqAgLyogaW5jYXNlIG9mIGJ1cyBoYW5nIGluIHN0b3Bfc3RyZWFtaW5nICovCj4+ICvCoMKg wqDCoCBjdHgtPmRvc19jbGtfZW4gPSAxOwo+PiArwqDCoMKgwqAgYW1sX3ZkZWNfcmVzZXRfY29y ZSgpOwo+PiArwqDCoMKgwqAgbG9hZF9maXJtd2FyZShkZXYtPmRlY19odywgZndfcGF0aCk7Cj4+ ICsKPj4gK8KgwqDCoMKgIGlmIChjdHgtPmNvZGVjX29wcy0+cnVuKQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGN0eC0+Y29kZWNfb3BzLT5ydW4oY3R4KTsKPj4gKwo+PiArwqDCoMKgwqAg djRsMl9tMm1fYnVmX2NvcHlfbWV0YWRhdGEoc3JjLCBkc3QpOwo+PiArwqDCoMKgwqAgaWYgKHNy Y19yZXEpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdjRsMl9jdHJsX3JlcXVlc3RfY29t cGxldGUoc3JjX3JlcSwgJmN0eC0+Y3RybF9oYW5kbGVyKTsKPj4gKwo+PiArwqDCoMKgwqAgdjRs Ml9tMm1fYnVmX2RvbmVfYW5kX2pvYl9maW5pc2goZGV2LT5tMm1fZGV2X2RlYywgCj4+IGN0eC0+ bTJtX2N0eCwgVkIyX0JVRl9TVEFURV9ET05FKTsKPj4gK30KPj4gKwo+PiArY29uc3Qgc3RydWN0 IHY0bDJfbTJtX29wcyBhbWxfdmRlY19tMm1fb3BzID0gewo+PiArwqDCoMKgwqAgLmRldmljZV9y dW4gPSBtMm1vcHNfdmRlY19kZXZpY2VfcnVuLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGludCB2 aWRpb2NfdmRlY19xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCB2NGwyX2NhcGFiaWxpdHkgKmNhcCkKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnNjcHkoY2Fw LT5kcml2ZXIsIFZDT0RFQ19EUlZfTkFNRSwgc2l6ZW9mKGNhcC0+ZHJpdmVyKSk7Cj4+ICvCoMKg wqDCoCBzdHJzY3B5KGNhcC0+Y2FyZCwgInBsYXRmb3JtOiIgVkNPREVDX0RSVl9OQU1FLCAKPj4g c2l6ZW9mKGNhcC0+Y2FyZCkpOwo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludCB2aWRpb2NfdmRlY19lbnVtX2ZtdChzdHJ1Y3QgdjRsMl9mbXRkZXNj ICpmLCBib29sIGlzX291dHB1dCkKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfdmlkZW9f Zm10ICpmbXQ7Cj4+ICvCoMKgwqDCoCBpbnQgZm10X3NpemUgPSBzaXplb2YoYW1sX3ZpZGVvX2Zv cm1hdHMpIC8gc2l6ZW9mKHN0cnVjdCAKPj4gYW1sX3ZpZGVvX2ZtdCk7Cj4+ICvCoMKgwqDCoCBp bnQgaSA9IDAsIGogPSAwOwo+PiArCj4+ICvCoMKgwqDCoCBmb3IgKDsgaSA8IGZtdF9zaXplOyBp KyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmbXQgPSAmYW1sX3ZpZGVvX2Zvcm1h dHNbaV07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGlzX291dHB1dCAmJiBmbXQt PnR5cGUgIT0gQU1MX0ZNVF9ERUMpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnRpbnVlOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghaXNf b3V0cHV0ICYmIGZtdC0+dHlwZSAhPSBBTUxfRk1UX0ZSQU1FKQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gKwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChqID09IGYtPmluZGV4KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGYtPnBpeGVsZm9ybWF0ID0gZm10LT5mb3VyY2M7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnNjcHkoZi0+ZGVzY3Jp cHRpb24sIGZtdC0+bmFtZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihmLT5kZXNjcmlwdGlvbikpOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc3RybGVuKGZtdC0+bmFtZSkg Pj0gc2l6ZW9mKGYtPmRlc2NyaXB0aW9uKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJmbXQgbmFtZSBzdHJpbmcg aXMgdG9vIGxvbmchXG4iKTsKPj4gKyBmLT5kZXNjcmlwdGlvbltzaXplb2YoZi0+ZGVzY3JpcHRp b24pIC0gMV0gPSAnXDAnOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biAwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCArK2o7Cj4+ICvCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBhbWxfcV9kYXRhICphbWxfdmRlY19nZXRfcWRh dGFfYnlfdHlwZShzdHJ1Y3QgCj4+IGFtbF92ZGVjX2N0eCAqY3R4LAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSB2NGwyX2J1Zl90eXBlIAo+PiB0eXBl KQo+PiArewo+PiArwqDCoMKgwqAgaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodHlwZSkpCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICZjdHgtPnFfZGF0YVtBTUxfUV9EQVRBX1NS Q107Cj4+ICsKPj4gK8KgwqDCoMKgIHJldHVybiAmY3R4LT5xX2RhdGFbQU1MX1FfREFUQV9EU1Rd Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGFtbF92aWRlb19mbXQgKmFtbF92ZGVjX2dl dF92aWRlb19mbXQodTMyIGZvcm1hdCkKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfdmlk ZW9fZm10ICpmbXQ7Cj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgazsKPj4gKwo+PiArwqDCoMKg wqAgZm9yIChrID0gMDsgayA8IChzaXplb2YoYW1sX3ZpZGVvX2Zvcm1hdHMpIC8gc2l6ZW9mKHN0 cnVjdCAKPj4gYW1sX3ZpZGVvX2ZtdCkpOyBrKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBmbXQgPSAmYW1sX3ZpZGVvX2Zvcm1hdHNba107Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGZtdC0+Zm91cmNjID09IGZvcm1hdCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZtdDsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiAr wqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYW1sX3ZkZWNf aW5pdF9kZWNfaW5zdChzdHJ1Y3QgYW1sX3ZkZWNfY3R4ICpjdHgsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFt bF92aWRlb19mbXQgKmZtdF9vdXQpCj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNf ZGV2ICpkZXYgPSBjdHgtPmRldjsKPj4gK8KgwqDCoMKgIGludCByZXQgPSAtMTsKPj4gKwo+PiAr wqDCoMKgwqAgaWYgKCFmbXRfb3V0KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biByZXQ7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChmbXRfb3V0LT5jb2RlY190eXBlID09IENPREVD X1RZUEVfRlJBTUUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiY2Fw dHVyZSB0eXBlIG5vIG5lZWQgdG8gc2V0XG4iKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gMDsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgY3R4LT5jb2RlY19v cHMgPSAmZGV2LT5wdmRlY19kYXRhLT5jb2RlY19vcHNbZm10X291dC0+Y29kZWNfdHlwZV07Cj4+ ICvCoMKgwqDCoCBpZiAoY3R4LT5jb2RlY19vcHMtPmluaXQpIHsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXQgPSBjdHgtPmNvZGVjX29wcy0+aW5pdChjdHgpOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAg Y3R4LT5jdXJyX2RlY190eXBlID0gZm10X291dC0+Y29kZWNfdHlwZTsKPj4gK8KgwqDCoMKgIHBy X2luZm8oIiVzIHNldCBjdXJyX2RlY190eXBlID0gJWRcbiIsIF9fZnVuY19fLCAKPj4gY3R4LT5j dXJyX2RlY190eXBlKTsKPgo+IEFuZCBkZXZfaW5mby9kZXZfZXJyL2Rldl93YXJuLi4uCkdvdCBp dC4gSSdsbCBnZXQgcmlkIG9mIHRoZW0gYW5kIHJlcGxhY2Ugd2l0aCBkZXYgbG9ncy4KPgo+PiAr Cj4+ICvCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4KPiA8c25pcD4KPgo+PiBkaWZm IC0tZ2l0IAo+PiBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVj X2NhbnZhc191dGlscy5jIAo+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVj L2FtbF92ZGVjX2NhbnZhc191dGlscy5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAwMDAwMC4uMDY2OTU4MTE4YjAwCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfY2FudmFzX3V0aWxzLmMK Pj4gQEAgLTAsMCArMSwxNTQgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BM LTIuMC1vbmx5IE9SIE1JVCkKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgQW1sb2dp YywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgImFt bF92ZGVjX2NhbnZhc191dGlscy5oIgo+PiArCj4+ICsjZGVmaW5lIENBTlZBU19SRUdfT0ZGU0VU wqDCoCAoMHgxMiA8PCAyKQo+PiArCj4+ICsvKgo+PiArICogRE1DX0NBVl9MVVRfREFUQUwvRE1D X0NBVl9MVVRfREFUQUgKPj4gKyAqIGhpZ2ggMzJiaXRzIG9mIGNhbnZhcyBkYXRhIHdoaWNoIG5l ZWQgdG8gYmUgY29uZmlndXJlZAo+PiArICogdG8gY2FudmFzIG1lbW9yeS4KPj4gKyAqIDY0Yml0 cyBDQU5WQVMgbG9vayB1cCB0YWJsZQo+PiArICogYml0IDYxIDogNTjCoMKgIEVuZGlhbiBjb250 cm9sLgo+PiArICogYml0IDYxIDrCoCAxIDogc3dpdGNoIDIgNjRiaXRzIGRhdGEgaW5zaWRlIDEy OGJpdHMgYm91bmRhcnkuCj4+ICsgKiAwIDogbm8gY2hhbmdlLgo+PiArICogYml0IDYwIDrCoCAx IDogc3dpdGNoIDIgMzJiaXRzIGRhdGEgaW5zaWRlIDY0Yml0cyBkYXRhIGJvdW5kYXJ5Lgo+PiAr ICogMCA6IG5vIGNoYW5nZS4KPj4gKyAqIGJpdCA1OSA6wqAgMSA6IHN3aXRjaCAyIDE2Yml0cyBk YXRhIGluc2lkZSAzMmJpdHMgZGF0YSBib3VuZGFyeS4KPj4gKyAqIDAgOiBubyBjaGFuZ2UuCj4+ ICsgKiBiaXQgNTggOsKgIDEgOiBzd2l0Y2ggMiA4Yml0cyBkYXRhwqAgaW5zaWRlIDE2Yml0cyBk YXRhIGJvdW5kYXJ5Lgo+PiArICogMCA6IG5vIGNoYW5nZS4KPj4gKyAqIGJpdCA1NyA6IDU2LsKg wqAgQ2FudmFzIGJsb2NrIG1vZGUuwqAgMiA6IDY0eDMyLCAxOiAzMngzMjsKPj4gKyAqwqAgMCA6 IGxpbmVhciBtb2RlLgo+PiArICogYml0IDU1IDrCoMKgwqDCoMKgIGNhbnZhcyBZIGRpcmVjdGlv biB3cmFwIGNvbnRyb2wuCj4+ICsgKiAxOiB3cmFwIGJhY2sgaW4geS7CoCAwOiBub3Qgd3JhcCBi YWNrLgo+PiArICogYml0IDU0IDrCoMKgwqDCoMKgIGNhbnZhcyBYIGRpcmVjdGlvbiB3cmFwIGNv bnRyb2wuCj4+ICsgKiAxOiB3cmFwIGJhY2sgaW4gWC7CoCAwOiBub3Qgd3JhcCBiYWNrLgo+PiAr ICogYml0IDUzIDogNDEuwqDCoCBjYW52YXMgSGlnaHQuCj4+ICsgKiBiaXQgNDAgOiAyOS7CoMKg IGNhbnZhcyBXaWR0aCwgdW5pdDogOGJ5dGVzLiBtdXN0IGluIDMyYnl0ZXMgYm91bmRhcnkuCj4+ ICsgKiB0aGF0IG1lYW5zIGxhc3QgMiBiaXRzIG11c3QgYmUgMC4KPj4gKyAqIGJpdCAyOCA6IDAu wqDCoMKgIGNhbnZhcyBzdGFydCBhZGRyZXNzLsKgwqAgdW5pdC4gOCBieXRlcy4gbXVzdCBiZSBp bgo+PiArICogMzJieXRlcyBib3VuZGFyeS4gdGhhdCBtZWFucyBsYXN0IDJiaXRzIG11c3QgYmUg MC4KPj4gKyAqLwo+PiArCj4+ICsjZGVmaW5lIENBTlZBU19XQUREUl9MQklUwqDCoMKgwqDCoMKg IDAKPj4gKyNkZWZpbmUgQ0FOVkFTX1dJRFRIX0xCSVTCoMKgwqDCoMKgwqAgMjkKPj4gKyNkZWZp bmUgQ0FOVkFTX0hFSUdIVF9IQklUwqDCoMKgwqDCoCAoNDEgLSAzMikKPj4gKyNkZWZpbmUgQ0FO VkFTX1dSQVBYX0hCSVTCoMKgwqDCoMKgwqAgKDU0IC0gMzIpCj4+ICsjZGVmaW5lIENBTlZBU19X UkFQWV9IQklUwqDCoMKgwqDCoMKgICg1NSAtIDMyKQo+PiArI2RlZmluZSBDQU5WQVNfQkxLTU9E RV9IQklUwqDCoMKgwqAgKDU2IC0gMzIpCj4+ICsjZGVmaW5lIENBTlZBU19FTkRJQU5fSEJJVMKg wqDCoMKgwqAgKDU4IC0gMzIpCj4+ICsKPj4gKy8qIGNhbnZhcyByZWdzICovCj4+ICsjZGVmaW5l IERDX0NBVl9MVVRfREFUQUzCoMKgwqDCoMKgwqDCoCAweDEyCj4+ICsjZGVmaW5lIERDX0NBVl9M VVRfREFUQUjCoMKgwqDCoMKgwqDCoCAweDEzCj4+ICsjZGVmaW5lIERDX0NBVl9MVVRfQUREUsKg wqDCoMKgwqDCoMKgwqAgMHgxNAo+PiArI2RlZmluZSBEQ19DQVZfTFVUX1JEQVRBTMKgwqDCoMKg wqDCoCAweDE1Cj4+ICsjZGVmaW5lIERDX0NBVl9MVVRfUkRBVEFIwqDCoMKgwqDCoMKgIDB4MTYK Pj4gKwo+PiArI2RlZmluZSBDQU5WQVNfQUREUl9MTUFTS8KgwqDCoMKgwqDCoCAweDFmZmZmZmZm Cj4+ICsjZGVmaW5lIENBTlZBU19XSURUSF9MTUFTS8KgwqDCoMKgwqAgMHg3Cj4+ICsjZGVmaW5l IENBTlZBU19XSURUSF9MV0lEwqDCoMKgwqDCoMKgIDMKPj4gKyNkZWZpbmUgQ0FOVkFTX1dJRFRI X0hNQVNLwqDCoMKgwqDCoCAweDFmZgo+PiArI2RlZmluZSBDQU5WQVNfV0lEVEhfSEJJVMKgwqDC oMKgwqDCoCAwCj4+ICsjZGVmaW5lIENBTlZBU19IRUlHSFRfTUFTS8KgwqDCoMKgwqAgMHgxZmZm Cj4+ICsjZGVmaW5lIENBTlZBU19IRUlHSFRfQklUwqDCoMKgwqDCoMKgIDkKPj4gKyNkZWZpbmUg Q0FOVkFTX0FERFJfTk9XUkFQwqDCoMKgwqDCoCAweDAwCj4+ICsjZGVmaW5lIENBTlZBU19BRERS X1dSQVBYwqDCoMKgwqDCoMKgIDB4MDEKPj4gKyNkZWZpbmUgQ0FOVkFTX0FERFJfV1JBUFnCoMKg wqDCoMKgwqAgMHgwMgo+PiArI2RlZmluZSBDQU5WQVNfQkxLTU9ERV9NQVNLwqDCoMKgwqAgMHgw Mwo+PiArCj4+ICsjZGVmaW5lIENBTlZBU19CTEtNT0RFX0xJTkVBUsKgwqAgMHgwMAo+PiArI2Rl ZmluZSBDQU5WQVNfQkxLTU9ERV8zMlgzMsKgwqDCoCAweDAxCj4+ICsjZGVmaW5lIENBTlZBU19C TEtNT0RFXzY0WDMywqDCoMKgIDB4MDIKPj4gKwo+PiArI2RlZmluZSBDQU5WQVNfTFVUX1dSX0VO wqDCoCAoMHgyIDw8IDgpCj4+ICsjZGVmaW5lIENBTlZBU19MVVRfUkRfRU7CoMKgICgweDEgPDwg OCkKPj4gKwo+PiArI2RlZmluZSBDQU5WQVNfQUREUl9CSVRTX01BU0vCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgR0VOTUFTSygyOCwgMCkKPj4gKyNkZWZpbmUgQ0FOVkFTX1dJRFRIX0xf TUFTS8KgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDMxLCAyOSkKPj4gKyNkZWZpbmUgQ0FOVkFT X1dJRFRIX0hfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDgsIDApCj4+ICsjZGVmaW5l IENBTlZBU19IRUlHSFRfSF9NQVNLwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDIxLCA5KQo+PiAr I2RlZmluZSBDQU5WQVNfV1JBUF9IX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDIz LCAyMykKPj4gKyNkZWZpbmUgQ0FOVkFTX0JMT0NLX0hfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoCBH RU5NQVNLKDI1LCAyNCkKPj4gKyNkZWZpbmUgQ0FOVkFTX0JJVFNfQ1RSTF9NQVNLwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soMjksIDI2KQo+PiArCj4+ICtzdGF0aWMgc3Ry dWN0IHZkZWNfY2FudmFzX3MgY2FudmFzOwo+Cj4gVGhlcmUncyBhbHJlYWR5IGEgY2FudmFzIGRy aXZlciBmb3IgdGhhdCwgcGxlYXNlIHVzZSBpdCBhbmQgZXh0ZW5kIGl0IAo+IGlmIG5lY2Vzc2Fy eToKPiBkcml2ZXJzL3NvYy9hbWxvZ2ljL21lc29uLWNhbnZhcy5jCk9rLCBJJ2xsIGNoZWNrIGlm IHdlIGNhbiB1c2UgdGhlIGV4aXN0aW5nIGNhbnZhcyBpbnRlcmZhY2VzLgo+IDxzbmlwPgo+Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9hbWxfdmRl Y19kcnYuYyAKPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9hbWxfdmRl Y19kcnYuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmVm MmM3Nzk4MzlkOAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2Rydi5jCj4+IEBAIC0wLDAgKzEsMjYzIEBACj4+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBNSVQpCj4+ICsvKgo+ PiArICogQ29weXJpZ2h0IChDKSAyMDI1IEFtbG9naWMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl ZAo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWRldmlj ZS5oPgo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItaW9jdGwuaD4KPj4gKwo+PiArI2luY2x1ZGUg ImFtbF92ZGVjLmgiCj4+ICsjaW5jbHVkZSAiYW1sX3ZkZWNfaHcuaCIKPj4gKyNpbmNsdWRlICJh bWxfdmRlY19wbGF0Zm9ybS5oIgo+PiArCj4+ICsjZGVmaW5lIEFNTF9WREVDX0RSVl9OQU1FICJh bWwtdmRlYy1kcnYiCj4+ICsKPj4gK3N0YXRpYyBpbnQgZm9wc192Y29kZWNfb3BlbihzdHJ1Y3Qg ZmlsZSAqZmlsZSkKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfdmRlY19kZXYgKmRlY19k ZXYgPSB2aWRlb19kcnZkYXRhKGZpbGUpOwo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVjX2N0 eCAqY3R4ID0gTlVMTDsKPj4gK8KgwqDCoMKgIGludCByZXQgPSAwOwo+PiArCj4+ICvCoMKgwqDC oCBjdHggPSBremFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKgwqDCoCBp ZiAoIWN0eCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4g Kwo+PiArwqDCoMKgwqAgbXV0ZXhfbG9jaygmZGVjX2Rldi0+ZGV2X211dGV4KTsKPj4gK8KgwqDC oMKgIGRlY19kZXYtPmRlY19jdHggPSBjdHg7Cj4+ICvCoMKgwqDCoCBjdHgtPmRldiA9IGRlY19k ZXY7Cj4+ICvCoMKgwqDCoCB2NGwyX2ZoX2luaXQoJmN0eC0+ZmgsIHZpZGVvX2RldmRhdGEoZmls ZSkpOwo+PiArwqDCoMKgwqAgZmlsZS0+cHJpdmF0ZV9kYXRhID0gJmN0eC0+Zmg7Cj4+ICvCoMKg wqDCoCB2NGwyX2ZoX2FkZCgmY3R4LT5maCwgZmlsZSk7Cj4+ICvCoMKgwqDCoCBkZWNfZGV2LT5m aWxwID0gZmlsZTsKPj4gK8KgwqDCoMKgIG11dGV4X2luaXQoJmN0eC0+djRsMl9pbnRmX2xvY2sp Owo+PiArwqDCoMKgwqAgaW5pdF93YWl0cXVldWVfaGVhZCgmY3R4LT5xdWV1ZSk7Cj4+ICvCoMKg wqDCoCBjdHgtPmludF9jb25kID0gMDsKPj4gKwo+PiArwqDCoMKgwqAgY3R4LT5tMm1fY3R4ID0g djRsMl9tMm1fY3R4X2luaXQoZGVjX2Rldi0+bTJtX2Rldl9kZWMsIGN0eCwKPj4gKyAmYW1sX3Zk ZWNfcXVldWVfaW5pdCk7Cj4+ICvCoMKgwqDCoCBpZiAoSVNfRVJSKChfX2ZvcmNlIHZvaWQgKilj dHgtPm0ybV9jdHgpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gUFRSX0VS UigoX19mb3JjZSB2b2lkICopY3R4LT5tMm1fY3R4KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB2NGwyX2VycigmZGVjX2Rldi0+djRsMl9kZXYsICJGYWlsZWQgdG8gCj4+IHY0bDJfbTJt X2N0eF9pbml0KCkgKCVkKSIsIHJldCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290 byBlcnJfbTJtX2N0eF9pbml0Owo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCBjdHgt PmZoLm0ybV9jdHggPSBjdHgtPm0ybV9jdHg7Cj4+ICvCoMKgwqDCoCByZXQgPSBhbWxfdmRlY19j dHJsc19zZXR1cChjdHgpOwo+PiArwqDCoMKgwqAgaWYgKHJldCkgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHY0bDJfZXJyKCZkZWNfZGV2LT52NGwyX2RldiwgIkZhaWxlZCB0byBpbml0 IGFsbCBjdHJscyAKPj4gKCVkKSIsIHJldCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z290byBlcnJfY3RybHNfc2V0dXA7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIGFt bF92ZGVjX3NldF9kZWZhdWx0X3BhcmFtcyhjdHgpOwo+PiArwqDCoMKgwqAgbXV0ZXhfdW5sb2Nr KCZkZWNfZGV2LT5kZXZfbXV0ZXgpOwo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiAr Cj4+ICtlcnJfY3RybHNfc2V0dXA6Cj4+ICvCoMKgwqDCoCB2NGwyX20ybV9jdHhfcmVsZWFzZShj dHgtPm0ybV9jdHgpOwo+PiArZXJyX20ybV9jdHhfaW5pdDoKPj4gK8KgwqDCoMKgIHY0bDJfZmhf ZGVsKCZjdHgtPmZoLCBmaWxlKTsKPj4gK8KgwqDCoMKgIHY0bDJfZmhfZXhpdCgmY3R4LT5maCk7 Cj4+ICvCoMKgwqDCoCBrZnJlZShjdHgpOwo+PiArwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZkZWNf ZGV2LT5kZXZfbXV0ZXgpOwo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50IGZvcHNfdmNvZGVjX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpCj4+ ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNfZGV2ICpkZWNfZGV2ID0gdmlkZW9fZHJ2 ZGF0YShmaWxlKTsKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfdmRlY19jdHggKmN0eCA9IGZoX3Rv X2RlY19jdHgoZmlsZS0+cHJpdmF0ZV9kYXRhKTsKPj4gKwo+PiArwqDCoMKgwqAgbXV0ZXhfbG9j aygmZGVjX2Rldi0+ZGV2X211dGV4KTsKPj4gK8KgwqDCoMKgIHY0bDJfY3RybF9oYW5kbGVyX2Zy ZWUoJmN0eC0+Y3RybF9oYW5kbGVyKTsKPj4gK8KgwqDCoMKgIHY0bDJfbTJtX2N0eF9yZWxlYXNl KGN0eC0+bTJtX2N0eCk7Cj4+ICvCoMKgwqDCoCB2NGwyX2ZoX2RlbCgmY3R4LT5maCwgZmlsZSk7 Cj4+ICvCoMKgwqDCoCB2NGwyX2ZoX2V4aXQoJmN0eC0+ZmgpOwo+PiArwqDCoMKgwqAga2ZyZWUo Y3R4KTsKPj4gK8KgwqDCoMKgIG11dGV4X3VubG9jaygmZGVjX2Rldi0+ZGV2X211dGV4KTsKPj4g Kwo+PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgYW1sX3ZkZWNfZm9wcyA9IHsKPj4gK8KgwqDCoMKgIC5v d25lcsKgwqDCoMKgwqDCoMKgID0gVEhJU19NT0RVTEUsCj4+ICvCoMKgwqDCoCAub3BlbsKgwqDC oMKgwqDCoMKgID0gZm9wc192Y29kZWNfb3BlbiwKPj4gK8KgwqDCoMKgIC5yZWxlYXNlwqDCoMKg ID0gZm9wc192Y29kZWNfcmVsZWFzZSwKPj4gK8KgwqDCoMKgIC5wb2xswqDCoMKgwqDCoMKgwqAg PSB2NGwyX20ybV9mb3BfcG9sbCwKPj4gK8KgwqDCoMKgIC51bmxvY2tlZF9pb2N0bMKgwqDCoCA9 IHZpZGVvX2lvY3RsMiwKPj4gK8KgwqDCoMKgIC5tbWFwwqDCoMKgwqDCoMKgwqAgPSB2NGwyX20y bV9mb3BfbW1hcCwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmlkZW9fZGV2 aWNlIGRlY19kZXYgPSB7Cj4+ICvCoMKgwqDCoCAubmFtZSA9ICJhbWxfZGV2X2RydiIsCj4+ICvC oMKgwqDCoCAuZm9wcyA9ICZhbWxfdmRlY19mb3BzLAo+PiArwqDCoMKgwqAgLmlvY3RsX29wcyA9 ICZhbWxfdmRlY19pb2N0bF9vcHMsCj4+ICvCoMKgwqDCoCAucmVsZWFzZSA9IHZpZGVvX2Rldmlj ZV9yZWxlYXNlLAo+PiArwqDCoMKgwqAgLnZmbF9kaXIgPSBWRkxfRElSX00yTSwKPj4gK8KgwqDC oMKgIC5kZXZpY2VfY2FwcyA9IFY0TDJfQ0FQX1ZJREVPX00yTV9NUExBTkUgfCBWNEwyX0NBUF9T VFJFQU1JTkcsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2Rldmlj ZV9vcHMgYW1sX20ybV9tZWRpYV9vcHMgPSB7Cj4+ICvCoMKgwqDCoCAucmVxX3ZhbGlkYXRlID0g dmIyX3JlcXVlc3RfdmFsaWRhdGUsCj4+ICvCoMKgwqDCoCAucmVxX3F1ZXVlID0gdjRsMl9tMm1f cmVxdWVzdF9xdWV1ZSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYW1sX3ZkZWNfZHJ2X3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1 Y3QgYW1sX3ZkZWNfZGV2ICpkZXY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2 ZmRfZGVjOwo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVjX2h3ICpodzsKPj4gK8KgwqDCoMKg IGludCByZXQgPSAwOwo+PiArCj4+ICvCoMKgwqDCoCBkZXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYt PmRldiwgc2l6ZW9mKCpkZXYpLCBHRlBfS0VSTkVMKTsKPj4gK8KgwqDCoMKgIGlmICghZGV2KQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiArCj4+ICvCoMKg wqDCoCBkZXYtPnBsYXRfZGV2ID0gcGRldjsKPj4gK8KgwqDCoMKgIG11dGV4X2luaXQoJmRldi0+ ZGV2X211dGV4KTsKPj4gKwo+PiArwqDCoMKgwqAgcmV0ID0gdjRsMl9kZXZpY2VfcmVnaXN0ZXIo JnBkZXYtPmRldiwgJmRldi0+djRsMl9kZXYpOwo+PiArwqDCoMKgwqAgaWYgKHJldCkKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCBy ZXQsIAo+PiAidjRsMl9kZXZpY2VfcmVnaXN0ZXIgZXJyXG4iKTsKPj4gKwo+PiArwqDCoMKgwqAg dmZkX2RlYyA9IHZpZGVvX2RldmljZV9hbGxvYygpOwo+PiArwqDCoMKgwqAgaWYgKCF2ZmRfZGVj KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdjRsMl9lcnIoJmRldi0+djRsMl9kZXYs ICJGYWlsZWQgdG8gYWxsb2NhdGUgdmlkZW8gCj4+IGRldmljZVxuIik7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVOT01FTTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBnb3RvIGVycl9kZXZpY2VfYWxsb2M7Cj4+ICvCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCAqdmZk X2RlYyA9IGRlY19kZXY7Cj4+ICvCoMKgwqDCoCB2ZmRfZGVjLT52NGwyX2RldiA9ICZkZXYtPnY0 bDJfZGV2Owo+PiArwqDCoMKgwqAgdmZkX2RlYy0+bG9jayA9ICZkZXYtPmRldl9tdXRleDsKPj4g K8KgwqDCoMKgIHZpZGVvX3NldF9kcnZkYXRhKHZmZF9kZWMsIGRldik7Cj4+ICvCoMKgwqDCoCBk ZXYtPnZmZCA9IHZmZF9kZWM7Cj4+ICvCoMKgwqDCoCBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2 LCBkZXYpOwo+PiArCj4+ICvCoMKgwqDCoCBodyA9IGt6YWxsb2Moc2l6ZW9mKCpodyksIEdGUF9L RVJORUwpOwo+PiArwqDCoMKgwqAgaWYgKCFodykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldCA9IC1FTk9NRU07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJf ZGVjX21lbV9pbml0Owo+PiArwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgZGV2LT5kZWNfaHcgPSBo dzsKPj4gKwo+PiArwqDCoMKgwqAgZGV2LT5wdmRlY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRj aF9kYXRhKCZwZGV2LT5kZXYpOwo+PiArwqDCoMKgwqAgcmV0ID0gZGV2LT5wdmRlY19kYXRhLT5y ZXFfaHdfcmVzb3VyY2UoZGV2KTsKPj4gK8KgwqDCoMKgIGlmIChyZXQgPCAwKQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2h3X2luaXQ7Cj4+ICsKPj4gK8KgwqDCoMKgIGRl di0+bTJtX2Rldl9kZWMgPSB2NGwyX20ybV9pbml0KCZhbWxfdmRlY19tMm1fb3BzKTsKPj4gK8Kg wqDCoMKgIGlmIChJU19FUlIoKF9fZm9yY2Ugdm9pZCAqKWRldi0+bTJtX2Rldl9kZWMpKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdjRsMl9lcnIoJmRldi0+djRsMl9kZXYsICJGYWls ZWQgdG8gaW5pdCBtZW0ybWVtIGRlYyAKPj4gZGV2aWNlXG4iKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXQgPSBQVFJfRVJSKChfX2ZvcmNlIHZvaWQgKilkZXYtPm0ybV9kZXZfZGVj KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9od19pbml0Owo+PiArwqDC oMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCByZXQgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UodmZk X2RlYywgVkZMX1RZUEVfVklERU8sIC0xKTsKPj4gK8KgwqDCoMKgIGlmIChyZXQpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2NGwyX2VycigmZGV2LT52NGwyX2RldiwgIkZhaWxlZCB0 byByZWdpc3RlciB2aWRlbyAKPj4gZGV2aWNlIik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ290byBlcnJfdmlkX2Rldl9yZWdpc3RlcjsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDC oMKgwqAgdjRsMl9pbmZvKCZkZXYtPnY0bDJfZGV2LCAiUmVnaXN0ZXJlZCAlcyBhcyAvZGV2LyVz XG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2ZmRfZGVjLT5uYW1lLCB2aWRl b19kZXZpY2Vfbm9kZV9uYW1lKHZmZF9kZWMpKTsKPj4gKwo+PiArwqDCoMKgwqAgZGV2LT5tZGV2 LmRldiA9ICZwZGV2LT5kZXY7Cj4+ICvCoMKgwqDCoCBzdHJzY3B5KGRldi0+bWRldi5tb2RlbCwg QU1MX1ZERUNfRFJWX05BTUUsIAo+PiBzaXplb2YoZGV2LT5tZGV2Lm1vZGVsKSk7Cj4+ICvCoMKg wqDCoCBtZWRpYV9kZXZpY2VfaW5pdCgmZGV2LT5tZGV2KTsKPj4gK8KgwqDCoMKgIGRldi0+bWRl di5vcHMgPSAmYW1sX20ybV9tZWRpYV9vcHM7Cj4+ICvCoMKgwqDCoCBkZXYtPnY0bDJfZGV2Lm1k ZXYgPSAmZGV2LT5tZGV2Owo+PiArCj4+ICvCoMKgwqDCoCByZXQgPSB2NGwyX20ybV9yZWdpc3Rl cl9tZWRpYV9jb250cm9sbGVyKGRldi0+bTJtX2Rldl9kZWMsIAo+PiB2ZmRfZGVjLAo+PiArIE1F RElBX0VOVF9GX1BST0NfVklERU9fREVDT0RFUik7Cj4+ICvCoMKgwqDCoCBpZiAocmV0KSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdjRsMl9lcnIoJmRldi0+djRsMl9kZXYsICJGYWls ZWQgdG8gaW5pdCBtZW0ybWVtIG1lZGlhIAo+PiBjb250cm9sbGVyXG4iKTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycm9yX20ybV9tY19yZWdpc3RlcjsKPj4gK8KgwqDCoMKg IH0KPj4gKwo+PiArwqDCoMKgwqAgcmV0ID0gbWVkaWFfZGV2aWNlX3JlZ2lzdGVyKCZkZXYtPm1k ZXYpOwo+PiArwqDCoMKgwqAgaWYgKHJldCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHY0bDJfZXJyKCZkZXYtPnY0bDJfZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIG1lZGlhIAo+PiBk ZXZpY2UiKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9tZWRpYV9kZXZf cmVnaXN0ZXI7Cj4+ICvCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCB2ZGVjX2VuYWJsZShkZXYtPmRl Y19odyk7Cj4+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4gKwo+PiArZXJyX21lZGlhX2Rldl9yZWdp c3RlcjoKPj4gK8KgwqDCoMKgIHY0bDJfbTJtX3VucmVnaXN0ZXJfbWVkaWFfY29udHJvbGxlcihk ZXYtPm0ybV9kZXZfZGVjKTsKPj4gK2Vycm9yX20ybV9tY19yZWdpc3RlcjoKPj4gK8KgwqDCoMKg IG1lZGlhX2RldmljZV9jbGVhbnVwKCZkZXYtPm1kZXYpOwo+PiArZXJyX3ZpZF9kZXZfcmVnaXN0 ZXI6Cj4+ICvCoMKgwqDCoCB2NGwyX20ybV9yZWxlYXNlKGRldi0+bTJtX2Rldl9kZWMpOwo+PiAr ZXJyX2h3X2luaXQ6Cj4+ICvCoMKgwqDCoCBrZnJlZShodyk7Cj4+ICvCoMKgwqDCoCBkZXYtPmRl Y19odyA9IE5VTEw7Cj4+ICtlcnJfZGVjX21lbV9pbml0Ogo+PiArwqDCoMKgwqAgdmlkZW9fZGV2 aWNlX3JlbGVhc2UodmZkX2RlYyk7Cj4+ICtlcnJfZGV2aWNlX2FsbG9jOgo+PiArwqDCoMKgwqAg djRsMl9kZXZpY2VfdW5yZWdpc3RlcigmZGV2LT52NGwyX2Rldik7Cj4+ICvCoMKgwqDCoCByZXR1 cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBhbWxfdmRlY19kcnZfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1s X3ZkZWNfZGV2ICpkZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPj4gKwo+PiArwqDC oMKgwqAgdmRlY19kaXNhYmxlKGRldi0+ZGVjX2h3KTsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKG1l ZGlhX2Rldm5vZGVfaXNfcmVnaXN0ZXJlZChkZXYtPm1kZXYuZGV2bm9kZSkpIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBtZWRpYV9kZXZpY2VfdW5yZWdpc3RlcigmZGV2LT5tZGV2KTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZWRpYV9kZXZpY2VfY2xlYW51cCgmZGV2LT5t ZGV2KTsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgaWYgKGRldi0+bTJtX2Rldl9k ZWMpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdjRsMl9tMm1fcmVsZWFzZShkZXYtPm0y bV9kZXZfZGVjKTsKPj4gK8KgwqDCoMKgIGlmIChkZXYtPnZmZCkKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB2aWRlb191bnJlZ2lzdGVyX2RldmljZShkZXYtPnZmZCk7Cj4+ICvCoMKgwqDC oCBpZiAoZGV2LT5kZWNfaHcpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2LT5wdmRl Y19kYXRhLT5kZXN0cm95X2h3X3Jlc291cmNlKGRldik7Cj4+ICsKPj4gK8KgwqDCoMKgIHY0bDJf ZGV2aWNlX3VucmVnaXN0ZXIoJmRldi0+djRsMl9kZXYpOwo+PiArCj4+ICvCoMKgwqDCoCBwcl9k ZWJ1ZygiYW1sIHY0bDIgZGVjb2RlciBkcml2ZXIgcmVtb3ZlXG4iKTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYW1sX3ZkZWNfbWF0Y2hbXSA9IHsKPj4g K8KgwqDCoMKgIHsuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLHM0LXZjb2RlYy1kZWMiLCAuZGF0YSA9 IAo+PiAmYW1sX3ZkZWNfczRfcGRhdGF9LAo+PiArwqDCoMKgwqAge30sCj4+ICt9Owo+PiArCj4+ ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhbWxfdmNvZGVjX2RlY19kcml2ZXIgPSB7 Cj4+ICvCoMKgwqDCoCAucHJvYmXCoMKgwqAgPSBhbWxfdmRlY19kcnZfcHJvYmUsCj4+ICvCoMKg wqDCoCAucmVtb3ZlwqDCoMKgID0gYW1sX3ZkZWNfZHJ2X3JlbW92ZSwKPj4gK8KgwqDCoMKgIC5k cml2ZXLCoMKgwqAgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm5hbWXCoMKgwqAg PSBBTUxfVkRFQ19EUlZfTkFNRSwKPgo+IFVzZSBwcm9wZXIgZm9ybWF0dGluZyBoZXJlCkNvdWxk IHlvdSBwbGVhc2UgZ2l2ZSBtZSBzb21lIGV4YW1wbGVzPyBUaGFua3MgYSBsb3QhCj4KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAub2ZfbWF0Y2hfdGFibGUgPSBhbWxfdmRlY19tYXRjaCwK Pj4gK8KgwqDCoMKgIH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IF9faW5pdCBhbWxfdmRl Y19pbml0KHZvaWQpCj4+ICt7Cj4+ICvCoMKgwqDCoCBwcl9kZWJ1ZygiYW1sIHY0bDIgZGVjb2Rl ciBtb2R1bGUgaW5pdFxuIik7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChwbGF0Zm9ybV9kcml2ZXJf cmVnaXN0ZXIoJmFtbF92Y29kZWNfZGVjX2RyaXZlcikpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBwcl9lcnIoImZhaWxlZCB0byByZWdpc3RlciBhbWwgdjRsMiBkZWNvZGVyXG4iKTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsKPj4gK8KgwqDCoMKg IH0KPj4gKwo+PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IF9fZXhpdCBhbWxfdmRlY19leGl0KHZvaWQpCj4+ICt7Cj4+ICvCoMKgwqDCoCBwcl9kZWJ1Zygi YW1sIHY0bDIgZGVjb2RlciBtb2R1bGUgZXhpdFxuIik7Cj4+ICvCoMKgwqDCoCBwbGF0Zm9ybV9k cml2ZXJfdW5yZWdpc3RlcigmYW1sX3Zjb2RlY19kZWNfZHJpdmVyKTsKPj4gK30KPj4gKwo+PiAr bW9kdWxlX2luaXQoYW1sX3ZkZWNfaW5pdCk7Cj4+ICttb2R1bGVfZXhpdChhbWxfdmRlY19leGl0 KTsKPj4gKwo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJBbWxvZ2ljIFY0TDIgZGVjb2RlciBkcml2 ZXIiKTsKPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2Rydi5oIAo+PiBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2Rydi5oCj4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZjMzMThjY2VmZjNmCj4+IC0tLSAvZGV2 L251bGwKPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3Zk ZWNfZHJ2LmgKPj4gQEAgLTAsMCArMSwxOTQgQEAKPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiAoR1BMLTIuMC1vbmx5IE9SIE1JVCkgKi8KPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMp IDIwMjUgQW1sb2dpYywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCj4+ICsgKi8KPj4gKwo+PiAr I2lmbmRlZiBfQU1MX1ZERUNfRFJWX0hfCj4+ICsjZGVmaW5lIF9BTUxfVkRFQ19EUlZfSF8KPj4g Kwo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L3ZpZGVvZGV2Mi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+PiArCj4+ICsjaW5j bHVkZSA8bWVkaWEvdjRsMi1jdHJscy5oPgo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItZGV2aWNl Lmg+Cj4+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1pb2N0bC5oPgo+PiArI2luY2x1ZGUgPG1lZGlh L3Y0bDItbWVtMm1lbS5oPgo+PiArI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1jb3JlLmg+Cj4+ ICsjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWRtYS1jb250aWcuaD4KPj4gKwo+PiArI2RlZmlu ZSBBTUxfVkNPREVDX01BWF9QTEFORVMgMwo+PiArI2RlZmluZSBBTUxfVkRFQ19NSU5fV8KgwqDC oCA2NFUKPj4gKyNkZWZpbmUgQU1MX1ZERUNfTUlOX0jCoMKgwqAgNjRVCj4+ICsjZGVmaW5lIEFN TF9WREVDXzEwODBQX01BWF9IwqAgMTA4OFUKPj4gKyNkZWZpbmUgQU1MX1ZERUNfMTA4MFBfTUFY X1fCoCAxOTIwVQo+PiArCj4+ICtzdHJ1Y3QgYW1sX3ZkZWNfY3R4Owo+PiArLyoqCj4+ICsgKiBl bnVtIGFtbF9mbXRfdHlwZSAtIFR5cGUgb2YgZm9ybWF0IHR5cGUKPj4gKyAqLwo+PiArZW51bSBh bWxfZm10X3R5cGUgewo+PiArwqDCoMKgwqAgQU1MX0ZNVF9ERUMgPSAwLAo+PiArwqDCoMKgwqAg QU1MX0ZNVF9GUkFNRSA9IDEsCj4+ICt9Owo+PiArCj4+ICsvKioKPj4gKyAqIGVudW0gYW1sX2Nv ZGVjX3R5cGUgLSBUeXBlIG9mIGNvZGVjIGZvcm1hdAo+PiArICovCj4+ICtlbnVtIGFtbF9jb2Rl Y190eXBlIHsKPj4gK8KgwqDCoMKgIENPREVDX1RZUEVfSDI2NCA9IDAsCj4+ICvCoMKgwqDCoCBD T0RFQ19UWVBFX0ZSQU1FLAo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBlbnVtIGFtbF9xX3R5 cGUgLSBUeXBlIG9mIHF1ZXVlIDogY2FwIG9yIG91dHB1dAo+PiArICovCj4+ICtlbnVtIGFtbF9x X3R5cGUgewo+PiArwqDCoMKgwqAgQU1MX1FfREFUQV9TUkMgPSAwLAo+PiArwqDCoMKgwqAgQU1M X1FfREFUQV9EU1QgPSAxLAo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgYW1sX3Zp ZGVvX2ZtdCAtIGFtbCB2aWRlbyBkZWNvZGVyIGZtdCBpbmZvcm1hdGlvbgo+PiArICogQGZvdXJj YzogRm91ckNDIGNvZGUgb2YgdGhlIGZvcm1hdC4gU2VlIFY0TDJfUElYX0ZNVF8qLgo+PiArICog QHR5cGU6IEN1cnIgcXVldWUgdHlwZTogY2FwdHVyZSBvciBvdXRwdXQuCj4+ICsgKiBAY29kZWNf dHlwZTogQ29kZWMgbW9kZSByZWxhdGVkLiBTZWUgYW1sX2NvZGVjX3R5cGUuCj4+ICsgKiBAbnVt X3BsYW5lczogTnVtIHBsYW5lcyBvZiB0aGUgZm9ybWF0Lgo+PiArICogQG5hbWU6IE5hbWUgb2Yg dGhlIGZvcm1hdC4KPj4gKyAqIEBzdGVwd2lzZTogU3VwcG9ydGVkIHJhbmdlIG9mIGZyYW1lIHNp emVzIChvbmx5IGZvciBiaXRzdHJlYW0gCj4+IGZvcm1hdHMpLgo+PiArICovCj4+ICtzdHJ1Y3Qg YW1sX3ZpZGVvX2ZtdCB7Cj4+ICvCoMKgwqDCoCB1MzIgZm91cmNjOwo+PiArwqDCoMKgwqAgZW51 bSBhbWxfZm10X3R5cGUgdHlwZTsKPj4gK8KgwqDCoMKgIGVudW0gYW1sX2NvZGVjX3R5cGUgY29k ZWNfdHlwZTsKPj4gK8KgwqDCoMKgIHUzMiBudW1fcGxhbmVzOwo+PiArwqDCoMKgwqAgY29uc3Qg dTggKm5hbWU7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9mcm1zaXplX3N0ZXB3aXNlIHN0ZXB3 aXNlOwo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgYW1sX3FfZGF0YSAtIGFtbCB2 aWRlbyBxdWV1ZSBpbmZvcm1hdGlvbgo+PiArICogQHZpc2libGVfd2lkdGg6IFdpZHRoIGZvciBk aXNwbGF5Lgo+PiArICogQHZpc2libGVfaGVpZ2h0OiBIZWlnaHQgZm9yIGRpc3BsYXkuCj4+ICsg KiBAY29kZWRfd2lkdGg6IFdpZHRoIGZvciBkZWNvZGUsIHdoaWNoIGlzIDY0LzMyIGFsaWduZWQu Cj4+ICsgKiBAY29kZWRfaGVpZ2h0OiBIZWlnaHQgZm9yIGRlY29kZSwgd2hpY2ggaXMgNjQvMzIg YWxpZ25lZC4KPj4gKyAqIEBmaWxlZF9mbGFnOiBGaWVsZCBwaWMgZmxhZy4KPj4gKyAqIEBieXRl c3BlcmxpbmU6IEJ5dGUgbnVtIG9mIGVhY2ggcGl4ZWwgbGluZS4KPj4gKyAqIEBzaXplaW1hZ2U6 IFNpemUgb2YgZnJhbWUgaW4gYnl0ZXMuCj4+ICsgKiBAZm10OiBGb3JtYXQgZm9yIGN1cnIgcXVl dWUuIFNlZSBzdHJ1Y3QgYW1sX3ZpZGVvX2ZtdC4KPj4gKyAqLwo+PiArc3RydWN0IGFtbF9xX2Rh dGEgewo+PiArwqDCoMKgwqAgdTMyIHZpc2libGVfd2lkdGg7Cj4+ICvCoMKgwqDCoCB1MzIgdmlz aWJsZV9oZWlnaHQ7Cj4+ICvCoMKgwqDCoCB1MzIgY29kZWRfd2lkdGg7Cj4+ICvCoMKgwqDCoCB1 MzIgY29kZWRfaGVpZ2h0Owo+PiArwqDCoMKgwqAgdTMyIGZpbGVkX2ZsYWc7Cj4+ICvCoMKgwqDC oCB1MzIgYnl0ZXNwZXJsaW5lW0FNTF9WQ09ERUNfTUFYX1BMQU5FU107Cj4+ICvCoMKgwqDCoCB1 MzIgc2l6ZWltYWdlW0FNTF9WQ09ERUNfTUFYX1BMQU5FU107Cj4+ICvCoMKgwqDCoCBzdHJ1Y3Qg YW1sX3ZpZGVvX2ZtdCAqZm10Owo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgYW1s X3ZkZWNfZGV2IC0gZHJpdmVyIGRhdGEKPj4gKyAqIEBwbGF0X2RldjogUGxhdGZvcm0gZGV2aWNl IGZvciB0aGUgY3VycmVudCBkcml2ZXIuCj4+ICsgKiBAdjRsMl9kZXY6IFY0TDIgZGV2aWNlIHRv IHJlZ2lzdGVyIHZpZGVvIGRldmljZXMgZm9yLgo+PiArICogQG0ybV9kZXZfZGVjOiBNZW0ybWVt IGRldmljZSBhc3NvY2lhdGVkIHRvIHRoaXMgZGV2aWNlLgo+PiArICogQHZmZDogVmlkZW9fZGV2 aWNlIGFzc29jaWF0ZWQgdG8gdGhpcyBkZXZpY2UuCj4+ICsgKiBAbWRldjogTWVkaWFfZGV2aWNl IGFzc29jaWF0ZWQgdG8gdGhpcyBkZXZpY2UuCj4+ICsgKiBAZGVjX2N0eDogRGVjb2RlciBjb250 ZXh0LiBTZWUgc3RydWN0IGFtbF92ZGVjX2N0eC4KPj4gKyAqIEBkZWNfaHc6IERlY29kZXIgaGFy ZHdhcmUgcmVzb3VyY2VzLiBTZWUgc3RydWN0IGFtbF92ZGVjX2h3Lgo+PiArICogQHB2ZGVjX2Rh dGE6IERlY29kZXIgcGxhdGZvcm0gZGF0YS4gU2VlIHN0cnVjdCAKPj4gYW1sX2Rldl9wbGF0Zm9y bV9kYXRhLgo+PiArICogQGRldl9tdXRleDogdmlkZW9fZGV2aWNlIGxvY2suCj4+ICsgKiBAZmls cDogdjRsMiBmaWxlIGhhbmRsZSBwb2ludGVyLgo+PiArICovCj4+ICtzdHJ1Y3QgYW1sX3ZkZWNf ZGV2IHsKPj4gK8KgwqDCoMKgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRfZGV2Owo+PiAr wqDCoMKgwqAgc3RydWN0IHY0bDJfZGV2aWNlIHY0bDJfZGV2Owo+PiArwqDCoMKgwqAgc3RydWN0 IHY0bDJfbTJtX2RldiAqbTJtX2Rldl9kZWM7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdmlkZW9fZGV2 aWNlICp2ZmQ7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgbWVkaWFfZGV2aWNlIG1kZXY7Cj4+ICsKPj4g K8KgwqDCoMKgIHN0cnVjdCBhbWxfdmRlY19jdHggKmRlY19jdHg7Cj4+ICvCoMKgwqDCoCBzdHJ1 Y3QgYW1sX3ZkZWNfaHcgKmRlY19odzsKPj4gK8KgwqDCoMKgIGNvbnN0IHN0cnVjdCBhbWxfZGV2 X3BsYXRmb3JtX2RhdGEgKnB2ZGVjX2RhdGE7Cj4+ICsKPj4gK8KgwqDCoMKgIHN0cnVjdCBtdXRl eCBkZXZfbXV0ZXg7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgZmlsZSAqZmlscDsKPj4gK307Cj4+ICsK Pj4gKy8qKgo+PiArICogc3RydWN0IGRlY19waWNfaW5mbyAtIHBpYyBpbmZvcm1hdGlvbiBkZXNj cmlwdGlvbgo+PiArICogQGNvbG9yc3BhY2U6IGVudW0gdjRsMl9jb2xvcnNwYWNlOyBzdXBwbGVt ZW50YWwgdG8gcGl4ZWxmb3JtYXQKPj4gKyAqIEB5Y2Jjcl9lbmM6IGVudW0gdjRsMl95Y2Jjcl9l bmNvZGluZywgWSdDYkNyIGVuY29kaW5nCj4+ICsgKiBAeGZlcl9mdW5jOiBlbnVtIHY0bDJfeGZl cl9mdW5jLCBjb2xvcnNwYWNlIHRyYW5zZmVyIGZ1bmN0aW9uCj4+ICsgKiBAcXVhbnRpemF0aW9u OiBlbnVtIHY0bDJfcXVhbnRpemF0aW9uLCBjb2xvcnNwYWNlIHF1YW50aXphdGlvbgo+PiArICog QGNhcF9waXhfZm10OiBQaXhlbCBmb3JtYXQgZm9yIGNhcHR1cmUgcXVldWUuCj4+ICsgKiBAb3V0 cHV0X3BpeF9mbXQ6IFBpeGVsIGZvcm1hdCBmb3Igb3V0cHV0IHF1ZXVlLgo+PiArICogQGNvZGVk X3dpZHRoOiBXaWR0aCBmb3IgZGVjb2RlLgo+PiArICogQGNvZGVkX2hlaWdodDogSGVpZ2h0IGZv ciBkZWNvZGUuCj4+ICsgKiBAZmJfc2l6ZTogRnJhbWUgYnVmZmVyIHNpemUgZm9yIFkgb3IgVVYu Cj4+ICsgKiBAcGxhbmVfbnVtOiBOdW0gZm9yIHBsYW5lcyBmb3IgY3VyciBmb3JtYXQuCj4+ICsg Ki8KPj4gK3N0cnVjdCBkZWNfcGljX2luZm8gewo+PiArwqDCoMKgwqAgZW51bSB2NGwyX2NvbG9y c3BhY2UgY29sb3JzcGFjZTsKPj4gK8KgwqDCoMKgIGVudW0gdjRsMl95Y2Jjcl9lbmNvZGluZyB5 Y2Jjcl9lbmM7Cj4+ICvCoMKgwqDCoCBlbnVtIHY0bDJfeGZlcl9mdW5jIHhmZXJfZnVuYzsKPj4g K8KgwqDCoMKgIGVudW0gdjRsMl9xdWFudGl6YXRpb24gcXVhbnRpemF0aW9uOwo+PiArwqDCoMKg wqAgdTMyIGNhcF9waXhfZm10Owo+PiArwqDCoMKgwqAgdTMyIG91dHB1dF9waXhfZm10Owo+PiAr wqDCoMKgwqAgdTMyIGNvZGVkX3dpZHRoOwo+PiArwqDCoMKgwqAgdTMyIGNvZGVkX2hlaWdodDsK Pj4gK8KgwqDCoMKgIHUzMiBmYl9zaXplWzJdOwo+PiArwqDCoMKgwqAgdTMyIHBsYW5lX251bTsK Pj4gK307Cj4+ICsKPj4gKy8qKgo+PiArICogc3RydWN0IGFtbF92ZGVjX2N0eCAtIGRyaXZlciBp bnN0YW5jZSBjb250ZXh0Cj4+ICsgKiBAZGV2OiBwb2ludGVyIHRvIHRoZSBhbWxfdmRlY19kZXYg b2YgdGhlIGRldmljZS4KPj4gKyAqIEBmaDogc3RydWN0IHY0bDIgZmguCj4+ICsgKiBAbTJtX2N0 eDogcG9pbnRlciB0byB2NGwyX20ybV9jdHggY29udGV4dC4KPj4gKyAqIEBjdHJsX2hhbmRsZXI6 IFY0TDIgY3RybCBoYW5kbGVyLgo+PiArICogQHY0bDJfaW50Zl9sb2NrOiBNdXRleCBsb2NrIGZv ciB2NGwyIGludGVyZmFjZS4KPj4gKyAqIEBjb2RlY19vcHM6IENvZGVjIG9wZXJhdGlvbiBmdW5j dGlvbnMuIFNlZSBzdHJ1Y3QgYW1sX2NvZGVjX29wcy4KPj4gKyAqIEBpbnRfY29uZDogVmFyaWFi bGUgdXNlZCBieSB0aGUgd2FpdHF1ZXVlLgo+PiArICogQHF1ZXVlOiBXYWl0cXVldWUgdG8gd2Fp dCBmb3IgdGhlIGN1cnJlbnQgZGVjb2RlIGNvbnRleHQgZmluaXNoLgo+PiArICogQHFfZGF0YTog ZmVhdHVyZSBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgZGVjb2RlciBpbnN0YW5jZS4KPj4gKyAq IEBpc19jYXBfc3RyZWFtb246IGluZGljYXRlcyBpZiB0aGUgY3VycmVudCBjYXB0dXJlIHN0cmVh bSBpcyBvbi4KPj4gKyAqIEBpc19vdXRwdXRfc3RyZWFtb246IGluZGljYXRlcyBpZiB0aGUgY3Vy cmVudCBvdXRwdXQgc3RyZWFtIGlzIG9uLgo+PiArICogQGRvc19jbGtfZW46IGluZGljYXRlcyBp ZiBkb3MgY2xrIGlzIGVuYWJsZWQuCj4+ICsgKiBAcGljX2luZm86IFBpYyBpbmZvcm1hdGlvbiBm b3IgY3VyciBkZWNvZGVyIGNvbnRleHQuIFNlZSBzdHJ1Y3QgCj4+IGRlY19waWNfaW5mby4KPj4g KyAqIEBjdXJyX2RlY190eXBlOiBDdXJyZW50IGRlY29kZXIgdHlwZS4gKENPREVDX1RZUEVfSDI2 NCwgZXRjLikKPj4gKyAqIEBjb2RlY19wcml2OiBQb2ludGVyIHRvIGN1cnJlbnQgZGVjb2RlciBp bnN0YW5jZS4KPj4gKyAqLwo+PiArc3RydWN0IGFtbF92ZGVjX2N0eCB7Cj4+ICvCoMKgwqDCoCBz dHJ1Y3QgYW1sX3ZkZWNfZGV2ICpkZXY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9maCBmaDsK Pj4gK8KgwqDCoMKgIHN0cnVjdCB2NGwyX20ybV9jdHggKm0ybV9jdHg7Cj4+ICvCoMKgwqDCoCBz dHJ1Y3QgdjRsMl9jdHJsX2hhbmRsZXIgY3RybF9oYW5kbGVyOwo+PiArwqDCoMKgwqAgc3RydWN0 IG11dGV4IHY0bDJfaW50Zl9sb2NrOwo+PiArCj4+ICvCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgYW1s X2NvZGVjX29wcyAqY29kZWNfb3BzOwo+PiArwqDCoMKgwqAgaW50IGludF9jb25kOwo+PiArwqDC oMKgwqAgd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX3Ff ZGF0YSBxX2RhdGFbMl07Cj4+ICsKPj4gK8KgwqDCoMKgIGJvb2wgaXNfY2FwX3N0cmVhbW9uOwo+ PiArwqDCoMKgwqAgYm9vbCBpc19vdXRwdXRfc3RyZWFtb247Cj4+ICvCoMKgwqDCoCBib29sIGRv c19jbGtfZW47Cj4+ICsKPj4gK8KgwqDCoMKgIHN0cnVjdCBkZWNfcGljX2luZm8gcGljX2luZm87 Cj4+ICvCoMKgwqDCoCB1MzIgY3Vycl9kZWNfdHlwZTsKPj4gK8KgwqDCoMKgIHZvaWQgKmNvZGVj X3ByaXY7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBhbWxfdmRlY19jdHgg KmZoX3RvX2RlY19jdHgoc3RydWN0IHY0bDJfZmggKmZoKQo+PiArewo+PiArwqDCoMKgwqAgcmV0 dXJuIGNvbnRhaW5lcl9vZihmaCwgc3RydWN0IGFtbF92ZGVjX2N0eCwgZmgpOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBhbWxfdmRlY19jdHggKmN0cmxfdG9fZGVjX2N0eChz dHJ1Y3QgCj4+IHY0bDJfY3RybF9oYW5kbGVyICpjdHJsKQo+PiArewo+PiArwqDCoMKgwqAgcmV0 dXJuIGNvbnRhaW5lcl9vZihjdHJsLCBzdHJ1Y3QgYW1sX3ZkZWNfY3R4LCBjdHJsX2hhbmRsZXIp Owo+PiArfQo+PiArCj4+ICsjZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2h3LmMgCj4+IGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfaHcuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PiBpbmRleCAwMDAwMDAwMDAwMDAuLjRkYjBlMzA3Njc2MQo+PiAtLS0gL2Rldi9udWxsCj4+ICsr KyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2h3LmMKPj4g QEAgLTAsMCArMSw2NTIgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIu MC1vbmx5IE9SIE1JVCkKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgQW1sb2dpYywg SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4 L2ludGVycnVwdC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L29mLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8 bGludXgvb2ZfcGxhdGZvcm0uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4+ ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+ Cj4+ICsKPj4gKyNpbmNsdWRlICJhbWxfdmRlY19kcnYuaCIKPj4gKyNpbmNsdWRlICJhbWxfdmRl Y19ody5oIgo+PiArI2luY2x1ZGUgImFtbF92ZGVjX3BsYXRmb3JtLmgiCj4+ICsjaW5jbHVkZSAi YW1sX3ZkZWNfY2FudmFzX3V0aWxzLmgiCj4+ICsKPj4gKyNkZWZpbmUgTUh6wqDCoMKgwqAgKDEw MDAwMDApCj4+ICsjZGVmaW5lIE1DX1NJWkUgKDQwOTYgKiAxNikKPj4gKwo+PiArc3RhdGljIHZv aWQgX19pb21lbSAqcmVnX2Jhc2VbTUFYX1JFR19CVVNdOwo+PiArCj4+ICtzdGF0aWMgc3RydWN0 IHBtX3BkX3MgdmRlY19kb21haW5fZGF0YVtdID0gewo+PiArwqDCoMKgwqAgW1ZERUNfMV0gPSB7 Lm5hbWUgPSAicHdyYy12ZGVjIiwgfSwKPj4gK8KgwqDCoMKgIFtWREVDX0hFVkNdID0gey5uYW1l ID0gInB3cmMtaGV2YyIsIH0sCj4+ICt9Owo+PiArCj4+ICt1MzIgcmVhZF9kb3NfcmVnKHUzMiBh ZGRyKQo+PiArewo+PiArwqDCoMKgwqAgcmV0dXJuIHJlYWRsKHJlZ19iYXNlW0RPU19CVVNdICsg KGFkZHIgPDwgMikpOwo+PiArfQo+PiArCj4+ICt2b2lkIHdyaXRlX2Rvc19yZWcodTMyIGFkZHIs IGludCB2YWwpCj4+ICt7Cj4+ICvCoMKgwqDCoCB3cml0ZWwodmFsLCByZWdfYmFzZVtET1NfQlVT XSArIChhZGRyIDw8IDIpKTsKPj4gK30KPj4gKwo+PiArdTMyIHJlYWRfZG1jX3JlZyh1MzIgYWRk cikKPj4gK3sKPj4gK8KgwqDCoMKgIHJldHVybiByZWFkbChyZWdfYmFzZVtETUNfQlVTXSArIChh ZGRyIDw8IDIpKTsKPj4gK30KPj4gKwo+PiArdm9pZCB3cml0ZV9kbWNfcmVnKHUzMiBhZGRyLCBp bnQgdmFsKQo+PiArewo+PiArwqDCoMKgwqAgd3JpdGVsKHZhbCwgcmVnX2Jhc2VbRE1DX0JVU10g KyAoYWRkciA8PCAyKSk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZG9zX3JlZ19zZXRfbWFzayh1MzIg YWRkciwgdTMyIG1hc2spCj4+ICt7Cj4+ICvCoMKgwqDCoCB1MzIgcjsKPj4gKwo+PiArwqDCoMKg wqAgciA9IHJlYWRfZG9zX3JlZyhhZGRyKTsKPj4gK8KgwqDCoMKgIHdyaXRlX2Rvc19yZWcoYWRk ciwgKHIgfCBtYXNrKSk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZG9zX3JlZ19jbGVhcl9tYXNrKHUz MiBhZGRyLCB1MzIgbWFzaykKPj4gK3sKPj4gK8KgwqDCoMKgIHUzMiByOwo+PiArCj4+ICvCoMKg wqDCoCByID0gcmVhZF9kb3NfcmVnKGFkZHIpOwo+PiArwqDCoMKgwqAgd3JpdGVfZG9zX3JlZyhh ZGRyLCAociAmICh+bWFzaykpKTsKPj4gK30KPj4gKwo+PiArdm9pZCBkb3NfcmVnX3dyaXRlX2Jp dHModTMyIHJlZywgdTMyIHZhbCwgaW50IHN0YXJ0LCBpbnQgbGVuKQo+PiArewo+PiArwqDCoMKg wqAgdTMyIHRvX3ZhbCA9IHJlYWRfZG9zX3JlZyhyZWcpOwo+PiArwqDCoMKgwqAgdTMyIG1hc2sg PSAoKCgxTCA8PCAobGVuKSkgLSAxKSA8PCAoc3RhcnQpKTsKPj4gKwo+PiArwqDCoMKgwqAgdG9f dmFsICY9IH5tYXNrOwo+PiArwqDCoMKgwqAgdG9fdmFsIHw9ICh2YWwgPDwgc3RhcnQpICYgbWFz azsKPj4gK8KgwqDCoMKgIHdyaXRlX2Rvc19yZWcocmVnLCB0b192YWwpOwo+PiArfQo+Cj4gRG8g bm90IHJlaW52ZW50IHJlZ2lzdGVyIHdyaXR0aW5nLCB1c2UgcmVnbWFwIGZvciBhbGwgdGhhdC4K T2ssIEknbGwgdXNlIHJlZ21hcCBpbnN0ZWFkIG9mIGN1c3RvbSByZWdpc3RlciBJL08gZnVuY3Rp b24uCj4KPj4gKwo+PiArdm9pZCBkb3NfZW5hYmxlKHZvaWQpCj4+ICt7Cj4+ICvCoMKgwqDCoCBX UklURV9WUkVHX0JJVFMoRE9TX0dDTEtfRU4wLCAweDNmZiwgMCwgMTApOwo+PiArCj4+ICvCoMKg wqDCoCBXUklURV9WUkVHKEdDTEtfRU4sIDB4M2ZmKTsKPj4gKwo+PiArwqDCoMKgwqAgQ0xFQVJf VlJFR19NQVNLKE1ERUNfUElDX0RDX0NUUkwsICgxIDw8IDMxKSk7Cj4+ICt9Cj4+ICsKPj4gK3Zv aWQgYW1sX3ZkZWNfcmVzZXRfY29yZSh2b2lkKQo+PiArewo+PiArwqDCoMKgwqAgdW5zaWduZWQg aW50IG1hc2sgPSAwOwo+PiArCj4+ICvCoMKgwqDCoCBtYXNrID0gKDEgPDwgMjEpOwo+PiArCj4+ ICvCoMKgwqDCoCB3cml0ZV9kbWNfcmVnKDB4MCwgKHJlYWRfZG1jX3JlZygweDApICYgfm1hc2sp KTsKPj4gK8KgwqDCoMKgIHVzbGVlcF9yYW5nZSg2MCwgNzApOwo+PiArwqDCoMKgwqAgV1JJVEVf VlJFRyhET1NfU1dfUkVTRVQwLCAoMSA8PCAzKSB8ICgxIDw8IDQpIHwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCA1KSB8ICgxIDw8IDcpIHwgKDEgPDwgOCkgfCAoMSA8 PCA5KSk7Cj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKERPU19TV19SRVNFVDAsIDApOwo+PiArwqDC oMKgwqAgQ0xFQVJfVlJFR19NQVNLKFZERUNfQVNTSVNUX01NQ19DVFJMMSwgMSA8PCAzKTsKPj4g K8KgwqDCoMKgIENMRUFSX1ZSRUdfTUFTSyhNREVDX1BJQ19EQ19NVVhfQ1RSTCwgMSA8PCAzMSk7 Cj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKE1ERUNfRVhUSUZfQ0ZHMSwgMCk7Cj4+ICsKPj4gK8Kg wqDCoMKgIHdyaXRlX2RtY19yZWcoMHgwLCAocmVhZF9kbWNfcmVnKDB4MCkgfCBtYXNrKSk7Cj4+ ICt9Cj4+ICsKPj4gK3ZvaWQgYW1sX3N0YXJ0X3ZkZWNfaHcodm9pZCkKPj4gK3sKPj4gK8KgwqDC oMKgIFJEX1ZSRUcoRE9TX1NXX1JFU0VUMCk7Cj4+ICvCoMKgwqDCoCBSRF9WUkVHKERPU19TV19S RVNFVDApOwo+PiArwqDCoMKgwqAgUkRfVlJFRyhET1NfU1dfUkVTRVQwKTsKPj4gKwo+PiArwqDC oMKgwqAgV1JJVEVfVlJFRyhET1NfU1dfUkVTRVQwLCAoMSA8PCAxMikgfCAoMSA8PCAxMSkpOwo+ PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhET1NfU1dfUkVTRVQwLCAwKTsKPj4gKwo+PiArwqDCoMKg wqAgUkRfVlJFRyhET1NfU1dfUkVTRVQwKTsKPj4gK8KgwqDCoMKgIFJEX1ZSRUcoRE9TX1NXX1JF U0VUMCk7Cj4+ICvCoMKgwqDCoCBSRF9WUkVHKERPU19TV19SRVNFVDApOwo+PiArCj4+ICvCoMKg wqDCoCBXUklURV9WUkVHKE1QU1IsIDB4MDAwMSk7Cj4KPiBUaGlzIGlzIGJhc2lsbHkgY29wdXkg b2YgZG93bnN0cmVhbSBjb2RlLCB1c2UgcHJvcGVyIHJlZ2lzdGVyIHdyaXRpbmcKPiBmdW5jdGlv bnMgYW5kIHN0b3AgdXNpbmcgZG93bnN0cmVhbSBtYWNyb3MuCkdvdCBpdC4gSSdsbCByZXBsYWNl IGFsbCB0aGVzZSBmdW5jdGlvbiB3aXRoIHByb3BlciBmdW5jdGlvbnMuCj4KPj4gK30KPj4gKwo+ PiArdm9pZCBhbWxfc3RvcF92ZGVjX2h3KHZvaWQpCj4+ICt7Cj4+ICvCoMKgwqDCoCB1bG9uZyB0 aW1lb3V0ID0gamlmZmllcyArIEhaIC8gMTA7Cj4+ICsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUco TVBTUiwgMCk7Cj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKENQU1IsIDApOwo+PiArCj4+ICvCoMKg wqDCoCB3aGlsZSAoUkRfVlJFRyhJTUVNX0RNQV9DVFJMKSAmIDB4ODAwMCkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDC oMKgIH0KPgo+IFVzZSByZWFkX3BvbGxfdGltZW91dCgpIG9yIGFueSB2YXJpYW50IGluc3RlYWQg b2YgcmUtaW52ZW50aWcgcG9sbGluZy4gCk9rLCBJJ2xsIGZpeCB0aGlzLgo+PiArCj4+ICvCoMKg wqDCoCB0aW1lb3V0ID0gamlmZmllcyArIEhaIC8gMTA7Cj4+ICvCoMKgwqDCoCB3aGlsZSAoUkRf VlJFRyhMTUVNX0RNQV9DVFJMKSAmIDB4ODAwMCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiAr wqDCoMKgwqAgdGltZW91dCA9IGppZmZpZXMgKyBIWiAvIDgwOwo+PiArwqDCoMKgwqAgd2hpbGUg KFJEX1ZSRUcoV1JSU1BfTE1FTSkgJiAweGZmZikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiJXMsIGN0cmwgJXgsIHJzcCAleCwg cGMgJXggc3RhdHVzIAo+PiAleCwleFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywgUkRfVlJFRyhMTUVNX0RNQV9D VFJMKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBSRF9WUkVHKFdSUlNQX0xNRU0pLCBSRF9WUkVHKE1QQ19FKSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSRF9WUkVHKEFW X1NDUkFUQ0hfSiksIAo+PiBSRF9WUkVHKEFWX1NDUkFUQ0hfOSkpOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIFJEX1ZSRUcoRE9TX1NX X1JFU0VUMCk7Cj4+ICvCoMKgwqDCoCBSRF9WUkVHKERPU19TV19SRVNFVDApOwo+PiArwqDCoMKg wqAgUkRfVlJFRyhET1NfU1dfUkVTRVQwKTsKPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhE T1NfU1dfUkVTRVQwLCAoMSA8PCAxMikgfCAoMSA8PCAxMSkpOwo+PiArwqDCoMKgwqAgV1JJVEVf VlJFRyhET1NfU1dfUkVTRVQwLCAwKTsKPj4gKwo+PiArwqDCoMKgwqAgUkRfVlJFRyhET1NfU1df UkVTRVQwKTsKPj4gK8KgwqDCoMKgIFJEX1ZSRUcoRE9TX1NXX1JFU0VUMCk7Cj4+ICvCoMKgwqDC oCBSRF9WUkVHKERPU19TV19SRVNFVDApOwo+PiArfQo+PiArCj4+ICtpbnQgbG9hZF9maXJtd2Fy ZShzdHJ1Y3QgYW1sX3ZkZWNfaHcgKmh3LCBjb25zdCBjaGFyICpwYXRoKQo+PiArewo+PiArwqDC oMKgwqAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKPj4gK8KgwqDCoMKgIHN0cnVjdCBkZXZp Y2UgKmRldiA9IGh3LT5kZXY7Cj4+ICvCoMKgwqDCoCBzdGF0aWMgdTggKm1jX2FkZHI7Cj4+ICvC oMKgwqDCoCBzdGF0aWMgZG1hX2FkZHJfdCBtY19hZGRyX21hcDsKPj4gK8KgwqDCoMKgIGludCBm d19oZWFkX2xlbjsKPj4gK8KgwqDCoMKgIHVsb25nIHRpbWVvdXQ7Cj4+ICvCoMKgwqDCoCBpbnQg cmV0Owo+PiArCj4+ICvCoMKgwqDCoCByZXQgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgcGF0aCwg ZGV2KTsKPj4gK8KgwqDCoMKgIGlmIChyZXQgPCAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcHJfaW5mbygicmVxdWVzdF9maXJtd2FyZSAlcyBmYWlsZWQgcmV0ICVkXG4iLCBwYXRo LCByZXQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiAr wqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCBpZiAoZnctPnNpemUgPiBNQ19TSVpFKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfaW5mbygiZncgJXMgb3ZlcnNpemVcbiIsIHBh dGgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byByZWxlYXNlX2Zpcm13YXJlOwo+PiArwqDCoMKgwqAg fQo+PiArCj4+ICvCoMKgwqDCoCBmd19oZWFkX2xlbiA9IDUxMjsKPj4gK8KgwqDCoMKgIG1jX2Fk ZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBNQ19TSVpFLCAmbWNfYWRkcl9tYXAsIAo+PiBH RlBfS0VSTkVMKTsKPj4gK8KgwqDCoMKgIGlmICghbWNfYWRkcikgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHByX2luZm8oIm5vIG1lbSBmb3IgZncgJXNcbiIsIHBhdGgpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ290byByZWxlYXNlX2Zpcm13YXJlOwo+PiArwqDCoMKgwqAgfQo+PiArwqDCoMKg wqAgbWVtc2V0KG1jX2FkZHIsIDAsIE1DX1NJWkUpOwo+PiArwqDCoMKgwqAgbWVtY3B5KG1jX2Fk ZHIsICgodTggKilmdy0+ZGF0YSArIGZ3X2hlYWRfbGVuKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKGZ3LT5zaXplIC0gZndfaGVhZF9sZW4pKTsKPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVf VlJFRyhNUFNSLCAwKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoQ1BTUiwgMCk7Cj4+ICsKPj4g K8KgwqDCoMKgIHRpbWVvdXQgPSBSRF9WUkVHKE1QU1IpOwo+PiArwqDCoMKgwqAgdGltZW91dCA9 IFJEX1ZSRUcoTVBTUik7Cj4+ICvCoMKgwqDCoCB0aW1lb3V0ID0gamlmZmllcyArIEhaOwo+PiAr Cj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKElNRU1fRE1BX0FEUiwgbWNfYWRkcl9tYXApOwo+PiAr wqDCoMKgwqAgV1JJVEVfVlJFRyhJTUVNX0RNQV9DT1VOVCwgMHgxMDAwKTsKPj4gK8KgwqDCoMKg IFdSSVRFX1ZSRUcoSU1FTV9ETUFfQ1RSTCwgKDB4ODAwMCB8ICg3IDw8IDE2KSkpOwo+PiArCj4+ ICvCoMKgwqDCoCB3aGlsZSAoUkRfVlJFRyhJTUVNX0RNQV9DVFJMKSAmIDB4ODAwMCkgewo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0 KSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzY2hlZHVs ZSgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oInZkZWMgbG9hZCBtYyBlcnJv clxuIik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IC1FQlVTWTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgfQo+PiArCj4+ ICvCoMKgwqDCoCAvKiBPbmx5IGgyNjQgbmVlZHMgdGhpcyBzdGVwICovCj4+ICvCoMKgwqDCoCBp ZiAoaHctPmh3X29wcy5sb2FkX2Zpcm13YXJlX2V4KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0ID0gaHctPmh3X29wcy5sb2FkX2Zpcm13YXJlX2V4KGh3LT5jdXJyX2N0eCwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1jX2FkZHIsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZnctPnNpemUgLSAKPj4gZndfaGVhZF9sZW4p KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZyZWVfZG1hX21lbTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK2Zy ZWVfZG1hX21lbToKPj4gK8KgwqDCoMKgIGRtYV9mcmVlX2NvaGVyZW50KGRldiwgTUNfU0laRSwg bWNfYWRkciwgbWNfYWRkcl9tYXApOwo+PiArcmVsZWFzZV9maXJtd2FyZToKPj4gK8KgwqDCoMKg IHJlbGVhc2VfZmlybXdhcmUoZncpOwo+PiArwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludCB2ZGVjX2Nsb2NrX2dhdGVfaW5pdChzdHJ1Y3QgYW1sX3ZkZWNfaHcg Kmh3KQo+PiArewo+PiArwqDCoMKgwqAgaW50IGk7Cj4+ICsKPj4gK8KgwqDCoMKgIGh3LT5nYXRl c1tWREVDXS5uYW1lID0gInZkZWMiOwo+PiArwqDCoMKgwqAgaHctPmdhdGVzW1ZERUNfTVVYXS5u YW1lID0gImNsa192ZGVjX211eCI7Cj4+ICvCoMKgwqDCoCBody0+Z2F0ZXNbSEVWQ0ZfTVVYXS5u YW1lID0gImNsa19oZXZjZl9tdXgiOwo+PiArCj4+ICvCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwg RE9TX0NMS19NQVg7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3LT5nYXRl c1tpXS5jbGsgPSBkZXZtX2Nsa19nZXQoaHctPmRldiwgCj4+IGh3LT5nYXRlc1tpXS5uYW1lKTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBody0+Z2F0ZXNbaV0ucmVmX2NvdW50ID0gMDsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF9pbml0KCZody0+Z2F0ZXNbaV0ubXV0 ZXgpOwo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludCB2ZGVjX2dhdGVfY2xrKHN0cnVjdCBnYXRlX3N3aXRjaF9ub2RlICpn YXRlX25vZGUsIGJvb2wgCj4+IGVuYWJsZSkKPj4gK3sKPj4gK8KgwqDCoMKgIGludCByZXQgPSAw Owo+PiArCj4+ICvCoMKgwqDCoCBtdXRleF9sb2NrKCZnYXRlX25vZGUtPm11dGV4KTsKPj4gK8Kg wqDCoMKgIGlmIChlbmFibGUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnYXRlX25v ZGUtPnJlZl9jb3VudCsrOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChnYXRlX25v ZGUtPnJlZl9jb3VudCA9PSAxKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShnYXRlX25vZGUtPmNsayk7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCJ0aGUgJS0x NXMgY2xvY2sgb24sIHJlZiBjbnQ6ICVkIHJldCA9IAo+PiAlZFxuIiwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2F0ZV9ub2Rl LT5uYW1lLCBnYXRlX25vZGUtPnJlZl9jb3VudCwgCj4+IHJldCk7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBnYXRlX25vZGUtPnJlZl9jb3VudC0tOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICghZ2F0ZV9ub2RlLT5yZWZfY291bnQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGdhdGVfbm9kZS0+Y2xr KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWco InRoZSAlLTE1cyBjbG9jayBvZmYsIHJlZiBjbnQ6ICVkIHJldCAKPj4gPSAlZFxuIiwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z2F0ZV9ub2RlLT5uYW1lLCBnYXRlX25vZGUtPnJlZl9jb3VudCwgCj4+IHJldCk7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgbXV0ZXhf dW5sb2NrKCZnYXRlX25vZGUtPm11dGV4KTsKPj4gKwo+PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdmRlY19zd2l0Y2hfZ2F0ZShzdHJ1Y3QgYW1sX3ZkZWNf aHcgKmh3LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZW5hYmxlKQo+PiArewo+PiArwqDCoMKgwqAgaW50 IGk7Cj4+ICsKPj4gK8KgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBET1NfQ0xLX01BWDsgaSsrKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFzdHJjbXAobmFtZSwgaHctPmdhdGVz W2ldLm5hbWUpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChody0+Z2F0ZXNbaV0uY2xrKQo+PiArIHZkZWNfZ2F0ZV9jbGsoJmh3LT5nYXRlc1tpXSwg ZW5hYmxlKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZWxz ZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiAr wqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBp bnQgdmRlY19zZXRfcmF0ZShzdHJ1Y3QgYW1sX3ZkZWNfaHcgKmh3LAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVk IGxvbmcgaHopCj4+ICt7Cj4+ICvCoMKgwqDCoCBpbnQgaTsKPj4gKwo+PiArwqDCoMKgwqAgZm9y IChpID0gMDsgaSA8IERPU19DTEtfTUFYOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAoIXN0cmNtcChuYW1lLCBody0+Z2F0ZXNbaV0ubmFtZSkpIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGh3LT5nYXRlc1tpXS5jbGsgJiYg aHctPmdhdGVzW2ldLnJlZl9jb3VudCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrX3NldF9yYXRlKGh3LT5nYXRlc1tpXS5j bGssIGh6KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHByX2RlYnVnKCJhZnRlciBzZXQsIHZkZWMgbXV4IGNsb2NrIGlzIAo+PiAl bHUgSHpcbiIsCj4+ICsgY2xrX2dldF9yYXRlKGh3LT5nYXRlc1tpXS5jbGspKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAt RU5PREVWOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAgfQo+PiArwqDCoMKgwqAg cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHBtX3ZkZWNfY2xvY2tfc3dpdGNo KHN0cnVjdCBhbWxfdmRlY19odyAqaHcsIGludCBpZCwgCj4+IGJvb2wgb24pCj4+ICt7Cj4+ICvC oMKgwqDCoCBpbnQgcmV0ID0gMDsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKGlkID09IFZERUNfMSkg ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHZkZWNfc3dpdGNoX2dhdGUoaHcs ICJjbGtfdmRlY19tdXgiLCBvbik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmRlY19z ZXRfcmF0ZShodywgImNsa192ZGVjX211eCIsIDQ5OTk5OTk5Mik7Cj4+ICvCoMKgwqDCoCB9IGVs c2UgaWYgKGlkID09IFZERUNfSEVWQykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8q IGVuYWJsZSBoZXZjIGNsb2NrICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0g dmRlY19zd2l0Y2hfZ2F0ZShodywgImNsa19oZXZjZl9tdXgiLCBvbik7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKHJldCA9PSAtRU5PREVWKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSB2ZGVjX3N3aXRjaF9nYXRlKGh3LCAiY2xrX2hl dmNfbXV4Iiwgb24pOwo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCBpZiAocmV0IDwg MCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiY2xrICVkLCB1bnJlYWNo YWJsZSByZXQgJWRcbiIsIGlkLCByZXQpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBwbV92 ZGVjX3Bvd2VyX3N3aXRjaChzdHJ1Y3QgcG1fcGRfcyAqcGQsIGludCBpZCwgYm9vbCBvbikKPj4g K3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldiA9IHBkW2lkXS5kZXY7Cj4+ICvCoMKg wqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqDCoCBpZiAoIWRldikgewo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCJubyBkZXYgJWQsIG1heWJlIGFsd2F5cyBvblxuIiwg aWQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoMKgIH0K Pj4gKwo+PiArwqDCoMKgwqAgaWYgKG9uKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsKPj4gK8KgwqDCoMKgIGVsc2UKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7Cj4+ICsK Pj4gK8KgwqDCoMKgIHByX2RlYnVnKCJkZXY6ICVwIGxpbmsgJXAgdGhlICUtMTVzIHBvd2VyICVz IHJldCAlZFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldiwgcGRbaWRdLmxp bmssIHBkW2lkXS5uYW1lLCBvbiA/ICJvbiIgOiAib2ZmIiwgcmV0KTsKPj4gK30KPgo+IFRob3Nl cyBoZWxwZXJzIGZ1bmN0aW9ucyBhcmUgcXVpdGUgb3ZlcmVuZ2luZWVyZWQgYW5kIG9ubHkgdXNl ZCBpbiAyIAo+IGZ1bmN0aW9ucywKPiBqdXN0IGNhbGwgcG1fcnVudGltZV9YWFgsIGNsa19YWFgg ZnVuY3Rpb25zIGRpcmVjdGx5Li4uCk9LLCB0aGlzIGNhbiBiZSBzaW1wbGlmaWVkLiBJJ2xsIGdl dCByaWQgb2YgaXQgYW5kIHVzZSBwbV9ydW50aW1lX1hYWCwgCmNsa19YWFgKZnVuY3Rpb25zIGlu c3RlYWQuCj4KPj4gKwo+PiArc3RhdGljIGludCBwbV92ZGVjX3Bvd2VyX2RvbWFpbl9pbml0KHN0 cnVjdCBhbWxfdmRlY19odyAqaHcpCj4+ICt7Cj4+ICvCoMKgwqDCoCBpbnQgaSwgZXJyOwo+PiAr wqDCoMKgwqAgY29uc3Qgc3RydWN0IHBvd2VyX21hbmFnZXJfcyAqcG0gPSBody0+cG07Cj4+ICvC oMKgwqDCoCBzdHJ1Y3QgcG1fcGRfcyAqcGQgPSBwbS0+cGRfZGF0YTsKPj4gKwo+PiArwqDCoMKg wqAgbXV0ZXhfaW5pdCgmaHctPnBtX211dGV4KTsKPj4gKwo+PiArwqDCoMKgwqAgZm9yIChpID0g MDsgaSA8IFZERUNfTUFYOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwZFtp XS5kZXYgPSBkZXZfcG1fZG9tYWluX2F0dGFjaF9ieV9uYW1lKGh3LT5kZXYsIAo+PiBwZFtpXS5u YW1lKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoSVNfRVJSX09SX05VTEwocGRb aV0uZGV2KSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl cnIgPSBQVFJfRVJSKHBkW2ldLmRldik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHByX2RlYnVnKCJHZXQgJXMgZmFpbGVkLCBwbS1kb21haW46ICVkXG4iLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwZFtpXS5uYW1lLCBlcnIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwZFtpXS5saW5rID0gZGV2aWNlX2xpbmtfYWRk KGh3LT5kZXYsIHBkW2ldLmRldiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRExfRkxB R19QTV9SVU5USU1FIHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRExfRkxBR19TVEFU RUxFU1MpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChJU19FUlJfT1JfTlVMTChw ZFtpXS5saW5rKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBwcl9lcnIoIkFkZGluZyAlcyBkZXZpY2UgbGluayBmYWlsZWQhXG4iLCAKPj4gcGRbaV0ubmFt ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAt RU5PREVWOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCJwb3dlciBkb21haW46IG5hbWU6ICVzLCBkZXY6ICVw LCBsaW5rOiAlcFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwZFtpXS5uYW1lLCBwZFtpXS5kZXYsIHBkW2ldLmxpbmspOwo+PiArwqDCoMKgwqAgfQo+ PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgcG1f dmRlY19wb3dlcl9kb21haW5fcmVsZWFzZShzdHJ1Y3QgYW1sX3ZkZWNfaHcgKmh3KQo+PiArewo+ PiArwqDCoMKgwqAgaW50IGk7Cj4+ICvCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgcG93ZXJfbWFuYWdl cl9zICpwbSA9IGh3LT5wbTsKPj4gK8KgwqDCoMKgIHN0cnVjdCBwbV9wZF9zICpwZCA9IHBtLT5w ZF9kYXRhOwo+PiArCj4+ICvCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgVkRFQ19NQVg7IGkrKykg ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghSVNfRVJSX09SX05VTEwocGRbaV0u bGluaykpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldmlj ZV9saW5rX2RlbChwZFtpXS5saW5rKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmICghSVNfRVJSX09SX05VTEwocGRbaV0uZGV2KSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X3BtX2RvbWFpbl9kZXRhY2gocGRbaV0uZGV2LCB0cnVl KTsKPj4gK8KgwqDCoMKgIH0KPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZG9zX2xvY2FsX2Nv bmZpZyhib29sIGlzX29uLCBpbnQgaWQpCj4+ICt7Cj4+ICvCoMKgwqDCoCBpZiAoaXNfb24pIHsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2xlZXBfcmFuZ2UoMjAsIDEwMCk7Cj4+ICsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKGlkKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2FzZSBWREVDXzE6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZSRUcoRE9TX01FTV9QRF9WREVDLCAwKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV1JJVEVfVlJFRyhET1NfU1dfUkVT RVQwLCAweGZmZmZmZmZjKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdXNsZWVwX3JhbmdlKDIwLCAxMDApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBXUklURV9WUkVHKERPU19TV19SRVNFVDAsIDApOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2xlZXBfcmFuZ2UoMjAsIDEwMCk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZSRUco RE9TX01FTV9QRF9WREVDLCAwKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBWREVDX0hF VkM6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZS RUcoRE9TX01FTV9QRF9IRVZDLCAwKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgV1JJVEVfVlJFRyhET1NfU1dfUkVTRVQzLCAweGZmZmZmZmZmKTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXNsZWVwX3JhbmdlKDIwLCAx MDApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXUklURV9W UkVHKERPU19TV19SRVNFVDMsIDApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1c2xlZXBfcmFuZ2UoMjAsIDEwMCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZSRUcoRE9TX01FTV9QRF9IRVZDLCAwKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVmYXVsdDoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoIiVzIG9uLCBub3QgZm91bmQgaWQgJWRcbiIsIF9f ZnVuY19fLCAKPj4gaWQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCB9 IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAoaWQpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFZERUNfMToKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV1JJVEVfVlJFRyhET1NfU1dfUkVTRVQwLCAweGZmZmZm ZmZjKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXNsZWVw X3JhbmdlKDIwLCAxMDApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBXUklURV9WUkVHKERPU19TV19SRVNFVDAsIDApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2xlZXBfcmFuZ2UoMjAsIDEwMCk7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZSRUcoRE9TX01FTV9QRF9W REVDLCAweGZmZmZmZmZmVUwpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFZERUNfSEVW QzoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV1JJVEVfVlJF RyhET1NfU1dfUkVTRVQzLCAweGZmZmZmZmZmKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdXNsZWVwX3JhbmdlKDIwLCAxMDApOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXUklURV9WUkVHKERPU19TV19SRVNFVDMsIDAp Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2xlZXBfcmFu Z2UoMjAsIDEwMCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFdSSVRFX1ZSRUcoRE9TX01FTV9QRF9IRVZDLCAweGZmZmZmZmZmVUwpOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBkZWZhdWx0Ogo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBwcl9kZWJ1ZygiJXMgb2ZmLCBub3QgZm91bmQgaWQgJWRcbiIsIF9fZnVuY19fLCAK Pj4gaWQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVh azsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4g K8KgwqDCoMKgIHByX2RlYnVnKCIlcyBlbmQsIGlkICVkLCBpc19vbiAlZFxuIiwgX19mdW5jX18s IGlkLCBpc19vbik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHBtX3ZkZWNfcG93ZXJfZG9t YWluX3Bvd2VyX29uKHN0cnVjdCBhbWxfdmRlY19odyAqaHcsIAo+PiBpbnQgaWQpCj4+ICt7Cj4+ ICvCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgcG93ZXJfbWFuYWdlcl9zICpwbSA9IGh3LT5wbTsKPj4g Kwo+PiArwqDCoMKgwqAgcG1fdmRlY19jbG9ja19zd2l0Y2goaHcsIGlkLCB0cnVlKTsKPj4gK8Kg wqDCoMKgIHBtX3ZkZWNfcG93ZXJfc3dpdGNoKHBtLT5wZF9kYXRhLCBpZCwgdHJ1ZSk7Cj4+ICsK Pj4gK8KgwqDCoMKgIGRvc19sb2NhbF9jb25maWcoMSwgaWQpOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCBwbV92ZGVjX3Bvd2VyX2RvbWFpbl9wb3dlcl9vZmYoc3RydWN0IGFtbF92ZGVjX2h3 ICpodywgCj4+IGludCBpZCkKPj4gK3sKPj4gK8KgwqDCoMKgIGNvbnN0IHN0cnVjdCBwb3dlcl9t YW5hZ2VyX3MgKnBtID0gaHctPnBtOwo+PiArCj4+ICvCoMKgwqDCoCBkb3NfbG9jYWxfY29uZmln KDAsIGlkKTsKPj4gKwo+PiArwqDCoMKgwqAgcG1fdmRlY19jbG9ja19zd2l0Y2goaHcsIGlkLCBm YWxzZSk7Cj4+ICvCoMKgwqDCoCBwbV92ZGVjX3Bvd2VyX3N3aXRjaChwbS0+cGRfZGF0YSwgaWQs IGZhbHNlKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wgcG1fdmRlY19wb3dlcl9kb21haW5f cG93ZXJfc3RhdGUoc3RydWN0IGFtbF92ZGVjX2h3ICpodywgCj4+IGludCBpZCkKPj4gK3sKPj4g K8KgwqDCoMKgIGlmIChody0+cG0tPnBkX2RhdGFbaWRdLmRldikKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcG1fcnVudGltZV9hY3RpdmUoaHctPnBtLT5wZF9kYXRhW2lkXS5k ZXYpOwo+PiArwqDCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBmYWxzZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgdmRlY19wb3dlcm9uKHN0cnVjdCBh bWxfdmRlY19odyAqaHcsIGVudW0gdmRlY190eXBlX2UgY29yZSkKPj4gK3sKPj4gK8KgwqDCoMKg IGlmIChjb3JlID49IFZERUNfTUFYKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy bjsKPj4gKwo+PiArwqDCoMKgwqAgbXV0ZXhfbG9jaygmaHctPnBtX211dGV4KTsKPj4gK8KgwqDC oMKgIGlmICghaHctPnBtLT5wZF9kYXRhW2NvcmVdLmRldikKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBnb3RvIG91dDsKPj4gKwo+PiArwqDCoMKgwqAgaHctPnBtLT5wZF9kYXRhW2NvcmVd LnJlZl9jb3VudCsrOwo+PiArwqDCoMKgwqAgaWYgKGh3LT5wbS0+cGRfZGF0YVtjb3JlXS5yZWZf Y291bnQgPiAxKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiArCj4+ ICvCoMKgwqDCoCBpZiAoaHctPnBtLT5wb3dlcl9zdGF0ZShodywgY29yZSkpCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICsKPj4gK8KgwqDCoMKgIGh3LT5wbS0+cG93 ZXJfb24oaHcsIGNvcmUpOwo+PiArCj4+ICtvdXQ6Cj4+ICvCoMKgwqDCoCBtdXRleF91bmxvY2so Jmh3LT5wbV9tdXRleCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHZkZWNfcG93ZXJvZmYo c3RydWN0IGFtbF92ZGVjX2h3ICpodywgZW51bSB2ZGVjX3R5cGVfZSAKPj4gY29yZSkKPj4gK3sK Pj4gK8KgwqDCoMKgIGlmIChjb3JlID49IFZERUNfTUFYKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybjsKPj4gKwo+PiArwqDCoMKgwqAgbXV0ZXhfbG9jaygmaHctPnBtX211dGV4 KTsKPj4gK8KgwqDCoMKgIGlmIChody0+cG0tPnBkX2RhdGFbY29yZV0ucmVmX2NvdW50ID09IDAp Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICsKPj4gK8KgwqDCoMKg IGh3LT5wbS0+cGRfZGF0YVtjb3JlXS5yZWZfY291bnQtLTsKPj4gK8KgwqDCoMKgIGlmIChody0+ cG0tPnBkX2RhdGFbY29yZV0ucmVmX2NvdW50ID4gMCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIG91dDsKPj4gKwo+PiArwqDCoMKgwqAgaHctPnBtLT5wb3dlcl9vZmYoaHcsIGNv cmUpOwo+PiArCj4+ICtvdXQ6Cj4+ICvCoMKgwqDCoCBtdXRleF91bmxvY2soJmh3LT5wbV9tdXRl eCk7Cj4+ICt9Cj4+ICsKPj4gK2ludCB2ZGVjX2VuYWJsZShzdHJ1Y3QgYW1sX3ZkZWNfaHcgKmh3 KQo+PiArewo+PiArwqDCoMKgwqAgdmRlY19zd2l0Y2hfZ2F0ZShodywgInZkZWMiLCAxKTsKPj4g K8KgwqDCoMKgIHZkZWNfcG93ZXJvbihodywgVkRFQ18xKTsKPj4gKwo+PiArwqDCoMKgwqAgcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2ludCB2ZGVjX2Rpc2FibGUoc3RydWN0IGFtbF92ZGVjX2h3 ICpodykKPj4gK3sKPj4gK8KgwqDCoMKgIHZkZWNfcG93ZXJvZmYoaHcsIFZERUNfMSk7Cj4+ICvC oMKgwqDCoCB2ZGVjX3N3aXRjaF9nYXRlKGh3LCAidmRlYyIsIDApOwo+PiArCj4+ICvCoMKgwqDC oCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBwb3dlcl9tYW5h Z2VyX3MgcG1bXSA9IHsKPj4gK8KgwqDCoMKgIFtBTUxfUE1fUERdID0gewo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC5wZF9kYXRhwqDCoMKgID0gdmRlY19kb21haW5fZGF0YSwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuaW5pdMKgwqDCoMKgwqDCoMKgID0gcG1fdmRlY19wb3dl cl9kb21haW5faW5pdCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAucmVsZWFzZcKgwqDC oCA9IHBtX3ZkZWNfcG93ZXJfZG9tYWluX3JlbGVhc2UsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLnBvd2VyX29uwqDCoMKgID0gcG1fdmRlY19wb3dlcl9kb21haW5fcG93ZXJfb24sCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnBvd2VyX29mZsKgwqDCoCA9IHBtX3ZkZWNfcG93 ZXJfZG9tYWluX3Bvd2VyX29mZiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAucG93ZXJf c3RhdGUgPSBwbV92ZGVjX3Bvd2VyX2RvbWFpbl9wb3dlcl9zdGF0ZSwKPj4gK8KgwqDCoMKgIH0s Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdmRlY19pcnFfaGFuZGxlcihpbnQg aXJxLCB2b2lkICpwcml2KQo+PiArewo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVjX2RldiAq ZGV2ID0gKHN0cnVjdCBhbWxfdmRlY19kZXYgKilwcml2Owo+PiArwqDCoMKgwqAgc3RydWN0IGFt bF92ZGVjX2h3ICpodyA9IGRldi0+ZGVjX2h3Owo+PiArwqDCoMKgwqAgaXJxcmV0dXJuX3QgcmV0 Owo+PiArCj4+ICvCoMKgwqDCoCBpZiAoaHctPmh3X29wcy5pcnFfaGFuZGxlcikKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBody0+aHdfb3BzLmlycV9oYW5kbGVyKGlycSwgcHJp dik7Cj4+ICsKPj4gK8KgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBp cnFyZXR1cm5fdCB2ZGVjX3RocmVhZGVkX2lzcl9oYW5kbGVyKGludCBpcnEsIHZvaWQgKnByaXYp Cj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNfZGV2ICpkZXYgPSAoc3RydWN0IGFt bF92ZGVjX2RldiAqKXByaXY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNfaHcgKmh3ID0g ZGV2LT5kZWNfaHc7Cj4+ICvCoMKgwqDCoCBpcnFyZXR1cm5fdCByZXQgPSBJUlFfSEFORExFRDsK Pj4gKwo+PiArwqDCoMKgwqAgaWYgKGh3LT5od19vcHMuaXJxX3RocmVhZGVkX2Z1bmMpCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gaHctPmh3X29wcy5pcnFfdGhyZWFkZWRfZnVu YyhpcnEsIHByaXYpOwo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ ICtzdHJ1Y3QgYW1sX3ZkZWNfaHcgKnZkZWNfZ2V0X2h3KHZvaWQgKnByaXYpCj4+ICt7Cj4+ICvC oMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNfZGV2ICpkZXYgPSAoc3RydWN0IGFtbF92ZGVjX2RldiAq KXByaXY7Cj4+ICsKPj4gK8KgwqDCoMKgIHJldHVybiBkZXYtPmRlY19odzsKPj4gK30KPj4gKwo+ PiAraW50IGRldl9yZXF1ZXN0X2h3X3Jlc291cmNlcyh2b2lkICpwcml2KQo+PiArewo+PiArwqDC oMKgwqAgc3RydWN0IGFtbF92ZGVjX2RldiAqZGV2ID0gKHN0cnVjdCBhbWxfdmRlY19kZXYgKilw cml2Owo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVjX2h3ICpodzsKPj4gK8KgwqDCoMKgIHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgcmVzb3VyY2Ug cmVzOwo+PiArwqDCoMKgwqAgdTMyIHJlc19zaXplOwo+PiArwqDCoMKgwqAgaW50IGk7Cj4+ICvC oMKgwqDCoCBpbnQgcmV0ID0gLTE7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmICghZGV2IHx8ICFkZXYt PmRlY19odykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiJXMgcGFyYW0g aW52YWxpZFxuIiwgX19mdW5jX18pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biAtMTsKPj4gK8KgwqDCoMKgIH0KPj4gK8KgwqDCoMKgIHBkZXYgPSBkZXYtPnBsYXRfZGV2Owo+ PiArwqDCoMKgwqAgaHcgPSBkZXYtPmRlY19odzsKPj4gK8KgwqDCoMKgIGh3LT5kZXYgPSAmcGRl di0+ZGV2Owo+PiArCj4+ICvCoMKgwqDCoCBody0+ZGVjX2lycSA9IHBsYXRmb3JtX2dldF9pcnEo cGRldiwgVkRFQ19JUlFfMSk7Cj4+ICvCoMKgwqDCoCBpZiAoaHctPmRlY19pcnEgPCAwKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycigmcGRldi0+ZGV2LCAiZ2V0IGlycSBm YWlsZWRcbiIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBody0+ZGVjX2ly cTsKPj4gK8KgwqDCoMKgIH0KPj4gK8KgwqDCoMKgIHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRl ZF9pcnEoJnBkZXYtPmRldiwgaHctPmRlY19pcnEsIAo+PiB2ZGVjX2lycV9oYW5kbGVyLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHZkZWNfdGhyZWFkZWRfaXNyX2hhbmRsZXIsIAo+PiBJUlFGX09ORVNI T1QsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInZkZWMtMSIsIGRldik7Cj4+ICvCoMKgwqDCoCBpZiAo cmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycigmcGRldi0+ZGV2LCAi ZmFpbGVkIHRvIGluc3RhbGwgaXJxICVkICglZCkiLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBody0+ZGVjX2lycSwgcmV0KTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIGZv ciAoaSA9IDA7IGkgPCBNQVhfUkVHX0JVUzsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKG9mX2FkZHJlc3NfdG9fcmVzb3VyY2UocGRldi0+ZGV2Lm9mX25vZGUsIGksICZy ZXMpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2Vy cigib2ZfYWRkcmVzc190b19yZXNvdXJjZSAlZCBmYWlsZWRcbiIsIGkpOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXNfc2l6ZSA9IHJlc291cmNlX3NpemUoJnJlcyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaHctPnJlZ3NbaV0gPSBpb3JlbWFwKHJlcy5zdGFydCwgcmVzX3NpemUpOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJlZ19iYXNlW2ldID0gaHctPnJlZ3NbaV07Cj4+ICsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiJXMsIHJlcyBzdGFydCAlbGx4LCBlbmQg JWxseCwgaW9tYXA6ICVwXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF9fZnVuY19fLCAodW5zaWduZWQgbG9uZyBsb25nKXJlcy5zdGFydCwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQgbG9uZyBs b25nKXJlcy5lbmQsIHJlZ19iYXNlW2ldKTsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKg wqAgaHctPnBtID0gJnBtW2Rldi0+cHZkZWNfZGF0YS0+cG93ZXJfdHlwZV07Cj4+ICvCoMKgwqDC oCBpZiAoaHctPnBtLT5pbml0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0g aHctPnBtLT5pbml0KGh3KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwg MCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIo InBvd2VyIG1nciBpbml0IGZhaWxlZCFcbiIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IH0KPj4gK8KgwqDCoMKgIH0KPj4gK8KgwqDCoMKgIHZkZWNfY2xvY2tfZ2F0ZV9pbml0KGh3KTsK Pj4gKwo+PiArwqDCoMKgwqAgYW1sX3ZkZWNfY2FudmFzX3JlZ2lzdGVyKGh3KTsKPj4gKwo+PiAr wqDCoMKgwqAgcHJfZGVidWcoIiMjQW1sb2dpYyBodyByZXNvdXJjZSBpbml0IE9LIyNcbiIpOwo+ PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArdm9pZCBkZXZfZGVzdHJv eV9od19yZXNvdXJjZXModm9pZCAqcHJpdikKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxf dmRlY19kZXYgKmRldiA9IChzdHJ1Y3QgYW1sX3ZkZWNfZGV2ICopcHJpdjsKPj4gK8KgwqDCoMKg IHN0cnVjdCBhbWxfdmRlY19odyAqaHc7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmICghZGV2IHx8ICFk ZXYtPmRlY19odykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiJXMgcGFy YW0gaW52YWxpZFxuIiwgX19mdW5jX18pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybjsKPj4gK8KgwqDCoMKgIH0KPj4gK8KgwqDCoMKgIGh3ID0gZGV2LT5kZWNfaHc7Cj4+ICsK Pj4gK8KgwqDCoMKgIGlmIChody0+cG0tPnJlbGVhc2UpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaHctPnBtLT5yZWxlYXNlKGh3KTsKPj4gKwo+PiArwqDCoMKgwqAga2ZyZWUoaHcpOwo+ PiArwqDCoMKgwqAgZGV2LT5kZWNfaHcgPSBOVUxMOwo+PiArwqDCoMKgwqAgcHJfZGVidWcoIiMj QW1sb2dpYyBodyByZXNvdXJjZSByZWxlYXNlIE9LIyNcbiIpOwo+PiArfQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfaHcuaCAKPj4g Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9hbWxfdmRlY19ody5oCj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYWQxZTYxM2EyY2Y4Cj4+ IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3Zk ZWMvYW1sX3ZkZWNfaHcuaAo+PiBAQCAtMCwwICsxLDE4MiBAQAo+PiArLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgTUlUKSAqLwo+PiArLyoKPj4gKyAqIENvcHly aWdodCAoQykgMjAyNSBBbWxvZ2ljLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKPj4gKyAqLwo+ PiArCj4+ICsjaWZuZGVmIF9BTUxfVkRFQ19IV19IXwo+PiArI2RlZmluZSBfQU1MX1ZERUNfSFdf SF8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L2Nsay5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L29mLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcG1fZG9tYWluLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4+ ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+Cj4+ICsjaW5jbHVkZSAicmVnX2RlZmluZXMuaCIKPj4gKwo+PiArI2RlZmluZSBWREVDX0ZJ Rk9fQUxJR07CoMKgwqDCoCA4Cj4+ICsjZGVmaW5lIFZMRF9QQURESU5HX1NJWkXCoMKgwqAgMTAy NAo+PiArCj4+ICsjZGVmaW5lIFJEX1ZSRUcoYWRkcikgcmVhZF9kb3NfcmVnKGFkZHIpCj4+ICsj ZGVmaW5lIFdSSVRFX1ZSRUcoYWRkciwgdmFsKSB3cml0ZV9kb3NfcmVnKGFkZHIsIHZhbCkKPj4g KyNkZWZpbmUgV1JJVEVfVlJFR19CSVRTKHIsIHZhbCwgc3RhcnQsIGxlbikgZG9zX3JlZ193cml0 ZV9iaXRzKHIsIAo+PiB2YWwsIHN0YXJ0LCBsZW4pCj4+ICsjZGVmaW5lIENMRUFSX1ZSRUdfTUFT SyhyLCBtYXNrKSBkb3NfcmVnX2NsZWFyX21hc2sociwgbWFzaykKPj4gKyNkZWZpbmUgU0VUX1ZS RUdfTUFTSyhyLCBtYXNrKSBkb3NfcmVnX3NldF9tYXNrKHIsIG1hc2spCj4KPgo+IFBsZWFzZSBk cm9wIHRoaXMgbWFjcm9zIGFuZCB1c2UgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseS4KR290IGl0LCBJ J2xsIGRyb3AgdGhlbS4KPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgYW1sX3ZkZWNfaHdfb3Bz IC0gY29kZWMgbW9kZSBzcGVjaWZpYyBvcGVyYXRpb25zIGZvciBodwo+PiArICogQGxvYWRfZmly bXdhcmVfZXg6IExvYWQgZmlybXdhcmUgZm9yIGN1cnJlbnQgZGVjIHNwZWNpZmljLgo+PiArICog QGlycV9oYW5kbGVyOiBtYW5kYXRvcnkgY2FsbCB3aGVuIHRoZSBJU1IgdHJpZ2dlcnMKPj4gKyAq IEBpcnFfdGhyZWFkZWRfZnVuYzogbWFuZGF0b3J5IGNhbGwgZm9yIHRoZSB0aHJlYWRlZCBJU1IK Pj4gKyAqIEBjYW52YXNfYWxsb2M6IEFsbG9jIGNhbnZhcyBmb3IgY3VyciBmcmFtZQo+PiArICog QGNhbnZhc19mcmVlOiBSZWxlYXNlIGNhbnZhcy4KPj4gKyAqIEBjb25maWdfY2FudmFzOiBDb25m aWcgZm9yIGN1cnIgZnJhbWUsIHN1Y2ggYXMgdy9oLCBZL1VWIHN0YXJ0IAo+PiBhZGRyIGV0Yy4K Pj4gKyAqLwo+PiArc3RydWN0IGFtbF92ZGVjX2h3X29wcyB7Cj4+ICvCoMKgwqDCoCBpbnQgKCps b2FkX2Zpcm13YXJlX2V4KSh2b2lkICpwcml2LCBjb25zdCB1OCAqZGF0YSwgdTMyIGxlbik7Cj4+ ICvCoMKgwqDCoCBpcnFyZXR1cm5fdCAoKmlycV9oYW5kbGVyKShpbnQgaXJxLCB2b2lkICpwcml2 KTsKPj4gK8KgwqDCoMKgIGlycXJldHVybl90ICgqaXJxX3RocmVhZGVkX2Z1bmMpKGludCBpcnEs IHZvaWQgKnByaXYpOwo+PiArwqDCoMKgwqAgaW50ICgqY2FudmFzX2FsbG9jKSh1OCAqY2FudmFz X2luZGV4KTsKPj4gK8KgwqDCoMKgIHZvaWQgKCpjYW52YXNfZnJlZSkodTggY2FudmFzX2luZGV4 KTsKPj4gK8KgwqDCoMKgIHZvaWQgKCpjb25maWdfY2FudmFzKSh1OCBjYW52YXNfaW5kZXgsCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVs b25nIGFkZHIsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHdyYXAsIHUzMiBibGttb2RlLCB1 MzIgZW5kaWFuKTsKPj4gK307Cj4+ICsKPj4gKy8qKgo+PiArICogZW51bSB2ZGVjX3R5cGVfZSAt IFR5cGUgb2YgZGVjb2RlciBoYXJkd2FyZS4KPj4gKyAqLwo+PiArZW51bSB2ZGVjX3R5cGVfZSB7 Cj4+ICvCoMKgwqDCoCBWREVDXzEgPSAwLAo+PiArwqDCoMKgwqAgVkRFQ19IRVZDLAo+PiArwqDC oMKgwqAgVkRFQ19NQVgsCj4+ICt9Owo+PiArCj4+ICsvKioKPj4gKyAqIGVudW0gdmRlY19pcnFf bnVtIC0gRGVmaW5pdGlvbiBvZiB0aGUgaXJxLgo+PiArICovCj4+ICtlbnVtIHZkZWNfaXJxX251 bSB7Cj4+ICvCoMKgwqDCoCBWREVDX0lSUV8wID0gMCwKPj4gK8KgwqDCoMKgIFZERUNfSVJRXzEs Cj4+ICvCoMKgwqDCoCBWREVDX0lSUV8yLAo+PiArwqDCoMKgwqAgVkRFQ19JUlFfTUFYLAo+PiAr fTsKPj4gKwo+PiArLyoqCj4+ICsgKiBlbnVtIHZkZWNfdHlwZV9lIC0gVHlwZSBvZiBkZWNvZGVy IGNsb2NrLgo+PiArICovCj4+ICtlbnVtIGNsa190eXBlX2Ugewo+PiArwqDCoMKgwqAgVkRFQyA9 IDAsCj4+ICvCoMKgwqDCoCBWREVDX01VWCwKPj4gK8KgwqDCoMKgIEhFVkNGX01VWCwKPj4gK8Kg wqDCoMKgIERPU19DTEtfTUFYLAo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBlbnVtIGFtbF9w b3dlcl90eXBlX2UgLSBUeXBlIG9mIGRlY29kZXIgcG93ZXIuCj4+ICsgKi8KPj4gK2VudW0gYW1s X3Bvd2VyX3R5cGVfZSB7Cj4+ICvCoMKgwqDCoCBBTUxfUE1fUEQgPSAwLAo+PiArfTsKPj4gKwo+ PiArLyoqCj4+ICsgKiBlbnVtIG1tX2J1c19lIC0gVHlwZSBvZiBkZWNvZGVyIGhhcmR3YXJlIGJ1 cy4KPj4gKyAqLwo+PiArZW51bSBtbV9idXNfZSB7Cj4+ICvCoMKgwqDCoCBET1NfQlVTID0gMCwK Pj4gK8KgwqDCoMKgIERNQ19CVVMsCj4+ICvCoMKgwqDCoCBNQVhfUkVHX0JVUwo+PiArfTsKPj4g Kwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgZ2F0ZV9zd2l0Y2hfbm9kZSAtIGNsb2NrIG5vZGUgZGVm aW5pdGlvbgo+PiArICogQGNsazogUG9pbnRlciB0byBjbGsgaW5zdGFuY2UuCj4+ICsgKiBAbmFt ZTogQ2xvY2sgbmFtZSB1c2VkLgo+PiArICogQG11dGV4OiBNdXRleCBsb2NrIGZvciBtdWx0aSBk ZWNvZGVyIGluc3RhbmNlLgo+PiArICogQHJlZl9jb3VudDogQ3VyciBjbGsgaW5zdGFuY2UgcmVm IGNvdW50Lgo+PiArICovCj4+ICtzdHJ1Y3QgZ2F0ZV9zd2l0Y2hfbm9kZSB7Cj4+ICvCoMKgwqDC oCBzdHJ1Y3QgY2xrICpjbGs7Cj4+ICvCoMKgwqDCoCBjb25zdCBjaGFyICpuYW1lOwo+PiArwqDC oMKgwqAgc3RydWN0IG11dGV4IG11dGV4Owo+PiArwqDCoMKgwqAgaW50IHJlZl9jb3VudDsKPj4g K307Cj4+ICsKPj4gKy8qKgo+PiArICogc3RydWN0IHBtX3BkX3MgLSBwb3dlciBkb21haW4gZGVm aW5pdGlvbgo+PiArICogQG5hbWU6IFBvd2VyIGRvbWFpbiBuYW1lLgo+PiArICogQGRldjogUG9p bnRlciB0byBkZXZpY2Ugc3RydWN0dXJlLgo+PiArICogQG11dGV4OiBQb2ludGVyIHRvIGRldmlj ZV9saW5rIHN0cnVjdHVyZS4KPj4gKyAqIEByZWZfY291bnQ6IEN1cnIgcG93ZXIgZG9tYWluIGlu c3RhbmNlIHJlZiBjb3VudC4KPj4gKyAqLwo+PiArc3RydWN0IHBtX3BkX3Mgewo+PiArwqDCoMKg wqAgdTggKm5hbWU7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+ICvCoMKgwqDC oCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbms7Cj4+ICvCoMKgwqDCoCBpbnQgcmVmX2NvdW50Owo+ PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgYW1sX3ZkZWNfaHcgLSBkZWNvZGVyIGhh cmR3YXJlIHJlc291cmNlcyBkZWZpbml0aW9uCj4+ICsgKiBAcGRldjogUG9pbnRlciB0byBzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlLgo+PiArICogQGRldjogUG9pbnRlciB0byBzdHJ1Y3QgZGV2aWNl Lgo+PiArICogQHJlZ3M6IFJlZyBiYXNlIGZvciBkb3MvZG1jIGhhcmR3YXJlLgo+PiArICogQHBt X211dGV4OiBNdXRleCBmb3IgcG0tPnBkX2RhdGEuCj4+ICsgKiBAcG06IFBvaW50ZXIgdG8gc3Ry dWN0IHBvd2VyX21hbmFnZXJfcy4KPj4gKyAqIEBod19vcHM6IEhhcmR3YXJlIHJlc291cmNlIG9w ZXJhdGlvbiBmdW5jdGlvbnMuIFNlZSBzdHJ1Y3QgCj4+IGFtbF92ZGVjX2h3X29wcy4KPj4gKyAq IEBnYXRlczogQ2xrIGluc3RhbmNlIHVzZWQgYnkgY3VyciBkZWNvZGVyIGNvbnRleHQuCj4+ICsg KiBAZGVjX2lycTogSXJxIHJlZ2lzdGVyZWQuCj4+ICsgKiBAY3Vycl9jdHg6IFBvaW50ZXIgdG8g Y3VyciBkZWNvZGVyIGNvbnRleHQuCj4+ICsgKi8KPj4gK3N0cnVjdCBhbWxfdmRlY19odyB7Cj4+ ICvCoMKgwqDCoCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2Owo+PiArwqDCoMKgwqAgc3Ry dWN0IGRldmljZSAqZGV2Owo+PiArwqDCoMKgwqAgdm9pZCBfX2lvbWVtICpyZWdzW01BWF9SRUdf QlVTXTsKPj4gK8KgwqDCoMKgIHN0cnVjdCBtdXRleCBwbV9tdXRleDsKPj4gK8KgwqDCoMKgIGNv bnN0IHN0cnVjdCBwb3dlcl9tYW5hZ2VyX3MgKnBtOwo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92 ZGVjX2h3X29wcyBod19vcHM7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgZ2F0ZV9zd2l0Y2hfbm9kZSBn YXRlc1tET1NfQ0xLX01BWF07Cj4+ICvCoMKgwqDCoCBpbnQgZGVjX2lycTsKPj4gK8KgwqDCoMKg IHZvaWQgKmN1cnJfY3R4Owo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgcG93ZXJf bWFuYWdlcl9zIC0gUG93ZXIgbWFuYWdlciAmIG9wZXJ0aW9uIGZ1bmN0aW9uCj4+ICsgKiBAcGRf ZGF0YTogUG9pbnRlciB0byBzdHJ1Y3QgcG1fcGRfcwo+PiArICogQGluaXQ6IFBvd2VyIG1hbmFn ZXIgaW5pdC4KPj4gKyAqIEByZWxlYXNlOiBQb3dlciBtYW5hZ2VyIHJlbGVhc2UuCj4+ICsgKiBA cG93ZXJfb246IFBvd2VyIG9uIGZvciBkZWNvZGVyIGh3Lgo+PiArICogQHBvd2VyX29mZjogUG93 ZXIgb2ZmIGZvciBkZWNvZGVyIGh3Lgo+PiArICogQHBvd2VyX3N0YXRlOiBRdWVyeSB0aGUgcG93 ZXIgc3RhdGUuCj4+ICsgKi8KPj4gK3N0cnVjdCBwb3dlcl9tYW5hZ2VyX3Mgewo+PiArwqDCoMKg wqAgc3RydWN0IHBtX3BkX3MgKnBkX2RhdGE7Cj4+ICvCoMKgwqDCoCBpbnQgKCppbml0KShzdHJ1 Y3QgYW1sX3ZkZWNfaHcgKmh3KTsKPj4gK8KgwqDCoMKgIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3Qg YW1sX3ZkZWNfaHcgKmh3KTsKPj4gK8KgwqDCoMKgIHZvaWQgKCpwb3dlcl9vbikoc3RydWN0IGFt bF92ZGVjX2h3ICpodywgaW50IGlkKTsKPj4gK8KgwqDCoMKgIHZvaWQgKCpwb3dlcl9vZmYpKHN0 cnVjdCBhbWxfdmRlY19odyAqaHcsIGludCBpZCk7Cj4+ICvCoMKgwqDCoCBib29sICgqcG93ZXJf c3RhdGUpKHN0cnVjdCBhbWxfdmRlY19odyAqaHcsIGludCBpZCk7Cj4+ICt9Owo+PiArCj4+ICtp bnQgZGV2X3JlcXVlc3RfaHdfcmVzb3VyY2VzKHZvaWQgKnByaXYpOwo+PiArdm9pZCBkZXZfZGVz dHJveV9od19yZXNvdXJjZXModm9pZCAqcHJpdik7Cj4+ICtzdHJ1Y3QgYW1sX3ZkZWNfaHcgKnZk ZWNfZ2V0X2h3KHZvaWQgKnByaXYpOwo+PiArdTMyIHJlYWRfZG9zX3JlZyh1MzIgcmVnX2FkZHIp Owo+PiArdm9pZCB3cml0ZV9kb3NfcmVnKHUzMiBhZGRyLCBpbnQgdmFsKTsKPj4gK3ZvaWQgZG9z X3JlZ193cml0ZV9iaXRzKHUzMiByZWcsIHUzMiB2YWwsIGludCBzdGFydCwgaW50IGxlbik7Cj4+ ICt2b2lkIGRvc19yZWdfY2xlYXJfbWFzayh1MzIgYWRkciwgdTMyIG1hc2spOwo+PiArdm9pZCBk b3NfcmVnX3NldF9tYXNrKHUzMiBhZGRyLCB1MzIgbWFzayk7Cj4+ICt1MzIgcmVhZF9kbWNfcmVn KHUzMiBhZGRyKTsKPj4gK3ZvaWQgd3JpdGVfZG1jX3JlZyh1MzIgYWRkciwgaW50IHZhbCk7Cj4+ ICtpbnQgdmRlY19lbmFibGUoc3RydWN0IGFtbF92ZGVjX2h3ICpodyk7Cj4+ICtpbnQgdmRlY19k aXNhYmxlKHN0cnVjdCBhbWxfdmRlY19odyAqaHcpOwo+PiArdm9pZCBkb3NfZW5hYmxlKHZvaWQp Owo+PiArdm9pZCBhbWxfc3RhcnRfdmRlY19odyh2b2lkKTsKPj4gK3ZvaWQgYW1sX3N0b3BfdmRl Y19odyh2b2lkKTsKPj4gK2ludCBsb2FkX2Zpcm13YXJlKHN0cnVjdCBhbWxfdmRlY19odyAqaHcs IGNvbnN0IGNoYXIgKnBhdGgpOwo+PiArdm9pZCBhbWxfdmRlY19yZXNldF9jb3JlKHZvaWQpOwo+ PiArCj4+ICsjZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1s b2dpYy92ZGVjL2FtbF92ZGVjX3BsYXRmb3JtLmMgCj4+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfcGxhdGZvcm0uYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmYxZjhiYTFmNGZmNgo+PiAtLS0gL2Rldi9udWxsCj4+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX3BsYXRm b3JtLmMKPj4gQEAgLTAsMCArMSwzNyBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IChHUEwtMi4wLW9ubHkgT1IgTUlUKQo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBB bWxvZ2ljLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVk ZSAiYW1sX3ZkZWNfcGxhdGZvcm0uaCIKPj4gKyNpbmNsdWRlICJhbWxfdmRlY19kcnYuaCIKPj4g KyNpbmNsdWRlICJhbWxfdmRlY19ody5oIgo+PiArI2luY2x1ZGUgImgyNjQuaCIKPj4gKwo+PiAr I2RlZmluZSBWSURFT19ERUNfSDI2NMKgICJzNF9oMjY0X211bHRpLmJpbiIKPj4gKwo+PiArY29u c3Qgc3RydWN0IGFtbF9jb2RlY19vcHMgYW1sX1M0X2RlY19vcHNbXSA9IHsKPj4gK8KgwqDCoMKg IFtDT0RFQ19UWVBFX0gyNjRdID0gewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5pbml0 ID0gYW1sX2gyNjRfaW5pdCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuZXhpdCA9IGFt bF9oMjY0X2V4aXQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnJ1biA9IGFtbF9oMjY0 X2RlY19ydW4sCj4+ICvCoMKgwqDCoCB9LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBhbWxfdmlkZW9fZGVjX2ZtdCBhbWxfUzRfZGVjX2ZtdHMgPSB7Cj4+ICvCoMKgwqDCoCAu bWF4X2hlaWdodCA9IEFNTF9WREVDXzEwODBQX01BWF9ILAo+PiArwqDCoMKgwqAgLm1heF93aWR0 aCA9IEFNTF9WREVDXzEwODBQX01BWF9XLAo+PiArwqDCoMKgwqAgLmFsaWduID0gMzIsCj4+ICvC oMKgwqDCoCAuaXNfMTBfYml0X3N1cHBvcnQgPSAwLAo+PiArfTsKPj4gKwo+PiArY29uc3Qgc3Ry dWN0IGFtbF9kZXZfcGxhdGZvcm1fZGF0YSBhbWxfdmRlY19zNF9wZGF0YSA9IHsKPj4gK8KgwqDC oMKgIC5kZWNfZm10ID0gJmFtbF9TNF9kZWNfZm10cywKPj4gK8KgwqDCoMKgIC5jb2RlY19vcHMg PSBhbWxfUzRfZGVjX29wcywKPj4gK8KgwqDCoMKgIC5wb3dlcl90eXBlID0gQU1MX1BNX1BELAo+ PiArwqDCoMKgwqAgLnJlcV9od19yZXNvdXJjZSA9IGRldl9yZXF1ZXN0X2h3X3Jlc291cmNlcywK Pj4gK8KgwqDCoMKgIC5kZXN0cm95X2h3X3Jlc291cmNlID0gZGV2X2Rlc3Ryb3lfaHdfcmVzb3Vy Y2VzLAo+PiArwqDCoMKgwqAgLmZ3X3BhdGggPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgVklERU9fREVDX0gyNjQsCj4+ICvCoMKgwqDCoCB9LAo+PiArfTsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX3BsYXRmb3JtLmgg Cj4+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfcGxhdGZv cm0uaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmZmMDkz M2Y2ZjA3NAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YW1sb2dpYy92ZGVjL2FtbF92ZGVjX3BsYXRmb3JtLmgKPj4gQEAgLTAsMCArMSw2MiBAQAo+PiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgTUlUKSAqLwo+PiAr LyoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBBbWxvZ2ljLCBJbmMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQKPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIEFNTF9WREVDX1BMQVRGT1JNX0hfCj4+ICsj ZGVmaW5lIEFNTF9WREVDX1BMQVRGT1JNX0hfCj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51eC92aWRl b2RldjIuaD4KPj4gKwo+PiArI2RlZmluZSBNQVhfREVDX0ZPUk1BVCAzCj4+ICsKPj4gKy8qKgo+ PiArICogc3RydWN0IGFtbF9jb2RlY19vcHMgLSBjb2RlYyBtb2RlIHNwZWNpZmljIG9wZXJhdGlv bnMKPj4gKyAqIEBpbml0OiBVc2VkIGZvciBkZWNvZGVyIGluaXRpYWxpemF0aW9uLgo+PiArICog QGV4aXQ6IElmIG5lZWRlZCwgY2FuIGJlIHVzZWQgdG8gdW5kbyB0aGUgLmluaXQgcGhhc2UuCj4+ ICsgKiBAcnVuOiBTdGFydCBhIHNpbmdsZSBkZWNvZGluZyBqb2IuIENhbGxlZCBmcm9tIGF0b21p YyBjb250ZXh0Lgo+PiArICogQ2FsbGVyIHNob3VsZCBlbnN1cmUgdGhhdCBhIHBhaXIgb2YgYnVm ZmVycyBpcyByZWFkeSBhbmQgdGhlCj4+ICsgKiBoYXJkd2FyZSBpcyBwb3dlcmVkIG9uIGFuZCBj bGsgaXMgZW5hYmxlZC4gUmV0dXJucyB6ZXJvIGlmIE9LLAo+PiArICogYSBuZWdhdGl2ZSB2YWx1 ZSBpbiBlcnJvciBjYXNlcy4KPj4gKyAqLwo+PiArc3RydWN0IGFtbF9jb2RlY19vcHMgewo+PiAr wqDCoMKgwqAgaW50ICgqaW5pdCkodm9pZCAqcHJpdik7Cj4+ICvCoMKgwqDCoCB2b2lkICgqZXhp dCkodm9pZCAqcHJpdik7Cj4+ICvCoMKgwqDCoCBpbnQgKCpydW4pKHZvaWQgKnByaXYpOwo+PiAr fTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgYW1sX3ZpZGVvX2RlY19mbXQgLSBjb2RlYyBm b3JtYXQgcmVxdWlyZWQgYnkgcGxhdGZvcm0KPj4gKyAqIEBtYXhfaGVpZ2h0OiBNYXggZGVjb2Rl IGZyYW1lIGhlaWdodCBvZiBjdXJyZW50IHBsYXRmb3JtLgo+PiArICogQG1heF93aWR0aDogTWF4 IGRlY29kZSBmcmFtZSB3aWR0aCBvZiBjdXJyZW50IHBsYXRmb3JtLgo+PiArICogQGFsaWduOiBB bGlnbiByZXF1aXJlbWVudCBvZiB0aGUgY3VycmVudCBwbGF0Zm9ybS4KPj4gKyAqIEBpc18xMF9i aXRfc3VwcG9ydDogV2hldGhlciB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgMTAgYml0Lgo+PiArICov Cj4+ICtzdHJ1Y3QgYW1sX3ZpZGVvX2RlY19mbXQgewo+PiArwqDCoMKgwqAgdTMyIG1heF9oZWln aHQ7Cj4+ICvCoMKgwqDCoCB1MzIgbWF4X3dpZHRoOwo+PiArwqDCoMKgwqAgaW50IGFsaWduOwo+ PiArwqDCoMKgwqAgaW50IGlzXzEwX2JpdF9zdXBwb3J0Owo+PiArfTsKPj4gKwo+PiArLyoqCj4+ ICsgKiBzdHJ1Y3QgYW1sX2Rldl9wbGF0Zm9ybV9kYXRhIC0gY29tcGF0aWJsZSBkYXRhIGZvciBl YWNoIGNoaXAuCj4+ICsgKiBAZGVjX2ZtdDogU3VwcG9ydCBkZWMgZm9ybWF0Lgo+PiArICogQGNv ZGVjX29wczogQ29kZWMgb3BlcmF0aW9uIGZ1bmN0aW9uLgo+PiArICogQHJlcV9od19yZXNvdXJj ZTogT3BlcmF0aW9uIGZ1bmN0aW9uIHRvIHJlcXVlc3QgdGhlIGhhcmR3YXJlIAo+PiByZXNvdXJj ZS4KPj4gKyAqIEBkZXN0cm95X2h3X3Jlc291cmNlOiBPcGVyYXRpb24gZnVuY3Rpb24gdG8gcmVs ZWFzZSB0aGUgaGFyZHdhcmUgCj4+IHJlc291cmNlLgo+PiArICogQHBvd2VyX3R5cGU6IFR5cGUg b2YgcG93ZXIgdGhhdCB0aGUgY3VycmVudCBjaGlwIG5lZWQuIFNlZSAKPj4gYW1sX3Bvd2VyX3R5 cGVfZS4KPj4gKyAqIEBmd19wYXRoOiBQYXRoIG9mIHRoZSBmaXJtd2FyZS5iaW4uCj4+ICsgKi8K Pj4gK3N0cnVjdCBhbWxfZGV2X3BsYXRmb3JtX2RhdGEgewo+PiArwqDCoMKgwqAgY29uc3Qgc3Ry dWN0IGFtbF92aWRlb19kZWNfZm10ICpkZWNfZm10Owo+PiArwqDCoMKgwqAgY29uc3Qgc3RydWN0 IGFtbF9jb2RlY19vcHMgKmNvZGVjX29wczsKPj4gK8KgwqDCoMKgIGludCAoKnJlcV9od19yZXNv dXJjZSkodm9pZCAqcHJpdik7Cj4+ICvCoMKgwqDCoCB2b2lkICgqZGVzdHJveV9od19yZXNvdXJj ZSkodm9pZCAqcHJpdik7Cj4+ICvCoMKgwqDCoCBpbnQgcG93ZXJfdHlwZTsKPj4gK8KgwqDCoMKg IGNvbnN0IGNoYXIgKmZ3X3BhdGhbTUFYX0RFQ19GT1JNQVRdOwo+PiArfTsKPj4gKwo+PiArZXh0 ZXJuIGNvbnN0IHN0cnVjdCBhbWxfZGV2X3BsYXRmb3JtX2RhdGEgYW1sX3ZkZWNfczRfcGRhdGE7 Cj4+ICsKPj4gKyNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9h bWxvZ2ljL3ZkZWMvaDI2NC5jIAo+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92 ZGVjL2gyNjQuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAu LmViZmQxMDg4NWVhYQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1sb2dpYy92ZGVjL2gyNjQuYwo+PiBAQCAtMCwwICsxLDE3OTAgQEAKPj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIE1JVCkKPj4gKy8qCj4+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMjUgQW1sb2dpYywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCj4+ ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItaDI2NC5oPgo+PiArI2luY2x1ZGUg PGxpbnV4L3ZtYWxsb2MuaD4KPj4gKyNpbmNsdWRlICJhbWxfdmRlYy5oIgo+PiArI2luY2x1ZGUg ImFtbF92ZGVjX2h3LmgiCj4+ICsjaW5jbHVkZSAiaDI2NC5oIgo+PiArCj4+ICsjZGVmaW5lIElO VkFMSURfUE9DIDB4ZmZmZmZmZmYKPj4gKwo+PiArI2RlZmluZSBIMjY0X1NMSUNFX0hFQURFUl9E T05FwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDEKPj4gKyNkZWZpbmUgSDI2NF9TTElD RV9EQVRBX0RPTkXCoMKgwqDCoMKgwqDCoMKgIDB4Mgo+PiArCj4+ICsjZGVmaW5lIERFQ09ERVJf VElNRU9VVF9NU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA1MDAKPj4gKwo+ PiArI2RlZmluZSBDT0xfQlVGRkVSX01BUkdJTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDIKPj4gKwo+PiArc3RydWN0IHZkZWNfaDI2NF9zdGF0ZWxlc3NfY3RybF9yZWYg ewo+PiArwqDCoMKgwqAgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oMjY0X2RlY29kZV9wYXJhbXMg KmRlY29kZTsKPj4gK8KgwqDCoMKgIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9zY2FsaW5n X21hdHJpeCAqc2NhbGluZzsKPj4gK8KgwqDCoMKgIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaDI2 NF9zcHMgKnNwczsKPj4gK8KgwqDCoMKgIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9wcHMg KnBwczsKPj4gK307Cj4+ICsKPj4gK2VudW0gU2xpY2VUeXBlIHsKPj4gK8KgwqDCoMKgIFBfU0xJ Q0UgPSAwLAo+PiArwqDCoMKgwqAgQl9TTElDRSA9IDEsCj4+ICvCoMKgwqDCoCBJX1NMSUNFID0g MiwKPj4gK8KgwqDCoMKgIFNQX1NMSUNFID0gMywKPj4gK8KgwqDCoMKgIFNJX1NMSUNFID0gNCwK Pj4gK8KgwqDCoMKgIE1BWF9TTElDRV9UWVBFUyA9IDUKPj4gK307Cj4+ICsKPj4gKy8qIFVzZWQg YnkgZmlybXdhcmUgKi8KPj4gK3VuaW9uIHBhcmFtIHsKPj4gK8KgwqDCoMKgIHN0cnVjdCB7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgZGF0YVtSUE1fRU5EIC0g UlBNX0JFR0lOXTsKPj4gK8KgwqDCoMKgIH0gbDsKPj4gK8KgwqDCoMKgIHN0cnVjdCB7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgZHVtcFtEUEJfT0ZGU0VUXTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBkcGJfYmFzZVtGUkFN RV9JTl9EUEIgPDwgM107Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBzaG9ydCBkcGJfbWF4X2J1ZmZlcl9mcmFtZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1bnNpZ25lZCBzaG9ydCBhY3R1YWxfZHBiX3NpemU7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBjb2xvY2F0ZWRfYnVmX3N0YXR1czsKPj4gKwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIHNob3J0IG51bV9mb3J3YXJkX3Nob3J0 X3Rlcm1fcmVmZXJlbmNlX3BpYzsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBzaG9ydCBudW1fc2hvcnRfdGVybV9yZWZlcmVuY2VfcGljOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHVuc2lnbmVkIHNob3J0IG51bV9yZWZlcmVuY2VfcGljOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgY3VycmVudF9kcGJfaW5kZXg7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgY3VycmVudF9kZWNvZGVk X2ZyYW1lX251bTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBj dXJyZW50X3JlZmVyZW5jZV9mcmFtZV9udW07Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBzaG9ydCBsMF9zaXplOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVuc2lnbmVkIHNob3J0IGwxX3NpemU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoq Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFs2OjVdIDogbmFsX3JlZl9pZGMKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogWzQ6MF0gOiBuYWxfdW5pdF90eXBlCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVuc2lnbmVkIHNob3J0IE5BTF9pbmZvX21tY287Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyoqCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFsxOjBdIDogMDAgLSB0b3Ag ZmllbGQsIDAxIC0gYm90dG9tIGZpZWxkLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KsKgwqDCoMKgwqDCoMKgwqAgMTAgLSBmcmFtZSwgMTEgLSBtYmFmZiBmcmFtZQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNp Z25lZCBzaG9ydCBwaWN0dXJlX3N0cnVjdHVyZV9tbWNvOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHVuc2lnbmVkIHNob3J0IGZyYW1lX251bTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBzaG9ydCBwaWNfb3JkZXJfY250X2xzYjsKPj4gKwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIHNob3J0IG51bV9yZWZfaWR4X2wwX2FjdGl2ZV9taW51 czE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgbnVtX3JlZl9p ZHhfbDFfYWN0aXZlX21pbnVzMTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVu c2lnbmVkIHNob3J0IFByZXZQaWNPcmRlckNudExzYjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBzaG9ydCBQcmV2aW91c0ZyYW1lTnVtOwo+PiArCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyogMzIgYml0cyB2YXJpYWJsZXMgKi8KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBkZWx0YV9waWNfb3JkZXJfY250X2JvdHRvbVsyXTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBkZWx0YV9waWNfb3Jk ZXJfY250XzBbMl07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQg ZGVsdGFfcGljX29yZGVyX2NudF8xWzJdOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdW5zaWduZWQgc2hvcnQgUHJldlBpY09yZGVyQ250TXNiWzJdOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVuc2lnbmVkIHNob3J0IFByZXZGcmFtZU51bU9mZnNldFsyXTsKPj4gKwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIHNob3J0IGZyYW1lX3BpY19vcmRl cl9jbnRbMl07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgdG9w X2ZpZWxkX3BpY19vcmRlcl9jbnRbMl07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5z aWduZWQgc2hvcnQgYm90dG9tX2ZpZWxkX3BpY19vcmRlcl9jbnRbMl07Cj4+ICsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBjb2xvY2F0ZWRfbXZfYWRkcl9zdGFy dFsyXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBjb2xvY2F0 ZWRfbXZfYWRkcl9lbmRbMl07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQg c2hvcnQgY29sb2NhdGVkX212X3dyX2FkZHJbMl07Cj4+ICvCoMKgwqDCoCB9IGRwYjsKPj4gK8Kg wqDCoMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hv cnQgZHVtcFtNTUNPX09GRlNFVF07Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv KiBhcnJheSBiYXNlIGFkZHJlc3MgZm9yIG9mZnNldF9mb3JfcmVmX2ZyYW1lICovCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgb2Zmc2V0X2Zvcl9yZWZfZnJhbWVf YmFzZVsxMjhdOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoqCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIDAgLSBJbmRleCBpbiBEUEIKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICogMSAtIFBpY3R1cmUgRmxhZwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKsKgIFsyXSA6IDAgLSBzaG9ydCB0ZXJtIHJlZmVyZW5jZSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMSAtIGxvbmcgdGVybSByZWZlcmVuY2UKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICrCoCBbMV0gOiBib3R0b20gZmllbGQKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICrCoCBbMF0gOiB0b3AgZmllbGQKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogMiAt IFBpY3R1cmUgTnVtYmVyIChzaG9ydCB0ZXJtIG9yIGxvbmcgdGVybSkgbG93IDE2IAo+PiBiaXRz Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIDMgLSBQaWN0dXJlIE51bWJlciAoc2hv cnQgdGVybSBvciBsb25nIHRlcm0pIGhpZ2ggMTYgCj4+IGJpdHMKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hv cnQgcmVmZXJlbmNlX2Jhc2VbMTI4XTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qIGNvbW1hbmQgYW5kIHBhcmFtZXRlciwgdW50aWwgY29tbWFuZCBpcyAzICovCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgc2hvcnQgbDBfcmVvcmRlcl9jbWRbUkVPUkRF Ul9DTURfTUFYXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBs MV9yZW9yZGVyX2NtZFtSRU9SREVSX0NNRF9NQVhdOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLyogY29tbWFuZCBhbmQgcGFyYW1ldGVyLCB1bnRpbCBjb21tYW5kIGlzIDAgKi8K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBtbWNvX2NtZFs0NF07 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBsMF9iYXNl WzQwXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBsMV9iYXNl WzQwXTsKPj4gK8KgwqDCoMKgIH0gbW1jbzsKPj4gK8KgwqDCoMKgIHN0cnVjdCB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogZnJvbSB1Y29kZSBsbWVtLCBkbyBub3QgY2hhbmdlIHRo aXMgc3RydWN0ICovCj4+ICvCoMKgwqDCoCB9IHA7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgaDI2 NF9kZWNvZGVfYnVmX3NwZWMgewo+PiArwqDCoMKgwqAgc3RydWN0IHY0bDJfaDI2NF9kcGJfZW50 cnkgKmRwYjsKPj4gK8KgwqDCoMKgIHUzMiBjYW52YXNfcG9zOwo+PiArwqDCoMKgwqAgdTMyIGRw Yl9pbmRleDsKPj4gK8KgwqDCoMKgIHUzMiBwb2M7Cj4+ICvCoMKgwqDCoCBpbnQgY29sX2J1Zl9p bmRleDsKPj4gK8KgwqDCoMKgIHU4IHlfY2FudmFzX2luZGV4Owo+PiArwqDCoMKgwqAgdTggdV9j YW52YXNfaW5kZXg7Cj4+ICvCoMKgwqDCoCB1OCB2X2NhbnZhc19pbmRleDsKPj4gK8KgwqDCoMKg IHU4IHVzZWQ7Cj4+ICvCoMKgwqDCoCB1OCBsb25nX3Rlcm1fZmxhZzsKPj4gK8KgwqDCoMKgIGRt YV9hZGRyX3QgeV9kbWFfYWRkcjsKPj4gK8KgwqDCoMKgIGRtYV9hZGRyX3QgY19kbWFfYWRkcjsK Pj4gK307Cj4+ICsKPj4gKyNkZWZpbmUgUkVPUkRFUklOR19DT01NQU5EX01BWF9TSVpFwqAgMzMK Pj4gK3N0cnVjdCBzbGljZSB7Cj4+ICvCoMKgwqDCoCBpbnQgZnJhbWVfbnVtOwo+PiArwqDCoMKg wqAgLyptb2RpZmljYXRpb24gKi8KPj4gK8KgwqDCoMKgIGludCBzbGljZV90eXBlOwo+PiArwqDC oMKgwqAgaW50IG51bV9yZWZfaWR4X2wwOwo+PiArwqDCoMKgwqAgaW50IG51bV9yZWZfaWR4X2wx Owo+PiArwqDCoMKgwqAgaW50IHJlZl9waWNfbGlzdF9yZW9yZGVyaW5nX2ZsYWdbMl07Cj4+ICvC oMKgwqDCoCBpbnQgbW9kaWZpY2F0aW9uX29mX3BpY19udW1zX2lkY1syXVtSRU9SREVSSU5HX0NP TU1BTkRfTUFYX1NJWkVdOwo+PiArwqDCoMKgwqAgaW50IGFic19kaWZmX3BpY19udW1fbWludXMx WzJdW1JFT1JERVJJTkdfQ09NTUFORF9NQVhfU0laRV07Cj4+ICvCoMKgwqDCoCBpbnQgbG9uZ190 ZXJtX3BpY19pZHhbMl1bUkVPUkRFUklOR19DT01NQU5EX01BWF9TSVpFXTsKPj4gK8KgwqDCoMKg IHVuc2lnbmVkIGNoYXIgZGVjX3JlZl9waWNfbWFya2luZ19idWZmZXJfdmFsaWQ7Cj4+ICt9Owo+ PiArCj4+ICtzdHJ1Y3QgYW1sX2gyNjRfY3R4IHsKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfdmRl Y19jdHggKnY0bDJfY3R4Owo+PiArwqDCoMKgwqAgdTggaW5pdF9mbGFnOwo+PiArwqDCoMKgwqAg dTggbmV3X3BpY19mbGFnOwo+PiArwqDCoMKgwqAgdTggbWNfY3B1X2xvYWRlZDsKPj4gK8KgwqDC oMKgIHU4IHBhcmFtX3NldDsKPj4gK8KgwqDCoMKgIHU4IGNvbG9jYXRlZF9idWZfbnVtOwo+PiAr wqDCoMKgwqAgdTggcmVnX2lxaWRjdF9jb250cm9sX2luaXRfZmxhZzsKPj4gK8KgwqDCoMKgIHUz MiByZWdfaXFpZGN0X2NvbnRyb2w7Cj4+ICvCoMKgwqDCoCB1MzIgcmVnX3Zjb3BfY3RybF9yZWc7 Cj4+ICvCoMKgwqDCoCB1MzIgcmVnX3J2X2FpX21iX2NvdW50Owo+PiArwqDCoMKgwqAgdTMyIHZs ZF9kZWNfY29udHJvbDsKPj4gK8KgwqDCoMKgIHUzMiBzYXZlX2F2c2NyYXRjaF9mOwo+PiArwqDC oMKgwqAgdTMyIHNlcV9pbmZvOwo+PiArwqDCoMKgwqAgdTMyIGRlY29kZV9waWNfY291bnQ7Cj4+ ICvCoMKgwqDCoCB1bmlvbiBwYXJhbSBkcGJfcGFyYW07Cj4+ICvCoMKgwqDCoCB1MzIgZGVjX3N0 YXR1czsKPj4gK8KgwqDCoMKgIHN0cnVjdCBzbGljZSBtc2xpY2U7Cj4+ICvCoMKgwqDCoCBzdHJ1 Y3QgaDI2NF9kZWNvZGVfYnVmX3NwZWMgY3Vycl9zcGVjOwo+PiArwqDCoMKgwqAgc3RydWN0IGgy NjRfZGVjb2RlX2J1Zl9zcGVjIHJlZl9saXN0MFtWNEwyX0gyNjRfTlVNX0RQQl9FTlRSSUVTIAo+ PiArIDFdOwo+PiArwqDCoMKgwqAgc3RydWN0IGgyNjRfZGVjb2RlX2J1Zl9zcGVjIHJlZl9saXN0 MVtWNEwyX0gyNjRfTlVNX0RQQl9FTlRSSUVTIAo+PiArIDFdOwo+PiArwqDCoMKgwqAgc3RydWN0 IGgyNjRfZGVjb2RlX2J1Zl9zcGVjIAo+PiByZWZfbGlzdDBfdW5yZW9yZGVyZWRbVjRMMl9IMjY0 X05VTV9EUEJfRU5UUklFUyArIDFdOwo+PiArwqDCoMKgwqAgc3RydWN0IGgyNjRfZGVjb2RlX2J1 Zl9zcGVjIAo+PiByZWZfbGlzdDFfdW5yZW9yZGVyZWRbVjRMMl9IMjY0X05VTV9EUEJfRU5UUklF UyArIDFdOwo+PiArwqDCoMKgwqAgdTggbGlzdF9zaXplWzJdOwo+PiArwqDCoMKgwqAgZG1hX2Fk ZHJfdCBsbWVtX3BoeV9hZGRyOwo+PiArwqDCoMKgwqAgdm9pZCAqbG1lbV9hZGRyOwo+PiArwqDC oMKgwqAgZG1hX2FkZHJfdCBtY19jcHVfcGFkZHI7Cj4+ICvCoMKgwqDCoCB2b2lkICptY19jcHVf dmFkZHI7Cj4+ICvCoMKgwqDCoCBkbWFfYWRkcl90IGNtYV9hbGxvY19hZGRyOwo+PiArwqDCoMKg wqAgdm9pZCAqY21hX2FsbG9jX3ZhZGRyOwo+PiArwqDCoMKgwqAgZG1hX2FkZHJfdCBjb2xsYXRl ZF9jbWFfYWRkcjsKPj4gK8KgwqDCoMKgIGRtYV9hZGRyX3QgY29sbGF0ZWRfY21hX2FkZHJfZW5k Owo+PiArwqDCoMKgwqAgdm9pZCAqY29sbGF0ZWRfY21hX3ZhZGRyOwo+PiArwqDCoMKgwqAgZG1h X2FkZHJfdCB3b3Jrc3BhY2Vfb2Zmc2V0Owo+PiArwqDCoMKgwqAgdm9pZCAqd29ya3NwYWNlX3Zh ZGRyOwo+PiArwqDCoMKgwqAgdTMyIGNvbF9idWZfYWxsb2Nfc2l6ZTsKPj4gK8KgwqDCoMKgIHUz MiBvbmVfY29sX2J1Zl9zaXplOwo+PiArwqDCoMKgwqAgdTMyIGNvbG9jYXRlZF9idWZfbWFwOwo+ PiArwqDCoMKgwqAgaW50IGNvbG9jYXRlZF9idWZfcG9jWzMyXTsKPj4gKwo+PiArwqDCoMKgwqAg dTMyIGZyYW1lX3dpZHRoOwo+PiArwqDCoMKgwqAgdTMyIGZyYW1lX2hlaWdodDsKPj4gK8KgwqDC oMKgIHUzMiBtYl93aWR0aDsKPj4gK8KgwqDCoMKgIHUzMiBtYl9oZWlnaHQ7Cj4+ICvCoMKgwqDC oCB1MzIgbWJfdG90YWw7Cj4+ICvCoMKgwqDCoCB1MzIgbWF4X251bV9yZWZfZnJhbWVzOwo+PiAr Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdmRlY19oMjY0X3N0YXRlbGVzc19jdHJsX3JlZiBjdHJsX3Jl ZjsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgaW50IGdldF9mbGFnKHUzMiBmbGFnLCB1 MzIgbWFzaykKPj4gK3sKPj4gK8KgwqDCoMKgIHJldHVybiAoZmxhZyAmIG1hc2spID8gMSA6IDA7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZV9sbWVtKHVuc2lnbmVkIHNo b3J0ICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgCj4+IHZhbHVlKQo+PiArewo+PiArwqDCoMKgwqAg YmFzZVtvZmZzZXRdID0gdmFsdWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdWludDMy X3Qgc3BlYzJjYW52YXMoc3RydWN0IGgyNjRfZGVjb2RlX2J1Zl9zcGVjIAo+PiAqYnVmX3NwZWMp Cj4+ICt7Cj4+ICvCoMKgwqDCoCByZXR1cm4gKGJ1Zl9zcGVjLT52X2NhbnZhc19pbmRleCA8PCAx NikgfAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChidWZfc3BlYy0+dV9jYW52YXNfaW5k ZXggPDwgOCkgfAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChidWZfc3BlYy0+eV9jYW52 YXNfaW5kZXggPDwgMCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgaDI2NF9kZWNvZGVf YnVmX3NwZWMgKmZpbmRfc3BlY19ieV9kcGJfaW5kZXgoc3RydWN0IAo+PiBhbWxfaDI2NF9jdHgg KmgyNjRfY3R4LCBpbnQgaW5kZXgpCj4+ICt7Cj4+ICvCoMKgwqDCoCBpbnQgaTsKPj4gKwo+PiAr wqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IGgyNjRfY3R4LT5saXN0X3NpemVbMF07IGkrKykgewo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSBoMjY0X2N0eC0+cmVmX2xp c3QwW2ldLmRwYl9pbmRleCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuICZoMjY0X2N0eC0+cmVmX2xpc3QwW2ldOwo+PiArwqDCoMKgwqAgfQo+PiAr Cj4+ICvCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgaDI2NF9jdHgtPmxpc3Rfc2l6ZVsxXTsgaSsr KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IGgyNjRfY3R4LT5y ZWZfbGlzdDFbaV0uZHBiX2luZGV4KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gJmgyNjRfY3R4LT5yZWZfbGlzdDFbaV07Cj4+ICvCoMKgwqDCoCB9 Cj4+ICvCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBoMjY0 X3ByZXBhcmVfaW5wdXQoc3RydWN0IGFtbF92ZGVjX2N0eCAqY3R4KQo+PiArewo+PiArwqDCoMKg wqAgc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjOwo+PiArwqDCoMKgwqAgc3RydWN0IHZiMl9i dWZmZXIgKnZiOwo+PiArwqDCoMKgwqAgZG1hX2FkZHJfdCBzcmNfZG1hOwo+PiArwqDCoMKgwqAg dTMyIHBheWxvYWRfc2l6ZTsKPj4gK8KgwqDCoMKgIGludCBkdW1teTsKPj4gKwo+PiArwqDCoMKg wqAgc3JjID0gdjRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0eC0+ZmgubTJtX2N0eCk7Cj4+ICvCoMKg wqDCoCBpZiAoIXNyYykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oIm5v IGlucHV0IGJ1ZmZlciBhdmFpbGFibGUhXG4iKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gLTE7Cj4+ICvCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCB2YiA9ICZzcmMtPnZiMl9i dWY7Cj4+ICvCoMKgwqDCoCBwYXlsb2FkX3NpemUgPSB2YjJfZ2V0X3BsYW5lX3BheWxvYWQodmIs IDApOwo+PiArwqDCoMKgwqAgc3JjX2RtYSA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRy KHZiLCAwKTsKPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhWTERfTUVNX1ZJRklGT19DT05U Uk9MLCAwKTsKPj4gK8KgwqDCoMKgIC8qIHJlc2V0IFZMRCBmaWZvIGZvciBhbGwgdmRlYyAqLwo+ PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhET1NfU1dfUkVTRVQwLCAoMSA8PCA1KSB8ICgxIDw8IDQp IHwgKDEgPDwgMykpOwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhET1NfU1dfUkVTRVQwLCAwKTsK Pj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoUE9XRVJfQ1RMX1ZMRCwgMSA8PCA0KTsKPj4gKwo+PiAr wqDCoMKgwqAgV1JJVEVfVlJFRyhWTERfTUVNX1ZJRklGT19TVEFSVF9QVFIsIHNyY19kbWEpOwo+ PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhWTERfTUVNX1ZJRklGT19FTkRfUFRSLCAoc3JjX2RtYSAr IHBheWxvYWRfc2l6ZSkpOwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhWTERfTUVNX1ZJRklGT19D VVJSX1BUUiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByb3VuZF9kb3duKHNy Y19kbWEsIFZERUNfRklGT19BTElHTikpOwo+PiArCj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKFZM RF9NRU1fVklGSUZPX0NPTlRST0wsIDEpOwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhWTERfTUVN X1ZJRklGT19DT05UUk9MLCAwKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoVkxEX01FTV9WSUZJ Rk9fQlVGX0NOVEwsIDIpOwo+PiArCj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKFZMRF9NRU1fVklG SUZPX1JQLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJvdW5kX2Rvd24oc3Jj X2RtYSwgVkRFQ19GSUZPX0FMSUdOKSk7Cj4+ICvCoMKgwqDCoCBkdW1teSA9IHBheWxvYWRfc2l6 ZSArIFZMRF9QQURESU5HX1NJWkU7Cj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKFZMRF9NRU1fVklG SUZPX1dQLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJvdW5kX2Rvd24oKHNy Y19kbWEgKyBkdW1teSksIFZERUNfRklGT19BTElHTikpOwo+PiArCj4+ICvCoMKgwqDCoCBXUklU RV9WUkVHKFZMRF9NRU1fVklGSUZPX0JVRl9DTlRMLCAzKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZS RUcoVkxEX01FTV9WSUZJRk9fQlVGX0NOVEwsIDIpOwo+PiArCj4+ICvCoMKgwqDCoCBXUklURV9W UkVHKFZMRF9NRU1fVklGSUZPX0NPTlRST0wsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKDB4MTEgPDwgMTYpIHwgKDEgPDwgMTApIHwgKDcgPDwgMykpOwo+PiArCj4+ICvCoMKg wqDCoCBXUklURV9WUkVHKEFWX1NDUkFUQ0hfMSwgMHgwKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZS RUcoSDI2NF9ERUNPREVfSU5GTywgKDEgPDwgMTMpKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUco SDI2NF9ERUNPREVfU0laRSwgcGF5bG9hZF9zaXplKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUco VklGRl9CSVRfQ05ULCBwYXlsb2FkX3NpemUgKiA4KTsKPj4gKwo+PiArwqDCoMKgwqAgcmV0dXJu IDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGNvbmZpZ19zcHNfcGFyYW1zKHN0cnVjdCBh bWxfaDI2NF9jdHggKmgyNjRfY3R4LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCAqc3BzX2Jhc2UsCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0 cnVjdCB2NGwyX2N0cmxfaDI2NF9zcHMgKnNwcykKPj4gK3sKPj4gK8KgwqDCoMKgIHUzMiBjZmdf dG1wID0gMDsKPj4gK8KgwqDCoMKgIHUzMiBmcmFtZV9zaXplOwo+PiArwqDCoMKgwqAgdTMyIG9m ZnNldCA9IDA7Cj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBkYXRhX3RtcFsweDEwMF07Cj4+ ICvCoMKgwqDCoCBpbnQgaSwgaWk7Cj4+ICsKPj4gK8KgwqDCoMKgIG1lbXNldChzcHNfYmFzZSwg MCwgMHgxMDApOwo+PiArCj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+ZnJhbWVfd2lkdGggPSAoc3Bz LT5waWNfd2lkdGhfaW5fbWJzX21pbnVzMSArIDEpIDw8IDQ7Cj4+ICvCoMKgwqDCoCBoMjY0X2N0 eC0+ZnJhbWVfaGVpZ2h0ID0gKHNwcy0+cGljX2hlaWdodF9pbl9tYXBfdW5pdHNfbWludXMxICsg Cj4+IDEpIDw8IDQ7Cj4+ICsKPj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNldF0gPSBQQVJBTV9C QVNFX1ZBTDsKPj4gK8KgwqDCoMKgIG9mZnNldCArPSAyOwo+PiArCj4+ICvCoMKgwqDCoCBkYXRh X3RtcFtvZmZzZXQrK10gPSBHRVRfU1BTX1BST0ZJTEVfSURDKHNwcy0+cHJvZmlsZV9pZGMpOwo+ PiArCj4+ICvCoMKgwqDCoCBkYXRhX3RtcFtvZmZzZXQrK10gPSAKPj4gR0VUX1NQU19TRVFfUEFS QU1fU0VUX0lEKHNwcy0+c2VxX3BhcmFtZXRlcl9zZXRfaWQpIHwKPj4gK8KgwqDCoMKgwqDCoMKg wqAgR0VUX1NQU19MRVZFTF9JREMoc3BzLT5sZXZlbF9pZGMpOwo+PiArCj4+ICvCoMKgwqDCoCBp ZiAoc3BzLT5wcm9maWxlX2lkYyA+PSAxMDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkYXRhX3RtcFtvZmZzZXQrK10gPSAKPj4gR0VUX1NQU19DSFJPTUFfRk9STUFUX0lEQyhzcHMt PmNocm9tYV9mb3JtYXRfaWRjKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRh dGFfdG1wW29mZnNldCsrXSA9ICgoc3BzLT5jaHJvbWFfZm9ybWF0X2lkYyBeIDEpIDw8IDEpOwo+ PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCBkYXRhX3RtcFtvZmZzZXQrK10gPSAKPj4g R0VUX1NQU19MT0cyX01BWF9GUkFNRV9OVU0oc3BzLT5sb2cyX21heF9mcmFtZV9udW1fbWludXM0 KTsKPj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsrXSA9IAo+PiBHRVRfU1BTX1BJQ19PUkRF Ul9UWVBFKHNwcy0+cGljX29yZGVyX2NudF90eXBlKTsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKHNw cy0+cGljX29yZGVyX2NudF90eXBlID09IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkYXRhX3RtcFtvZmZzZXQrK10gPQo+PiArIEdFVF9TUFNfUElDX09SREVSX0NOVF9MU0Ioc3Bz LT5sb2cyX21heF9waWNfb3JkZXJfY250X2xzYl9taW51czQpOwo+PiArwqDCoMKgwqAgfSBlbHNl IGlmIChzcHMtPnBpY19vcmRlcl9jbnRfdHlwZSA9PSAxKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGF0YV90bXBbb2Zmc2V0KytdID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2ZsYWcoc3BzLT5mbGFncywKPj4gKyBWNEwyX0gyNjRfU1BT X0ZMQUdfREVMVEFfUElDX09SREVSX0FMV0FZU19aRVJPKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkYXRhX3RtcFtvZmZzZXQrK10gPQo+PiArIEdFVF9TUFNfT0ZGU0VUX0ZPUl9OT05S RUZfUElDX0xPVyhzcHMtPm9mZnNldF9mb3Jfbm9uX3JlZl9waWMpOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsrXSA9Cj4+ICsgR0VUX1NQU19PRkZTRVRfRk9S X05PTlJFRl9QSUNfSElHSChzcHMtPm9mZnNldF9mb3Jfbm9uX3JlZl9waWMpOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsrXSA9Cj4+ICsgCj4+IEdFVF9TUFNf T0ZGU0VUX0ZPUl9UT1BfQk9UX0ZJRUxEX0xPVyhzcHMtPm9mZnNldF9mb3JfdG9wX3RvX2JvdHRv bV9maWVsZCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YV90bXBbb2Zmc2V0Kytd ID0KPj4gKyAKPj4gR0VUX1NQU19PRkZTRVRfRk9SX1RPUF9CT1RfRklFTERfSElHSChzcHMtPm9m ZnNldF9mb3JfdG9wX3RvX2JvdHRvbV9maWVsZCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGF0YV90bXBbb2Zmc2V0KytdID0gCj4+IHNwcy0+bnVtX3JlZl9mcmFtZXNfaW5fcGljX29y ZGVyX2NudF9jeWNsZTsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgZGF0YV90bXBb b2Zmc2V0KytdID0gCj4+IEdFVF9TUFNfTlVNX1JFRl9GUkFNRVMoc3BzLT5tYXhfbnVtX3JlZl9m cmFtZXMpIHwKPj4gK8KgwqDCoMKgwqDCoMKgwqAgR0VUX1NQU19HQVBTX0FMTE9XRURfRkxBRyhn ZXRfZmxhZyhzcHMtPmZsYWdzLAo+PiArIFY0TDJfSDI2NF9TUFNfRkxBR19HQVBTX0lOX0ZSQU1F X05VTV9WQUxVRV9BTExPV0VEKSk7Cj4+ICsKPj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsr XSA9IAo+PiBHRVRfU1BTX1BJQ19XSURUSF9JTl9NQlMoc3BzLT5waWNfd2lkdGhfaW5fbWJzX21p bnVzMSk7Cj4+ICsKPj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsrXSA9IAo+PiBHRVRfU1BT X1BJQ19IRUlHSFRfSU5fTUJTKHNwcy0+cGljX2hlaWdodF9pbl9tYXBfdW5pdHNfbWludXMxKTsK Pj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsrXSA9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgR0VUX1NQU19ESVJFQ1RfOFg4X0ZMQUdTCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZ2V0X2ZsYWcoc3BzLT5mbGFncywK Pj4gKyBWNEwyX0gyNjRfU1BTX0ZMQUdfRElSRUNUXzhYOF9JTkZFUkVOQ0UpKSB8Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VUX1NQU19NQl9BREFQVElWRV9GUkFNRV9GSUVMRF9GTEFH Uwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKGdldF9mbGFnKHNwcy0+ZmxhZ3MsCj4+ICsgVjRMMl9IMjY0X1NQU19GTEFHX01CX0FE QVBUSVZFX0ZSQU1FX0ZJRUxEKSkgfAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFVF9T UFNfRlJBTUVfTUJTX09OTFlfRkxBR1MKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChnZXRfZmxhZyhzcHMtPmZsYWdzLAo+PiArIFY0 TDJfSDI2NF9TUFNfRkxBR19GUkFNRV9NQlNfT05MWSkpOwo+PiArCj4+ICvCoMKgwqDCoCBmb3Ig KGkgPSAwOyBpIDwgMHgxMDA7IGkgKz0gNCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAoaWkgPSAwOyBpaSA8IDQ7IGlpKyspCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHNwc19iYXNlW2kgKyAzIC0gaWldID0gZGF0YV90bXBbaSArIGlpXTsK Pj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgZnJhbWVfc2l6ZSA9IChzcHMtPnBpY193 aWR0aF9pbl9tYnNfbWludXMxICsgMSkgKiAKPj4gKHNwcy0+cGljX2hlaWdodF9pbl9tYXBfdW5p dHNfbWludXMxICsgMSk7Cj4+ICvCoMKgwqDCoCBjZmdfdG1wID0gKGdldF9mbGFnKHNwcy0+Zmxh Z3MsIAo+PiBWNEwyX0gyNjRfU1BTX0ZMQUdfRlJBTUVfTUJTX09OTFkpIDw8IDMxKSB8Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo c3BzLT5tYXhfbnVtX3JlZl9mcmFtZXMgPDwgMjQpIHwgCj4+IChmcmFtZV9zaXplIDw8IDgpIHwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIChzcHMtPnBpY193aWR0aF9pbl9tYnNfbWludXMxICsgMSk7Cj4+ICvCoMKgwqDCoCBXUklU RV9WUkVHKEFWX1NDUkFUQ0hfMSwgY2ZnX3RtcCk7Cj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+c2Vx X2luZm8gPSBjZmdfdG1wOwo+PiArCj4+ICvCoMKgwqDCoCBjZmdfdG1wID0gMDsKPj4gK8KgwqDC oMKgIGNmZ190bXAgPSAoZ2V0X2ZsYWcoc3BzLT5mbGFncywgCj4+IFY0TDJfSDI2NF9TUFNfRkxB R19ESVJFQ1RfOFg4X0lORkVSRU5DRSkgPDwgMTUpIHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzcHMtPmNocm9tYV9mb3JtYXRf aWRjKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoQVZfU0NSQVRDSF8yLCBjZmdfdG1wKTsKPj4g Kwo+PiArwqDCoMKgwqAgY2ZnX3RtcCA9IDA7Cj4+ICvCoMKgwqDCoCBjZmdfdG1wID0gKHNwcy0+ bWF4X251bV9yZWZfZnJhbWVzIDw8IDgpIHwgKHNwcy0+bGV2ZWxfaWRjKTsKPj4gK8KgwqDCoMKg IFdSSVRFX1ZSRUcoQVZfU0NSQVRDSF9CLCBjZmdfdG1wKTsKPj4gKwo+PiArwqDCoMKgwqAgY2Zn X3RtcCA9ICgoc3BzLT5sZXZlbF9pZGMgJiAweGZmKSA8PCA3KSB8Cj4+ICvCoMKgwqDCoMKgwqDC oMKgIChnZXRfZmxhZyhzcHMtPmZsYWdzLCBWNEwyX0gyNjRfU1BTX0ZMQUdfRlJBTUVfTUJTX09O TFkpIDw8IAo+PiAyKTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoTkFMX1NFQVJDSF9DVEwsIFJE X1ZSRUcoTkFMX1NFQVJDSF9DVEwpIHwgY2ZnX3RtcCk7Cj4+ICsKPj4gK8KgwqDCoMKgIGgyNjRf Y3R4LT5tYl93aWR0aCA9IChzcHMtPnBpY193aWR0aF9pbl9tYnNfbWludXMxICsgNCkgJiAKPj4g MHhmZmZmZmZmYzsKPj4gK8KgwqDCoMKgIGgyNjRfY3R4LT5tYl9oZWlnaHQgPSAoc3BzLT5waWNf aGVpZ2h0X2luX21hcF91bml0c19taW51czEgKyA0KSAKPj4gJiAweGZmZmZmZmZjOwo+PiArwqDC oMKgwqAgaDI2NF9jdHgtPm1iX3RvdGFsID0gaDI2NF9jdHgtPm1iX3dpZHRoICogaDI2NF9jdHgt Pm1iX2hlaWdodDsKPj4gK8KgwqDCoMKgIGgyNjRfY3R4LT5tYXhfbnVtX3JlZl9mcmFtZXMgPSBz cHMtPm1heF9udW1fcmVmX2ZyYW1lczsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY29uZmln X3Bwc19wYXJhbXMoc3RydWN0IGFtbF9oMjY0X2N0eCAqaDI2NF9jdHgsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIHNob3J0 ICpwcHNfYmFzZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oMjY0X3BwcyAqcHBzKQo+PiArewo+ PiArwqDCoMKgwqAgdTMyIG9mZnNldCA9IDA7Cj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBk YXRhX3RtcFsweDEwMF07Cj4+ICvCoMKgwqDCoCB1MzIgbWF4X3JlZmVyZW5jZV9zaXplID0gVjRM Ml9IMjY0X05VTV9EUEJfRU5UUklFUzsKPj4gK8KgwqDCoMKgIHUzMiBtYXhfbGlzdF9zaXplOwo+ PiArwqDCoMKgwqAgaW50IGksIGlpOwo+PiArCj4+ICvCoMKgwqDCoCBtZW1zZXQocHBzX2Jhc2Us IDAsIDB4MTAwKTsKPj4gKwo+PiArwqDCoMKgwqAgZGF0YV90bXBbb2Zmc2V0KytdID0gUEFSQU1f QkFTRV9WQUw7Cj4+ICsKPj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsrXSA9Cj4+ICsgR0VU X1BQU19QSUNfUEFSQU1fU0VUX0lEKHBwcy0+cGljX3BhcmFtZXRlcl9zZXRfaWQpIHwKPj4gK8Kg wqDCoMKgwqDCoMKgwqAgR0VUX1BQU19TRVFfUEFSQU1fU0VUX0lEKHBwcy0+c2VxX3BhcmFtZXRl cl9zZXRfaWQpIHwKPj4gK8KgwqDCoMKgwqDCoMKgwqAgR0VUX1BQU19FTlRST1BZX0NPRElOR19N T0RFX0ZMQUcKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGdl dF9mbGFnKHBwcy0+ZmxhZ3MsCj4+ICsgVjRMMl9IMjY0X1BQU19GTEFHX0VOVFJPUFlfQ09ESU5H X01PREUpKSB8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgIEdFVF9QUFNfUElDX09SREVSX1BSRVNFTlRf RkxBRwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZ2V0X2Zs YWcocHBzLT5mbGFncywKPj4gKyBWNEwyX0gyNjRfUFBTX0ZMQUdfQk9UVE9NX0ZJRUxEX1BJQ19P UkRFUl9JTl9GUkFNRV9QUkVTRU5UKSk7Cj4+ICsKPj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNl dCsrXSA9Cj4+ICsgR0VUX1BQU19XRUlHSFRFRF9CSVBSRURfSURDKHBwcy0+d2VpZ2h0ZWRfYmlw cmVkX2lkYykgfAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFVF9QUFNfV0VJR0hURURf UFJFRF9GTEFHKGdldF9mbGFnKHBwcy0+ZmxhZ3MsCj4+ICsgVjRMMl9IMjY0X1BQU19GTEFHX1dF SUdIVEVEX1BSRUQpKSB8Cj4+ICsgCj4+IEdFVF9QUFNfTlVNX0lEWF9SRUZfTDFfTUlOVVMxKHBw cy0+bnVtX3JlZl9pZHhfbDFfZGVmYXVsdF9hY3RpdmVfbWludXMxKSAKPj4gfAo+PiArIAo+PiBH RVRfUFBTX05VTV9JRFhfUkVGX0wwX01JTlVTMShwcHMtPm51bV9yZWZfaWR4X2wwX2RlZmF1bHRf YWN0aXZlX21pbnVzMSk7Cj4+ICsKPj4gK8KgwqDCoMKgIGRhdGFfdG1wW29mZnNldCsrXSA9IAo+ PiBHRVRfUFBTX0lOSVRfUVNfTUlOVVMyNihwcHMtPnBpY19pbml0X3FzX21pbnVzMjYpIHwKPj4g K8KgwqDCoMKgwqDCoMKgwqAgR0VUX1BQU19JTklUX1FQX01JTlVTMjYocHBzLT5waWNfaW5pdF9x cF9taW51czI2KTsKPj4gKwo+PiArwqDCoMKgwqAgZGF0YV90bXBbb2Zmc2V0XSA9Cj4+ICsgR0VU X1BQU19DSFJPTUFfUVBfSU5ERVhfT0ZGU0VUKHBwcy0+Y2hyb21hX3FwX2luZGV4X29mZnNldCkg fAo+PiArwqDCoMKgwqDCoMKgwqDCoCBHRVRfUFBTX0RFQkxPQ0tfRklMVEVSX0NUUkxfUFJFU0VO VF9GTEFHCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoZ2V0X2ZsYWcocHBzLT5mbGFncywKPj4gKyBWNEwyX0gyNjRfUFBTX0ZMQUdf REVCTE9DS0lOR19GSUxURVJfQ09OVFJPTF9QUkVTRU5UKSkgfAo+PiArwqDCoMKgwqDCoMKgwqDC oCBHRVRfUFBTX0NPTlNUUkFJTl9JTlRSQV9QUkVEX0ZMQUcKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChnZXRfZmxhZyhwcHMtPmZs YWdzLAo+PiArIFY0TDJfSDI2NF9QUFNfRkxBR19DT05TVFJBSU5FRF9JTlRSQV9QUkVEKSkgfAo+ PiArwqDCoMKgwqDCoMKgwqDCoCBHRVRfUFBTX1JFRFVOREFOVF9QSUNfQ05UX1BSRVNFTlRfRkxB Rwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKGdldF9mbGFnKHBwcy0+ZmxhZ3MsCj4+ICsgVjRMMl9IMjY0X1BQU19GTEFHX1JFRFVO REFOVF9QSUNfQ05UX1BSRVNFTlQpKTsKPj4gK8KgwqDCoMKgIGlmIChnZXRfZmxhZwo+PiArwqDC oMKgwqDCoMKgwqDCoCAocHBzLT5mbGFncywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBWNEwyX0gy NjRfUFBTX0ZMQUdfVFJBTlNGT1JNXzhYOF9NT0RFIHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBW NEwyX0gyNjRfUFBTX0ZMQUdfU0NBTElOR19NQVRSSVhfUFJFU0VOVCkpCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZGF0YV90bXBbb2Zmc2V0XSB8PSAoMSA8PCAxMSk7Cj4+ICvCoMKgwqDC oCBvZmZzZXQrKzsKPj4gKwo+PiArwqDCoMKgwqAgZGF0YV90bXBbb2Zmc2V0KytdID0KPj4gK8Kg wqDCoMKgwqDCoMKgwqAgR0VUX1BQU19TQ0FMSU5HX01BVFJJWF9QUkVTRU5UX0ZMQUcoZ2V0X2Zs YWcKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHBwcy0+ZmxhZ3MsCj4+ICsg VjRMMl9IMjY0X1BQU19GTEFHX1NDQUxJTkdfTUFUUklYX1BSRVNFTlQpKSB8Cj4+ICvCoMKgwqDC oMKgwqDCoMKgIEdFVF9QUFNfVFJBTlNGT1JNXzhYOF9GTEFHKGdldF9mbGFnCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIChwcHMtPmZsYWdzLAo+PiArIFY0TDJfSDI2NF9QUFNfRkxBR19UUkFOU0ZPUk1fOFg4 X01PREUpKTsKPj4gKwo+PiArwqDCoMKgwqAgZGF0YV90bXBbb2Zmc2V0KytdID0KPj4gKyAKPj4g R0VUX1BQU19HRVRfU0VDT05EX0NIUk9NQV9RUF9PRkZTRVQocHBzLT5zZWNvbmRfY2hyb21hX3Fw X2luZGV4X29mZnNldCk7Cj4+ICsKPj4gK8KgwqDCoMKgIG1heF9saXN0X3NpemUgPSAocHBzLT5u dW1fcmVmX2lkeF9sMV9kZWZhdWx0X2FjdGl2ZV9taW51czEgKyAxKSArCj4+ICvCoMKgwqDCoMKg wqDCoMKgIChwcHMtPm51bV9yZWZfaWR4X2wwX2RlZmF1bHRfYWN0aXZlX21pbnVzMSArIDEpOwo+ PiArCj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+bWF4X251bV9yZWZfZnJhbWVzID0gbWF4X2xpc3Rf c2l6ZSA+IAo+PiBoMjY0X2N0eC0+bWF4X251bV9yZWZfZnJhbWVzID8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbWF4X2xpc3Rfc2l6ZSA6IAo+PiBoMjY0X2N0eC0+bWF4X251 bV9yZWZfZnJhbWVzOwo+PiArCj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKEFWX1NDUkFUQ0hfMCwg KChoMjY0X2N0eC0+bWF4X251bV9yZWZfZnJhbWVzICsgMSkgPDwgCj4+IDI0KSB8Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG1heF9yZWZlcmVuY2Vfc2l6ZSA8PCAxNikgfCAo bWF4X3JlZmVyZW5jZV9zaXplIDw8IAo+PiA4KSk7Cj4+ICsKPj4gK8KgwqDCoMKgIGZvciAoaSA9 IDA7IGkgPCAweDEwMDsgaSArPSA0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9y IChpaSA9IDA7IGlpIDwgNDsgaWkrKykKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcHBzX2Jhc2VbaSArIDMgLSBpaV0gPSBkYXRhX3RtcFtpICsgaWldOwo+PiAr wqDCoMKgwqAgfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoMjY0X2NvbmZpZ19wYXJhbXMo c3RydWN0IGFtbF92ZGVjX2N0eCAqY3R4KQo+PiArewo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF9o MjY0X2N0eCAqaDI2NF9jdHggPSAoc3RydWN0IGFtbF9oMjY0X2N0eCAKPj4gKiljdHgtPmNvZGVj X3ByaXY7Cj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCAqcF9zcHNfYmFzZSwgKnBfcHBzX2Jh c2U7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdmRlY19oMjY0X3N0YXRlbGVzc19jdHJsX3JlZiAqY3Ry bHMgPSAmaDI2NF9jdHgtPmN0cmxfcmVmOwo+PiArwqDCoMKgwqAgY29uc3Qgc3RydWN0IHY0bDJf Y3RybF9oMjY0X3NwcyAqc3BzID0gY3RybHMtPnNwczsKPj4gK8KgwqDCoMKgIGNvbnN0IHN0cnVj dCB2NGwyX2N0cmxfaDI2NF9wcHMgKnBwcyA9IGN0cmxzLT5wcHM7Cj4+ICsKPj4gK8KgwqDCoMKg IHBfc3BzX2Jhc2UgPSAodW5zaWduZWQgc2hvcnQgKikoaDI2NF9jdHgtPndvcmtzcGFjZV92YWRk ciArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTUVNX1NQU19CQVNFICsgc3BzLT5zZXFf cGFyYW1ldGVyX3NldF9pZCAqIDB4NDAwKTsKPj4gK8KgwqDCoMKgIHBfcHBzX2Jhc2UgPSAodW5z aWduZWQgc2hvcnQgKikoaDI2NF9jdHgtPndvcmtzcGFjZV92YWRkciArCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgTUVNX1BQU19CQVNFICsgcHBzLT5waWNfcGFyYW1ldGVyX3NldF9pZCAq IDB4MjAwKTsKPj4gKwo+PiArwqDCoMKgwqAgY29uZmlnX3Nwc19wYXJhbXMoaDI2NF9jdHgsIHBf c3BzX2Jhc2UsIHNwcyk7Cj4+ICvCoMKgwqDCoCBjb25maWdfcHBzX3BhcmFtcyhoMjY0X2N0eCwg cF9wcHNfYmFzZSwgcHBzKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY29uZmlnX2RlY29k ZV9jYW52YXMoc3RydWN0IGFtbF92ZGVjX2h3ICpodywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGgyNjRfZGVjb2Rl X2J1Zl9zcGVjICpidWZfc3BlYywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIG1iX3dpZHRoLCB1MzIgbWJfaGVpZ2h0KQo+ PiArewo+PiArwqDCoMKgwqAgaW50IGNhbnZhc19hbGxvY19yZXN1bHQgPSAwOwo+PiArwqDCoMKg wqAgaW50IGJsa21vZGUgPSAweDA7Cj4+ICsKPj4gK8KgwqDCoMKgIGNhbnZhc19hbGxvY19yZXN1 bHQgPSAKPj4gaHctPmh3X29wcy5jYW52YXNfYWxsb2MoJmJ1Zl9zcGVjLT55X2NhbnZhc19pbmRl eCk7Cj4+ICvCoMKgwqDCoCBjYW52YXNfYWxsb2NfcmVzdWx0ID0gCj4+IGh3LT5od19vcHMuY2Fu dmFzX2FsbG9jKCZidWZfc3BlYy0+dV9jYW52YXNfaW5kZXgpOwo+PiArwqDCoMKgwqAgYnVmX3Nw ZWMtPnZfY2FudmFzX2luZGV4ID0gYnVmX3NwZWMtPnVfY2FudmFzX2luZGV4Owo+PiArCj4+ICvC oMKgwqDCoCBpZiAoIWNhbnZhc19hbGxvY19yZXN1bHQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKiBjb25maWcgeSBjYW52YXMgKi8KPj4gKyBody0+aHdfb3BzLmNvbmZpZ19jYW52 YXMoYnVmX3NwZWMtPnlfY2FudmFzX2luZGV4LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmX3Nw ZWMtPnlfZG1hX2FkZHIsIG1iX3dpZHRoIAo+PiA8PCA0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bWJfaGVpZ2h0IDw8IDQsIDAsIGJsa21vZGUsIDcpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFdSSVRFX1ZSRUcoVkRFQ19BU1NJU1RfQ0FOVkFTX0JMSzMyLCAoMSA8PCAxMSkgfMKgwqDC oMKgwqDCoMKgIAo+PiAvKiBjYW52YXNfYmxrMzJfd3IgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGJsa21vZGUgPDwgMTApIHzCoMKgwqAgLyog Y2FudmFzX2JsazMyICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICgxIDw8IDgpIHzCoMKgIC8qIGNhbnZhc19pbmRleF93ciAqLwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoYnVmX3NwZWMtPnlfY2Fu dmFzX2luZGV4IDw8IDApwqDCoMKgwqDCoCAvKiAKPj4gY2FudmFzIGluZGV4ICovCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCApOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLyogY29uZmlnIHV2IGNhbnZhcyAqLwo+PiArIGh3LT5od19vcHMuY29uZmlnX2Nh bnZhcyhidWZfc3BlYy0+dV9jYW52YXNfaW5kZXgsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidWZf c3BlYy0+Y19kbWFfYWRkciwgbWJfd2lkdGggCj4+IDw8IDQsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBtYl9oZWlnaHQgPDwgMywgMCwgYmxrbW9kZSwgNyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgV1JJVEVfVlJFRyhWREVDX0FTU0lTVF9DQU5WQVNfQkxLMzIsICgxIDw8IDExKSB8wqDC oMKgwqDCoMKgwqAgCj4+IC8qIGNhbnZhc19ibGszMl93ciAqLwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoYmxrbW9kZSA8PCAxMCkgfMKgwqDCoCAv KiBjYW52YXNfYmxrMzIgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKDEgPDwgOCkgfMKgwqAgLyogY2FudmFzX2luZGV4X3dyICovCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChidWZfc3BlYy0+dV9j YW52YXNfaW5kZXggPDwgMCnCoMKgwqDCoMKgIC8qIAo+PiBjYW52YXMgaW5kZXggKi8KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBXUklURV9WUkVHKEFOQzBfQ0FOVkFTX0FERFIgKyBidWZfc3BlYy0+Y2FudmFz X3BvcywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3BlYzJjYW52YXMoYnVmX3NwZWMpKTsKPj4gK8KgwqDCoMKgIH0KPj4gK30KPj4gKwo+PiArc3Rh dGljIGludCBhbGxvY2F0ZV9jb2xvY2F0ZV9idWYoc3RydWN0IGFtbF9oMjY0X2N0eCAqaDI2NF9j dHgsIGludCAKPj4gcG9jKQo+PiArewo+PiArwqDCoMKgwqAgaW50IGk7Cj4+ICsKPj4gK8KgwqDC oMKgIGZvciAoaSA9IDA7IGkgPCBoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9udW07IGkrKykgewo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgoKGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVm X21hcCA+PiBpKSAmIDB4MSkgPT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9tYXAgfD0gKDEgPDwgaSk7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAg aWYgKGkgPT0gaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfbnVtKQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiAtMTsKPj4gKwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPmNvbG9jYXRl ZF9idWZfcG9jW2ldID0gcG9jOwo+PiArwqDCoMKgwqAgcHJfZGVidWcoIiVzIGNvbG9jYXRlZF9i dWZfaW5kZXggJWQgcG9jICVkXG4iLCBfX2Z1bmNfXywgaSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVmX3BvY1tpXSk7Cj4+ICsKPj4gK8KgwqDC oMKgIHJldHVybiBpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCByZWxlYXNlX2NvbG9jYXRl X2J1ZihzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCwgaW50IAo+PiBpbmRleCkKPj4gK3sK Pj4gK8KgwqDCoMKgIGlmIChpbmRleCA+PSAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKGluZGV4ID49IGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVmX251bSkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1Zwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgiJXMgZXJyb3IsIGluZGV4 ICVkIGlzIGJpZ2dlciB0aGFuIGJ1ZiAKPj4gY291bnQgJWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywgaW5kZXgsIAo+ PiBoMjY0X2N0eC0+bWF4X251bV9yZWZfZnJhbWVzKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoKChoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9tYXAgPj4gaW5kZXgpICYgCj4+IDB4MSkg PT0gMHgxKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9tYXAgJj0gKH4oMSA8PCAKPj4g aW5kZXgpKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHByX2RlYnVnCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgiJXMgY29sb2NhdGVkX2J1Zl9pbmRl eCAlZCAKPj4gcmVsZWFzZWQgcG9jICVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnVuY19fLCBpbmRl eCwKPj4gKyBoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9wb2NbaW5kZXhdKTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9wb2NbaW5kZXhd ID0gSU5WQUxJRF9QT0M7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKg wqAgfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGdldF9jb2xfYnVmX2luZGV4X2J5X3BvYyhz dHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCwgCj4+IGludCBwb2MpCj4+ICt7Cj4+ICvCoMKg wqDCoCBpbnQgaWR4Owo+PiArCj4+ICvCoMKgwqDCoCBmb3IgKGlkeCA9IDA7IGlkeCA8IGgyNjRf Y3R4LT5jb2xvY2F0ZWRfYnVmX251bTsgaWR4KyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAoaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfcG9jW2lkeF0gPT0gcG9jKQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKg IH0KPj4gKwo+PiArwqDCoMKgwqAgaWYgKGlkeCA9PSBoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9u dW0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWR4ID0gLTE7Cj4+ICsKPj4gK8KgwqDC oMKgIHJldHVybiBpZHg7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYWxsb2NfY29sb2NhdGVf Y21hKHN0cnVjdCBhbWxfaDI2NF9jdHggKmgyNjRfY3R4LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNfY3R4ICpj dHgpCj4+ICt7Cj4+ICvCoMKgwqDCoCBpbnQgYWxsb2Nfc2l6ZSA9IDA7Cj4+ICvCoMKgwqDCoCBp bnQgaTsKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfdmRlY19odyAqaHc7Cj4+ICsKPj4gK8KgwqDC oMKgIGlmIChoMjY0X2N0eC0+Y29sbGF0ZWRfY21hX3ZhZGRyKQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiAwOwo+PiArCj4+ICvCoMKgwqDCoCBodyA9IHZkZWNfZ2V0X2h3KGN0 eC0+ZGV2KTsKPj4gK8KgwqDCoMKgIGlmICghaHcpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC0xOwo+PiArCj4+ICvCoMKgwqDCoCAvKiA5NiA6Y29sIGJ1ZiBzaXplIGZvciBl YWNoIG1iICovCj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+b25lX2NvbF9idWZfc2l6ZSA9IGgyNjRf Y3R4LT5tYl90b3RhbCAqIDk2Owo+PiArwqDCoMKgwqAgYWxsb2Nfc2l6ZSA9IFBBR0VfQUxJR04o aDI2NF9jdHgtPm9uZV9jb2xfYnVmX3NpemUgKgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAoaDI2NF9jdHgtPm1heF9udW1fcmVmX2ZyYW1lcyArIAo+PiBDT0xf QlVGRkVSX01BUkdJTikpOwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPmNvbGxhdGVkX2NtYV92YWRk ciA9IGRtYV9hbGxvY19jb2hlcmVudChody0+ZGV2LCAKPj4gYWxsb2Nfc2l6ZSwKPj4gKyAmaDI2 NF9jdHgtPmNvbGxhdGVkX2NtYV9hZGRyLCBHRlBfS0VSTkVMKTsKPj4gK8KgwqDCoMKgIGlmICgh aDI2NF9jdHgtPmNvbGxhdGVkX2NtYV92YWRkcikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArwqDCoMKgwqAgcHJfZGVidWcKPj4gK8KgwqDCoMKg wqDCoMKgwqAgKCJjb2xsYXRlZF9jbWFfYWRkciA9IDB4JWxseCwgb25lX2NvbF9idWZfc2l6ZSA9 ICV4IAo+PiBhbGxvY19zaXplID0gJXhcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9j dHgtPmNvbGxhdGVkX2NtYV9hZGRyLCBoMjY0X2N0eC0+b25lX2NvbF9idWZfc2l6ZSwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoCBhbGxvY19zaXplKTsKPj4gK8KgwqDCoMKgIGgyNjRfY3R4LT5jb2xs YXRlZF9jbWFfYWRkcl9lbmQgPQo+PiArwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+Y29sbGF0 ZWRfY21hX2FkZHIgKyBhbGxvY19zaXplOwo+PiArwqDCoMKgwqAgbWVtc2V0KGgyNjRfY3R4LT5j b2xsYXRlZF9jbWFfdmFkZHIsIDAsIGFsbG9jX3NpemUpOwo+PiArwqDCoMKgwqAgaDI2NF9jdHgt PmNvbF9idWZfYWxsb2Nfc2l6ZSA9IGFsbG9jX3NpemU7Cj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+ Y29sb2NhdGVkX2J1Zl9tYXAgPSAwOwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPmNvbG9jYXRlZF9i dWZfbnVtID0gaDI2NF9jdHgtPm1heF9udW1fcmVmX2ZyYW1lcyArIAo+PiBDT0xfQlVGRkVSX01B UkdJTjsKPj4gKwo+PiArwqDCoMKgwqAgLyogMzIgOiBtYXggaW5kZXggb2YgY28tbG9jYXRlIGJ1 ZmZlciAqLwo+PiArwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfcG9jW2ldID0gSU5WQUxJ RF9QT0M7Cj4+ICsKPj4gK8KgwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg dm9pZCBjb25maWdfcF9yZWZsaXN0KHN0cnVjdCBhbWxfaDI2NF9jdHggKmgyNjRfY3R4LAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHY0bDJfaDI2NF9yZWZlcmVuY2UgKnY0bDJfcDBfcmVmbGlzdCwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsaXN0X3NpemUpCj4+ICt7 Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdmRlY19oMjY0X3N0YXRlbGVzc19jdHJsX3JlZiAqY3RybHMg PSAmaDI2NF9jdHgtPmN0cmxfcmVmOwo+PiArwqDCoMKgwqAgc3RydWN0IHY0bDJfY3RybF9oMjY0 X2RlY29kZV9wYXJhbXMgKmRlY29kZSA9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgIChzdHJ1Y3QgdjRs Ml9jdHJsX2gyNjRfZGVjb2RlX3BhcmFtcyAqKWN0cmxzLT5kZWNvZGU7Cj4+ICvCoMKgwqDCoCBz dHJ1Y3QgdjRsMl9oMjY0X2RwYl9lbnRyeSAqZHBiID0gZGVjb2RlLT5kcGI7Cj4+ICvCoMKgwqDC oCB1OCBpbmRleDsKPj4gK8KgwqDCoMKgIGludCBpOwo+PiArCj4+ICvCoMKgwqDCoCBmb3IgKGkg PSAwOyBpIDwgbGlzdF9zaXplOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp bmRleCA9IHY0bDJfcDBfcmVmbGlzdFtpXS5pbmRleDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBoMjY0X2N0eC0+cmVmX2xpc3QwW2ldLnVzZWQgPSAxOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGgyNjRfY3R4LT5yZWZfbGlzdDBbaV0uZHBiID0gJmRwYltpbmRleF07Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9jdHgtPnJlZl9saXN0MFtpXS5wb2MgPSAKPj4g ZHBiW2luZGV4XS50b3BfZmllbGRfb3JkZXJfY250Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGgyNjRfY3R4LT5yZWZfbGlzdDBbaV0ubG9uZ190ZXJtX2ZsYWcgPQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHBiW2luZGV4XS5mbGFncyAmIAo+PiBWNEwyX0gyNjRf RFBCX0VOVFJZX0ZMQUdfTE9OR19URVJNID8gdHJ1ZSA6IGZhbHNlOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5yZWZfbGlzdDBbaV0uZHBiX2luZGV4ID0gaW5kZXg7Cj4+ ICvCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+bGlzdF9zaXplWzBdID0gaTsKPj4g K30KPj4gKwo+PiArc3RhdGljIHZvaWQgY29uZmlnX2JfcmVmbGlzdChzdHJ1Y3QgYW1sX2gyNjRf Y3R4ICpoMjY0X2N0eCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCB2NGwyX2gyNjRfcmVmZXJlbmNlICp2NGwyX2IwX3JlZmxpc3Qs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgdjRsMl9oMjY0X3JlZmVyZW5jZSAqdjRsMl9iMV9yZWZsaXN0LAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGxpc3Rfc2l6ZSkK Pj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCB2ZGVjX2gyNjRfc3RhdGVsZXNzX2N0cmxfcmVmICpj dHJscyA9ICZoMjY0X2N0eC0+Y3RybF9yZWY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9jdHJs X2gyNjRfZGVjb2RlX3BhcmFtcyAqZGVjb2RlID0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKHN0cnVj dCB2NGwyX2N0cmxfaDI2NF9kZWNvZGVfcGFyYW1zICopY3RybHMtPmRlY29kZTsKPj4gK8KgwqDC oMKgIHN0cnVjdCB2NGwyX2gyNjRfZHBiX2VudHJ5ICpkcGIgPSBkZWNvZGUtPmRwYjsKPj4gK8Kg wqDCoMKgIHU4IGluZGV4Owo+PiArwqDCoMKgwqAgaW50IGksIGo7Cj4+ICsKPj4gK8KgwqDCoMKg IGZvciAoaSA9IDA7IGkgPCBsaXN0X3NpemU7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGluZGV4ID0gdjRsMl9iMF9yZWZsaXN0W2ldLmluZGV4Owo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChkcGJbaW5kZXhdLnRvcF9maWVsZF9vcmRlcl9jbnQgPiAKPj4gZGVj b2RlLT50b3BfZmllbGRfb3JkZXJfY250KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5saXN0X3NpemVbMF0gPSBpOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9jdHgtPnJlZl9s aXN0MFtpXS51c2VkID0gMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+ cmVmX2xpc3QwW2ldLmRwYiA9ICZkcGJbaW5kZXhdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGgyNjRfY3R4LT5yZWZfbGlzdDBbaV0ucG9jID0gCj4+IGRwYltpbmRleF0udG9wX2ZpZWxk X29yZGVyX2NudDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+cmVmX2xp c3QwW2ldLmxvbmdfdGVybV9mbGFnID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRwYltpbmRleF0uZmxhZ3MgJiAKPj4gVjRMMl9IMjY0X0RQQl9FTlRSWV9GTEFHX0xPTkdf VEVSTSA/IHRydWUgOiBmYWxzZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0 eC0+cmVmX2xpc3QwW2ldLmNvbF9idWZfaW5kZXggPQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfY29sX2J1Zl9pbmRleF9ieV9wb2MoaDI2NF9jdHgsIAo+ PiBkcGJbaW5kZXhdLnRvcF9maWVsZF9vcmRlcl9jbnQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGgyNjRfY3R4LT5yZWZfbGlzdDBbaV0uZHBiX2luZGV4ID0gaW5kZXg7Cj4+ICvCoMKg wqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIGZvciAoaiA9IDA7IGogPCBsaXN0X3NpemU7IGorKykg ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluZGV4ID0gdjRsMl9iMV9yZWZsaXN0W2pd LmluZGV4Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkcGJbaW5kZXhdLnRvcF9m aWVsZF9vcmRlcl9jbnQgPCAKPj4gZGVjb2RlLT50b3BfZmllbGRfb3JkZXJfY250KSB7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5saXN0X3Np emVbMV0gPSBqOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBi cmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaDI2NF9jdHgtPnJlZl9saXN0MVtqXS51c2VkID0gMTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+cmVmX2xpc3QxW2pdLmRwYiA9ICZkcGJbaW5kZXhdOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5yZWZfbGlzdDFbal0ucG9jID0g Cj4+IGRwYltpbmRleF0udG9wX2ZpZWxkX29yZGVyX2NudDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBoMjY0X2N0eC0+cmVmX2xpc3QxW2pdLmxvbmdfdGVybV9mbGFnID0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRwYltpbmRleF0uZmxhZ3MgJiAKPj4gVjRMMl9I MjY0X0RQQl9FTlRSWV9GTEFHX0xPTkdfVEVSTSA/IHRydWUgOiBmYWxzZTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+cmVmX2xpc3QxW2pdLmNvbF9idWZfaW5kZXggPQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfY29sX2J1Zl9p bmRleF9ieV9wb2MoaDI2NF9jdHgsIAo+PiBkcGJbaW5kZXhdLnRvcF9maWVsZF9vcmRlcl9jbnQp Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5yZWZfbGlzdDFbal0uZHBi X2luZGV4ID0gaW5kZXg7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIGlmICgoaDI2 NF9jdHgtPmxpc3Rfc2l6ZVsxXSArIGgyNjRfY3R4LT5saXN0X3NpemVbMF0pIDwgbGlzdF9zaXpl KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oInJlZiBsaXN0IGluY29ycmVj dCBsaXN0MCAlZCBsaXN0MCAlZCAKPj4gbGlzdF9zaXplJWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5saXN0X3NpemVbMF0sIGgyNjRf Y3R4LT5saXN0X3NpemVbMV0sIAo+PiBsaXN0X3NpemUpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg aW50IHBvY19pc19pbl9kcGIoaW50IHBvYywgY29uc3Qgc3RydWN0IHY0bDJfaDI2NF9kcGJfZW50 cnkgCj4+ICpkcGIpCj4+ICt7Cj4+ICvCoMKgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoMKgIGludCBy ZXQgPSAwOwo+PiArCj4+ICvCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgVjRMMl9IMjY0X05VTV9E UEJfRU5UUklFUzsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBvYyA9 PSBkcGJbaV0udG9wX2ZpZWxkX29yZGVyX2NudCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiJXMgZmluZCBwb2MgJWQgY29sIGluZGV4ICV4IGlu RFBCXG4iLCAKPj4gX19mdW5jX18sIHBvYywgaSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0K Pj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGludCBnZXRfcmVmX2xpc3Rfc2l6ZShzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0 X2N0eCwgaW50IAo+PiBjdXJfbGlzdCkKPj4gK3sKPj4gK8KgwqDCoMKgIHVuc2lnbmVkIHNob3J0 IG92ZXJyaWRlX2ZsYWcgPSAKPj4gaDI2NF9jdHgtPmRwYl9wYXJhbS5sLmRhdGFbUkVGX0lEQ19P VkVSUklERV9GTEFHXTsKPj4gK8KgwqDCoMKgIGludCBudW1fcmVmX2lkeF9seF9hY3RpdmVfbWlu dXMxOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAoY3VyX2xpc3QgPT0gMCkgewo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG51bV9yZWZfaWR4X2x4X2FjdGl2ZV9taW51czEgPQo+PiArIGgyNjRf Y3R4LT5jdHJsX3JlZi5wcHMtPm51bV9yZWZfaWR4X2wwX2RlZmF1bHRfYWN0aXZlX21pbnVzMTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAob3ZlcnJpZGVfZmxhZykKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbnVtX3JlZl9pZHhfbHhfYWN0aXZl X21pbnVzMSA9Cj4+ICsgaDI2NF9jdHgtPmRwYl9wYXJhbS5kcGIubnVtX3JlZl9pZHhfbDBfYWN0 aXZlX21pbnVzMTsKPj4gK8KgwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbnVtX3JlZl9pZHhfbHhfYWN0aXZlX21pbnVzMSA9Cj4+ICsgaDI2NF9jdHgtPmN0cmxf cmVmLnBwcy0+bnVtX3JlZl9pZHhfbDFfZGVmYXVsdF9hY3RpdmVfbWludXMxOwo+PiArwqDCoMKg wqAgfQo+PiArwqDCoMKgwqAgcHJfZGVidWcoIiVzIGdldCBsaXN0ICVkIHNpemUgJWRcbiIsIF9f ZnVuY19fLCBjdXJfbGlzdCwgCj4+IG51bV9yZWZfaWR4X2x4X2FjdGl2ZV9taW51czEgKyAxKTsK Pj4gKwo+PiArwqDCoMKgwqAgcmV0dXJuIG51bV9yZWZfaWR4X2x4X2FjdGl2ZV9taW51czEgKyAx Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGdldF9yZWZpZHhfYnlfcGljbnVtKHN0cnVjdCBh bWxfaDI2NF9jdHggKmgyNjRfY3R4LCBpbnQgCj4+IHBpY19udW0sCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgY3Vycl9saXN0 KQo+PiArewo+PiArwqDCoMKgwqAgaW50IGk7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgaDI2NF9kZWNv ZGVfYnVmX3NwZWMgKnJlZl9saXN0Owo+PiArCj4+ICvCoMKgwqDCoCBpZiAoY3Vycl9saXN0ID09 IDApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVmX2xpc3QgPSAmaDI2NF9jdHgtPnJl Zl9saXN0MFswXTsKPj4gK8KgwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZWZfbGlzdCA9ICZoMjY0X2N0eC0+cmVmX2xpc3QxWzBdOwo+PiArCj4+ICvCoMKgwqDCoCBm b3IgKGkgPSAwOyByZWZfbGlzdFtpXS5kcGI7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChwaWNfbnVtID09IHJlZl9saXN0W2ldLmRwYi0+cGljX251bSkKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGk7Cj4+ICvCoMKgwqDC oCB9Cj4+ICsKPj4gK8KgwqDCoMKgIHJldHVybiAtMTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0 cnVjdCBoMjY0X2RlY29kZV9idWZfc3BlYyAqZ2V0X3N0X3JlZnBpY19ieV9udW0oc3RydWN0IAo+ PiBhbWxfaDI2NF9jdHggKmgyNjRfY3R4LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgcGljX251bSwgCj4+IGludCBjdXJyX2xpc3QpCj4+ ICt7Cj4+ICvCoMKgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoMKgIHN0cnVjdCBoMjY0X2RlY29kZV9i dWZfc3BlYyAqcmVmX2xpc3Q7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChjdXJyX2xpc3QgPT0gMCkK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfbGlzdCA9ICZoMjY0X2N0eC0+cmVmX2xp c3QwX3VucmVvcmRlcmVkWzBdOwo+PiArwqDCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJlZl9saXN0ID0gJmgyNjRfY3R4LT5yZWZfbGlzdDFfdW5yZW9yZGVyZWRbMF07 Cj4+ICsKPj4gK8KgwqDCoMKgIGZvciAoaSA9IDA7IHJlZl9saXN0W2ldLmRwYjsgaSsrKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBpY19udW0gPT0gcmVmX2xpc3RbaV0uZHBi LT5waWNfbnVtICYmIAo+PiByZWZfbGlzdFtpXS5sb25nX3Rlcm1fZmxhZyA9PSAwKQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gJnJlZl9saXN0W2ld Owo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIHN0cnVjdCBoMjY0X2RlY29kZV9idWZfc3BlYyAqZ2V0X2x0X3JlZnBpY19i eV9udW0oc3RydWN0IAo+PiBhbWxfaDI2NF9jdHggKmgyNjRfY3R4LAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgcGljX251bSwgCj4+IGlu dCBjdXJyX2xpc3QpCj4+ICt7Cj4+ICvCoMKgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoMKgIHN0cnVj dCBoMjY0X2RlY29kZV9idWZfc3BlYyAqcmVmX2xpc3Q7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChj dXJyX2xpc3QgPT0gMCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfbGlzdCA9ICZo MjY0X2N0eC0+cmVmX2xpc3QwX3VucmVvcmRlcmVkWzBdOwo+PiArwqDCoMKgwqAgZWxzZQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZl9saXN0ID0gJmgyNjRfY3R4LT5yZWZfbGlzdDFf dW5yZW9yZGVyZWRbMF07Cj4+ICsKPj4gK8KgwqDCoMKgIGZvciAoaSA9IDA7IHJlZl9saXN0W2ld LmRwYjsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBpY19udW0gPT0g cmVmX2xpc3RbaV0uZHBiLT5waWNfbnVtICYmIAo+PiByZWZfbGlzdFtpXS5sb25nX3Rlcm1fZmxh ZyA9PSAxKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gJnJlZl9saXN0W2ldOwo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4g TlVMTDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgcmVvcmRlcl9zaG9ydF90ZXJtKHN0cnVj dCBzbGljZSAqY3Vycl9zbGljZSwgaW50IGN1cl9saXN0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBwaWNfbnVtX2x4LCBpbnQg KnJlZl9pZHhfbHgpCj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0 X2N0eCA9IGNvbnRhaW5lcl9vZihjdXJyX3NsaWNlLCBzdHJ1Y3QgCj4+IGFtbF9oMjY0X2N0eCwg bXNsaWNlKTsKPj4gK8KgwqDCoMKgIGludCBjX2lkeCwgbl9pZHg7Cj4+ICvCoMKgwqDCoCBpbnQg bnVtX3JlZl9pZHhfbHhfYWN0aXZlOwo+PiArwqDCoMKgwqAgc3RydWN0IGgyNjRfZGVjb2RlX2J1 Zl9zcGVjICpwaWNfbHggPSBOVUxMOwo+PiArwqDCoMKgwqAgc3RydWN0IGgyNjRfZGVjb2RlX2J1 Zl9zcGVjICpyZWZfbGlzdF9yZW9yZGVyZWQ7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChjdXJfbGlz dCA9PSAwKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZl9saXN0X3Jlb3JkZXJlZCA9 ICZoMjY0X2N0eC0+cmVmX2xpc3QwWzBdOwo+PiArwqDCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJlZl9saXN0X3Jlb3JkZXJlZCA9ICZoMjY0X2N0eC0+cmVmX2xpc3Qx WzBdOwo+PiArCj4+ICvCoMKgwqDCoCBudW1fcmVmX2lkeF9seF9hY3RpdmUgPSBnZXRfcmVmX2xp c3Rfc2l6ZShoMjY0X2N0eCwgY3VyX2xpc3QpOwo+PiArCj4+ICvCoMKgwqDCoCAvKiBmaW5kIHNo b3J0LXRlcm0gcmVmIGZyYW1lIHdpdGggcGljX251bSBpcyBwaWNfbnVtX2x4ICovCj4+ICvCoMKg wqDCoCBwaWNfbHggPSBnZXRfc3RfcmVmcGljX2J5X251bShoMjY0X2N0eCwgcGljX251bV9seCwg Y3VyX2xpc3QpOwo+PiArwqDCoMKgwqAgaWYgKCFwaWNfbHgpIHsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBwcl9kZWJ1ZygiY2Fubm90IGZpbmQgc3QgcGljX2x4IGZvciAlZFxuIiwgcGlj X251bV9seCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArwqDCoMKg wqAgfQo+PiArCj4+ICvCoMKgwqDCoCBpZiAoKnJlZl9pZHhfbHggPT0gZ2V0X3JlZmlkeF9ieV9w aWNudW0oaDI2NF9jdHgsIHBpY19udW1fbHgsIAo+PiBjdXJfbGlzdCkpIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1Zygibm8gbmVlZCB0byBtb3ZlIHBpYyBseCAlZFxuIiwg KnJlZl9pZHhfbHgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpyZWZfaWR4X2x4ID0g KnJlZl9pZHhfbHggKyAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4g K8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgZm9yIChjX2lkeCA9IG51bV9yZWZfaWR4X2x4 X2FjdGl2ZTsgY19pZHggPiAqcmVmX2lkeF9seDsgY19pZHgtLSkKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBtZW1jcHkoJnJlZl9saXN0X3Jlb3JkZXJlZFtjX2lkeF0sIAo+PiAmcmVmX2xp c3RfcmVvcmRlcmVkW2NfaWR4IC0gMV0sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzaXplb2Yoc3RydWN0IGgyNjRfZGVjb2RlX2J1Zl9zcGVjKSk7Cj4+ICsKPj4g K8KgwqDCoMKgIG1lbWNweSgmcmVmX2xpc3RfcmVvcmRlcmVkWypyZWZfaWR4X2x4XSwgcGljX2x4 LCBzaXplb2Yoc3RydWN0IAo+PiBoMjY0X2RlY29kZV9idWZfc3BlYykpOwo+PiArwqDCoMKgwqAg cHJfZGVidWcoIiVzIDEgOiBSZWZQaWNMaXN0WFslZCBdID0gcGljICVwIHBpY19udW0oJWQpXG4i LCAKPj4gX19mdW5jX18sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqcmVmX2lkeF9s eCwgcGljX2x4LCAKPj4gcmVmX2xpc3RfcmVvcmRlcmVkWypyZWZfaWR4X2x4XS5kcGItPnBpY19u dW0pOwo+PiArwqDCoMKgwqAgKnJlZl9pZHhfbHggPSAqcmVmX2lkeF9seCArIDE7Cj4+ICsKPj4g K8KgwqDCoMKgIG5faWR4ID0gKnJlZl9pZHhfbHg7Cj4+ICvCoMKgwqDCoCBmb3IgKGNfaWR4ID0g KnJlZl9pZHhfbHg7IGNfaWR4IDw9IG51bV9yZWZfaWR4X2x4X2FjdGl2ZTsgCj4+IGNfaWR4Kysp IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmVmX2xpc3RfcmVvcmRlcmVkW2Nf aWR4XS5sb25nX3Rlcm1fZmxhZyB8fCAKPj4gIXJlZl9saXN0X3Jlb3JkZXJlZFtjX2lkeF0uZHBi IHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfbGlzdF9yZW9yZGVy ZWRbY19pZHhdLmRwYi0+cGljX251bSAhPSBwaWNfbnVtX2x4KQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1jcHkoJnJlZl9saXN0X3Jlb3JkZXJlZFtuX2lk eCsrXSwgCj4+ICZyZWZfbGlzdF9yZW9yZGVyZWRbY19pZHhdLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihzdHJ1Y3QgaDI2 NF9kZWNvZGVfYnVmX3NwZWMpKTsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgaDI2 NF9jdHgtPmxpc3Rfc2l6ZVtjdXJfbGlzdF0gPSBudW1fcmVmX2lkeF9seF9hY3RpdmU7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHJlb3JkZXJfbG9uZ190ZXJtKHN0cnVjdCBzbGljZSAqY3Vy cl9zbGljZSwgaW50IGN1cl9saXN0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgbHRfcGljX251bSwgaW50ICpyZWZfaWR4X2x4KQo+ PiArewo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF9oMjY0X2N0eCAqaDI2NF9jdHggPSBjb250YWlu ZXJfb2YoY3Vycl9zbGljZSwgc3RydWN0IAo+PiBhbWxfaDI2NF9jdHgsIG1zbGljZSk7Cj4+ICvC oMKgwqDCoCBpbnQgbnVtX3JlZl9pZHhfbHhfYWN0aXZlOwo+PiArwqDCoMKgwqAgaW50IGNfaWR4 LCBuX2lkeDsKPj4gK8KgwqDCoMKgIHN0cnVjdCBoMjY0X2RlY29kZV9idWZfc3BlYyAqcmVmX2xp c3Q7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgaDI2NF9kZWNvZGVfYnVmX3NwZWMgKnBpY19sdCA9IE5V TEw7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChjdXJfbGlzdCA9PSAwKQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJlZl9saXN0ID0gJmgyNjRfY3R4LT5yZWZfbGlzdDBbMF07Cj4+ICvCoMKg wqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVmX2xpc3QgPSAmaDI2NF9j dHgtPnJlZl9saXN0MVswXTsKPj4gKwo+PiArwqDCoMKgwqAgbnVtX3JlZl9pZHhfbHhfYWN0aXZl ID0gZ2V0X3JlZl9saXN0X3NpemUoaDI2NF9jdHgsIGN1cl9saXN0KTsKPj4gKwo+PiArwqDCoMKg wqAgLyogZmluZCBsb25nLXRlcm0gcmVmIGZyYW1lIHdpdGggcGljX251bSBpcyBsdF9waWNfbnVt ICovCj4+ICvCoMKgwqDCoCBwaWNfbHQgPSBnZXRfbHRfcmVmcGljX2J5X251bShoMjY0X2N0eCwg bHRfcGljX251bSwgY3VyX2xpc3QpOwo+PiArwqDCoMKgwqAgaWYgKCFwaWNfbHQpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiY2Fubm90IGZpbmQgbHQgcGljX2x4IGZv ciAlZFxuIiwgbHRfcGljX251bSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu Owo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCBpZiAoKnJlZl9pZHhfbHggPT0gZ2V0 X3JlZmlkeF9ieV9waWNudW0oaDI2NF9jdHgsIGx0X3BpY19udW0sIAo+PiBjdXJfbGlzdCkpIHsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1Zygibm8gbmVlZCB0byBtb3ZlIHBp YyBseCAlZFxuIiwgKnJlZl9pZHhfbHgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpy ZWZfaWR4X2x4ID0gKnJlZl9pZHhfbHggKyAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybjsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgZm9yIChjX2lkeCA9IG51 bV9yZWZfaWR4X2x4X2FjdGl2ZTsgY19pZHggPiAqcmVmX2lkeF9seDsgY19pZHgtLSkKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1jcHkoJnJlZl9saXN0W2NfaWR4XSwgJnJlZl9saXN0 W2NfaWR4IC0gMV0sIAo+PiBzaXplb2Yoc3RydWN0IGgyNjRfZGVjb2RlX2J1Zl9zcGVjKSk7Cj4+ ICsKPj4gK8KgwqDCoMKgIG1lbWNweSgmcmVmX2xpc3RbKnJlZl9pZHhfbHhdLCBwaWNfbHQsIHNp emVvZihzdHJ1Y3QgCj4+IGgyNjRfZGVjb2RlX2J1Zl9zcGVjKSk7Cj4+ICvCoMKgwqDCoCBwcl9k ZWJ1ZygiJXMgMSA6IFJlZlBpY0xpc3RYWyVkIF0gPSBwaWMgJXAgcGljX251bSglZClcbiIsIAo+ PiBfX2Z1bmNfXywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpyZWZfaWR4X2x4LCBw aWNfbHQsIHJlZl9saXN0WypyZWZfaWR4X2x4XS5kcGItPnBpY19udW0pOwo+PiArwqDCoMKgwqAg KnJlZl9pZHhfbHggPSAqcmVmX2lkeF9seCArIDE7Cj4+ICsKPj4gK8KgwqDCoMKgIG5faWR4ID0g KnJlZl9pZHhfbHg7Cj4+ICvCoMKgwqDCoCAvKiBQb2ludGVyIGRwYiBpcyBOVUxMIG1lYW5zIHRo aXMgaXMgYSBkdW1teSBmcmFtZSBzdG9yZSAqLwo+PiArwqDCoMKgwqAgZm9yIChjX2lkeCA9ICpy ZWZfaWR4X2x4OyBjX2lkeCA8PSBudW1fcmVmX2lkeF9seF9hY3RpdmU7IAo+PiBjX2lkeCsrKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFyZWZfbGlzdFtjX2lkeF0ubG9uZ190 ZXJtX2ZsYWcgfHwgCj4+ICFyZWZfbGlzdFtjX2lkeF0uZHBiIHx8Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfbGlzdFtjX2lkeF0uZHBiLT5waWNfbnVtICE9IGx0X3Bp Y19udW0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lbWNw eSgmcmVmX2xpc3Rbbl9pZHgrK10sICZyZWZfbGlzdFtjX2lkeF0sCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKHN0cnVjdCBo MjY0X2RlY29kZV9idWZfc3BlYykpOwo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoCBo MjY0X2N0eC0+bGlzdF9zaXplW2N1cl9saXN0XSA9IG51bV9yZWZfaWR4X2x4X2FjdGl2ZTsKPj4g K30KPj4gKwo+PiArc3RhdGljIHZvaWQgZ2V0X21vZGlmaWNhdGlvbl9jbWQodW5zaWduZWQgc2hv cnQgKnJlb3JkZXJfY21kLCBzdHJ1Y3QgCj4+IHNsaWNlICpjdXJyX3NsaWNlLCBpbnQgbGlzdCkK Pj4gK3sKPj4gK8KgwqDCoMKgIGludCBpLCBqLCB2YWw7Cj4+ICsKPj4gK8KgwqDCoMKgIHZhbCA9 IGN1cnJfc2xpY2UtPnJlZl9waWNfbGlzdF9yZW9yZGVyaW5nX2ZsYWdbbGlzdF07Cj4+ICvCoMKg wqDCoCBpZiAodmFsKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSA9IDA7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaiA9IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZG8gewo+PiArIGN1cnJfc2xpY2UtPm1vZGlmaWNhdGlvbl9vZl9waWNfbnVtc19pZGNbbGlz dF1baV0gPQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmVvcmRlcl9jbWRbaisrXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKGogPj0gUkVPUkRFUl9DTURfTUFYKSB7Cj4+ICsgY3Vycl9z bGljZS0+bW9kaWZpY2F0aW9uX29mX3BpY19udW1zX2lkY1tsaXN0XVtpXSA9IDA7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVh azsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZhbCA9IAo+PiBjdXJy X3NsaWNlLT5tb2RpZmljYXRpb25fb2ZfcGljX251bXNfaWRjW2xpc3RdW2ldOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodmFsID09IDAgfHwgdmFsID09 IDEpCj4+ICsgY3Vycl9zbGljZS0+YWJzX2RpZmZfcGljX251bV9taW51czFbbGlzdF1baV0gPSBy ZW9yZGVyX2NtZFtqKytdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBlbHNlIGlmICh2YWwgPT0gMikKPj4gKyBjdXJyX3NsaWNlLT5sb25nX3Rlcm1fcGljX2lk eFtsaXN0XVtpXSA9IHJlb3JkZXJfY21kW2orK107Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSsrOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpID49IFJFT1JERVJJTkdfQ09NTUFORF9NQVhfU0la RSkgewo+PiArIGN1cnJfc2xpY2UtPnJlZl9waWNfbGlzdF9yZW9yZGVyaW5nX2ZsYWdbbGlzdF0g PSAwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIH07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChq ID4gUkVPUkRFUl9DTURfTUFYKSB7Cj4+ICsgY3Vycl9zbGljZS0+cmVmX3BpY19saXN0X3Jlb3Jk ZXJpbmdfZmxhZ1tsaXN0XSA9IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9IHdo aWxlICh2YWwgIT0gMyk7Cj4+ICvCoMKgwqDCoCB9Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IHJlb3JkZXJfcGljcyhzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCwgc3RydWN0IHNsaWNl IAo+PiAqY3Vycl9zbGljZSwgaW50IGN1cl9saXN0KQo+PiArewo+PiArwqDCoMKgwqAgaW50ICpt b2RpZmljYXRpb25fb2ZfcGljX251bXNfaWRjID0KPj4gKyBjdXJyX3NsaWNlLT5tb2RpZmljYXRp b25fb2ZfcGljX251bXNfaWRjW2N1cl9saXN0XTsKPj4gK8KgwqDCoMKgIGludCAqYWJzX2RpZmZf cGljX251bV9taW51czEgPQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN1cnJfc2xpY2Ut PmFic19kaWZmX3BpY19udW1fbWludXMxW2N1cl9saXN0XTsKPj4gK8KgwqDCoMKgIGludCAqbG9u Z190ZXJtX3BpY19pZHggPSBjdXJyX3NsaWNlLT5sb25nX3Rlcm1fcGljX2lkeFtjdXJfbGlzdF07 Cj4+ICvCoMKgwqDCoCBpbnQgcGljX251bV9seF9ub3dhcnAsIHBpY19udW1fbHhfcHJlZCwgcGlj X251bV9seDsKPj4gK8KgwqDCoMKgIGludCBjdXJyX3BpY19udW0gPSBjdXJyX3NsaWNlLT5mcmFt ZV9udW07Cj4+ICvCoMKgwqDCoCBpbnQgbWF4X3BpY19udW0gPSAxIDw8ICg0ICsgCj4+IGgyNjRf Y3R4LT5jdHJsX3JlZi5zcHMtPmxvZzJfbWF4X2ZyYW1lX251bV9taW51czQpOwo+PiArwqDCoMKg wqAgaW50IHJlZl9pZHhfbHggPSAwOwo+PiArwqDCoMKgwqAgaW50IG5vd2FycF90bXAgPSAwOwo+ PiArwqDCoMKgwqAgaW50IGk7Cj4+ICsKPj4gK8KgwqDCoMKgIHBpY19udW1fbHhfcHJlZCA9IGN1 cnJfcGljX251bTsKPj4gK8KgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBSRU9SREVSSU5HX0NPTU1B TkRfTUFYX1NJWkUgJiYgCj4+IG1vZGlmaWNhdGlvbl9vZl9waWNfbnVtc19pZGNbaV0gIT0gMzsg aSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKG1vZGlmaWNhdGlvbl9vZl9w aWNfbnVtc19pZGNbaV0gPiAzKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHByX2luZm8oImVycm9yLCBJbnZhbGlkIAo+PiBtb2RpZmljYXRpb25fb2ZfcGlj X251bXNfaWRjIGNvbW1hbmRcbiIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobW9kaWZpY2F0aW9uX29mX3BpY19udW1zX2lk Y1tpXSA8IDIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKG1vZGlmaWNhdGlvbl9vZl9waWNfbnVtc19pZGNbaV0gPT0gMCkgewo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbm93YXJwX3Rt cCA9IHBpY19udW1fbHhfcHJlZCAtIAo+PiAoYWJzX2RpZmZfcGljX251bV9taW51czFbaV0gKyAx KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHBpY19udW1fbHhfbm93YXJwID0gbm93YXJwX3RtcCArIAo+PiAobm93YXJwX3RtcCA8 IDAgPyBtYXhfcGljX251bSA6IDApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9IGVsc2UgaWYgKG1vZGlmaWNhdGlvbl9vZl9waWNfbnVtc19pZGNbaV0gPT0g MSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbm93YXJwX3RtcCA9IHBpY19udW1fbHhfcHJlZCArIAo+PiAoYWJzX2RpZmZfcGlj X251bV9taW51czFbaV0gKyAxKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBpY19udW1fbHhfbm93YXJwID0gbm93YXJwX3RtcCAt Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKG5vd2FycF90bXAgPiBtYXhfcGljX251bSA/IAo+PiBtYXhf cGljX251bSA6IDApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBpY19udW1f bHhfcHJlZCA9IHBpY19udW1fbHhfbm93YXJwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAocGljX251bV9seF9ub3dhcnAgPiBjdXJyX3BpY19udW0pCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBwaWNfbnVtX2x4ID0gcGljX251bV9seF9ub3dhcnAgLSAKPj4gbWF4X3BpY19udW07Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBpY19udW1f bHggPSBwaWNfbnVtX2x4X25vd2FycDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZW9yZGVyX3Nob3J0X3Rlcm0oY3Vycl9zbGljZSwgY3VyX2xpc3Qs IAo+PiBwaWNfbnVtX2x4LCAmcmVmX2lkeF9seCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmVvcmRlcl9sb25nX3Rlcm0oY3Vycl9zbGljZSwgY3VyX2xpc3QsIAo+PiBsb25nX3Rlcm1fcGlj X2lkeFtpXSwgJnJlZl9pZHhfbHgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4g K8KgwqDCoMKgIH0KPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY29weV9yZWZfbGlzdChzdHJ1 Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCwgaW50IGN1cnJfbGlzdCkKPj4gK3sKPj4gK8KgwqDC oMKgIGlmIChjdXJyX2xpc3QgPT0gMCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1j cHkoaDI2NF9jdHgtPnJlZl9saXN0MF91bnJlb3JkZXJlZCwgCj4+IGgyNjRfY3R4LT5yZWZfbGlz dDAsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2YoaDI2 NF9jdHgtPnJlZl9saXN0MCkpOwo+PiArwqDCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIG1lbWNweShoMjY0X2N0eC0+cmVmX2xpc3QxX3VucmVvcmRlcmVkLCAKPj4gaDI2 NF9jdHgtPnJlZl9saXN0MCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNpemVvZihoMjY0X2N0eC0+cmVmX2xpc3QxKSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2 b2lkIGgyNjRfcmVvcmRlcl9yZWZsaXN0cyhzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCkK Pj4gK3sKPj4gK8KgwqDCoMKgIHVuc2lnbmVkIHNob3J0ICpyZW9yZGVyX2NtZDsKPj4gK8KgwqDC oMKgIHN0cnVjdCBzbGljZSAqY3Vycl9zbGljZSA9ICZoMjY0X2N0eC0+bXNsaWNlOwo+PiArCj4+ ICvCoMKgwqDCoCBtZW1zZXQoY3Vycl9zbGljZSwgMCwgc2l6ZW9mKHN0cnVjdCBzbGljZSkpOwo+ PiArwqDCoMKgwqAgLyogcGFyc2VkIGJ5IHVjb2RlICovCj4+ICvCoMKgwqDCoCBjdXJyX3NsaWNl LT5zbGljZV90eXBlID0gaDI2NF9jdHgtPmRwYl9wYXJhbS5sLmRhdGFbU0xJQ0VfVFlQRV07Cj4+ ICvCoMKgwqDCoCBjdXJyX3NsaWNlLT5udW1fcmVmX2lkeF9sMCA9IAo+PiBoMjY0X2N0eC0+ZHBi X3BhcmFtLmRwYi5udW1fcmVmX2lkeF9sMF9hY3RpdmVfbWludXMxICsgMTsKPj4gK8KgwqDCoMKg IGN1cnJfc2xpY2UtPm51bV9yZWZfaWR4X2wxID0gCj4+IGgyNjRfY3R4LT5kcGJfcGFyYW0uZHBi Lm51bV9yZWZfaWR4X2wxX2FjdGl2ZV9taW51czEgKyAxOwo+PiArwqDCoMKgwqAgY3Vycl9zbGlj ZS0+ZnJhbWVfbnVtID0gaDI2NF9jdHgtPmN0cmxfcmVmLmRlY29kZS0+ZnJhbWVfbnVtOwo+PiAr Cj4+ICvCoMKgwqDCoCBpZiAoY3Vycl9zbGljZS0+c2xpY2VfdHlwZSAhPSBJX1NMSUNFICYmIGN1 cnJfc2xpY2UtPnNsaWNlX3R5cGUgCj4+ICE9IFNJX1NMSUNFKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmVvcmRlcl9jbWQgPSAmaDI2NF9jdHgtPmRwYl9wYXJhbS5tbWNvLmwwX3Jl b3JkZXJfY21kWzBdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDM6cGFyc2VkIGJ5 IHVjb2RlLCBtZWFucyBubyByZW9yZGVyIG5lZWRlZCAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChyZW9yZGVyX2NtZFswXSAhPSAzKQo+PiArIGN1cnJfc2xpY2UtPnJlZl9waWNf bGlzdF9yZW9yZGVyaW5nX2ZsYWdbMF0gPSAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGVsc2UKPj4gKyBjdXJyX3NsaWNlLT5yZWZfcGljX2xpc3RfcmVvcmRlcmluZ19mbGFnWzBdID0g MDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9tb2RpZmljYXRpb25fY21k KHJlb3JkZXJfY21kLCBjdXJyX3NsaWNlLCAwKTsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDC oMKgwqAgaWYgKGN1cnJfc2xpY2UtPnNsaWNlX3R5cGUgPT0gQl9TTElDRSkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJlb3JkZXJfY21kID0gJmgyNjRfY3R4LT5kcGJfcGFyYW0ubW1j by5sMV9yZW9yZGVyX2NtZFswXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAzOnBh cnNlZCBieSB1Y29kZSwgbWVhbnMgbm8gcmVvcmRlciBuZWVkZWQgKi8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAocmVvcmRlcl9jbWRbMF0gIT0gMykKPj4gKyBjdXJyX3NsaWNlLT5y ZWZfcGljX2xpc3RfcmVvcmRlcmluZ19mbGFnWzFdID0gMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBlbHNlCj4+ICsgY3Vycl9zbGljZS0+cmVmX3BpY19saXN0X3Jlb3JkZXJpbmdfZmxh Z1sxXSA9IDA7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfbW9kaWZpY2F0 aW9uX2NtZChyZW9yZGVyX2NtZCwgY3Vycl9zbGljZSwgMSk7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoMKgIGlmIChjdXJyX3NsaWNlLT5zbGljZV90eXBlICE9IElfU0xJQ0UgJiYKPj4g K8KgwqDCoMKgwqDCoMKgwqAgY3Vycl9zbGljZS0+c2xpY2VfdHlwZSAhPSBTSV9TTElDRSAmJgo+ PiArwqDCoMKgwqDCoMKgwqDCoCBjdXJyX3NsaWNlLT5yZWZfcGljX2xpc3RfcmVvcmRlcmluZ19m bGFnWzBdICE9IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb3B5X3JlZl9saXN0 KGgyNjRfY3R4LCAwKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZW9yZGVyX3BpY3Mo aDI2NF9jdHgsIGN1cnJfc2xpY2UsIDApOwo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDC oCBpZiAoY3Vycl9zbGljZS0+c2xpY2VfdHlwZSA9PSBCX1NMSUNFICYmIAo+PiBjdXJyX3NsaWNl LT5yZWZfcGljX2xpc3RfcmVvcmRlcmluZ19mbGFnWzFdICE9IDApIHsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb3B5X3JlZl9saXN0KGgyNjRfY3R4LCAxKTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZW9yZGVyX3BpY3MoaDI2NF9jdHgsIGN1cnJfc2xpY2UsIDEpOwo+PiAr wqDCoMKgwqAgfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoMjY0X2NvbmZpZ19yZWZfbGlz dHMoc3RydWN0IGFtbF92ZGVjX2N0eCAqY3R4KQo+PiArewo+PiArwqDCoMKgwqAgc3RydWN0IGFt bF9oMjY0X2N0eCAqaDI2NF9jdHggPSAoc3RydWN0IGFtbF9oMjY0X2N0eCAKPj4gKiljdHgtPmNv ZGVjX3ByaXY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdmRlY19oMjY0X3N0YXRlbGVzc19jdHJsX3Jl ZiAqY3RybHMgPSAmaDI2NF9jdHgtPmN0cmxfcmVmOwo+PiArwqDCoMKgwqAgc3RydWN0IHY0bDJf Y3RybF9oMjY0X2RlY29kZV9wYXJhbXMgKmRlY29kZSA9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9kZWNvZGVfcGFyYW1zICopY3RybHMtPmRlY29k ZTsKPj4gK8KgwqDCoMKgIHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9zcHMgKnNwcyA9IChzdHJ1Y3Qg djRsMl9jdHJsX2gyNjRfc3BzIAo+PiAqKWN0cmxzLT5zcHM7Cj4+ICvCoMKgwqDCoCBjb25zdCBz dHJ1Y3QgdjRsMl9oMjY0X2RwYl9lbnRyeSAqZHBiID0gZGVjb2RlLT5kcGI7Cj4+ICvCoMKgwqDC oCBzdHJ1Y3QgdjRsMl9oMjY0X3JlZmxpc3RfYnVpbGRlciBidWlsZGVyOwo+PiArwqDCoMKgwqAg c3RydWN0IHY0bDJfaDI2NF9yZWZlcmVuY2UgCj4+IHY0bDJfcDBfcmVmbGlzdFtWNEwyX0gyNjRf UkVGX0xJU1RfTEVOXTsKPj4gK8KgwqDCoMKgIHN0cnVjdCB2NGwyX2gyNjRfcmVmZXJlbmNlIAo+ PiB2NGwyX2IwX3JlZmxpc3RbVjRMMl9IMjY0X1JFRl9MSVNUX0xFTl07Cj4+ICvCoMKgwqDCoCBz dHJ1Y3QgdjRsMl9oMjY0X3JlZmVyZW5jZSAKPj4gdjRsMl9iMV9yZWZsaXN0W1Y0TDJfSDI2NF9S RUZfTElTVF9MRU5dOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAoZGVjb2RlLT5mbGFncyA9PSBWNEwy X0gyNjRfREVDT0RFX1BBUkFNX0ZMQUdfSURSX1BJQykKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm47Cj4+ICsKPj4gK8KgwqDCoMKgIHY0bDJfaDI2NF9pbml0X3JlZmxpc3RfYnVp bGRlcigmYnVpbGRlciwgZGVjb2RlLCBzcHMsIGRwYik7Cj4+ICvCoMKgwqDCoCBwcl9kZWJ1Zygi JXMgbnVtX3ZhbGlkID0gJWQiLCBfX2Z1bmNfXywgYnVpbGRlci5udW1fdmFsaWQpOwo+PiArCj4+ ICvCoMKgwqDCoCBpZiAoZGVjb2RlLT5mbGFncyAmIFY0TDJfSDI2NF9ERUNPREVfUEFSQU1fRkxB R19QRlJBTUUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2NGwyX2gyNjRfYnVpbGRf cF9yZWZfbGlzdCgmYnVpbGRlciwgdjRsMl9wMF9yZWZsaXN0KTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25maWdfcF9yZWZsaXN0KGgyNjRfY3R4LCB2NGwyX3AwX3JlZmxpc3QsIAo+ PiBidWlsZGVyLm51bV92YWxpZCk7Cj4+ICvCoMKgwqDCoCB9IGVsc2UgaWYgKGRlY29kZS0+Zmxh Z3MgJiBWNEwyX0gyNjRfREVDT0RFX1BBUkFNX0ZMQUdfQkZSQU1FKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdjRsMl9oMjY0X2J1aWxkX2JfcmVmX2xpc3RzKCZidWlsZGVyLCB2NGwy X2IwX3JlZmxpc3QsIAo+PiB2NGwyX2IxX3JlZmxpc3QpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGNvbmZpZ19iX3JlZmxpc3QoaDI2NF9jdHgsIHY0bDJfYjBfcmVmbGlzdCwgCj4+IHY0 bDJfYjFfcmVmbGlzdCwgYnVpbGRlci5udW1fdmFsaWQpOwo+PiArwqDCoMKgwqAgfQo+PiArfQo+ PiArCj4+ICtzdGF0aWMgdm9pZCBjbGVhcl91bnVzZWRfY29sX2J1ZihzdHJ1Y3QgYW1sX2gyNjRf Y3R4ICpoMjY0X2N0eCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfY3RybF9oMjY0X2RlY29kZV9wYXJhbXMg Cj4+ICpkZWNvZGUpCj4+ICt7Cj4+ICvCoMKgwqDCoCBpbnQgaSwgY29sX3BvYzsKPj4gKwo+PiAr wqDCoMKgwqAgLyogZmx1c2ggYWxsIGNvbCBidWZmZXJzIHdoZW4gSURSICovCj4+ICvCoMKgwqDC oCBpZiAoZGVjb2RlLT5mbGFncyA9PSBWNEwyX0gyNjRfREVDT0RFX1BBUkFNX0ZMQUdfSURSX1BJ Qykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDMyIDogbWF4IGluZGV4IG9mIGNv LWxvY2F0ZSBidWZmZXIgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAw OyBpIDwgMzI7IGkrKykKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmVsZWFzZV9jb2xvY2F0ZV9idWYoaDI2NF9jdHgsIGkpOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgZm9yIChp ID0gMDsgaSA8IGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVmX251bTsgaSsrKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29sX3BvYyA9IGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVmX3BvY1tp XTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY29sX3BvYyAhPSBJTlZBTElEX1BP QyAmJiAocG9jX2lzX2luX2RwYihjb2xfcG9jLCAKPj4gZGVjb2RlLT5kcGIpICE9IDEpKQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWxlYXNlX2NvbG9jYXRl X2J1ZihoMjY0X2N0eCwgaSk7Cj4+ICvCoMKgwqDCoCB9Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2 b2lkIGgyNjRfY29uZmlnX2RlY29kZV9zcGVjKHN0cnVjdCBhbWxfdmRlY19odyAqaHcsIHN0cnVj dCAKPj4gYW1sX3ZkZWNfY3R4ICpjdHgpCj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX2gy NjRfY3R4ICpoMjY0X2N0eCA9IChzdHJ1Y3QgYW1sX2gyNjRfY3R4IAo+PiAqKWh3LT5jdXJyX2N0 eDsKPj4gK8KgwqDCoMKgIHN0cnVjdCB2ZGVjX2gyNjRfc3RhdGVsZXNzX2N0cmxfcmVmICpjdHJs cyA9ICZoMjY0X2N0eC0+Y3RybF9yZWY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9jdHJsX2gy NjRfZGVjb2RlX3BhcmFtcyAqZGVjb2RlID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo c3RydWN0IHY0bDJfY3RybF9oMjY0X2RlY29kZV9wYXJhbXMgKiljdHJscy0+ZGVjb2RlOwo+PiAr wqDCoMKgwqAgc3RydWN0IGgyNjRfZGVjb2RlX2J1Zl9zcGVjICpidWZfc3BlYzsKPj4gK8KgwqDC oMKgIHN0cnVjdCB2YjJfYnVmZmVyICp2YjsKPj4gK8KgwqDCoMKgIHN0cnVjdCB2YjJfdjRsMl9i dWZmZXIgKnZiMl92NGwyOwo+PiArwqDCoMKgwqAgc3RydWN0IHZiMl9xdWV1ZSAqdnE7Cj4+ICvC oMKgwqDCoCBpbnQgaTsKPj4gKwo+PiArwqDCoMKgwqAgY2xlYXJfdW51c2VkX2NvbF9idWYoaDI2 NF9jdHgsIGRlY29kZSk7Cj4+ICsKPj4gK8KgwqDCoMKgIHZiMl92NGwyID0gdjRsMl9tMm1fbmV4 dF9kc3RfYnVmKGN0eC0+bTJtX2N0eCk7Cj4+ICvCoMKgwqDCoCB2YiA9ICZ2YjJfdjRsMi0+dmIy X2J1ZjsKPj4gKwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPmN1cnJfc3BlYy55X2RtYV9hZGRyID0g Cj4+IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZiLCAwKTsKPj4gK8KgwqDCoMKgIGlm IChjdHgtPnBpY19pbmZvLnBsYW5lX251bSA+IDEpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaDI2NF9jdHgtPmN1cnJfc3BlYy5jX2RtYV9hZGRyID0gCj4+IHZiMl9kbWFfY29udGlnX3Bs YW5lX2RtYV9hZGRyKHZiLCAxKTsKPj4gK8KgwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBoMjY0X2N0eC0+Y3Vycl9zcGVjLmNfZG1hX2FkZHIgPQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9jdHgt PmN1cnJfc3BlYy55X2RtYV9hZGRyICsgCj4+IGN0eC0+cGljX2luZm8uZmJfc2l6ZVswXTsKPj4g K8KgwqDCoMKgIGgyNjRfY3R4LT5jdXJyX3NwZWMuY2FudmFzX3BvcyA9IDA7Cj4+ICvCoMKgwqDC oCBoMjY0X2N0eC0+Y3Vycl9zcGVjLmNvbF9idWZfaW5kZXggPQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFsbG9jYXRlX2NvbG9jYXRlX2J1ZihoMjY0X2N0eCwgCj4+IGRlY29kZS0+dG9w X2ZpZWxkX29yZGVyX2NudCk7Cj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+Y3Vycl9zcGVjLnBvYyA9 IGRlY29kZS0+dG9wX2ZpZWxkX29yZGVyX2NudDsKPj4gK8KgwqDCoMKgIGNvbmZpZ19kZWNvZGVf Y2FudmFzKGh3LCAmaDI2NF9jdHgtPmN1cnJfc3BlYywgCj4+IGgyNjRfY3R4LT5tYl93aWR0aCwg aDI2NF9jdHgtPm1iX2hlaWdodCk7Cj4+ICsKPj4gK8KgwqDCoMKgIGgyNjRfY29uZmlnX3JlZl9s aXN0cyhjdHgpOwo+PiArCj4+ICvCoMKgwqDCoCB2cSA9IHY0bDJfbTJtX2dldF92cShjdHgtPm0y bV9jdHgsIAo+PiBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FKTsKPj4gKwo+PiAr wqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IFY0TDJfSDI2NF9OVU1fRFBCX0VOVFJJRVM7IGkrKykg ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2NGwyX2gyNjRfZHBiX2VudHJ5 ICpkcGIgPSAmZGVjb2RlLT5kcGJbaV07Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoIShkcGItPmZsYWdzICYgVjRMMl9IMjY0X0RQQl9FTlRSWV9GTEFHX0FDVElWRSkpCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiAr Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmX3NwZWMgPSBmaW5kX3NwZWNfYnlfZHBi X2luZGV4KGgyNjRfY3R4LCBpKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYnVm X3NwZWMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVm X3NwZWMtPmNhbnZhc19wb3MgPSBpICsgMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdmIgPSB2YjJfZmluZF9idWZmZXIodnEsIGRwYi0+cmVmZXJlbmNlX3Rz KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCF2Yikg ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcHJfZXJyKCJyZWYgcGljIGZvciB0cyAlbGx1IGxvc3RcbiIsIAo+PiBkcGItPnJlZmVy ZW5jZV90cyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGJ1Zl9zcGVjLT55X2RtYV9hZGRyID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZiMl9kbWFfY29udGlnX3BsYW5lX2Rt YV9hZGRyKHZiLCAwKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKGN0eC0+cGljX2luZm8ucGxhbmVfbnVtID4gMSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1Zl9zcGVjLT5jX2RtYV9h ZGRyID0gCj4+IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZiLCAxKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmX3NwZWMtPmNf ZG1hX2FkZHIgPQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1Zl9zcGVjLT55X2RtYV9hZGRyICsgCj4+ IGN0eC0+cGljX2luZm8uZmJfc2l6ZVswXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29uZmlnX2RlY29kZV9jYW52YXMoaHcsIGJ1Zl9zcGVjLCAKPj4gaDI2 NF9jdHgtPm1iX3dpZHRoLCBoMjY0X2N0eC0+bWJfaGVpZ2h0KTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoImNvbmZpZyBjYW52YXMgZm9yIHBvYyAl ZCBjYW52YXMgJWQgCj4+IHlfZG1hX2FkZHIgMHglbGx4XG4iLAo+PiArIGJ1Zl9zcGVjLT5kcGIt PnRvcF9maWVsZF9vcmRlcl9jbnQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBidWZfc3BlYy0+Y2FudmFzX3BvcywgYnVmX3NwZWMtPnlfZG1h X2FkZHIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgIH0KPj4g Kwo+PiArwqDCoMKgwqAgaDI2NF9yZW9yZGVyX3JlZmxpc3RzKGgyNjRfY3R4KTsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludCBoMjY0X2NvbmZpZ19kZWNvZGVfYnVmKHN0cnVjdCBhbWxfdmRlY19o dyAqaHcsIHN0cnVjdCAKPj4gYW1sX3ZkZWNfY3R4ICpjdHgpCj4+ICt7Cj4+ICvCoMKgwqDCoCBz dHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCA9IChzdHJ1Y3QgYW1sX2gyNjRfY3R4IAo+PiAq KWh3LT5jdXJyX2N0eDsKPj4gK8KgwqDCoMKgIHN0cnVjdCB2ZGVjX2gyNjRfc3RhdGVsZXNzX2N0 cmxfcmVmICpjdHJscyA9ICZoMjY0X2N0eC0+Y3RybF9yZWY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3Qg djRsMl9jdHJsX2gyNjRfZGVjb2RlX3BhcmFtcyAqZGVjb2RlID0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoc3RydWN0IHY0bDJfY3RybF9oMjY0X2RlY29kZV9wYXJhbXMgKiljdHJscy0+ ZGVjb2RlOwo+PiArwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBjYW52YXNfYWRyOwo+PiArwqDCoMKg wqAgdW5zaWduZWQgaW50IHJlZl9jZmc7Cj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcmVmX2Nm Z19vbmNlID0gMDsKPj4gK8KgwqDCoMKgIHVuc2lnbmVkIGludCB0eXBlX2NmZyA9IDB4MzsgLyog MHgzOiBmcmFtZSB0eXBlICovCj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgY29sb2NhdGVfYWRy X29mZnNldCwgY29sb2NhdGVfd3JfYWRyOwo+PiArwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZm8w Owo+PiArwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZm8xOwo+PiArwqDCoMKgwqAgdW5zaWduZWQg aW50IGluZm8yOwo+PiArwqDCoMKgwqAgaW50IGksIGo7Cj4+ICvCoMKgwqDCoCBpbnQgaDI2NF9i dWZmZXJfaW5mb19kYXRhX3dyaXRlX2NvdW50Owo+PiArwqDCoMKgwqAgdTggY2FudmFzX3BvczsK Pj4gK8KgwqDCoMKgIHU4IHVzZV9tb2RlXzh4OF9mbGFnOwo+PiArCj4+ICvCoMKgwqDCoCBXUklU RV9WUkVHKEgyNjRfQ1VSUkVOVF9QT0NfSURYX1JFU0VULCAwKTsKPj4gK8KgwqDCoMKgIFdSSVRF X1ZSRUcoSDI2NF9DVVJSRU5UX1BPQywgZGVjb2RlLT50b3BfZmllbGRfb3JkZXJfY250KTsKPj4g K8KgwqDCoMKgIFdSSVRFX1ZSRUcoSDI2NF9DVVJSRU5UX1BPQywgZGVjb2RlLT50b3BfZmllbGRf b3JkZXJfY250KTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoSDI2NF9DVVJSRU5UX1BPQywgZGVj b2RlLT5ib3R0b21fZmllbGRfb3JkZXJfY250KTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoQ1VS Ul9DQU5WQVNfQ1RSTCwgaDI2NF9jdHgtPmN1cnJfc3BlYy5jYW52YXNfcG9zIDw8IAo+PiAyNCk7 Cj4+ICvCoMKgwqDCoCBjYW52YXNfYWRyID0gUkRfVlJFRyhDVVJSX0NBTlZBU19DVFJMKSAmIDB4 ZmZmZmZmOwo+PiArwqDCoMKgwqAgcHJfZGVidWcoImNhbnZhc19wb3MgPSAlZCBjYW52YXNfYWRy IDB4JWx4XG4iLCAKPj4gaDI2NF9jdHgtPmN1cnJfc3BlYy5jYW52YXNfcG9zLCBjYW52YXNfYWRy KTsKPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhSRUNfQ0FOVkFTX0FERFIsIGNhbnZhc19h ZHIpOwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhEQktSX0NBTlZBU19BRERSLCBjYW52YXNfYWRy KTsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoREJLV19DQU5WQVNfQUREUiwgY2FudmFzX2Fkcik7 Cj4+ICsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoSDI2NF9CVUZGRVJfSU5GT19JTkRFWCwgMTYp Owo+PiArwqDCoMKgwqAgaW5mbzAgPSAweGY0ODA7Cj4+ICvCoMKgwqDCoCBpbmZvMSA9IGRlY29k ZS0+dG9wX2ZpZWxkX29yZGVyX2NudDsKPj4gK8KgwqDCoMKgIGluZm8yID0gZGVjb2RlLT5ib3R0 b21fZmllbGRfb3JkZXJfY250Owo+PiArwqDCoMKgwqAgaWYgKGRlY29kZS0+Ym90dG9tX2ZpZWxk X29yZGVyX2NudCA8IGRlY29kZS0+dG9wX2ZpZWxkX29yZGVyX2NudCkKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpbmZvMCB8PSAweDEwMDsKPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVfVlJF RyhIMjY0X0JVRkZFUl9JTkZPX0RBVEEsIGluZm8wIHwgMHhmKTsKPj4gK8KgwqDCoMKgIFdSSVRF X1ZSRUcoSDI2NF9CVUZGRVJfSU5GT19EQVRBLCBpbmZvMSk7Cj4+ICvCoMKgwqDCoCBXUklURV9W UkVHKEgyNjRfQlVGRkVSX0lORk9fREFUQSwgaW5mbzIpOwo+PiArCj4+ICvCoMKgwqDCoCBmb3Ig KGogPSAwOyBqIDwgVjRMMl9IMjY0X05VTV9EUEJfRU5UUklFUzsgaisrKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfaDI2NF9kcGJfZW50cnkgKmRwYiA9ICZkZWNv ZGUtPmRwYltqXTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluZm8wID0gMDsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmZvMSA9IDA7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaW5mbzIgPSAwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChk cGItPmZsYWdzICYgVjRMMl9IMjY0X0RQQl9FTlRSWV9GTEFHX0FDVElWRSkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmZvMCA9IDB4ZjQ4MDsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRlY29kZS0+Ym90dG9t X2ZpZWxkX29yZGVyX2NudCA8IAo+PiBkZWNvZGUtPnRvcF9maWVsZF9vcmRlcl9jbnQpCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp bmZvMCB8PSAweDEwMDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaW5mbzEgPSBkcGItPnRvcF9maWVsZF9vcmRlcl9jbnQ7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluZm8yID0gZHBiLT5ib3R0b21fZmllbGRfb3JkZXJf Y250Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZHBi LT5mbGFncyAmIAo+PiBWNEwyX0gyNjRfRFBCX0VOVFJZX0ZMQUdfTE9OR19URVJNKQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5m bzAgfD0gKCgxIDw8IDUpIHwgKDEgPDwgNCkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IH0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXUklURV9WUkVHKEgyNjRfQlVGRkVSX0lO Rk9fREFUQSwgaW5mbzApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZSRUco SDI2NF9CVUZGRVJfSU5GT19EQVRBLCBpbmZvMSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgV1JJVEVfVlJFRyhIMjY0X0JVRkZFUl9JTkZPX0RBVEEsIGluZm8yKTsKPj4gK8KgwqDCoMKg IH0KPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhIMjY0X0JVRkZFUl9JTkZPX0lOREVYLCAw KTsKPj4gK8KgwqDCoMKgIC8qIHdoZW4gZnJhbWUgd2lkdGggPD0gMjU2LCBEaXNhYmxlIEREUl9C WVRFNjRfQ0FDSEUgKi8KPj4gK8KgwqDCoMKgIGlmIChjdHgtPnBpY19pbmZvLmNvZGVkX3dpZHRo IDw9IDI1Nikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNFVF9WUkVHX01BU0soSVFJ RENUX0NPTlRST0wsICgxIDw8IDE2KSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV1JJ VEVfVlJFRyhEQ0FDX0REUl9CWVRFNjRfQ1RMLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoUkRfVlJFRyhEQ0FDX0REUl9CWVRFNjRfQ1RMKSAmICh+ MHhmKSkgfCAweGEpOwo+PiArwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBDTEVBUl9WUkVHX01BU0soSVFJRENUX0NPTlRST0wsICgxIDw8IDE2KSk7Cj4+ICvC oMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIHJlZl9jZmcgPSAwOwo+PiArwqDCoMKgwqAgaiA9 IDA7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChoMjY0X2N0eC0+bGlzdF9zaXplWzBdID4gMCkgewo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBoMjY0X2N0eC0+bGlz dF9zaXplWzBdOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY2FudmFzX3BvcyA9IGgyNjRfY3R4LT5yZWZfbGlzdDBbaV0uY2FudmFzX3BvczsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYml0IDA6MyBjYW52 YXNfcG9zIGJpdCA1OjYgZnJhbWUgc3RydWN0IGNmZyAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfY2ZnX29uY2UgPSAoY2FudmFzX3BvcyAmIDB4MWYp IHwgKHR5cGVfY2ZnIAo+PiA8PCA1KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmVmX2NmZyA8PD0gODsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmVmX2NmZyB8PSByZWZfY2ZnX29uY2U7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGorKzsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaiA9PSA0KSB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXUklURV9WUkVHKEgy NjRfQlVGRkVSX0lORk9fREFUQSwgCj4+IHJlZl9jZmcpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoIkgyNjRfQlVG RkVSX0lORk9fREFUQTogJXhcbiIsIAo+PiByZWZfY2ZnKTsKPj4gKyBoMjY0X2J1ZmZlcl9pbmZv X2RhdGFfd3JpdGVfY291bnQrKzsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGogPSAwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiAr Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGogIT0gMCkgewo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoaiAhPSA0KSB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZf Y2ZnIDw8PSA4Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmVmX2NmZyB8PSByZWZfY2ZnX29uY2U7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqKys7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV1JJVEVfVlJFRyhIMjY0X0JVRkZFUl9JTkZPX0RB VEEsIHJlZl9jZmcpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBwcl9kZWJ1ZygiSDI2NF9CVUZGRVJfSU5GT19EQVRBOiAleFxuIiwgcmVmX2NmZyk7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfYnVmZmVyX2luZm9f ZGF0YV93cml0ZV9jb3VudCsrOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfY2ZnID0gKHJlZl9jZmdfb25jZSA8PCAyNCkgfCAo cmVmX2NmZ19vbmNlIDw8IDE2KSB8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChyZWZfY2ZnX29uY2UgPDwgOCkgfCByZWZfY2ZnX29uY2U7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZm9yIChqID0gaDI2NF9idWZmZXJfaW5mb19kYXRhX3dyaXRlX2Nv dW50OyBqIDwgODsgaisrKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBXUklURV9WUkVHKEgyNjRfQlVGRkVSX0lORk9fREFUQSwgcmVmX2NmZyk7Cj4+ICvCoMKg wqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIFdSSVRFX1ZSRUcoSDI2NF9CVUZGRVJfSU5GT19JTkRF WCwgOCk7Cj4+ICvCoMKgwqDCoCBqID0gMDsKPj4gK8KgwqDCoMKgIHJlZl9jZmcgPSAwOwo+PiAr Cj4+ICvCoMKgwqDCoCBpZiAoaDI2NF9jdHgtPmxpc3Rfc2l6ZVsxXSA+IDApIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgaDI2NF9jdHgtPmxpc3Rfc2l6ZVsx XTsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNh bnZhc19wb3MgPSBoMjY0X2N0eC0+cmVmX2xpc3QxW2ldLmNhbnZhc19wb3M7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZl9jZmdfb25jZSA9IChjYW52YXNf cG9zICYgMHgxZikgfCAodHlwZV9jZmcgCj4+IDw8IDUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfY2ZnIDw8PSA4Owo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWZfY2ZnIHw9IHJlZl9jZmdfb25jZTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaisrOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChqID09IDQpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdS SVRFX1ZSRUcoSDI2NF9CVUZGRVJfSU5GT19EQVRBLCAKPj4gcmVmX2NmZyk7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1 ZygiSDI2NF9CVUZGRVJfSU5GT19EQVRBOiAleFxuIiwgCj4+IHJlZl9jZmcpOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaiA9IDA7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIGlm IChqICE9IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoaiAhPSA0KSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZl9jZmcgPDw9 IDg7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZl9jZmcg fD0gcmVmX2NmZ19vbmNlOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBqKys7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHByX2RlYnVnKCJIMjY0X0JVRkZFUl9JTkZPX0RBVEE6ICV4XG4iLCByZWZf Y2ZnKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXUklURV9WUkVHKEgyNjRfQlVGRkVS X0lORk9fREFUQSwgcmVmX2NmZyk7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIGlm IChnZXRfZmxhZyhjdHJscy0+c3BzLT5mbGFncywgCj4+IFY0TDJfSDI2NF9TUFNfRkxBR19GUkFN RV9NQlNfT05MWSkgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqAgZ2V0X2ZsYWcoY3RybHMtPnNwcy0+ ZmxhZ3MsIAo+PiBWNEwyX0gyNjRfU1BTX0ZMQUdfRElSRUNUXzhYOF9JTkZFUkVOQ0UpKQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVzZV9tb2RlXzh4OF9mbGFnID0gMTsKPj4gK8KgwqDC oMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2VfbW9kZV84eDhfZmxhZyA9 IDA7Cj4+ICsKPj4gK8KgwqDCoMKgIHdoaWxlICgoUkRfVlJFRyhIMjY0X0NPX01CX1JXX0NUTCkg Pj4gMTEpICYgMHgxKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiAr Cj4+ICvCoMKgwqDCoCAvKiBjb2wgYnVmIGZvciBjdXJyIGZyYW1lICovCj4+ICvCoMKgwqDCoCBj b2xvY2F0ZV9hZHJfb2Zmc2V0ID0gMDsKPj4gK8KgwqDCoMKgIGlmIChoMjY0X2N0eC0+Y3Vycl9z cGVjLmNvbF9idWZfaW5kZXggPj0gMCAmJgo+PiArwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+ Y3Vycl9zcGVjLmNvbF9idWZfaW5kZXggPCAKPj4gaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfbnVt KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29sb2NhdGVfd3JfYWRyID0gaDI2NF9j dHgtPmNvbGxhdGVkX2NtYV9hZGRyICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKChoMjY0X2N0eC0+b25lX2NvbF9idWZfc2l6ZSAqIAo+PiBoMjY0X2N0eC0+ Y3Vycl9zcGVjLmNvbF9idWZfaW5kZXgpID4+Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICh1c2VfbW9kZV84eDhfZmxhZyA/IDIgOiAwKSk7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNvbG9jYXRlX3dyX2FkciArIGgyNjRfY3R4LT5vbmVfY29s X2J1Zl9zaXplID4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4 LT5jb2xsYXRlZF9jbWFfYWRkcl9lbmQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcHJfZXJyCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKCJFcnJvciwgY29sb2NhdGUgYnVmIGlzIG5vdCBlbm91Z2gsIGlu ZGV4IAo+PiBpcyAlZFxuIiwKPj4gKyBoMjY0X2N0eC0+Y3Vycl9zcGVjLmNvbF9idWZfaW5kZXgp Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFdSSVRFX1ZSRUcoSDI2NF9DT19NQl9XUl9BRERSLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY29sb2NhdGVfd3JfYWRyICsgY29sb2NhdGVf YWRyX29mZnNldCkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCJjb2wg YnVmZmVyIGFkZHIgPSAweCV4IGNvbF9idWZfaW5kZXggJWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNvbG9jYXRlX3dyX2FkciArIGNvbG9jYXRl X2Fkcl9vZmZzZXQpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGgyNjRfY3R4LT5jdXJyX3NwZWMuY29sX2J1Zl9pbmRleCk7Cj4+ICvCoMKgwqDCoCB9IGVs c2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZSRUcoSDI2NF9DT19NQl9X Ul9BRERSLCAweGZmZmZmZmZmKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1 ZygiY29sIGJ1ZmZlciBhZGRyID0gMHhmZmZmZmZmZlxuIik7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoMKgIGlmIChoMjY0X2N0eC0+bGlzdF9zaXplWzFdID4gMCkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBoMjY0X2RlY29kZV9idWZfc3BlYyAqY29sb2NhdGVf cGljID0gCj4+ICZoMjY0X2N0eC0+cmVmX2xpc3QxWzBdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBoMjY0X2RlY29kZV9idWZfc3BlYyAqY3Vycl9waWMgPSAKPj4gJmgyNjRf Y3R4LT5jdXJyX3NwZWM7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGwxMF9zdHJ1 Y3R1cmUgPSAyOyAvKiBmb3IgcGljIHN0cnVjdCA9PSBGUkFNRSwgCj4+IGRlZmF1bHQgdG8gMiAq Lwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBjdXJfY29sb2NhdGVfcmVmX3R5cGU7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGNvbG9jYXRlX3JkX2Fk cjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgY29sb2NhdGVfcmRf YWRyX29mZnNldCA9IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50 IHZhbDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN1cl9jb2xvY2F0ZV9yZWZf dHlwZSA9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhYnMo Y3Vycl9waWMtPnBvYyAtIAo+PiBjb2xvY2F0ZV9waWMtPmRwYi0+dG9wX2ZpZWxkX29yZGVyX2Nu dCkgPAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhYnMoY3Vy cl9waWMtPnBvYyAtIAo+PiBjb2xvY2F0ZV9waWMtPmRwYi0+Ym90dG9tX2ZpZWxkX29yZGVyX2Nu dCkpID8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCA6IDE7 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY29sb2NhdGVfcGljLT5jb2xf YnVmX2luZGV4ID49IDAgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bG9jYXRlX3BpYy0+Y29sX2J1Zl9pbmRleCA8IAo+PiBoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9u dW0pIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29sb2Nh dGVfcmRfYWRyID0gaDI2NF9jdHgtPmNvbGxhdGVkX2NtYV9hZGRyICsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoaDI2NF9jdHgt Pm9uZV9jb2xfYnVmX3NpemUgKiAKPj4gY29sb2NhdGVfcGljLT5jb2xfYnVmX2luZGV4KSA+Pgo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHVzZV9tb2RlXzh4OF9mbGFnID8gMiA6IDApKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNvbG9jYXRlX3JkX2FkciArIGgyNjRfY3R4LT5vbmVf Y29sX2J1Zl9zaXplID4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBoMjY0X2N0eC0+Y29sbGF0ZWRfY21hX2FkZHJfZW5kKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKCJFcnJvciwgY29sb2NhdGUgcmQgYnVmIGlzIG5vdCAKPj4gZW5vdWdoLCBp bmRleCBpcyAlZFxuIiwKPj4gKyBjb2xvY2F0ZV9waWMtPmNvbF9idWZfaW5kZXgpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC0xOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZhbMKgID0gKChjb2xv Y2F0ZV9yZF9hZHJfb2Zmc2V0ICsgCj4+IGNvbG9jYXRlX3JkX2FkcikgPj4gMykgfAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGN1 cl9jb2xvY2F0ZV9yZWZfdHlwZSA8PCAyOSkgfAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGwxMF9zdHJ1Y3R1cmUgPDwgMzApOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXUklURV9WUkVHKEgy NjRfQ09fTUJfUkRfQUREUiwgdmFsKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9IGVs c2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoIkVy cm9yLCByZWZlcmVuY2UgcGljIGhhcyBubyBjb2xvY2F0ZWQgYnVmIAo+PiBwb2MgJWRcbiIsCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjdXJy X3BpYy0+cG9jKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIC0xOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgIH0K Pj4gKwo+PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGgy NjRfcmVsZWFzZV9kZWNvZGVfc3BlYyhzdHJ1Y3QgYW1sX3ZkZWNfaHcgKmh3LCBzdHJ1Y3QgCj4+ IGFtbF92ZGVjX2N0eCAqY3R4KQo+PiArewo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF9oMjY0X2N0 eCAqaDI2NF9jdHggPSAoc3RydWN0IGFtbF9oMjY0X2N0eCAKPj4gKilody0+Y3Vycl9jdHg7Cj4+ ICvCoMKgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoMKgIHN0cnVjdCBoMjY0X2RlY29kZV9idWZfc3Bl YyAqYnVmOwo+PiArCj4+ICsgaHctPmh3X29wcy5jYW52YXNfZnJlZShoMjY0X2N0eC0+Y3Vycl9z cGVjLnlfY2FudmFzX2luZGV4KTsKPj4gKyBody0+aHdfb3BzLmNhbnZhc19mcmVlKGgyNjRfY3R4 LT5jdXJyX3NwZWMudl9jYW52YXNfaW5kZXgpOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAoaDI2NF9j dHgtPmxpc3Rfc2l6ZVswXSA+IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3Ig KGkgPSAwOyBpIDwgaDI2NF9jdHgtPmxpc3Rfc2l6ZVswXTsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1ZiA9ICZoMjY0X2N0eC0+cmVmX2xpc3Qw W2ldOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYnVm LT51c2VkKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBidWYtPmNhbnZhc19wb3MgPSAwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmLT5kcGIgPSBOVUxMOwo+ PiArIGh3LT5od19vcHMuY2FudmFzX2ZyZWUoYnVmLT55X2NhbnZhc19pbmRleCk7Cj4+ICsgaHct Pmh3X29wcy5jYW52YXNfZnJlZShidWYtPnVfY2FudmFzX2luZGV4KTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1Zi0+dXNlZCA9 IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2 NF9jdHgtPmxpc3Rfc2l6ZVswXSA9IDA7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKg IGlmIChoMjY0X2N0eC0+bGlzdF9zaXplWzFdID4gMCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGZvciAoaSA9IDA7IGkgPCBoMjY0X2N0eC0+bGlzdF9zaXplWzFdOyBpKyspIHsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmID0gJmgyNjRfY3R4 LT5yZWZfbGlzdDFbaV07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChidWYtPnVzZWQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1Zi0+Y2FudmFzX3BvcyA9IDA7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidWYtPmRw YiA9IE5VTEw7Cj4+ICsgaHctPmh3X29wcy5jYW52YXNfZnJlZShidWYtPnlfY2FudmFzX2luZGV4 KTsKPj4gKyBody0+aHdfb3BzLmNhbnZhc19mcmVlKGJ1Zi0+dV9jYW52YXNfaW5kZXgpOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnVmLT51c2VkID0gMDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBoMjY0X2N0eC0+bGlzdF9zaXplWzFdID0gMDsKPj4gK8KgwqDCoMKgIH0KPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgc2F2ZV9yZWdfc3RhdHVzKHN0cnVjdCBhbWxfaDI2NF9jdHgg KmgyNjRfY3R4KQo+PiArewo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPnJlZ19pcWlkY3RfY29udHJv bCA9IFJEX1ZSRUcoSVFJRENUX0NPTlRST0wpOwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPnJlZ19p cWlkY3RfY29udHJvbF9pbml0X2ZsYWcgPSAxOwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPnJlZ192 Y29wX2N0cmxfcmVnID0gUkRfVlJFRyhWQ09QX0NUUkxfUkVHKTsKPj4gK8KgwqDCoMKgIGgyNjRf Y3R4LT5yZWdfcnZfYWlfbWJfY291bnQgPSBSRF9WUkVHKFJWX0FJX01CX0NPVU5UKTsKPj4gK8Kg wqDCoMKgIGgyNjRfY3R4LT52bGRfZGVjX2NvbnRyb2wgPSBSRF9WUkVHKFZMRF9ERUNPREVfQ09O VFJPTCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBoMjY0X2lzcihpbnQgaXJx LCB2b2lkICpwcml2KQo+PiArewo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhWREVDX0FTU0lTVF9N Qk9YMV9DTFJfUkVHLCAxKTsKPj4gKwo+PiArwqDCoMKgwqAgcmV0dXJuIElSUV9XQUtFX1RIUkVB RDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlycXJldHVybl90IGgyNjRfdGhyZWFkZWRfaXNyX2Z1 bmMoaW50IGlycSwgdm9pZCAqcHJpdikKPj4gK3sKPj4gK8KgwqDCoMKgIGludCBkZWNfc3RhdHVz ID0gUkRfVlJFRyhEUEJfU1RBVFVTX1JFRyk7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNf ZGV2ICpkZXYgPSAoc3RydWN0IGFtbF92ZGVjX2RldiAqKXByaXY7Cj4+ICvCoMKgwqDCoCBzdHJ1 Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCA9IChzdHJ1Y3QgYW1sX2gyNjRfY3R4IAo+PiAqKWRl di0+ZGVjX2h3LT5jdXJyX2N0eDsKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfdmRlY19jdHggKmN0 eCA9IChzdHJ1Y3QgYW1sX3ZkZWNfY3R4ICopZGV2LT5kZWNfY3R4Owo+PiArwqDCoMKgwqAgc3Ry dWN0IGFtbF92ZGVjX2h3ICpodyA9IChzdHJ1Y3QgYW1sX3ZkZWNfaHcgKilkZXYtPmRlY19odzsK Pj4gK8KgwqDCoMKgIHVuc2lnbmVkIHNob3J0ICpwID0gKHVuc2lnbmVkIHNob3J0ICopaDI2NF9j dHgtPmxtZW1fYWRkcjsKPj4gK8KgwqDCoMKgIGludCBpLCBpaTsKPj4gKwo+PiArwqDCoMKgwqAg aDI2NF9jdHgtPmRlY19zdGF0dXMgPSBkZWNfc3RhdHVzOwo+PiArwqDCoMKgwqAgcHJfZGVidWcK Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKCIlcywgZGVjX3N0YXR1cyAweCV4IFZJRkZfQklUX0NOVCAw eCV4IE1CWV9NQlggMHgleCAKPj4gVkxEX1NISUZUX1NUQVRVUyAweCV4XG4iLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgIF9fZnVuY19fLCBkZWNfc3RhdHVzLCBSRF9WUkVHKFZJRkZfQklUX0NOVCks IAo+PiBSRF9WUkVHKE1CWV9NQlgpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIFJEX1ZSRUcoVkxE X1NISUZUX1NUQVRVUykpOwo+PiArCj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+c2F2ZV9hdnNjcmF0 Y2hfZiA9IFJEX1ZSRUcoQVZfU0NSQVRDSF9GKTsKPj4gKwo+PiArwqDCoMKgwqAgc3dpdGNoIChk ZWNfc3RhdHVzKSB7Cj4+ICvCoMKgwqDCoCBjYXNlIEgyNjRfU0xJQ0VfSEVBREVSX0RPTkU6Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IDB4NDAwOyBpICs9IDQp Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaWkgPSAw OyBpaSA8IDQ7IGlpKyspCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+ZHBiX3BhcmFtLmwuZGF0YVtpICsgaWldID0g Cj4+IHBbaSArIDMgLSBpaV07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2F2ZV9yZWdf c3RhdHVzKGgyNjRfY3R4KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaDI2NF9j dHgtPm5ld19waWNfZmxhZyA9PSAxKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBoMjY0X2NvbmZpZ19kZWNvZGVfc3BlYyhodywgY3R4KTsKPj4gKwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChoMjY0X2NvbmZpZ19kZWNvZGVfYnVmKGh3LCBjdHgp IDwgMCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0 X3JlbGVhc2VfZGVjb2RlX3NwZWMoaHcsIGN0eCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGN0eC0+aW50X2NvbmQgPSAxOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3YWtlX3VwX2ludGVycnVwdGlibGUoJmN0eC0+cXVl dWUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGly cV9oYW5kbGVkOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoaDI2NF9jdHgtPm5ld19waWNfZmxhZyA9PSAxKSB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZSRUcoRFBCX1NUQVRV U19SRUcsIAo+PiBIMjY0X0FDVElPTl9ERUNPREVfTkVXUElDKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoImFjdGlvbiBkZWNvZGUgbmV3IHBp Y1xuIik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRf Y3R4LT5uZXdfcGljX2ZsYWcgPSAwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxz ZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZS RUcoRFBCX1NUQVRVU19SRUcsIAo+PiBIMjY0X0FDVElPTl9ERUNPREVfU0xJQ0UpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiYWN0aW9uIGRl Y29kZSBuZXcgc2xpY2VcbiIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgIGNhc2UgSDI2NF9TTElD RV9EQVRBX0RPTkU6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9yZWxlYXNlX2Rl Y29kZV9zcGVjKGh3LCBjdHgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4 LT5kZWNvZGVfcGljX2NvdW50Kys7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3R4LT5p bnRfY29uZCA9IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2FrZV91cF9pbnRlcnJ1 cHRpYmxlKCZjdHgtPnF1ZXVlKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsK Pj4gK8KgwqDCoMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9y ZWxlYXNlX2RlY29kZV9zcGVjKGh3LCBjdHgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGN0eC0+aW50X2NvbmQgPSAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdha2VfdXBf aW50ZXJydXB0aWJsZSgmY3R4LT5xdWV1ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7Cj4+ICvCoMKgwqDCoCB9Cj4+ICtpcnFfaGFuZGxlZDoKPj4gK8KgwqDCoMKgIHJldHVy biBJUlFfSEFORExFRDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBoMjY0X3Jlc3RvcmVfaHdf Y3R4KHN0cnVjdCBhbWxfdmRlY19jdHggKmN0eCkKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBh bWxfaDI2NF9jdHggKmgyNjRfY3R4ID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3Ry dWN0IGFtbF9oMjY0X2N0eCAqKWN0eC0+Y29kZWNfcHJpdjsKPj4gKwo+PiArwqDCoMKgwqAgV1JJ VEVfVlJFRyhQT1dFUl9DVExfVkxELAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChSRF9WUkVHKFBPV0VSX0NUTF9WTEQpIHwgKDAgPDwgMTApIHwgKDEgPDwgOSkgfCAoMSAKPj4g PDwgNikpKTsKPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhQU0NBTEVfQ1RSTCwgMCk7Cj4+ ICsKPj4gK8KgwqDCoMKgIC8qIGNsZWFyIG1haWxib3ggaW50ZXJydXB0ICovCj4+ICvCoMKgwqDC oCBXUklURV9WUkVHKFZERUNfQVNTSVNUX01CT1gxX0NMUl9SRUcsIDEpOwo+PiArCj4+ICvCoMKg wqDCoCAvKiBlbmFibGUgbWFpbGJveCBpbnRlcnJ1cHQgKi8KPj4gK8KgwqDCoMKgIFdSSVRFX1ZS RUcoVkRFQ19BU1NJU1RfTUJPWDFfTUFTSywgMSk7Cj4+ICsKPj4gK8KgwqDCoMKgIFNFVF9WUkVH X01BU0soTURFQ19QSUNfRENfQ1RSTCwgKDEgPDwgMTcpKTsKPj4gK8KgwqDCoMKgIGlmIChjdHgt PnFfZGF0YVtBTUxfUV9EQVRBX0RTVF0uZm10LT5mb3VyY2MgPT0gCj4+IFY0TDJfUElYX0ZNVF9O VjIxIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgIGN0eC0+cV9kYXRhW0FNTF9RX0RBVEFfRFNUXS5m bXQtPmZvdXJjYyA9PSBWNEwyX1BJWF9GTVRfTlYyMU0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgU0VUX1ZSRUdfTUFTSyhNREVDX1BJQ19EQ19DVFJMLCAoMSA8PCAxNikpOwo+PiArwqDC oMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENMRUFSX1ZSRUdfTUFTSyhN REVDX1BJQ19EQ19DVFJMLCAoMSA8PCAxNikpOwo+PiArCj4+ICvCoMKgwqDCoCBTRVRfVlJFR19N QVNLKE1ERUNfUElDX0RDX0NUUkwsICgweGJmIDw8IDI0KSk7Cj4+ICvCoMKgwqDCoCBDTEVBUl9W UkVHX01BU0soTURFQ19QSUNfRENfQ1RSTCwgKDB4YmYgPDwgMjQpKTsKPj4gK8KgwqDCoMKgIENM RUFSX1ZSRUdfTUFTSyhNREVDX1BJQ19EQ19DVFJMLCAoMSA8PCAzMSkpOwo+PiArCj4+ICvCoMKg wqDCoCBDTEVBUl9WUkVHX01BU0soTURFQ19QSUNfRENfTVVYX0NUUkwsIDEgPDwgMzEpOwo+PiAr wqDCoMKgwqAgV1JJVEVfVlJFRyhNREVDX0VYVElGX0NGRzEsIDApOwo+PiArwqDCoMKgwqAgV1JJ VEVfVlJFRyhNREVDX1BJQ19EQ19USFJFU0gsIDB4NDA0MDM4YWEpOwo+PiArCj4+ICvCoMKgwqDC oCBXUklURV9WUkVHKERQQl9TVEFUVVNfUkVHLCAwKTsKPj4gKwo+PiArwqDCoMKgwqAgV1JJVEVf VlJFRyhMTUVNX0RVTVBfQURSLCBoMjY0X2N0eC0+bG1lbV9waHlfYWRkcik7Cj4+ICvCoMKgwqDC oCBXUklURV9WUkVHKEZSQU1FX0NPVU5URVJfUkVHLCBoMjY0X2N0eC0+ZGVjb2RlX3BpY19jb3Vu dCk7Cj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKEFWX1NDUkFUQ0hfOCwgaDI2NF9jdHgtPndvcmtz cGFjZV9vZmZzZXQpOwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhBVl9TQ1JBVENIX0csIGgyNjRf Y3R4LT5tY19jcHVfcGFkZHIpOwo+PiArCj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKEFWX1NDUkFU Q0hfRiwgKChoMjY0X2N0eC0+c2F2ZV9hdnNjcmF0Y2hfZiAmIAo+PiAweGZmZmZmZmMzKSB8ICgx IDw8IDQpKSk7Cj4+ICvCoMKgwqDCoCBDTEVBUl9WUkVHX01BU0soQVZfU0NSQVRDSF9GLCAxIDw8 IDYpOwo+PiArCj4+ICvCoMKgwqDCoCBXUklURV9WUkVHKE1ERUNfUElDX0RDX1RIUkVTSCwgMHg0 MDQwMzhhYSk7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChoMjY0X2N0eC0+cmVnX2lxaWRjdF9jb250 cm9sX2luaXRfZmxhZyA9PSAwKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdSSVRFX1ZS RUcoSVFJRENUX0NPTlRST0wsIDB4MjAwKTsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKGgyNjRfY3R4 LT5yZWdfaXFpZGN0X2NvbnRyb2wpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV1JJVEVf VlJFRyhJUUlEQ1RfQ09OVFJPTCwgaDI2NF9jdHgtPnJlZ19pcWlkY3RfY29udHJvbCk7Cj4+ICsK Pj4gK8KgwqDCoMKgIGlmIChoMjY0X2N0eC0+cmVnX3Zjb3BfY3RybF9yZWcpCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgV1JJVEVfVlJFRyhWQ09QX0NUUkxfUkVHLCBoMjY0X2N0eC0+cmVn X3Zjb3BfY3RybF9yZWcpOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAoaDI2NF9jdHgtPnZsZF9kZWNf Y29udHJvbCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXUklURV9WUkVHKFZMRF9ERUNP REVfQ09OVFJPTCwgaDI2NF9jdHgtPnZsZF9kZWNfY29udHJvbCk7Cj4+ICsKPj4gK8KgwqDCoMKg IHByX2RlYnVnCj4+ICvCoMKgwqDCoMKgwqDCoMKgICgiSVFJRENUX0NPTlRST0wgPSAweCV4LCBW Q09QX0NUUkxfUkVHIDB4JXggCj4+IFZMRF9ERUNPREVfQ09OVFJPTCAweCV4XG4iLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgIFJEX1ZSRUcoSVFJRENUX0NPTlRST0wpLCBSRF9WUkVHKFZDT1BfQ1RS TF9SRUcpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIFJEX1ZSRUcoVkxEX0RFQ09ERV9DT05UUk9M KSk7Cj4+ICsKPj4gK8KgwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9p ZCAqYW1sX2gyNjRfZ2V0X2N0cmwoc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyICpoZGwsIHUzMiBp ZCkKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCB2NGwyX2N0cmwgKmN0cmw7Cj4+ICsKPj4gK8Kg wqDCoMKgIGN0cmwgPSB2NGwyX2N0cmxfZmluZChoZGwsIGlkKTsKPj4gK8KgwqDCoMKgIHJldHVy biBjdHJsID8gY3RybC0+cF9jdXIucCA6IE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg YW1sX2gyNjRfZ2V0X3N0YXRlbGVzc19jdHJsX3JlZihzdHJ1Y3QgYW1sX2gyNjRfY3R4IAo+PiAq aDI2NF9jdHgpCj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX3ZkZWNfY3R4ICpjdHggPSBo MjY0X2N0eC0+djRsMl9jdHg7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgdmRlY19oMjY0X3N0YXRlbGVz c19jdHJsX3JlZiAqY3RybHMgPSAmaDI2NF9jdHgtPmN0cmxfcmVmOwo+PiArCj4+ICvCoMKgwqDC oCBjdHJscy0+c3BzID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3RydWN0IHY0bDJf Y3RybF9oMjY0X3NwcyAKPj4gKilhbWxfaDI2NF9nZXRfY3RybCgmY3R4LT5jdHJsX2hhbmRsZXIs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFY0TDJfQ0lEX1NU QVRFTEVTU19IMjY0X1NQUyk7Cj4+ICvCoMKgwqDCoCBpZiAoV0FSTl9PTighY3RybHMtPnNwcykp Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8Kg wqDCoMKgIGN0cmxzLT5wcHMgPQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJ1Y3Qg djRsMl9jdHJsX2gyNjRfcHBzIAo+PiAqKWFtbF9oMjY0X2dldF9jdHJsKCZjdHgtPmN0cmxfaGFu ZGxlciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9D SURfU1RBVEVMRVNTX0gyNjRfUFBTKTsKPj4gK8KgwqDCoMKgIGlmIChXQVJOX09OKCFjdHJscy0+ cHBzKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+ PiArwqDCoMKgwqAgY3RybHMtPmRlY29kZSA9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9kZWNvZGVfcGFyYW1zIAo+PiAqKWFtbF9oMjY0X2dldF9j dHJsKCZjdHgtPmN0cmxfaGFuZGxlciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgVjRMMl9DSURfU1RBVEVMRVNTX0gyNjRfREVDT0RFX1BBUkFNUyk7Cj4+ICvC oMKgwqDCoCBpZiAoV0FSTl9PTighY3RybHMtPmRlY29kZSkpCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoMKgIGN0cmxzLT5zY2FsaW5n ID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3RydWN0IHY0bDJfY3RybF9oMjY0X3Nj YWxpbmdfbWF0cml4IAo+PiAqKWFtbF9oMjY0X2dldF9jdHJsKCZjdHgtPmN0cmxfaGFuZGxlciwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9DSURfU1RB VEVMRVNTX0gyNjRfU0NBTElOR19NQVRSSVgpOwo+PiArwqDCoMKgwqAgaWYgKFdBUk5fT04oIWN0 cmxzLT5zY2FsaW5nKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZB TDsKPj4gKwo+PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IGNvcHlfbWNfY3B1X2Z3KHZvaWQgKm1jX2NwdV9hZGRyLCBjb25zdCB1OCAqZGF0YSkKPj4gK3sK Pj4gK8KgwqDCoMKgIC8qaGVhZGVyICovCj4+ICvCoMKgwqDCoCBtZW1jcHkoKHU4ICopbWNfY3B1 X2FkZHIgKyBNQ19PRkZTRVRfSEVBREVSLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRh ICsgMHg0MDAwLCBNQ19TV0FQX1NJWkUpOwo+PiArwqDCoMKgwqAgLypkYXRhICovCj4+ICvCoMKg wqDCoCBtZW1jcHkoKHU4ICopbWNfY3B1X2FkZHIgKyBNQ19PRkZTRVRfREFUQSwKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGF0YSArIDB4MjAwMCwgTUNfU1dBUF9TSVpFKTsKPj4gK8KgwqDC oMKgIC8qbW1jbyAqLwo+PiArwqDCoMKgwqAgbWVtY3B5KCh1OCAqKW1jX2NwdV9hZGRyICsgTUNf T0ZGU0VUX01NQ08sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgKyAweDYwMDAsIE1D X1NXQVBfU0laRSk7Cj4+ICvCoMKgwqDCoCAvKmxpc3QgKi8KPj4gK8KgwqDCoMKgIG1lbWNweSgo dTggKiltY19jcHVfYWRkciArIE1DX09GRlNFVF9MSVNULAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkYXRhICsgMHgzMDAwLCBNQ19TV0FQX1NJWkUpOwo+PiArwqDCoMKgwqAgLypzbGljZSAq Lwo+PiArwqDCoMKgwqAgbWVtY3B5KCh1OCAqKW1jX2NwdV9hZGRyICsgTUNfT0ZGU0VUX1NMSUNF LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhICsgMHg1MDAwLCBNQ19TV0FQX1NJWkUp Owo+PiArwqDCoMKgwqAgLyptYWluICovCj4+ICvCoMKgwqDCoCBtZW1jcHkoKHU4ICopbWNfY3B1 X2FkZHIgKyBNQ19PRkZTRVRfTUFJTiwgZGF0YSwgMHgyMDAwKTsKPj4gK8KgwqDCoMKgIC8qZGF0 YSAqLwo+PiArwqDCoMKgwqAgbWVtY3B5KCh1OCAqKW1jX2NwdV9hZGRyICsgTUNfT0ZGU0VUX01B SU4gKyAweDIwMDAsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgKyAweDIwMDAsIDB4 MTAwMCk7Cj4+ICvCoMKgwqDCoCAvKnNsaWNlICovCj4+ICvCoMKgwqDCoCBtZW1jcHkoKHU4ICop bWNfY3B1X2FkZHIgKyBNQ19PRkZTRVRfTUFJTiArIDB4MzAwMCwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGF0YSArIDB4NTAwMCwgMHgxMDAwKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu dCBhbWxfaDI2NF9sb2FkX2Z3X2V4dCh2b2lkICpwcml2LCBjb25zdCB1OCAqZGF0YSwgdTMyIGxl bikKPj4gK3sKPj4gK8KgwqDCoMKgIHN0cnVjdCBhbWxfaDI2NF9jdHggKmgyNjRfY3R4ID0gKHN0 cnVjdCBhbWxfaDI2NF9jdHggKilwcml2Owo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVjX2N0 eCAqY3R4ID0gKHN0cnVjdCBhbWxfdmRlY19jdHggCj4+ICopaDI2NF9jdHgtPnY0bDJfY3R4Owo+ PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVjX2h3ICpkZWNfaHc7Cj4+ICsKPj4gK8KgwqDCoMKg IGlmIChoMjY0X2N0eC0+bWNfY3B1X2xvYWRlZCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gMDsKPj4gKwo+PiArwqDCoMKgwqAgZGVjX2h3ID0gdmRlY19nZXRfaHcoY3R4LT5k ZXYpOwo+PiArwqDCoMKgwqAgaWYgKCFkZWNfaHcpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC0xOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAobGVuID4gTUNfVE9UQUxfU0laRSkg ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oInNpemUgb2YgbWNfY3B1X2Z3 IGlkIGludmFsaWRcbiIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsK Pj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPm1jX2NwdV92YWRkciA9 IGRtYV9hbGxvY19jb2hlcmVudChkZWNfaHctPmRldiwgCj4+IE1DX1RPVEFMX1NJWkUsCj4+ICsg JmgyNjRfY3R4LT5tY19jcHVfcGFkZHIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKgwqDCoCBpZiAoIWgyNjRfY3R4LT5tY19j cHVfdmFkZHIpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+ ICsKPj4gK8KgwqDCoMKgIGNvcHlfbWNfY3B1X2Z3KGgyNjRfY3R4LT5tY19jcHVfdmFkZHIsIGRh dGEpOwo+PiArCj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+bWNfY3B1X2xvYWRlZCA9IHRydWU7Cj4+ ICsKPj4gK8KgwqDCoMKgIHByX2RlYnVnKCJoMjY0IG1jY3B1IGZ3IGxvYWRlZFxuIik7Cj4+ICsK Pj4gK8KgwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtpbnQgYW1sX2gyNjRfaW5pdCh2 b2lkICpwcml2KQo+PiArewo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVjX2N0eCAqY3R4ID0g KHN0cnVjdCBhbWxfdmRlY19jdHggKilwcml2Owo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF92ZGVj X2h3ICpkZWNfaHc7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eDsK Pj4gK8KgwqDCoMKgIGludCByZXQgPSAwOwo+PiArCj4+ICvCoMKgwqDCoCBoMjY0X2N0eCA9IGt6 YWxsb2Moc2l6ZW9mKCpoMjY0X2N0eCksIEdGUF9LRVJORUwpOwo+PiArwqDCoMKgwqAgaWYgKCFo MjY0X2N0eCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4g Kwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPnY0bDJfY3R4ID0gY3R4Owo+PiArwqDCoMKgwqAgZGVj X2h3ID0gdmRlY19nZXRfaHcoY3R4LT5kZXYpOwo+PiArwqDCoMKgwqAgaWYgKCFkZWNfaHcpCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC0xOwo+PiArCj4+ICvCoMKgwqDCoCBo MjY0X2N0eC0+bWNfY3B1X2xvYWRlZCA9IGZhbHNlOwo+PiArwqDCoMKgwqAgZGVjX2h3LT5od19v cHMuaXJxX2hhbmRsZXIgPSBoMjY0X2lzcjsKPj4gK8KgwqDCoMKgIGRlY19ody0+aHdfb3BzLmly cV90aHJlYWRlZF9mdW5jID0gaDI2NF90aHJlYWRlZF9pc3JfZnVuYzsKPj4gK8KgwqDCoMKgIGRl Y19ody0+aHdfb3BzLmxvYWRfZmlybXdhcmVfZXggPSBhbWxfaDI2NF9sb2FkX2Z3X2V4dDsKPj4g Kwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPmxtZW1fYWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChk ZWNfaHctPmRldiwgCj4+IExNRU1fRFVNUF9TSVpFLAo+PiArICZoMjY0X2N0eC0+bG1lbV9waHlf YWRkciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRlBfS0VSTkVMKTsK Pj4gK8KgwqDCoMKgIGlmICghaDI2NF9jdHgtPmxtZW1fYWRkcikgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z290byBlcnJfYWxsb2NfbG1lbTsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgaDI2 NF9jdHgtPmNtYV9hbGxvY192YWRkciA9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgIGRtYV9hbGxvY19j b2hlcmVudChkZWNfaHctPmRldiwgVl9CVUZfQUREUl9PRkZTRVQsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmgyNjRfY3R4LT5jbWFf YWxsb2NfYWRkciwgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKgwqDCoCBpZiAoIWgyNjRfY3R4LT5jbWFf YWxsb2NfdmFkZHIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5PTUVN Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2FsbG9jX3dvcmtzcGFjZTsK Pj4gK8KgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPndvcmtzcGFjZV9vZmZz ZXQgPSBoMjY0X2N0eC0+Y21hX2FsbG9jX2FkZHIgKyAKPj4gRENBQ19SRUFEX01BUkdJTjsKPj4g K8KgwqDCoMKgIGgyNjRfY3R4LT53b3Jrc3BhY2VfdmFkZHIgPSBoMjY0X2N0eC0+Y21hX2FsbG9j X3ZhZGRyICsgCj4+IERDQUNfUkVBRF9NQVJHSU47Cj4+ICsKPj4gK8KgwqDCoMKgIGN0eC0+Y29k ZWNfcHJpdiA9IGgyNjRfY3R4Owo+PiArwqDCoMKgwqAgZGVjX2h3LT5jdXJyX2N0eCA9IGgyNjRf Y3R4Owo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPmNvbF9idWZfYWxsb2Nfc2l6ZSA9IDA7Cj4+ICvC oMKgwqDCoCBoMjY0X2N0eC0+aW5pdF9mbGFnID0gMDsKPj4gK8KgwqDCoMKgIGgyNjRfY3R4LT5u ZXdfcGljX2ZsYWcgPSAwOwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPnBhcmFtX3NldCA9IDA7Cj4+ ICvCoMKgwqDCoCBoMjY0X2N0eC0+cmVnX2lxaWRjdF9jb250cm9sX2luaXRfZmxhZyA9IDA7Cj4+ ICvCoMKgwqDCoCBoMjY0X2N0eC0+ZGVjb2RlX3BpY19jb3VudCA9IDA7Cj4+ICsKPj4gK8KgwqDC oMKgIHJldHVybiAwOwo+PiArCj4+ICtlcnJfYWxsb2Nfd29ya3NwYWNlOgo+PiArwqDCoMKgwqAg ZG1hX2ZyZWVfY29oZXJlbnQoZGVjX2h3LT5kZXYsIExNRU1fRFVNUF9TSVpFLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2NF9jdHgtPmxtZW1fYWRk ciwgaDI2NF9jdHgtPmxtZW1fcGh5X2FkZHIpOwo+PiArZXJyX2FsbG9jX2xtZW06Cj4+ICvCoMKg wqDCoCBrZnJlZShoMjY0X2N0eCk7Cj4+ICsKPj4gK8KgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICt9 Cj4+ICsKPj4gK3ZvaWQgYW1sX2gyNjRfZXhpdCh2b2lkICpwcml2KQo+PiArewo+PiArwqDCoMKg wqAgc3RydWN0IGFtbF92ZGVjX2N0eCAqY3R4ID0gKHN0cnVjdCBhbWxfdmRlY19jdHggKilwcml2 Owo+PiArwqDCoMKgwqAgc3RydWN0IGFtbF9oMjY0X2N0eCAqaDI2NF9jdHggPSAoc3RydWN0IGFt bF9oMjY0X2N0eCAKPj4gKiljdHgtPmNvZGVjX3ByaXY7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1s X3ZkZWNfaHcgKmRlY19odzsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKCFoMjY0X2N0eCkgewo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oImgyNjQgZGVjb2RlciBpcyBhbHJlYWR5 IGRlc3Ryb3llZCBvciBub3QgCj4+IGNyZWF0ZWQhXG4iKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoCBkZWNfaHcgPSB2ZGVj X2dldF9odyhjdHgtPmRldik7Cj4+ICvCoMKgwqDCoCBoMjY0X2N0eC0+cGFyYW1fc2V0ID0gMDsK Pj4gKwo+PiArwqDCoMKgwqAgaWYgKGN0eC0+ZG9zX2Nsa19lbikKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBhbWxfc3RvcF92ZGVjX2h3KCk7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChoMjY0 X2N0eC0+Y29sbGF0ZWRfY21hX3ZhZGRyKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZG1hX2ZyZWVfY29oZXJlbnQoZGVjX2h3LT5kZXYsIAo+PiBoMjY0X2N0eC0+Y29sX2J1Zl9hbGxv Y19zaXplLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5jb2xsYXRlZF9jbWFfdmFkZHIsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaDI2 NF9jdHgtPmNvbGxhdGVkX2NtYV9hZGRyKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBo MjY0X2N0eC0+Y29sX2J1Zl9hbGxvY19zaXplID0gMDsKPj4gK8KgwqDCoMKgIH0KPj4gKwo+PiAr wqDCoMKgwqAgaWYgKGgyNjRfY3R4LT5tY19jcHVfdmFkZHIpIHsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBkbWFfZnJlZV9jb2hlcmVudChkZWNfaHctPmRldiwgTUNfVE9UQUxfU0laRSwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBoMjY0X2N0eC0+bWNfY3B1X3ZhZGRyLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5tY19jcHVf cGFkZHIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGgyNjRfY3R4LT5tY19jcHVfbG9h ZGVkID0gZmFsc2U7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChoMjY0X2N0 eC0+bG1lbV9hZGRyKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9mcmVlX2NvaGVy ZW50KGRlY19ody0+ZGV2LCBMTUVNX0RVTVBfU0laRSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+bG1lbV9h ZGRyLCAKPj4gaDI2NF9jdHgtPmxtZW1fcGh5X2FkZHIpOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAo aDI2NF9jdHgtPmNtYV9hbGxvY192YWRkcikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk bWFfZnJlZV9jb2hlcmVudChkZWNfaHctPmRldiwgVl9CVUZfQUREUl9PRkZTRVQsCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aDI2NF9jdHgtPmNtYV9hbGxvY192YWRkciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoMjY0X2N0eC0+Y21hX2FsbG9jX2Fk ZHIpOwo+PiArCj4+ICvCoMKgwqDCoCBrZnJlZShjdHgtPmNvZGVjX3ByaXYpOwo+PiArwqDCoMKg wqAgZGVjX2h3LT5jdXJyX2N0eCA9IE5VTEw7Cj4+ICvCoMKgwqDCoCBjdHgtPmNvZGVjX3ByaXYg PSBOVUxMOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBjb25maWdfZGVjb2RlX21vZGUoc3Ry dWN0IGFtbF9oMjY0X2N0eCAqaDI2NF9jdHgpCj4+ICt7Cj4+ICvCoMKgwqDCoCBXUklURV9WUkVH KEgyNjRfREVDT0RFX01PREUsIDB4MSk7wqAgLypkZWNvZGUgbW9kZSBmcmFtZWJhc2UqLwo+PiAr wqDCoMKgwqAgV1JJVEVfVlJFRyhIRUFEX1BBRERJTkdfUkVHLCAwKTsKPj4gK8KgwqDCoMKgIFdS SVRFX1ZSRUcoSDI2NF9ERUNPREVfU0VRSU5GTywgaDI2NF9jdHgtPnNlcV9pbmZvKTsKPj4gK8Kg wqDCoMKgIFdSSVRFX1ZSRUcoSU5JVF9GTEFHX1JFRywgMSk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBh bWxfaDI2NF9kZWNfcnVuKHZvaWQgKnByaXYpCj4+ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgYW1s X3ZkZWNfY3R4ICpjdHggPSAoc3RydWN0IGFtbF92ZGVjX2N0eCAqKXByaXY7Cj4+ICvCoMKgwqDC oCBzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCA9IChzdHJ1Y3QgYW1sX2gyNjRfY3R4IAo+ PiAqKWN0eC0+Y29kZWNfcHJpdjsKPj4gK8KgwqDCoMKgIGludCByZXQgPSAtMTsKPj4gK8KgwqDC oMKgIGludCBpOwo+PiArCj4+ICvCoMKgwqDCoCByZXQgPSBhbWxfaDI2NF9nZXRfc3RhdGVsZXNz X2N0cmxfcmVmKGgyNjRfY3R4KTsKPj4gK8KgwqDCoMKgIGlmIChyZXQgPCAwKSB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJub3QgY3RybCByZWYgZm9yIGgyNjQgZGVjb2Rl clxuIik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gK8KgwqDC oMKgIH0KPj4gKwo+PiArwqDCoMKgwqAgaDI2NF9jb25maWdfcGFyYW1zKGN0eCk7Cj4+ICsKPj4g K8KgwqDCoMKgIGlmIChoMjY0X3ByZXBhcmVfaW5wdXQoY3R4KSA8IDApCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKGFsbG9jX2Nv bG9jYXRlX2NtYShoMjY0X2N0eCwgY3R4KSA8IDApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsKPj4gKwo+PiArwqDCoMKgwqAgaDI2NF9yZXN0b3JlX2h3X2N0eChjdHgp Owo+PiArCj4+ICvCoMKgwqDCoCBjb25maWdfZGVjb2RlX21vZGUoaDI2NF9jdHgpOwo+PiArwqDC oMKgwqAgLyogZW5hYmxlIHN0cmVhbSBpbnB1dCBoYXJkd2FyZSAqLwo+PiArwqDCoMKgwqAgU0VU X1ZSRUdfTUFTSyhWTERfTUVNX1ZJRklGT19DT05UUk9MLCAoMSA8PCAyKSB8ICgxIDw8IDEpKTsK Pj4gK8KgwqDCoMKgIC8qIGVuYWJsZSBoYXJkd2FyZSB0aW1lciAqLwo+PiArwqDCoMKgwqAgV1JJ VEVfVlJFRyhOQUxfU0VBUkNIX0NUTCwgUkRfVlJFRyhOQUxfU0VBUkNIX0NUTCkgfCAoMSA8PCAx NikpOwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhNREVDX0VYVElGX0NGRzIsIFJEX1ZSRUcoTURF Q19FWFRJRl9DRkcyKSB8IDB4MjApOwo+PiArwqDCoMKgwqAgV1JJVEVfVlJFRyhOQUxfU0VBUkNI X0NUTCwgUkRfVlJFRyhOQUxfU0VBUkNIX0NUTCkgJiAofjB4MikpOwo+PiArwqDCoMKgwqAgQ0xF QVJfVlJFR19NQVNLKFZERUNfQVNTSVNUX01NQ19DVFJMMSwgMSA8PCAzKTsKPj4gKwo+PiArwqDC oMKgwqAgYW1sX3N0YXJ0X3ZkZWNfaHcoKTsKPj4gK8KgwqDCoMKgIGgyNjRfY3R4LT5pbml0X2Zs YWcgPSAxOwo+PiArwqDCoMKgwqAgaDI2NF9jdHgtPm5ld19waWNfZmxhZyA9IDE7Cj4+ICsKPj4g K8KgwqDCoMKgIFdSSVRFX1ZSRUcoRFBCX1NUQVRVU19SRUcsIEgyNjRfQUNUSU9OX1NFQVJDSF9I RUFEKTsKPj4gKwo+PiArwqDCoMKgwqAgcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3Rp bWVvdXQoY3R4LT5xdWV1ZSwgY3R4LT5pbnRfY29uZCwKPj4gKyBtc2Vjc190b19qaWZmaWVzKERF Q09ERVJfVElNRU9VVF9NUykpOwo+PiArwqDCoMKgwqAgY3R4LT5pbnRfY29uZCA9IDA7Cj4+ICvC oMKgwqDCoCBpZiAoIXJldCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC0x Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiZGVjIHRpbWVvdXQ9JXVcbiIs IERFQ09ERVJfVElNRU9VVF9NUyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChp ID0gMDsgaSA8IDE2OyBpKyspIHvCoMKgwqDCoMKgIC8qIDE2IDogc2hvdyB1Y29kZSBQQyAKPj4g MTYgdGltZXMgd2hlbiB0aW1lb3V0ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHByX2luZm8oImRlY29kZXIgdGltZW91dCwgcGMgMHgleFxuIiwgCj4+IFJE X1ZSRUcoTVBDX0UpKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ PiArwqDCoMKgwqAgfSBlbHNlIGlmICgtRVJFU1RBUlRTWVMgPT0gcmV0KSB7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLTE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cHJfZXJyKCJkZWMgaW50ZXIgZmFpbFxuIik7Cj4+ICvCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDC oMKgIGFtbF9zdG9wX3ZkZWNfaHcoKTsKPj4gK8KgwqDCoMKgIGgyNjRfY3R4LT5pbml0X2ZsYWcg PSAwOwo+PiArCj4+ICvCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArfQo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvaDI2NC5oIAo+PiBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2gyNjQuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjNkM2EzNWE2NDFjOQo+PiAtLS0gL2Rldi9udWxsCj4+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2gyNjQuaAo+PiBAQCAt MCwwICsxLDMwMCBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9u bHkgT1IgTUlUKSAqLwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBBbWxvZ2ljLCBJ bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKPj4gKyAqLwo+PiArI2lmbmRlZiBfSDI2NF9IXwo+PiAr I2RlZmluZSBfSDI2NF9IXwo+PiArCj4+ICsjZGVmaW5lIFJQTV9CRUdJTsKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MAo+PiArI2RlZmluZSBGUkFNRV9JTl9EUELCoMKgwqDCoMKgwqDCoCAyNAo+PiAr I2RlZmluZSBSUE1fRU5EwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4NDAwCj4+ICsjZGVmaW5l IERQQl9PRkZTRVTCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMDAKPj4gKyNkZWZpbmUgTU1DT19PRkZT RVTCoMKgwqDCoMKgwqDCoMKgIDB4MjAwCj4+ICsjZGVmaW5lIFNQU19PRkZTRVTCoMKgwqDCoMKg wqDCoMKgwqAgMHgxMDAKPj4gKyNkZWZpbmUgUFBTX09GRlNFVMKgwqDCoMKgwqDCoMKgwqDCoCAw eDMwMAo+PiArI2RlZmluZSBQQVJBTV9CQVNFX1ZBTMKgwqDCoMKgwqAgMHg0MTRkCj4+ICsjZGVm aW5lIE1FTV9NTUNPX0JBU0XCoMKgwqDCoMKgwqAgMHgwMWMzMDAwCj4+ICsjZGVmaW5lIE1FTV9T UFNfQkFTRcKgwqDCoMKgwqDCoMKgIDB4MDFjM2MwMAo+PiArI2RlZmluZSBNRU1fUFBTX0JBU0XC oMKgwqDCoMKgwqDCoCAweDAxY2JjMDAKPj4gKyNkZWZpbmUgTUNfVE9UQUxfU0laRcKgwqDCoMKg wqDCoCAoKDIwICsgMTYpICogU1pfMUspCj4+ICsjZGVmaW5lIE1DX1NXQVBfU0laRcKgwqDCoMKg wqDCoMKgICg0ICogU1pfMUspCj4+ICsjZGVmaW5lIExNRU1fRFVNUF9TSVpFwqDCoMKgwqDCoCA0 MDk2Cj4+ICsjZGVmaW5lIFZfQlVGX0FERFJfT0ZGU0VUwqDCoCAoMHgyMDAwMDAgKyAweDgwMDAg KyAweDIwMDAwICsgMHgxMDAwKQo+PiArI2RlZmluZSBEQ0FDX1JFQURfTUFSR0lOwqDCoMKgICg2 NCAqIDEwMjQpCj4+ICsjZGVmaW5lIE1DX09GRlNFVF9IRUFERVLCoMKgwqAgMHgwMDAwCj4+ICsj ZGVmaW5lIE1DX09GRlNFVF9EQVRBwqDCoMKgwqDCoCAweDEwMDAKPj4gKyNkZWZpbmUgTUNfT0ZG U0VUX01NQ0/CoMKgwqDCoMKgIDB4MjAwMAo+PiArI2RlZmluZSBNQ19PRkZTRVRfTElTVMKgwqDC oMKgwqAgMHgzMDAwCj4+ICsjZGVmaW5lIE1DX09GRlNFVF9TTElDRcKgwqDCoMKgIDB4NDAwMAo+ PiArI2RlZmluZSBNQ19PRkZTRVRfTUFJTsKgwqDCoMKgwqAgMHg1MDAwCj4+ICsKPj4gKy8qIFJl bmFtZSB0aGUgZG9zIHJlZ3MgKi8KPj4gKyNkZWZpbmUgSDI2NF9ERUNPREVfSU5GT8KgwqDCoCBN NF9DT05UUk9MX1JFRwo+PiArI2RlZmluZSBJTklUX0ZMQUdfUkVHwqDCoMKgwqDCoMKgIEFWX1ND UkFUQ0hfMgo+PiArI2RlZmluZSBIRUFEX1BBRERJTkdfUkVHwqDCoMKgwqAgQVZfU0NSQVRDSF8z Cj4+ICsjZGVmaW5lIFVDT0RFX1dBVENIRE9HX1JFR8KgwqAgQVZfU0NSQVRDSF83Cj4+ICsjZGVm aW5lIExNRU1fRFVNUF9BRFLCoMKgwqDCoMKgwqAgQVZfU0NSQVRDSF9MCj4+ICsjZGVmaW5lIERF QlVHX1JFRzHCoMKgwqDCoMKgwqDCoMKgwqAgQVZfU0NSQVRDSF9NCj4+ICsjZGVmaW5lIERFQlVH X1JFRzLCoMKgwqDCoMKgwqDCoMKgwqAgQVZfU0NSQVRDSF9OCj4+ICsjZGVmaW5lIEZSQU1FX0NP VU5URVJfUkVHwqDCoMKgwqDCoMKgIEFWX1NDUkFUQ0hfSQo+PiArI2RlZmluZSBSUE1fQ01EX1JF R8KgwqDCoMKgwqDCoMKgwqDCoCBBVl9TQ1JBVENIX0EKPj4gKyNkZWZpbmUgSDI2NF9ERUNPREVf U0laRcKgwqDCoCBBVl9TQ1JBVENIX0UKPj4gKyNkZWZpbmUgSDI2NF9ERUNPREVfTU9ERcKgwqDC oCBBVl9TQ1JBVENIXzQKPj4gKyNkZWZpbmUgSDI2NF9ERUNPREVfU0VRSU5GT8KgwqDCoCBBVl9T Q1JBVENIXzUKPj4gKy8qKgo+PiArICogTkFMX1NFQVJDSF9DVEw6IGJpdCAwLCBlbmFibGUgaXR1 X3QzNQo+PiArICogTkFMX1NFQVJDSF9DVEw6IGJpdCAxLCBlbmFibGUgbW11Cj4+ICsgKiBOQUxf U0VBUkNIX0NUTDogYml0IDIsIGRldGVjdCBmcmFtZV9tYnNfb25seV9mbGFnIHdoZXRoZXIgc3dp dGNoIAo+PiByZXNvbHV0aW9uCj4+ICsgKiBOQUxfU0VBUkNIX0NUTDogYml0IDMsIHJlY292ZXIg dGhlIGNvcnJlY3Qgc3BzIHBwcwo+PiArICogTkFMX1NFQVJDSF9DVEw6IGJpdCA3LTE0LGxldmVs X2lkYwo+PiArICogTkFMX1NFQVJDSF9DVEw6IGJpdCAxNSxiaXRzdHJlYW1fcmVzdHJpY3Rpb25f ZmxhZwo+PiArICovCj4+ICsjZGVmaW5lIE5BTF9TRUFSQ0hfQ1RMwqDCoMKgwqDCoCBBVl9TQ1JB VENIXzkKPj4gKyNkZWZpbmUgRFBCX1NUQVRVU19SRUfCoMKgwqDCoMKgIEFWX1NDUkFUQ0hfSgo+ PiArI2RlZmluZSBFUlJPUl9TVEFUVVNfUkVHwqDCoMKgIEFWX1NDUkFUQ0hfOQo+PiArCj4+ICsj ZGVmaW5lIEgyNjRfQlVGRkVSX0lORk9fSU5ERVjCoMKgwqDCoMKgIFBNVjNfWMKgwqAgLyogMHhj MjQgKi8KPj4gKyNkZWZpbmUgSDI2NF9CVUZGRVJfSU5GT19EQVRBwqDCoMKgwqDCoMKgIFBNVjJf WMKgwqAgLyogMHhjMjIgKi8KPj4gKyNkZWZpbmUgSDI2NF9DVVJSRU5UX1BPQ19JRFhfUkVTRVTC oCBMQVNUX1NMSUNFX01WX0FERFLCoMKgwqDCoMKgwqAgLyogCj4+IDB4YzMwICovCj4+ICsjZGVm aW5lIEgyNjRfQ1VSUkVOVF9QT0PCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExBU1RfTVZZIC8qIDB4 YzMyIHNoYXJlZCB3aXRoIAo+PiBjb25jZWFsIE1WICovCj4+ICsjZGVmaW5lIEgyNjRfQ09fTUJf V1JfQUREUsKgwqDCoMKgwqDCoMKgwqDCoCBWTERfQzM4Cj4+ICsjZGVmaW5lIEgyNjRfQ09fTUJf UkRfQUREUsKgwqDCoMKgwqDCoMKgwqDCoCBWTERfQzM5Cj4+ICsjZGVmaW5lIEgyNjRfQ09fTUJf UldfQ1RMwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkxEX0MzRAo+PiArI2RlZmluZSBNQllfTUJYwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNQl9NT1RJT05fTU9ERQo+PiAr Cj4+ICsjZGVmaW5lIEgyNjRfQUNUSU9OX1NFQVJDSF9IRUFEwqDCoMKgwqAgMHhmMAo+PiArI2Rl ZmluZSBIMjY0X0FDVElPTl9ERUNPREVfU0xJQ0XCoMKgwqAgMHhmMQo+PiArI2RlZmluZSBIMjY0 X0FDVElPTl9DT05GSUdfRE9ORcKgwqDCoMKgIDB4ZjIKPj4gKyNkZWZpbmUgSDI2NF9BQ1RJT05f REVDT0RFX05FV1BJQ8KgwqAgMHhmMwo+PiArI2RlZmluZSBIMjY0X0FDVElPTl9ERUNPREVfU1RB UlTCoMKgwqAgMHhmZgo+PiArCj4+ICsvKiBSUE0gbWVtb3J5IGRlZmluaXRpb24gKi8KPj4gKyNk ZWZpbmUgRklYRURfRlJBTUVfUkFURV9GTEFHIDBYMjEKPj4gKyNkZWZpbmUgT0ZGU0VUX0RFTElN SVRFUl9MTyAweDJmCj4+ICsjZGVmaW5lIE9GRlNFVF9ERUxJTUlURVJfSEkgMHgzMAo+PiArI2Rl ZmluZSBSRUZfSURDX09WRVJSSURFX0ZMQUcgMHgzNQo+PiArI2RlZmluZSBTTElDRV9JUE9OTFlf QlJFQUsgMFg1Qwo+PiArI2RlZmluZSBQUkVWX01BWF9SRUZFUkVOQ0VfRlJBTUVfTlVNIDBYNUQK Pj4gKyNkZWZpbmUgRU9TIDBYNUUKPj4gKyNkZWZpbmUgRlJBTUVfUEFDS0lOR19UWVBFIDBYNUYK Pj4gKyNkZWZpbmUgT0xEX1BPQ19QQVJfMSAwWDYwCj4+ICsjZGVmaW5lIE9MRF9QT0NfUEFSXzIg MFg2MQo+PiArI2RlZmluZSBQUkVWX01CWCAwWDYyCj4+ICsjZGVmaW5lIFBSRVZfTUJZIDBYNjMK Pj4gKyNkZWZpbmUgRVJST1JfU0tJUF9NQl9OVU0gMFg2NAo+PiArI2RlZmluZSBFUlJPUl9NQl9T VEFUVVMgMFg2NQo+PiArI2RlZmluZSBMMF9QSUMwX1NUQVRVUyAwWDY2Cj4+ICsjZGVmaW5lIFRJ TUVPVVRfQ09VTlRFUiAwWDY3Cj4+ICsjZGVmaW5lIEJVRkZFUl9TSVpFIDBYNjgKPj4gKyNkZWZp bmUgQlVGRkVSX1NJWkVfSEkgMFg2OQo+PiArI2RlZmluZSBDUk9QUElOR19MRUZUX1JJR0hUIDBY NkEKPj4gKyNkZWZpbmUgQ1JPUFBJTkdfVE9QX0JPVFRPTSAwWDZCCj4+ICsvKioKPj4gKyAqIHNw c19mbGFnczI6Cj4+ICsgKiBiaXQgMywgYml0c3RyZWFtX3Jlc3RyaWN0aW9uX2ZsYWcKPj4gKyAq IGJpdCAyLCBwaWNfc3RydWN0X3ByZXNlbnRfZmxhZwo+PiArICogYml0IDEsIHZjbF9ocmRfcGFy YW1ldGVyc19wcmVzZW50X2ZsYWcKPj4gKyAqIGJpdCAwLCBuYWxfaHJkX3BhcmFtZXRlcnNfcHJl c2VudF9mbGFnCj4+ICsgKi8KPj4gKyNkZWZpbmUgU1BTX0ZMQUdTMiAweDZDCj4+ICsjZGVmaW5l IE5VTV9SRU9SREVSX0ZSQU1FUyAweDZECj4+ICsjZGVmaW5lIE1BWF9CVUZGRVJfRlJBTUUgMFg2 RQo+PiArCj4+ICsjZGVmaW5lIE5PTl9DT05GT1JNSU5HX1NUUkVBTSAwWDcwCj4+ICsjZGVmaW5l IFJFQ09WRVJZX1BPSU5UIDBYNzEKPj4gKyNkZWZpbmUgUE9TVF9DQU5WQVMgMFg3Mgo+PiArI2Rl ZmluZSBQT1NUX0NBTlZBU19IIDBYNzMKPj4gKyNkZWZpbmUgU0tJUF9QSUNfQ09VTlQgMFg3NAo+ PiArI2RlZmluZSBUQVJHRVRfTlVNX1NDQUxJTkdfTElTVCAwWDc1Cj4+ICsjZGVmaW5lIEZGX1BP U1RfT05FX0ZSQU1FIDBYNzYKPj4gKyNkZWZpbmUgUFJFVklPVVNfQklUX0NOVCAwWDc3Cj4+ICsj ZGVmaW5lIE1CX05PVF9TSElGVF9DT1VOVCAwWDc4Cj4+ICsjZGVmaW5lIFBJQ19TVEFUVVMgMFg3 OQo+PiArI2RlZmluZSBGUkFNRV9DT1VOVEVSIDBYN0EKPj4gKyNkZWZpbmUgTkVXX1NMSUNFX1RZ UEUgMFg3Qgo+PiArI2RlZmluZSBORVdfUElDVFVSRV9TVFJVQ1RVUkUgMFg3Qwo+PiArI2RlZmlu ZSBORVdfRlJBTUVfTlVNIDBYN0QKPj4gKyNkZWZpbmUgTkVXX0lEUl9QSUNfSUQgMFg3RQo+PiAr I2RlZmluZSBJRFJfUElDX0lEIDBYN0YKPj4gKwo+PiArLyogaDI2NCBMT0NBTCAqLwo+PiArI2Rl ZmluZSBOQUxfVU5JVF9UWVBFIDBYODAKPj4gKyNkZWZpbmUgTkFMX1JFRl9JREMgMFg4MQo+PiAr I2RlZmluZSBTTElDRV9UWVBFIDBYODIKPj4gKyNkZWZpbmUgTE9HMl9NQVhfRlJBTUVfTlVNIDBY ODMKPj4gKyNkZWZpbmUgRlJBTUVfTUJTX09OTFlfRkxBRyAwWDg0Cj4+ICsjZGVmaW5lIFBJQ19P UkRFUl9DTlRfVFlQRSAwWDg1Cj4+ICsjZGVmaW5lIExPRzJfTUFYX1BJQ19PUkRFUl9DTlRfTFNC IDBYODYKPj4gKyNkZWZpbmUgUElDX09SREVSX1BSRVNFTlRfRkxBRyAwWDg3Cj4+ICsjZGVmaW5l IFJFRFVOREFOVF9QSUNfQ05UX1BSRVNFTlRfRkxBRyAwWDg4Cj4+ICsjZGVmaW5lIFBJQ19JTklU X1FQX01JTlVTMjYgMFg4OQo+PiArI2RlZmluZSBERUJMT0NLSU5HX0ZJTFRFUl9DT05UUk9MX1BS RVNFTlRfRkxBRyAwWDhBCj4+ICsjZGVmaW5lIE5VTV9TTElDRV9HUk9VUFNfTUlOVVMxIDBYOEIK Pj4gKyNkZWZpbmUgTU9ERV84WDhfRkxBR1MgMFg4Qwo+PiArI2RlZmluZSBFTlRST1BZX0NPRElO R19NT0RFX0ZMQUcgMFg4RAo+PiArI2RlZmluZSBTTElDRV9RVUFOVCAwWDhFCj4+ICsjZGVmaW5l IFRPVEFMX01CX0hFSUdIVCAwWDhGCj4+ICsjZGVmaW5lIFBJQ1RVUkVfU1RSVUNUVVJFIDBYOTAK Pj4gKyNkZWZpbmUgVE9QX0lOVFJBX1RZUEUgMFg5MQo+PiArI2RlZmluZSBSVl9BSV9TVEFUVVMg MFg5Mgo+PiArI2RlZmluZSBBSV9SRUFEX1NUQVJUIDBYOTMKPj4gKyNkZWZpbmUgQUlfV1JJVEVf U1RBUlQgMFg5NAo+PiArI2RlZmluZSBBSV9DVVJfQlVGRkVSIDBYOTUKPj4gKyNkZWZpbmUgQUlf RE1BX0JVRkZFUiAwWDk2Cj4+ICsjZGVmaW5lIEFJX1JFQURfT0ZGU0VUIDBYOTcKPj4gKyNkZWZp bmUgQUlfV1JJVEVfT0ZGU0VUIDBYOTgKPj4gKyNkZWZpbmUgQUlfV1JJVEVfT0ZGU0VUX1NBVkUg MFg5OQo+PiArI2RlZmluZSBSVl9BSV9CVUZGX1NUQVJUIDBYOUEKPj4gKyNkZWZpbmUgSV9QSUNf TUJfQ09VTlQgMFg5Qgo+PiArI2RlZmluZSBBSV9XUl9EQ0FDX0RNQV9DVFJMIDBYOUMKPj4gKyNk ZWZpbmUgU0xJQ0VfTUJfQ09VTlQgMFg5RAo+PiArI2RlZmluZSBQSUNUWVBFIDBYOUUKPj4gKyNk ZWZpbmUgU0xJQ0VfR1JPVVBfTUFQX1RZUEUgMFg5Rgo+PiArI2RlZmluZSBNQl9UWVBFIDBYQTAK Pj4gKyNkZWZpbmUgTUJfQUZGX0FEREVEX0RNQSAwWEExCj4+ICsjZGVmaW5lIFBSRVZJT1VTX01C X1RZUEUgMFhBMgo+PiArI2RlZmluZSBXRUlHSFRFRF9QUkVEX0ZMQUcgMFhBMwo+PiArI2RlZmlu ZSBXRUlHSFRFRF9CSVBSRURfSURDIDBYQTQKPj4gKy8qIGJpdCAzOjIgLSBQSUNUVVJFX1NUUlVD VFVSRQo+PiArICogYml0IDEgLSBNQl9BREFQVElWRV9GUkFNRV9GSUVMRF9GTEFHCj4+ICsgKiBi aXQgMCAtIEZSQU1FX01CU19PTkxZX0ZMQUcKPj4gKyAqLwo+PiArI2RlZmluZSBNQkZGX0lORk8g MFhBNQo+PiArI2RlZmluZSBUT1BfSU5UUkFfVFlQRV9UT1AgMFhBNgo+PiArI2RlZmluZSBSVl9B SV9CVUZGX0lOQyAweEE3Cj4+ICsjZGVmaW5lIERFRkFVTFRfTUJfSU5GT19MTyAweEE4Cj4+ICsv KiAwIC0tIG5vIG5lZWQgdG8gcmVhZAo+PiArICogMSAtLSBuZWVkIHRvIHdhaXQgTGVmdAo+PiAr ICogMiAtLSBuZWVkIHRvIHJlYWQgSW50cmEKPj4gKyAqIDMgLS0gbmVlZCB0byByZWFkIGJhY2sg TVYKPj4gKyAqLwo+PiArI2RlZmluZSBORUVEX1JFQURfVE9QX0lORk8gMHhBOQo+PiArLyogMCAt LSBpZGxlCj4+ICsgKiAxIC0tIHdhaXQgTGVmdAo+PiArICogMiAtLSByZWFkaW5nIHRvcCBJbnRy YQo+PiArICogMyAtLSByZWFkaW5nIGJhY2sgTVYKPj4gKyAqLwo+PiArI2RlZmluZSBSRUFEX1RP UF9JTkZPX1NUQVRFIDB4QUEKPj4gKyNkZWZpbmUgRENBQ19NQlggMHhBQgo+PiArI2RlZmluZSBU T1BfTUJfSU5GT19PRkZTRVQgMHhBQwo+PiArI2RlZmluZSBUT1BfTUJfSU5GT19SRF9JRFggMHhB RAo+PiArI2RlZmluZSBUT1BfTUJfSU5GT19XUl9JRFggMHhBRQo+PiArCj4+ICsjZGVmaW5lIFZM RF9OT19XQUlUwqDCoCAwCj4+ICsjZGVmaW5lIFZMRF9XQUlUX0JVRkZFUiAxCj4+ICsjZGVmaW5l IFZMRF9XQUlUX0hPU1TCoMKgIDIKPj4gKyNkZWZpbmUgVkxEX1dBSVRfR0FQIDMKPj4gKwo+PiAr I2RlZmluZSBWTERfV0FJVElORyAweEFGCj4+ICsKPj4gKyNkZWZpbmUgTUJfWF9OVU0gMHhCMAo+ PiArI2RlZmluZSBNQl9IRUlHSFQgMHhCMgo+PiArI2RlZmluZSBNQlggMHhCMwo+PiArI2RlZmlu ZSBUT1RBTF9NQlkgMHhCNAo+PiArI2RlZmluZSBJTlRSX01TS19TQVZFIDB4QjUKPj4gKyNkZWZp bmUgTkVFRF9ESVNBQkxFX1BQRSAweEI2Cj4+ICsjZGVmaW5lIElTX05FV19QSUNUVVJFIDBYQjcK Pj4gKyNkZWZpbmUgUFJFVl9OQUxfUkVGX0lEQyAwWEI4Cj4+ICsjZGVmaW5lIFBSRVZfTkFMX1VO SVRfVFlQRSAwWEI5Cj4+ICsjZGVmaW5lIEZSQU1FX01CX0NPVU5UIDBYQkEKPj4gKyNkZWZpbmUg U0xJQ0VfR1JPVVBfVUNPREUgMFhCQgo+PiArI2RlZmluZSBTTElDRV9HUk9VUF9DSEFOR0VfUkFU RSAwWEJDCj4+ICsjZGVmaW5lIFNMSUNFX0dST1VQX0NIQU5HRV9DWUNMRV9MRU4gMFhCRAo+PiAr I2RlZmluZSBERUxBWV9MRU5HVEggMFhCRQo+PiArI2RlZmluZSBQSUNUVVJFX1NUUlVDVCAwWEJG Cj4+ICsjZGVmaW5lIERDQUNfUFJFVklPVVNfTUJfVFlQRSAweEMxCj4+ICsKPj4gKyNkZWZpbmUg VElNRV9TVEFNUCAwWEMyCj4+ICsjZGVmaW5lIEhfVElNRV9TVEFNUCAwWEMzCj4+ICsjZGVmaW5l IFZQVFNfTUFQX0FERFIgMFhDNAo+PiArI2RlZmluZSBIX1ZQVFNfTUFQX0FERFIgMFhDNQo+PiAr I2RlZmluZSBQSUNfSU5TRVJUX0ZMQUcgMFhDNwo+PiArI2RlZmluZSBUSU1FX1NUQU1QX1NUQVJU IDBYQzgKPj4gKyNkZWZpbmUgVElNRV9TVEFNUF9FTkQgMFhERgo+PiArI2RlZmluZSBPRkZTRVRf Rk9SX05PTl9SRUZfUElDIDBYRTAKPj4gKyNkZWZpbmUgT0ZGU0VUX0ZPUl9UT1BfVE9fQk9UVE9N X0ZJRUxEIDBYRTIKPj4gKyNkZWZpbmUgTUFYX1JFRkVSRU5DRV9GUkFNRV9OVU0gMFhFNAo+PiAr I2RlZmluZSBGUkFNRV9OVU1fR0FQX0FMTE9XRUQgMFhFNQo+PiArI2RlZmluZSBOVU1fUkVGX0ZS QU1FU19JTl9QSUNfT1JERVJfQ05UX0NZQ0xFIDBYRTYKPj4gKyNkZWZpbmUgUFJPRklMRV9JRENf TU1DTyAwWEU3Cj4+ICsjZGVmaW5lIExFVkVMX0lEQ19NTUNPIDBYRTgKPj4gKyNkZWZpbmUgRlJB TUVfU0laRV9JTl9NQiAwWEU5Cj4+ICsjZGVmaW5lIERFTFRBX1BJQ19PUkRFUl9BTFdBWVNfWkVS T19GTEFHIDBYRUEKPj4gKyNkZWZpbmUgUFBTX05VTV9SRUZfSURYX0wwX0FDVElWRV9NSU5VUzEg MFhFQgo+PiArI2RlZmluZSBQUFNfTlVNX1JFRl9JRFhfTDFfQUNUSVZFX01JTlVTMSAwWEVDCj4+ ICsjZGVmaW5lIENVUlJFTlRfU1BTX0lEIDBYRUQKPj4gKyNkZWZpbmUgQ1VSUkVOVF9QUFNfSUQg MFhFRQo+PiArLyogYml0IDAgLSBzZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0IG1heSBjaGFuZ2UKPj4g KyAqIGJpdCAxIC0gcGljdHVyZSBwYXJhbWV0ZXIgc2V0IG1heSBjaGFuZ2UKPj4gKyAqIGJpdCAy IC0gbmV3IGRwYiBqdXN0IGluaXRlZAo+PiArICogYml0IDMgLSBJRFIgcGljdHVyZSBub3QgZGVj b2RlZCB5ZXQKPj4gKyAqIGJpdCA1OjQgLSAwOiBtYiBsZXZlbCBjb2RlIGxvYWRlZCAxOiBwaWN0 dXJlCj4+ICsgKiBsZXZlbCBjb2RlIGxvYWRlZCAyOiBzbGljZSBsZXZlbCBjb2RlIGxvYWRlZAo+ PiArICovCj4+ICsjZGVmaW5lIERFQ09ERV9TVEFUVVMgMFhFRgo+PiArI2RlZmluZSBGSVJTVF9N Ql9JTl9TTElDRSAwWEYwCj4+ICsjZGVmaW5lIFBSRVZfTUJfV0lEVEggMFhGMQo+PiArI2RlZmlu ZSBQUkVWX0ZSQU1FX1NJWkVfSU5fTUIgMFhGMgo+PiArLyogYml0IDAgLSBhc3BlY3RfcmF0aW9f aW5mb19wcmVzZW50X2ZsYWcKPj4gKyAqIGJpdCAxIC0gdGltaW5nX2luZm9fcHJlc2VudF9mbGFn Cj4+ICsgKiBiaXQgMiAtIG5hbF9ocmRfcGFyYW1ldGVyc19wcmVzZW50X2ZsYWcKPj4gKyAqIGJp dCAzIC0gdmNsX2hyZF9wYXJhbWV0ZXJzX3ByZXNlbnRfZmxhZwo+PiArICogYml0IDQgLSBwaWNf c3RydWN0X3ByZXNlbnRfZmxhZwo+PiArICogYml0IDUgLSBiaXRzdHJlYW1fcmVzdHJpY3Rpb25f ZmxhZwo+PiArICovCj4+ICsjZGVmaW5lIFZVSV9TVEFUVVMgMFhGNAo+PiArI2RlZmluZSBBU1BF Q1RfUkFUSU9fSURDIDBYRjUKPj4gKyNkZWZpbmUgQVNQRUNUX1JBVElPX1NBUl9XSURUSCAwWEY2 Cj4+ICsjZGVmaW5lIEFTUEVDVF9SQVRJT19TQVJfSEVJR0hUIDBYRjcKPj4gKyNkZWZpbmUgTlVN X1VOSVRTX0lOX1RJQ0sgMFhGOAo+PiArI2RlZmluZSBUSU1FX1NDQUxFIDBYRkEKPj4gKyNkZWZp bmUgQ1VSUkVOVF9QSUNfSU5GTyAwWEZDCj4+ICsjZGVmaW5lIERQQl9CVUZGRVJfSU5GTyAwWEZE Cj4+ICsjZGVmaW5lIFJFRkVSRU5DRV9QT09MX0lORk8gMFhGRQo+PiArI2RlZmluZSBSRUZFUkVO Q0VfTElTVF9JTkZPIDBYRkYKPj4gKwo+PiArI2RlZmluZSBSRU9SREVSX0NNRF9NQVjCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgNjYKPj4gKwo+PiArLyogY29uZmlnIHBhcmFtZXRlcnMgdG8gRERS IGxtZW0gKi8KPj4gKyNkZWZpbmUgR0VUX1NQU19QUk9GSUxFX0lEQyh4KcKgwqDCoMKgwqDCoCAo KCh4KSAmIDB4ZmYpIDw8IDgpCj4+ICsjZGVmaW5lIEdFVF9TUFNfTEVWRUxfSURDKHgpwqDCoMKg wqDCoMKgwqDCoCAoKHgpICYgMHhmZikKPj4gKyNkZWZpbmUgR0VUX1NQU19TRVFfUEFSQU1fU0VU X0lEKHgpwqDCoMKgwqDCoMKgICgoKHgpICYgMHgxZikgPDwgOCkKPj4gKyNkZWZpbmUgR0VUX1NQ U19DSFJPTUFfRk9STUFUX0lEQyh4KcKgwqDCoMKgwqAgKCh4KSA8PCA4KQo+PiArI2RlZmluZSBH RVRfU1BTX05VTV9SRUZfRlJBTUVTKHgpwqDCoMKgwqDCoMKgwqDCoCAoKHgpICYgMHhmZikKPj4g KyNkZWZpbmUgR0VUX1NQU19HQVBTX0FMTE9XRURfRkxBRyh4KcKgwqDCoMKgwqAgKCh4KSA8PCA4 KQo+PiArI2RlZmluZSBHRVRfU1BTX0xPRzJfTUFYX0ZSQU1FX05VTSh4KcKgwqDCoMKgICgoeCkg KyA0KQo+PiArI2RlZmluZSBHRVRfU1BTX1BJQ19PUkRFUl9DTlRfTFNCKHgpwqDCoMKgwqDCoCAo KHgpICsgNCkKPj4gKyNkZWZpbmUgR0VUX1NQU19QSUNfT1JERVJfVFlQRSh4KcKgwqDCoMKgwqDC oMKgwqAgKHgpCj4+ICsjZGVmaW5lIEdFVF9TUFNfT0ZGU0VUX0ZPUl9OT05SRUZfUElDX0hJR0go eCnCoMKgwqDCoMKgICgoKHgpICYgCj4+IDB4ZmZmZjAwMDApID4+IDE2KQo+PiArI2RlZmluZSBH RVRfU1BTX09GRlNFVF9GT1JfTk9OUkVGX1BJQ19MT1coeCnCoMKgwqDCoMKgwqDCoMKgICgoeCkg JiAweGZmZmYpCj4+ICsjZGVmaW5lIEdFVF9TUFNfT0ZGU0VUX0ZPUl9UT1BfQk9UX0ZJRUxEX0hJ R0goeCnCoMKgwqDCoMKgICgoKHgpICYgCj4+IDB4ZmZmZjAwMDApID4+IDE2KQo+PiArI2RlZmlu ZSBHRVRfU1BTX09GRlNFVF9GT1JfVE9QX0JPVF9GSUVMRF9MT1coeCnCoMKgwqDCoMKgwqDCoMKg ICgoeCkgJiAweGZmZmYpCj4+ICsjZGVmaW5lIEdFVF9TUFNfUElDX1dJRFRIX0lOX01CUyh4KcKg wqDCoMKgwqDCoCAoKHgpICsgMSkKPj4gKyNkZWZpbmUgR0VUX1NQU19QSUNfSEVJR0hUX0lOX01C Uyh4KcKgwqDCoMKgwqAgKCh4KSArIDEpCj4+ICsjZGVmaW5lIEdFVF9TUFNfRElSRUNUXzhYOF9G TEFHUyh4KcKgwqDCoMKgwqDCoCAoKCh4KSAmIDB4MSkgPDwgMikKPj4gKyNkZWZpbmUgR0VUX1NQ U19NQl9BREFQVElWRV9GUkFNRV9GSUVMRF9GTEFHUyh4KcKgwqDCoMKgwqDCoCAoKCh4KSAmIDB4 MSkgCj4+IDw8IDEpCj4+ICsjZGVmaW5lIEdFVF9TUFNfRlJBTUVfTUJTX09OTFlfRkxBR1MoeCnC oMKgICgoeCkgJiAweDEpCj4+ICsKPj4gKyNkZWZpbmUgR0VUX1BQU19QSUNfUEFSQU1fU0VUX0lE KHgpwqDCoMKgwqDCoMKgICgoeCkgJiAweGZmKQo+PiArI2RlZmluZSBHRVRfUFBTX1NFUV9QQVJB TV9TRVRfSUQoeCnCoMKgwqDCoMKgwqAgKCgoeCkgJiAweDFmKSA8PCA4KQo+PiArI2RlZmluZSBH RVRfUFBTX0VOVFJPUFlfQ09ESU5HX01PREVfRkxBRyh4KcKgICgoKHgpICYgMHgxKSA8PCAxMykK Pj4gKyNkZWZpbmUgR0VUX1BQU19QSUNfT1JERVJfUFJFU0VOVF9GTEFHKHgpwqDCoMKgICgoKHgp ICYgMHgxKSA8PCAxNCkKPj4gKyNkZWZpbmUgR0VUX1BQU19OVU1fSURYX1JFRl9MMF9NSU5VUzEo eCnCoMKgwqDCoMKgwqAgKCh4KSAmIDB4MWYpCj4+ICsjZGVmaW5lIEdFVF9QUFNfTlVNX0lEWF9S RUZfTDFfTUlOVVMxKHgpwqDCoMKgwqDCoMKgICgoKHgpICYgMHgxZikgPDwgNSkKPj4gKyNkZWZp bmUgR0VUX1BQU19XRUlHSFRFRF9QUkVEX0ZMQUcoeCnCoMKgwqDCoMKgwqDCoMKgICgoKHgpICYg MHgxKSA8PCAxMCkKPj4gKyNkZWZpbmUgR0VUX1BQU19XRUlHSFRFRF9CSVBSRURfSURDKHgpwqDC oMKgwqDCoMKgwqAgKCgoeCkgJiAweDMpIDw8IDExKQo+PiArI2RlZmluZSBHRVRfUFBTX0lOSVRf UVNfTUlOVVMyNih4KcKgwqDCoMKgwqDCoMKgwqDCoMKgICgoKHgpICYgMHhmZikgPDwgOCkKPj4g KyNkZWZpbmUgR0VUX1BQU19JTklUX1FQX01JTlVTMjYoeCnCoMKgwqDCoMKgwqDCoMKgwqDCoCAo KHgpICYgMHhmZikKPj4gKyNkZWZpbmUgR0VUX1BQU19DSFJPTUFfUVBfSU5ERVhfT0ZGU0VUKHgp wqDCoCAoKHgpICYgMHhmZikKPj4gKyNkZWZpbmUgR0VUX1BQU19ERUJMT0NLX0ZJTFRFUl9DVFJM X1BSRVNFTlRfRkxBRyh4KcKgwqAgKCgoeCkgJiAweDEpIAo+PiA8PCA4KQo+PiArI2RlZmluZSBH RVRfUFBTX0NPTlNUUkFJTl9JTlRSQV9QUkVEX0ZMQUcoeCnCoMKgwqDCoMKgwqDCoMKgwqAgKCgo eCkgJiAweDEpIAo+PiA8PCA5KQo+PiArI2RlZmluZSBHRVRfUFBTX1JFRFVOREFOVF9QSUNfQ05U X1BSRVNFTlRfRkxBRyh4KcKgwqDCoMKgICgoKHgpICYgMHgxKSAKPj4gPDwgMTApCj4+ICsjZGVm aW5lIEdFVF9QUFNfU0NBTElOR19NQVRSSVhfUFJFU0VOVF9GTEFHKHgpwqDCoMKgwqDCoMKgwqAg KCgoeCkgJiAweDEpIAo+PiA8PCAxKQo+PiArI2RlZmluZSBHRVRfUFBTX1RSQU5TRk9STV84WDhf RkxBRyh4KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoeCkgJiAweDEpCj4+ICsj ZGVmaW5lIEdFVF9QUFNfR0VUX1NFQ09ORF9DSFJPTUFfUVBfT0ZGU0VUKHgpwqDCoMKgwqDCoMKg wqAgKHgpCj4+ICsKPj4gK2ludCBhbWxfaDI2NF9pbml0KHZvaWQgKnByaXYpOwo+PiArdm9pZCBh bWxfaDI2NF9leGl0KHZvaWQgKnByaXYpOwo+PiAraW50IGFtbF9oMjY0X2RlY19ydW4odm9pZCAq cHJpdik7Cj4+ICsKPj4gKyNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbWxvZ2ljL3ZkZWMvcmVnX2RlZmluZXMuaCAKPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL2FtbG9naWMvdmRlYy9yZWdfZGVmaW5lcy5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNmIxOTAwZWNiZWRiCj4+IC0tLSAvZGV2L251bGwKPj4gKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvcmVnX2RlZmluZXMuaAo+PiBA QCAtMCwwICsxLDE3NSBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4w LW9ubHkgT1IgTUlUKSAqLwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBBbWxvZ2lj LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9SRUdf REVGSU5FU19IXwo+PiArI2RlZmluZSBfUkVHX0RFRklORVNfSF8KPj4gKwo+PiArI2RlZmluZSBW REVDX0FTU0lTVF9NTUNfQ1RSTDDCoMKgwqDCoMKgwqDCoCAweDAwMDEKPj4gKyNkZWZpbmUgVkRF Q19BU1NJU1RfTU1DX0NUUkwxwqDCoMKgwqDCoMKgwqAgMHgwMDAyCj4+ICsKPj4gKyNkZWZpbmUg VkRFQ19BU1NJU1RfQ0FOVkFTX0JMSzMywqDCoMKgwqAgMHgwMDA1Cj4+ICsKPj4gKyNkZWZpbmUg VkRFQ19BU1NJU1RfTUJPWDFfQ0xSX1JFR8KgwqDCoCAweDAwNzUKPj4gKyNkZWZpbmUgVkRFQ19B U1NJU1RfTUJPWDFfTUFTS8KgwqDCoMKgwqDCoCAweDAwNzYKPj4gKwo+PiArI2RlZmluZSBNUFNS wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDMwMQo+ PiArI2RlZmluZSBNUENfUMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMHgwMzA2Cj4+ICsjZGVmaW5lIE1QQ19EwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDAzMDcKPj4gKyNkZWZpbmUgTVBDX0XCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDMwOAo+PiArI2RlZmluZSBNUENf V8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMzA5Cj4+ ICsjZGVmaW5lIENQU1LCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMHgwMzIxCj4+ICsjZGVmaW5lIElNRU1fRE1BX0NUUkzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMHgwMzQwCj4+ICsjZGVmaW5lIElNRU1fRE1BX0FEUsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDB4MDM0MQo+PiArI2RlZmluZSBJTUVNX0RNQV9DT1VOVMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMzQyCj4+ICsjZGVmaW5lIFdSUlNQX0lNRU3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMzQzCj4+ICsjZGVmaW5lIExNRU1f RE1BX0NUUkzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMzUwCj4+ICsjZGVmaW5l IFdSUlNQX0xNRU3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMzUzCj4+ ICsKPj4gKyNkZWZpbmUgUFNDQUxFX0NUUkzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDB4MDkxMQo+PiArI2RlZmluZSBHQ0xLX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDB4MDk4Mwo+PiArI2RlZmluZSBNREVDX1BJQ19EQ19DVFJMwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDB4MDk4ZQo+PiArI2RlZmluZSBNREVDX1BJQ19EQ19NVVhfQ1RS TMKgwqDCoMKgwqDCoMKgwqAgMHgwOThkCj4+ICsjZGVmaW5lIEFOQzBfQ0FOVkFTX0FERFLCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTkwCj4+ICsjZGVmaW5lIEFOQzFfQ0FOVkFTX0FERFLC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTkxCj4+ICsjZGVmaW5lIEFOQzJfQ0FOVkFTX0FE RFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTkyCj4+ICsjZGVmaW5lIEFOQzNfQ0FOVkFT X0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTkzCj4+ICsjZGVmaW5lIEFOQzRfQ0FO VkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTk0Cj4+ICsjZGVmaW5lIEFOQzVf Q0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTk1Cj4+ICsjZGVmaW5lIEFO QzZfQ0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTk2Cj4+ICsjZGVmaW5l IEFOQzdfQ0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTk3Cj4+ICsjZGVm aW5lIEFOQzhfQ0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTk4Cj4+ICsj ZGVmaW5lIEFOQzlfQ0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOTk5Cj4+ ICsjZGVmaW5lIEFOQzEwX0NBTlZBU19BRERSwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5OWEK Pj4gKyNkZWZpbmUgQU5DMTFfQ0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDk5 Ygo+PiArI2RlZmluZSBBTkMxMl9DQU5WQVNfQUREUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgw OTljCj4+ICsjZGVmaW5lIEFOQzEzX0NBTlZBU19BRERSwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAw eDA5OWQKPj4gKyNkZWZpbmUgQU5DMTRfQ0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDB4MDk5ZQo+PiArI2RlZmluZSBBTkMxNV9DQU5WQVNfQUREUsKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgwOTlmCj4+ICsjZGVmaW5lIEFOQzE2X0NBTlZBU19BRERSwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDA5YTAKPj4gKyNkZWZpbmUgQU5DMTdfQ0FOVkFTX0FERFLCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MDlhMQo+PiArI2RlZmluZSBBTkMxOF9DQU5WQVNfQUREUsKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgwOWEyCj4+ICsjZGVmaW5lIEFOQzE5X0NBTlZBU19BRERSwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAweDA5YTMKPj4gKyNkZWZpbmUgQU5DMjBfQ0FOVkFTX0FERFLCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MDlhNAo+PiArI2RlZmluZSBBTkMyMV9DQU5WQVNfQUREUsKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgwOWE1Cj4+ICsjZGVmaW5lIEFOQzIyX0NBTlZBU19BRERSwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAweDA5YTYKPj4gKyNkZWZpbmUgQU5DMjNfQ0FOVkFTX0FERFLCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDB4MDlhNwo+PiArI2RlZmluZSBBTkMyNF9DQU5WQVNfQUREUsKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWE4Cj4+ICsjZGVmaW5lIEFOQzI1X0NBTlZBU19BRERS wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5YTkKPj4gKyNkZWZpbmUgQU5DMjZfQ0FOVkFTX0FE RFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDlhYQo+PiArI2RlZmluZSBBTkMyN19DQU5WQVNf QUREUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWFiCj4+ICsjZGVmaW5lIEFOQzI4X0NBTlZB U19BRERSwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5YWMKPj4gKyNkZWZpbmUgQU5DMjlfQ0FO VkFTX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDlhZAo+PiArI2RlZmluZSBBTkMzMF9D QU5WQVNfQUREUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWFlCj4+ICsjZGVmaW5lIEFOQzMx X0NBTlZBU19BRERSwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5YWYKPj4gKyNkZWZpbmUgREJL Ul9DQU5WQVNfQUREUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5YjAKPj4gKyNkZWZpbmUg REJLV19DQU5WQVNfQUREUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5YjEKPj4gKyNkZWZp bmUgUkVDX0NBTlZBU19BRERSwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWIyCj4+ICsj ZGVmaW5lIENVUlJfQ0FOVkFTX0NUUkzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWIzCj4+ ICsjZGVmaW5lIE1ERUNfUElDX0RDX1RIUkVTSMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDliOAo+ PiArI2RlZmluZSBBVl9TQ1JBVENIXzDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAw eDA5YzAKPj4gKyNkZWZpbmUgQVZfU0NSQVRDSF8xwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMHgwOWMxCj4+ICsjZGVmaW5lIEFWX1NDUkFUQ0hfMsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MDljMgo+PiArI2RlZmluZSBBVl9TQ1JBVENIXzPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5YzMKPj4gKyNkZWZpbmUgQVZfU0NSQVRDSF80wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWM0Cj4+ICsjZGVmaW5lIEFWX1NDUkFUQ0hf NcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDljNQo+PiArI2RlZmluZSBBVl9T Q1JBVENIXzbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5YzYKPj4gKyNkZWZp bmUgQVZfU0NSQVRDSF83wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWM3Cj4+ ICsjZGVmaW5lIEFWX1NDUkFUQ0hfOMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4 MDljOAo+PiArI2RlZmluZSBBVl9TQ1JBVENIXznCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDA5YzkKPj4gKyNkZWZpbmUgQVZfU0NSQVRDSF9BwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMHgwOWNhCj4+ICsjZGVmaW5lIEFWX1NDUkFUQ0hfQsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDB4MDljYgo+PiArI2RlZmluZSBBVl9TQ1JBVENIX0PCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5Y2MKPj4gKyNkZWZpbmUgQVZfU0NSQVRDSF9E wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWNkCj4+ICsjZGVmaW5lIEFWX1ND UkFUQ0hfRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDljZQo+PiArI2RlZmlu ZSBBVl9TQ1JBVENIX0bCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5Y2YKPj4g KyNkZWZpbmUgQVZfU0NSQVRDSF9HwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgw OWQwCj4+ICsjZGVmaW5lIEFWX1NDUkFUQ0hfSMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDB4MDlkMQo+PiArI2RlZmluZSBBVl9TQ1JBVENIX0nCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAweDA5ZDIKPj4gKyNkZWZpbmUgQVZfU0NSQVRDSF9KwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMHgwOWQzCj4+ICsjZGVmaW5lIEFWX1NDUkFUQ0hfS8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDlkNAo+PiArI2RlZmluZSBBVl9TQ1JBVENIX0zC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5ZDUKPj4gKyNkZWZpbmUgQVZfU0NS QVRDSF9NwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOWQ2Cj4+ICsjZGVmaW5l IEFWX1NDUkFUQ0hfTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDlkNwo+PiAr I2RlZmluZSBXUlJTUF9WTETCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAw eDA5ZGEKPj4gKyNkZWZpbmUgTURFQ19ET1VCTEVXX0NGRzDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDB4MDlkYgo+PiArI2RlZmluZSBNREVDX0RPVUJMRVdfQ0ZHMcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgwOWRjCj4+ICsjZGVmaW5lIE1ERUNfRE9VQkxFV19DRkcywqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDA5ZGQKPj4gKyNkZWZpbmUgTURFQ19ET1VCTEVXX0NGRzPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MDlkZQo+PiArI2RlZmluZSBNREVDX0RPVUJMRVdfQ0ZHNMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgwOWRmCj4+ICsjZGVmaW5lIE1ERUNfRE9VQkxFV19DRkc1wqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAweDA5ZTAKPj4gKyNkZWZpbmUgTURFQ19ET1VCTEVXX0NGRzbCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MDllMQo+PiArI2RlZmluZSBNREVDX0RPVUJMRVdfQ0ZHN8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgwOWUyCj4+ICsjZGVmaW5lIE1ERUNfRE9VQkxFV19TVEFUVVPCoMKg wqDCoMKgwqDCoMKgwqAgMHgwOWUzCj4+ICsjZGVmaW5lIE1ERUNfRVhUSUZfQ0ZHMMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDB4MDllNAo+PiArCj4+ICsjZGVmaW5lIE1ERUNfRVhUSUZfQ0ZH McKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDllNQo+PiArI2RlZmluZSBNREVDX0VYVElG X0NGRzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5ZTYKPj4gKwo+PiArI2RlZmluZSBQ T1dFUl9DVExfVkxEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGMwOAo+PiArI2Rl ZmluZSBWTERfREVDT0RFX0NPTlRST0zCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBjMTgKPj4gKwo+ PiArI2RlZmluZSBQTVYxX1jCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDBjMjAKPj4gKyNkZWZpbmUgUE1WMV9ZwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMHgwYzIxCj4+ICsjZGVmaW5lIFBNVjJfWMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGMyMgo+PiArI2RlZmluZSBQTVYyX1nC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBjMjMKPj4gKyNk ZWZpbmUgUE1WM19YwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgwYzI0Cj4+ICsjZGVmaW5lIFBNVjNfWcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MGMyNQo+PiArI2RlZmluZSBQTVY0X1jCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBjMjYKPj4gKyNkZWZpbmUgUE1WNF9ZwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzI3Cj4+ICsjZGVmaW5l IE00X1RBQkxFX1NFTEVDVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGMyOAo+PiArI2Rl ZmluZSBNNF9DT05UUk9MX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzI5Cj4+ ICsjZGVmaW5lIEJMT0NLX05VTcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDB4MGMyYQo+PiArI2RlZmluZSBQQVRURVJOX0NPREXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAweDBjMmIKPj4gKyNkZWZpbmUgTUJfSU5GT8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDBjMmMKPj4gKyNkZWZpbmUgVkxEX0RDX1BSRUTCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGMyZAo+PiArI2RlZmluZSBWTERfRVJST1Jf TUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzJlCj4+ICsjZGVmaW5lIFZMRF9E Q19QUkVEX0PCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzJmCj4+ICsjZGVmaW5l IExBU1RfU0xJQ0VfTVZfQUREUsKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGMzMAo+PiArI2RlZmlu ZSBMQVNUX01WWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzMx Cj4+ICsjZGVmaW5lIExBU1RfTVZZwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDBjMzIKPj4gKwo+PiArI2RlZmluZSBNQl9NT1RJT05fTU9ERcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgwYzA3Cj4+ICsjZGVmaW5lIFZJRkZfQklUX0NOVMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGMxYQo+PiArI2RlZmluZSBNNF9DT05UUk9MX1JFR8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzI5Cj4+ICsjZGVmaW5lIFZMRF9DMzjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzM4Cj4+ICsjZGVmaW5l IFZMRF9DMznCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzM5 Cj4+ICsjZGVmaW5lIFZMRF9TSElGVF9TVEFUVVPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgw YzNiCj4+ICsjZGVmaW5lIFZMRF9DM0TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgwYzNkCj4+ICsjZGVmaW5lIFZMRF9NRU1fVklGSUZPX1NUQVJUX1BUUsKgwqDC oMKgIDB4MGM0MAo+PiArI2RlZmluZSBWTERfTUVNX1ZJRklGT19DVVJSX1BUUsKgwqDCoMKgwqAg MHgwYzQxCj4+ICsjZGVmaW5lIFZMRF9NRU1fVklGSUZPX0VORF9QVFLCoMKgwqDCoMKgwqAgMHgw YzQyCj4+ICsjZGVmaW5lIFZMRF9NRU1fVklGSUZPX0JZVEVTX0FWQUlMwqDCoCAweDBjNDMKPj4g KyNkZWZpbmUgVkxEX01FTV9WSUZJRk9fQ09OVFJPTMKgwqDCoMKgwqDCoCAweDBjNDQKPj4gKyNk ZWZpbmUgVkxEX01FTV9WSUZJRk9fV1DCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGM0NQo+PiAr I2RlZmluZSBWTERfTUVNX1ZJRklGT19SUMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwYzQ2Cj4+ ICsjZGVmaW5lIFZMRF9NRU1fVklGSUZPX0xFVkVMwqDCoMKgwqDCoMKgwqDCoCAweDBjNDcKPj4g KyNkZWZpbmUgVkxEX01FTV9WSUZJRk9fQlVGX0NOVEzCoMKgwqDCoMKgIDB4MGM0OAo+PiArCj4+ ICsjZGVmaW5lIFZDT1BfQ1RSTF9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgw ZTAwCj4+ICsjZGVmaW5lIFJWX0FJX01CX0NPVU5UwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAweDBlMGMKPj4gKyNkZWZpbmUgSVFJRENUX0NPTlRST0zCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MGUwZQo+PiArI2RlZmluZSBEQ0FDX0REUl9CWVRFNjRfQ1RMwqDCoMKgwqDCoMKg wqDCoMKgIDB4MGUxZAo+PiArCj4+ICsjZGVmaW5lIFZERUMyX0lNRU1fRE1BX0NUUkzCoMKgwqDC oMKgwqDCoMKgwqAgMHgyMzQwCj4+ICsjZGVmaW5lIFZERUMyX0lNRU1fRE1BX0FEUsKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MjM0MQo+PiArI2RlZmluZSBWREVDMl9JTUVNX0RNQV9DT1VOVMKgwqDC oMKgwqDCoMKgwqAgMHgyMzQyCj4+ICsKPj4gKyNkZWZpbmUgRE9TX1NXX1JFU0VUMMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDNmMDAKPj4gKyNkZWZpbmUgRE9TX0dDTEtfRU4wwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgzZjAxCj4+ICsjZGVmaW5lIERPU19HQ0xL X0VOMcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4M2YwOQo+PiArI2RlZmluZSBE T1NfR0NMS19FTjPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDNmMzUKPj4gKwo+ PiArI2RlZmluZSBET1NfTUVNX1BEX1ZERUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDNm MzAKPj4gKyNkZWZpbmUgRE9TX01FTV9QRF9WREVDMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAw eDNmMzEKPj4gKyNkZWZpbmUgRE9TX01FTV9QRF9IQ09ERUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDB4M2YzMgo+PiArLyphZGQgZnJvbSBNOE0yKi8KPj4gKyNkZWZpbmUgRE9TX01FTV9QRF9IRVZD wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgzZjMzCj4+ICsKPj4gKyNkZWZpbmUgRE9TX1NX X1JFU0VUM8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDNmMzQKPj4gKyNkZWZpbmUg RE9TX0dDTEtfRU4zwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgzZjM1Cj4+ICsj ZGVmaW5lIERPU19IRVZDX0lOVF9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4M2YzNgo+ PiArCj4+ICsjZW5kaWYKPj4gKwo+Pgo+IFRoYW5rcywKPiBOZWlsCgpCZXN0IHJlZ2FyZHMKClpo ZW50YW8KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxv Z2ljCg==