Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp371462pxb; Wed, 29 Sep 2021 00:52:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8PdmhVyocTB4QgiWz8OLJrnvNgdIT7JUxyvLvYHVDl19g6F6xoJqfTJqXBAZaSLY2Y4mj X-Received: by 2002:a17:90a:bb13:: with SMTP id u19mr5008435pjr.42.1632901936399; Wed, 29 Sep 2021 00:52:16 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1632901936; cv=pass; d=google.com; s=arc-20160816; b=kVCVR2zLKyw4QMm6nk3jPCaopdN2OEzZX6fuyML9rSnES+cLtBdyl9yVJ6OF11vmuz aw+Ekj/AOw5fpjuVqmCxbr0sSa9F6OWHsw1Mn24lYrD12SdlKUhTnX10ewYof0ou0qFN Z3vGV27jrjrQGTfwT0rz791KkzLoVCPcEZtowLgEBYyvX/AUgavgkUjgBzdijThkrJN7 7AUh21aSC5g0XgxdgXXwS1R4PhiNnuWfq7xZorNHerK3fsSO90IK0er+EC+obACvYOQD 5xbdv+rl0UNTQukFZ1mBUkBVyySYra0e/SwNUZzoRoqE9fneZzSD7seOumd1xsBd6zq7 rfbw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=z0/bkyxnnNAQAvp/AA+q+YL5NUxpzONmy6FGq0ki+y8=; b=Orp27GrGvH/bzDIkmbFTlsMXyKBobnI9bXXsVin1WKpOoVzRuQAL8xfTesgIpkgQXu pCpc8h9BU16cf2RoDVaUitH19nBNRGoAOJPWSB6q5vISWYO/OfBUlZoJZnWhGtDFRHre 55Qq2jUUiZbYRJbVzY63s+3U/e3OiwCPz2a7lnt8PIemrtnwOYpX3x/16T6rnyqUxHrM bWKWuahUbr5l+FGYiURal5eHyGYVEhzxIINUDG4L/apEMBU2EBUjrxkXClmM4KzRftCI jlkHJu0YkbK3Dlty16wehX3ScT6EbvO05AT86nNtv5app1vj026CsmEJPlqC1foQuNOK DSIA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector2-xilinx-onmicrosoft-com header.b=MLfC14gt; arc=pass (i=1 spf=pass spfdomain=xilinx.com dkim=pass dkdomain=xilinx.com dmarc=pass fromdomain=xilinx.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xilinx.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x10si1889416pll.332.2021.09.29.00.52.03; Wed, 29 Sep 2021 00:52:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector2-xilinx-onmicrosoft-com header.b=MLfC14gt; arc=pass (i=1 spf=pass spfdomain=xilinx.com dkim=pass dkdomain=xilinx.com dmarc=pass fromdomain=xilinx.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xilinx.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244493AbhI2HDX (ORCPT + 99 others); Wed, 29 Sep 2021 03:03:23 -0400 Received: from mail-bn8nam08on2048.outbound.protection.outlook.com ([40.107.100.48]:25024 "EHLO NAM04-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S244242AbhI2HDW (ORCPT ); Wed, 29 Sep 2021 03:03:22 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I0yxXUOWDrRWArxXaMb53Enco3y/mGXhqP4BDBkAEiie9ZUyW19vG2gb0Zt+K88xiR4f9zTSVxp9hOgeAPnKxMKSTKDWafWSBbReTNvwtzjNTMeZWuEGwWKYMER/KrY1A01YlYyG/HD4QdrdvUH7PqfgyiQN4Xbe92xptcH2BTN0+w2W2deD7qZ1L43/4t9FDH3ZqQKUZQeVt+JXNNEslqp9bBGhgFXhXjegfLQWjA6w66g57CjWYrCoLN+YruR5nFqoy/6sgEJctH3atznVOMX9WkOu4aaVr+rMaRIdoB+cXafAaNvYw6dIytdk3K+6uNNMVtmJEnptubkw291KEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=z0/bkyxnnNAQAvp/AA+q+YL5NUxpzONmy6FGq0ki+y8=; b=AwQR2PRZ3Uh1qUByAlYetT7UPdM6PrOLX94lqIQZZGAkOMr9O598R2FeG391B/cigH0NMoqxwRRDFqjJbOwT6aNwMn4S85vGmTc0duA1WAQXuSzCaD43maR2QG+Pmze+Rlq9VTbUy+oiXIC66Cm9b/8gYuDa15SKFZSjcPeZJppk46DWSjRE8HcfPymDW7a3A/7Tp7itkM45qGB1MBGep2O6S7fEOjI+1ajNy/Y0U6cYuKQ9ArZjhtaaDxOebOOr/og/pciRxlq0T4Jzrp+prmNr7Z5y1EkhtzhvPPfVHMtow+0QyRl3/iihz9ZbQJOMKQfzVgH38uBT1lQolALLqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=xilinx.com; dmarc=pass action=none header.from=xilinx.com; dkim=pass header.d=xilinx.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z0/bkyxnnNAQAvp/AA+q+YL5NUxpzONmy6FGq0ki+y8=; b=MLfC14gtcmKPPE0PLtoiTHf0Nl4LL6+E4V1yDLAiADtGpC0f1VLYNN6hso1hK/C6yk2VxMwI+kHYv8rf7R9u3e6eMCWifmHs58M1OaDeMXv9dhGouPQqVPI4bb+/yLDyRi0XAw5dqOil5zvVWj9ef1LDi9kJyhTvaufrRqr3UqA= Received: from DM6PR02MB5386.namprd02.prod.outlook.com (2603:10b6:5:75::25) by DM5PR02MB3180.namprd02.prod.outlook.com (2603:10b6:4:61::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.20; Wed, 29 Sep 2021 07:01:38 +0000 Received: from DM6PR02MB5386.namprd02.prod.outlook.com ([fe80::c4c8:b3ff:7dca:c11d]) by DM6PR02MB5386.namprd02.prod.outlook.com ([fe80::c4c8:b3ff:7dca:c11d%6]) with mapi id 15.20.4544.022; Wed, 29 Sep 2021 07:01:38 +0000 From: Srinivas Neeli To: Guenter Roeck , Shubhrajyoti Datta , Srinivas Goud , Michal Simek CC: "wim@linux-watchdog.org" , "linux-watchdog@vger.kernel.org" , "linux-kernel@vger.kernel.org" , git Subject: RE: [PATCH 2/3] watchdog: xilinx_wwdt: Add Versal Window watchdog mode Thread-Topic: [PATCH 2/3] watchdog: xilinx_wwdt: Add Versal Window watchdog mode Thread-Index: AQHXUt63OqNOw/1ubEGStNnkiE/UxKr3ZmuAgBPwiLCANuSNcIAAZkqAgHi34yA= Date: Wed, 29 Sep 2021 07:01:37 +0000 Message-ID: References: <20210527095709.12841-1-srinivas.neeli@xilinx.com> <20210527095709.12841-3-srinivas.neeli@xilinx.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: roeck-us.net; dkim=none (message not signed) header.d=none;roeck-us.net; dmarc=none action=none header.from=xilinx.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: abdfaa0c-ce58-44a1-d9b4-08d98316fb74 x-ms-traffictypediagnostic: DM5PR02MB3180: x-ld-processed: 657af505-d5df-48d0-8300-c31994686c5c,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rPbBf6wzO1za7c3FVj9mDyyghmcxE3tDvjIINGq4vYxyWg2x8KZVFtLL6JHEo0vkSEeyiI61HSPm73bMRbi4dUdtt/963EIAqWr6dxMmecHGQ8IOl8oLudMkLow7OsAhl2MAlV3nZcMGcaV7bvJJyBFZKlCL4fbV3bb11SttLcRljK3AuvypxCDTNf6NQW680cAra85IOq0vCol8hqQy9m7GuKCWXrEWh+YTk7hQXnVJX8RjhFeHhWndKBtLGggDcHHb5ustywyiVl8DVP2Cx/ydOS3ilfrxMGxOOxJYE99cJC0Jkjny3VO6enS4mP9eHbSYTY4uK8iokdK2L3O5M8UQ/MsXrKgubFbIPPICF4Be2ZL6N39+Q8oOXlC1JodnVcaBjOUc0pvlrBdkZZDhBZD2nZ3yvuyX8hm3dJ/psZ2ue1gz4SrB01BEDa1jPBJ4GB77BdXF/DQ1Y+bJSzoYst4QsYo3lUb61T4IZbHLSDSgPvnXpVj1kRcZxEEzus1XNxLOtpeB0wBd9Zc4T9jGPAsm3+GNcKl66VpkYuFwCSGKv+3yJ+6Wv4Jtm+a+LoqUolnov3e/abrZM5wsIq5Rgx8nesUVvMgBsM7WTO2UzHS07QHUMEU7VeeJYCYj8t1KN0ir0jUyeTW9gLeX4VZFE2uENX19H1IPkHtbz/DW3Hk4AwpzUA48T67aomHO7x0GpFkMd9dnxNeUMd12stGfVQ6zJoYy7fO/MTffzIV5r3Hnvu2IpdFIuXiTFnwS2GJQlLRMpO4pYwDsh5NMnN3zE2LlFL3Yh58Ih0wgYPErCag= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR02MB5386.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(76116006)(66946007)(26005)(71200400001)(33656002)(83380400001)(52536014)(122000001)(6636002)(38100700002)(2906002)(66556008)(64756008)(66446008)(6506007)(66476007)(38070700005)(5660300002)(53546011)(8676002)(107886003)(4326008)(7696005)(86362001)(508600001)(186003)(30864003)(110136005)(54906003)(55016002)(9686003)(8936002)(316002)(966005)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?enNlOURzcnNuaHFPSElvNTE2QU5WeEhQRDBvNFByek1zN3lVemhvbDJhbG1s?= =?utf-8?B?dTloeTJRcUVDYUNEdTNHR1ljWXpieXRlZy8zY2xQK3VOWlE5UjVrMjl3MEs1?= =?utf-8?B?d2psMkhVMDRPMlk0MDJIdDk5TStXaE1GV2EyQ29nZGpzaC9ZODB0MVg3Q1p5?= =?utf-8?B?eDRMTmhaMGRvakdEc2JrcVh1RHEyRE5mK2RUT3Q4Q01YVitsYWhPMnZtN29L?= =?utf-8?B?VXdNa0ZVRWlGamdxcTZza0Jod3ExUzJJeG9qb3lEMm5YTXJnQjVVdVdDRHhL?= =?utf-8?B?bVRNTjV1UkcwaVB2T1ArUkQ4R0huZitYSkVsaGN5SUxjUmIxcXVJREQvbEVa?= =?utf-8?B?TjdZM0hra0QzTEdSbGVycVl6VHc2eWRJOHlweGhtUFFEbFZJV095OXczZk84?= =?utf-8?B?Q0JZeHZwUmc1Z1d2REE1VG9JN0U1RzF3cFI4NmJ6UWpSSWhSK0pJTi9vRkE0?= =?utf-8?B?WXBONmg2WjVrVnR0UmUzMHAxaWlMQnFERFE2WHlLNFo1OXBkMkt6aXpRTVVO?= =?utf-8?B?RDdEeW40WVZqR0l3S3ZKckk0T3E5SUlXMC8yL3h6OHhxc3lBM2tLMUJRZlRw?= =?utf-8?B?NEVrZHZpYk5ib1BwWlcrdk0vek1BRVd5TE8rL3d0NUNBbFNpN0xobGNtbmNW?= =?utf-8?B?N0tST1hiTTdua0FWb3hmaXoxWlBBOTRPdFZOaTNEM3Rha2JkcU5uSVJ4dTdn?= =?utf-8?B?aWxoUXRsSXgyTkJaV0NReDBpcCtGUHY4QlRTZUZkc1lRQ1B3dVAvR2hCcDNa?= =?utf-8?B?UVUvMXB1Q1VMYnBRYVRScjZGOFhIUmlYOGNiV3k4eWZhMm1ic090SjUzdGRI?= =?utf-8?B?c00xcTVaUWYxaDBwa3Jld3NEZkpFeUlYY29Xbnp0SWp2ZG1CRDExZzhyRklV?= =?utf-8?B?VkNYYTRDa0lxdTdoNHIyOEs1dkhFL01UYTh1ZkMybkpUYW0rdmJKZWQzQVQ0?= =?utf-8?B?aEZ2WDFiaUV6KzErclNVWUxlSE8xWGZpUXdPSHR1TjhHdTdRMGhjaGdWZGlx?= =?utf-8?B?RE5zc2pEZ2k0WUNZdyt2TURvTUdCREk5WjN6RHg3dG13UHVoZEplUHJFRkpj?= =?utf-8?B?TmlZQXFzWGVsTVZLMUhsY2tOSFo3MUJqYjN1NzN6NU5jWTFFQkFlakR1V0NQ?= =?utf-8?B?TGtNTlZCd0dYYXNUekoyd0xGRWEzZGoyOFdzLy9hZHZmd3hZZDdnQlM4RU14?= =?utf-8?B?Wk01dFJIVjYzK04vaUNQYXdpMEIzSXhhT0xYY2k0K3lqWVNMeEw4VjdBTG9U?= =?utf-8?B?V2tDNUdYUmdyRFkyUEE1aFZkVkw0VWZRNUVRT2JtRVM4d1BYbml1SXBQbFJH?= =?utf-8?B?bkpSWk5qb1hZUmhBRzlIZVJQUG5VYmM4RGRkbktFWFNSNkl6eFZCUWJaQ2ZY?= =?utf-8?B?bXhuajhZVmdmVStJdFNNcFhNMDdSb29pRUlGRXJIdTF1UDF6Y3M5bEpPcm91?= =?utf-8?B?RXNXUDNwNC9RRHpRaEVIdVhJRnhyNTAxUkdOWXNOMFZ5WHRNUzl3Y25UVTV1?= =?utf-8?B?TFdaaHkrVFhyVHY4M2RSTUlJZk0yVWpjamJhQkdkNWVBOWlkUnorL3luU0x2?= =?utf-8?B?UkltbVFCN2ROVGNQdnJpdEIyMXB1c3V6Z29zaUErTmRleDhQa3pGNEl4c3U2?= =?utf-8?B?OHRQdHh3ZGpscm9FNWE2VHR0TXNEM0F6ZzVTdFgyeVEyOXBJbG93bWozU0xZ?= =?utf-8?B?b3pHTGlJbjNTQmQ5UHF1UGlZbnI4bDkydVpHM1RteDB6dmtORXJ6S3o0VmtW?= =?utf-8?Q?2bJVs6dX+pwD/dkbCPJ4rO90OrNRFcuSkaHjEkk?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR02MB5386.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: abdfaa0c-ce58-44a1-d9b4-08d98316fb74 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Sep 2021 07:01:38.0154 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZD80bUfaKdB6yBQknDABfo3cyf0BntPdKzrnY2ee//WuggdAVOMzY8sWgIah/4Q50IPyHKO81z/NXLoOdQ0fyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR02MB3180 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgR3VlbnRlciwNCg0KSSB3ZW50IHRocm91Z2ggcmVmZXJlbmNlICJydGlfd2R0LmMiIGRyaXZl ci4gSXQgaW1wbGVtZW50ZWQgV2luZG93IHdhdGNoZG9nIHdpdGggZmV3IGxpbWl0YXRpb25zLg0K TGltaXRhdGlvbnM6DQotLS0tLS0tLS0tLS0tLS0gDQoxKSBOb3QgYWJsZSB0byBjb25maWd1cmUg Q2xvc2VkIHdpbmRvdyBhbmQgT3BlbiB3aW5kb3cgc2VwYXJhdGVseS4NCglCZWNhdXNlIG9mIHhp bGlueCB3aW5kb3cgd2F0Y2hkb2cgc3VwcG9ydHMgc2VwYXJhdGUgY29uZmlndXJhYmxlIGNsb3Nl ZCBhbmQgb3BlbiB3aW5kb3dzLg0KMikgSW4gY2FzZSBvZiBydGkgZHJpdmVyLCBpZiBhbnkgYmFk IGV2ZW50KGVycm9yIGV2ZW50KSBvY2N1ciBkdWUgdG8gYW55IHVzZXIgc3BhY2UgZXZlbnQgbGlr ZSBwaW5nIHRoZW4NCiAgIHRoZSB3YXRjaGRvZyBjb3JlIGJ5cGFzc2luZyB0aGUgcGluZyBjYWxs Lg0KICAgIEJ1dCBpbiBjYXNlIG9mIHhpbGlueCB3YXRjaGRvZyB0aGVyZSBhcmUgc2VwYXJhdGUg cmVnaXN0ZXIgYml0cyBmb3IgY291bnRpbmcgZXJyb3IgZXZlbnRzLg0KCVNvIGlmIEkgaW1wbGVt ZW50IGRyaXZlciBpbiBzaW1pbGFyIHRvIHJ0aS13ZHQuYyBkcml2ZXIsIHRoZW4gd2UgY2FuIG5v dCBiZSBhYmxlIHJlYWQgdGhlIGVycm9yIGV2ZW50cyBmcm9tDQoJdGhlIHJlZ2lzdGVycy4NCglT byBpcyB0aGlzIG9rIGJlY2F1c2Ugd2UgYXJlIG5vdCBub3RpZnlpbmcgdGhlIGVycm9ycyB0byB1 c2VyLg0KDQpUaGFua3MNClNyaW5pdmFzIE5lZWxpDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gRnJvbTogR3VlbnRlciBSb2VjayA8Z3JvZWNrN0BnbWFpbC5jb20+IE9uIEJlaGFs ZiBPZiBHdWVudGVyIFJvZWNrDQo+IFNlbnQ6IFdlZG5lc2RheSwgSnVseSAxNCwgMjAyMSA1OjAx IFBNDQo+IFRvOiBTcmluaXZhcyBOZWVsaSA8c25lZWxpQHhpbGlueC5jb20+OyBTaHViaHJhanlv dGkgRGF0dGENCj4gPHNodWJocmFqQHhpbGlueC5jb20+OyBTcmluaXZhcyBHb3VkIDxzZ291ZEB4 aWxpbnguY29tPjsgTWljaGFsIFNpbWVrDQo+IDxtaWNoYWxzQHhpbGlueC5jb20+DQo+IENjOiB3 aW1AbGludXgtd2F0Y2hkb2cub3JnOyBsaW51eC13YXRjaGRvZ0B2Z2VyLmtlcm5lbC5vcmc7IGxp bnV4LQ0KPiBrZXJuZWxAdmdlci5rZXJuZWwub3JnOyBnaXQgPGdpdEB4aWxpbnguY29tPg0KPiBT dWJqZWN0OiBSZTogW1BBVENIIDIvM10gd2F0Y2hkb2c6IHhpbGlueF93d2R0OiBBZGQgVmVyc2Fs IFdpbmRvdw0KPiB3YXRjaGRvZyBtb2RlDQo+IA0KPiBPbiA3LzEzLzIxIDEwOjI5IFBNLCBTcmlu aXZhcyBOZWVsaSB3cm90ZToNCj4gPiBIaSBHdWVudGVyLA0KPiA+DQo+ID4gSWYgeW91IGFyZSBm aW5lIHdpdGggbXkganVzdGlmaWNhdGlvbiwgSSB3aWxsIHNlbmQgdjIgd2l0aCB1cGRhdGUgY29k ZS4NCj4gPg0KPiANCj4gV2UgaGF2ZSBhdCBsZWFzdCBvbmUgbW9yZSB3YXRjaGRvZyBkcml2ZXIg d2l0aCBvcGVuL2Nsb3NlZCB3aW5kb3cNCj4gY29uY2VwdHMuDQo+IFRoaXMgaXMgbm90IGEgInBy ZXRpbWVvdXQiLiBQbGVhc2Ugc2VlIGRyaXZlcnMvd2F0Y2hkb2cvcnRpX3dkdC5jIGZvciBhbg0K PiBleGFtcGxlIG9uIGhvdyB0byBoYW5kbGUgdGhpczsgZXNzZW50aWFsbHkgeW91IGhhdmUgdG8g c2V0DQo+IG1pbl9od19oZWFydGJlYXRfbXMgdG8gdGhlIHZhbHVlIG9mIHRoZSBjbG9zZWQgd2lu ZG93IHRpbWVvdXQuIFRoZQ0KPiB3YXRjaGRvZyBjb3JlIHRoZW4gaGFuZGxlcyB0aGUgbWVjaGFu aWNzLg0KPiANCj4gWW91IGNhbiBub3QgdXNlICJwcmV0aW1lb3V0IiB0byBzZXQgdGhlICJjbG9z ZWQiIHdpbmRvdyBzaXplOyB0aGlzIGlzIGFuIEFCSQ0KPiBhYnVzZS4gVGhlcmUgaXMgbm8gc3Rh bmRhcmQgQUJJIGZvciB0aGlzLCBzbyBpZiB5b3Ugd2FudCB0byBoYXZlIGl0IGNvbmZpZ3VyYWJs ZQ0KPiBpdCB3b3VsZCBoYXZlIHRvIGJlIGEgbW9kdWxlIHBhcmFtZXRlci4NCj4gDQo+IEd1ZW50 ZXINCj4gDQo+ID4gVGhhbmtzDQo+ID4gU3Jpbml2YXMgTmVlbGkuDQo+ID4NCj4gPiAqRnJvbToq IFNyaW5pdmFzIE5lZWxpIDxzbmVlbGlAeGlsaW54LmNvbT4NCj4gPiAqU2VudDoqIFdlZG5lc2Rh eSwgSnVuZSA5LCAyMDIxIDEyOjU3IFBNDQo+ID4gKlRvOiogR3VlbnRlciBSb2VjayA8bGludXhA cm9lY2stdXMubmV0PjsgU2h1YmhyYWp5b3RpIERhdHRhDQo+ID4gPHNodWJocmFqQHhpbGlueC5j b20+OyBTcmluaXZhcyBHb3VkIDxzZ291ZEB4aWxpbnguY29tPjsgTWljaGFsIFNpbWVrDQo+ID4g PG1pY2hhbHNAeGlsaW54LmNvbT4NCj4gPiAqQ2M6KiB3aW1AbGludXgtd2F0Y2hkb2cub3JnOyBs aW51eC13YXRjaGRvZ0B2Z2VyLmtlcm5lbC5vcmc7DQo+ID4gbGludXgta2VybmVsQHZnZXIua2Vy bmVsLm9yZzsgZ2l0IDxnaXRAeGlsaW54LmNvbT4NCj4gPiAqU3ViamVjdDoqIFJFOiBbUEFUQ0gg Mi8zXSB3YXRjaGRvZzogeGlsaW54X3d3ZHQ6IEFkZCBWZXJzYWwgV2luZG93DQo+ID4gd2F0Y2hk b2cgbW9kZQ0KPiA+DQo+ID4gSGkgR3VlbnRlciBSb2VjaywNCj4gPg0KPiA+IFRoYW5rcyBmb3Ig cmV2aWV3Lg0KPiA+DQo+ID4gVmVyc2FsIHBsYXRmb3JtIGNvbnRhaW4gU3lzdGVtIHdhdGNoZG9n IFRpbWVyLiBJdCBzdXBwb3J0cyB0d28NCj4gPiBmdW5jdGlvbnMsIFRob3NlIGFyZQ0KPiA+DQo+ ID4gMSkgR2VuZXJpYyB3YXRjaGRvZyBtb2RlDQo+ID4NCj4gPiAyKSBXaW5kb3cgd2F0Y2hkb2cg bW9kZQ0KPiA+DQo+ID4gUmlnaHQgbm93IHdlIGFyZSBpbXBsZW1lbnRpbmcgd2luZG93IHdhdGNo ZG9nIHRpbWVyIGZ1bmN0aW9uYWxpdHkgaW4NCj4gZHJpdmVyLg0KPiA+DQo+ID4gRmVhdHVyZXMg b2YgV2luZG93IHdhdGNoZG9nIG1vZGU6DQo+ID4NCj4gPiAtIFRoZSB0aW1lciBjb250YWlucyB0 d28gY29uZmlndXJhYmxlIHdpbmRvd3MoIGNsb3NlZCBhbmQgb3BlbikuDQo+ID4NCj4gPiAtIFRo ZSB0aW1lciBoYXMgdG8gcmVzdGFydCBvbmx5IGluIG9wZW4gd2luZG93Lg0KPiA+DQo+ID4gLSBJ ZiBzb2Z0d2FyZSB0cmllcyB0byByZXN0YXJ0IG91dCBzaWRlIG9mIG9wZW4gd2luZG93IGl0IHdp bGwgZ2VuZXJhdGUgYQ0KPiByZXNldC4NCj4gPg0KPiA+IFdlIGhhdmUgYSByZXF1aXJlbWVudCBm b3Igd2luZG93IHdhdGNoZG9nIGRyaXZlciwgU28gSSDCoGltcGxlbWVudGVkDQo+IHdpbmRvdyB3 YXRjaGRvZyBpbiB0d28gc2NlbmFyaW9zLg0KPiA+DQo+ID4gMSkgV2l0aCBQcmUtdGltZW91dA0K PiA+DQo+ID4gMikgV2l0aCB3aXRob3V0IFByZS10aW1lb3V0DQo+ID4NCj4gPiAqU2NlbmFyaW8g MToqDQo+ID4NCj4gPiBXaXRoIHByZS10aW1lb3V0Og0KPiA+DQo+ID4gSGVyZSB3ZSB3aWxsIGdl dCB0d28gd2luZG93IGNvbmNlcHQuDQo+ID4NCj4gPiAxKSBjbG9zZWQgd2luZG93DQo+ID4NCj4g PiAyKSBPcGVuIHdpbmRvdw0KPiA+DQo+ID4gc3RhcnQgdG8gcHJlLXRpbWVvdXQsIHdlIGFyZSBj YWxsaW5nICIqY2xvc2VkKiIgd2luZG93Lg0KPiA+DQo+ID4gIEZyb20gcHJlLXRpbWVvdXQgdG8g dGltZW91dCB3ZSBhcmUgY2FsbGluZyDigJwqT3BlbirigJ0gd2luZG93Lg0KPiA+DQo+ID4gKk9w ZXJhdGlvbnM6Kg0KPiA+DQo+ID4gc3RhcnQNCj4gPg0KPiA+IGtlZXAgYWxpdmUob25seSBpbiBv cGVuIHdpbmRvdyzCoCBjbG9zZWQgd2luZG93IHdlIGFyZSBpZ25vcmluZykNCj4gPg0KPiA+IHN0 b3ANCj4gPg0KPiA+IHdlIGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byByZWZyZXNoL3Jlc3RhcnQg b3VyIHRpbWVyIGluIGNsb3NlZCB3aW5kb3csIFNvDQo+IGlnbm9yaW5nIHRoZSBrZWVwYWxpdmUu DQo+ID4NCj4gPiBBZGp1c3RlZCBjb2RlIHRvIGdlbmVyYXRlIGludGVycnVwdCBhZnRlciBjb21w bGV0aW9uIG9mIGNsb3NlZCB3aW5kb3cuDQo+IG9uY2Ugd2UgY3Jvc3MgdGhlIGNsb3NlZCB3aW5k b3cgd2UgY2FuIHJlc3RhcnQgb3VyIHRpbWUgYW55dGltZS4NCj4gPg0KPiA+IE9uY2Ugd2UgcmVh Y2hlcyB0byB0aW1lb3V0ICwgd2lsbCBnZXQgcmVzZXQgc2lnbmFsLg0KPiA+DQo+ID4gKkFkdmFu dGFnZToqDQo+ID4NCj4gPiBBZnRlciBnZXR0aW5nIHByZS10aW1lb3V0IG5vdGlmaWNhdGlvbiB3 ZSBjYW4gcmVzZXQgb3VyIHRpbWVyIG9yIGNhbiBjb2xsZWN0DQo+IG91ciBsb2cuDQo+ID4NCj4g PiBvbmNlIHdlIGdldCBpbnRlcnJ1cHQgd2UgY2FuIGNvbmNsdWRlIG91ciB0YXNrIGlzIG5vdCB3 b3JraW5nIGFzIGV4cGVjdGVkLg0KPiA+DQo+ID4gU28gd2UgY2FuIHRha2VjYXJlIG9mIG91ciB0 YXNrcy4NCj4gPg0KPiA+ICpTY2VuYXJpbyAyOioNCj4gPg0KPiA+IHdpdGggb3V0IHByZS10aW1l b3V0Og0KPiA+DQo+ID4gSXQgd2lsbCB3b3JrIGxpa2UgZ2VuZXJhbCB3YXRjaGRvZyB0aW1lci4N Cj4gPg0KPiA+IHdlIGNhbiBydW4ga2VlcGFsaXZlIGFueXRpbWUoYXMgdGhlcmUgaXMgbm8gY2xv c2VkIHdpbmRvdywgb25seSBvcGVuDQo+IHdpbmRvdyBwcmVzZW50KS4NCj4gPg0KPiA+IE9uY2Ug d2UgcmVhY2hlcyB0byB0aW1lIG91dCwgd2lsbCBnZXQgcmVzZXQuDQo+ID4NCj4gPiAqT3BlcmF0 aW9uczoqDQo+ID4NCj4gPiBzdGFydA0KPiA+DQo+ID4ga2VlcCBhbGl2ZQ0KPiA+DQo+ID4gc3Rv cA0KPiA+DQo+ID4gRm9yIG1vcmUgZGV0YWlsczoNCj4gPg0KPiA+IGh0dHBzOi8vd3d3LnhpbGlu eC5jb20vc3VwcG9ydC9kb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS0NCj4gbWFudWFscy9hbTAx DQo+ID4gMS12ZXJzYWwtYWNhcC10cm0ucGRmDQo+ID4gPGh0dHBzOi8vd3d3LnhpbGlueC5jb20v c3VwcG9ydC9kb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS0NCj4gbWFudWFscy9hbTANCj4gPiAx MS12ZXJzYWwtYWNhcC10cm0ucGRmPg0KPiA+DQo+ID4gbWFqb3IgY29tbWVudHMgd2lsbCB1cGRh dGUgaW4gVjIuDQo+ID4NCj4gPiAgPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+DQo+ ID4gID4gRnJvbTogR3VlbnRlciBSb2VjayA8Z3JvZWNrN0BnbWFpbC5jb20NCj4gPG1haWx0bzpn cm9lY2s3QGdtYWlsLmNvbT4+DQo+ID4gT24gQmVoYWxmIE9mIEd1ZW50ZXIgUm9lY2sNCj4gPg0K PiA+ICA+IFNlbnQ6IFRodXJzZGF5LCBNYXkgMjcsIDIwMjEgODowOSBQTQ0KPiA+DQo+ID4gID4g VG86IFNyaW5pdmFzIE5lZWxpIDxzbmVlbGlAeGlsaW54LmNvbSA8bWFpbHRvOnNuZWVsaUB4aWxp bnguY29tPj47DQo+ID4gU2h1YmhyYWp5b3RpIERhdHRhDQo+ID4NCj4gPiAgPiA8c2h1YmhyYWpA eGlsaW54LmNvbSA8bWFpbHRvOnNodWJocmFqQHhpbGlueC5jb20+PjsgU3Jpbml2YXMgR291ZA0K PiA+IDxzZ291ZEB4aWxpbnguY29tIDxtYWlsdG86c2dvdWRAeGlsaW54LmNvbT4+OyBNaWNoYWwg U2ltZWsNCj4gPg0KPiA+ICA+IDxtaWNoYWxzQHhpbGlueC5jb20gPG1haWx0bzptaWNoYWxzQHhp bGlueC5jb20+Pg0KPiA+DQo+ID4gID4gQ2M6IHdpbUBsaW51eC13YXRjaGRvZy5vcmcgPG1haWx0 bzp3aW1AbGludXgtd2F0Y2hkb2cub3JnPjsNCj4gPiBsaW51eC13YXRjaGRvZ0B2Z2VyLmtlcm5l bC5vcmcNCj4gPiA8bWFpbHRvOmxpbnV4LXdhdGNoZG9nQHZnZXIua2VybmVsLm9yZz47IGxpbnV4 LQ0KPiA+DQo+ID4gID4ga2VybmVsQHZnZXIua2VybmVsLm9yZyA8bWFpbHRvOmtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc+OyBnaXQNCj4gPiA8Z2l0QHhpbGlueC5jb20gPG1haWx0bzpnaXRAeGlsaW54 LmNvbT4+DQo+ID4NCj4gPiAgPiBTdWJqZWN0OiBSZTogW1BBVENIIDIvM10gd2F0Y2hkb2c6IHhp bGlueF93d2R0OiBBZGQgVmVyc2FsIFdpbmRvdw0KPiA+DQo+ID4gID4gd2F0Y2hkb2cgbW9kZQ0K PiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+IFRoZSBzdWJqZWN0IGlzIGNvbmZ1c2luZy4gVGhpcyBw YXRjaCBkb2VzIG5vdCBhZGQgIlZlcnNhbCBXaW5kb3cNCj4gPiB3YXRjaGRvZw0KPiA+DQo+ID4g ID4gbW9kZSIsIGl0IGFkZHMgYSBkcml2ZXIgd2hpY2ggc3VwcG9ydHMgdGhlIFZlcnNhbCBXaW5k b3cgd2F0Y2hkb2cuDQo+ID4gVGhlDQo+ID4NCj4gPiAgPiBzdWJqZWN0IHNob3VsZCBiZSBzb21l dGhpbmcgbGlrZSAid2F0Y2hkb2c6IEFkZCBWZXJzYWwgV2luZG93DQo+ID4gd2F0Y2hkb2cNCj4g Pg0KPiA+ICA+IGRyaXZlciIuDQo+ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4gT24gNS8yNy8yMSAy OjU3IEFNLCBTcmluaXZhcyBOZWVsaSB3cm90ZToNCj4gPg0KPiA+ICA+ID4gVmVyc2FsIHdhdGNo ZG9nIGRyaXZlciB1c2VzIFdpbmRvdyB3YXRjaGRvZyBtb2RlLiBXaW5kb3cNCj4gd2F0Y2hkb2cN Cj4gPg0KPiA+ICA+ID4gdGltZXIoV1dEVCkgY29udGFpbnMgY2xvc2VkKGZpcnN0KSBhbmQgb3Bl bihzZWNvbmQpIHdpbmRvdyB3aXRoDQo+ID4NCj4gPiAgPiA+IDMyIGJpdCB3aWR0aC4gV1dEVCB3 aWxsIGdlbmVyYXRlIGFuIGludGVycnVwdCBhZnRlciB0aGUgZmlyc3QNCj4gPiB3aW5kb3cNCj4g Pg0KPiA+ICA+ID4gdGltZW91dCBhbmQgcmVzZXQgc2lnbmFsIGFmdGVyIHRoZSBzZWNvbmQgd2lu ZG93IHRpbWVvdXQuIFRpbWVvdXQNCj4gPiBhbmQNCj4gPg0KPiA+ICA+ID4gUHJlLXRpbWVvdXQg Y29uZmlndXJhdGlvbiwgU3RvcCBhbmQgUmVmcmVzaCB0cmlnZ2VyIG9ubHkgaW4gb3Blbg0KPiA+ DQo+ID4gID4gPiB3aW5kb3cuDQo+ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4gRG9lcyB0aGF0IG1l YW4gdGhhdCB1c2Vyc3BhY2UgY2FuIG5vdCBzZW5kIGEga2VlcGFsaXZlIGJlZm9yZSB0aGUNCj4g Pg0KPiA+ICA+IHByZXRpbWVvdXQgZXhwaXJlcyA/IFRoYXQgaXMgbm90IGhvdyB0aGlzIGlzIHN1 cHBvc2VkIHRvIHdvcmsuIElmDQo+ID4gdGhhdCBpcyB0aGUNCj4gPg0KPiA+ICA+IGNhc2UsIHRo aXMgaXMgbm90IGEgcHJldGltZW91dC4gUHJldGltZW91dCBpcyBzdXBwb3NlZCB0byBiZSB1c2Vk DQo+ID4gZm9yDQo+ID4NCj4gPiAgPiBlbWVyZ2VuY3kgaGFuZGxpbmcsIHN1Y2ggYXMgdHJpZ2dl cmluZyBhIGNyYXNoIGR1bXAuIFRoZSBhYm92ZQ0KPiA+IGRlc2NyaXB0aW9uDQo+ID4NCj4gPiAg PiBhcyB3ZWxsIGFzIHRoZSBjb2RlIHN1Z2dlc3RzIHRoYXQgYW4gaW50ZXJydXB0IGlzIGFsbCBi dXQgbWFuZGF0b3J5Lg0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+IEFzc3VtaW5nIHRoYXQgaXMg YWxsIHRoZSBjYXNlLCBpZSB0aGF0IGtlZXBhbGl2ZSBpcyBvbmx5IHBvc3NpYmxlDQo+ID4gYWZ0 ZXIgdGhlDQo+ID4NCj4gPiAgPiBpbnRlcnJ1cHQgd2FzIHJlY2VpdmVkLCBhbmQgdGhhdCB0aW1l b3V0IHVwZGF0ZXMgYXJlIGFsc28gb25seQ0KPiA+IHBvc3NpYmxlIGFmdGVyDQo+ID4NCj4gPiAg PiBhbiBpbnRlcnJ1cHQgd2FzIHJlY2VpdmVkLCBvbmUgcG9zc2libGUgaGFuZGxpbmcgd291bGQg dG8gcmVjb3JkDQo+ID4gdGhhdCBhDQo+ID4NCj4gPiAgPiBrZWVwYWxpdmUgd2FzIHJlY2VpdmVk LCBhbmQgdG8gcmVjb3JkIHRoYXQgYSByZXF1ZXN0IHRvIHVwZGF0ZSB0aGUNCj4gPiB0aW1lb3V0 DQo+ID4NCj4gPiAgPiB3YXMgcmVjZWl2ZWQgaWYgdGhhdCBoYXBwZW5zIHdoaWxlIHRoZSB3aW5k b3cgaXMgY2xvc2VkLiBUaGVuLCB3aGVuDQo+ID4gdGhlDQo+ID4NCj4gPiAgPiBpbnRlcnJ1cHQg aXMgcmVjZWl2ZWQsIHRob3NlIGFjdGlvbnMgY2FuIGJlIGFwcGxpZWQuIE90aGVyd2lzZSwgaWYN Cj4gPiB0aGVyZSB3YXMNCj4gPg0KPiA+ICA+IG5vIGtlZXBhbGl2ZSByZXF1ZXN0IHByaW9yIHRv IHRoZSBpbnRlcnJ1cHQsIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcg0KPiA+IHdvdWxkIGNhbGwNCj4g Pg0KPiA+ICA+IHdhdGNoZG9nX25vdGlmeV9wcmV0aW1lb3V0KCkuDQo+ID4NCj4gPiAgPg0KPiA+ DQo+ID4gID4gT2YgY291cnNlLCB0aGlzIGlzIGFsbCBqdXN0IGd1ZXNzd29yay4NCj4gPg0KPiA+ ICA+DQo+ID4NCj4gPiAgPiBNb3JlIGNvbW1lbnRzIGJlbG93Lg0KPiA+DQo+ID4gID4NCj4gPg0K PiA+ICA+IEd1ZW50ZXINCj4gPg0KPiA+ICA+DQo+ID4NCj4gPiAgPiA+DQo+ID4NCj4gPiAgPiA+ IFNpZ25lZC1vZmYtYnk6IFNyaW5pdmFzIE5lZWxpIDxzcmluaXZhcy5uZWVsaUB4aWxpbnguY29t DQo+ID4gPG1haWx0bzpzcmluaXZhcy5uZWVsaUB4aWxpbnguY29tPj4NCj4gPg0KPiA+ICA+ID4g LS0tDQo+ID4NCj4gPiAgPiA+wqDCoCBkcml2ZXJzL3dhdGNoZG9nL0tjb25maWfCoMKgwqDCoMKg wqAgfMKgIDE2ICsrDQo+ID4NCj4gPiAgPiA+wqDCoCBkcml2ZXJzL3dhdGNoZG9nL01ha2VmaWxl wqDCoMKgwqAgwqB8wqDCoCAxICsNCj4gPg0KPiA+ICA+ID7CoMKgIGRyaXZlcnMvd2F0Y2hkb2cv eGlsaW54X3d3ZHQuYyB8IDM4Mg0KPiA+DQo+ID4gID4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+ID4NCj4gPiAgPiA+wqDCoCAzIGZpbGVzIGNoYW5nZWQsIDM5OSBpbnNlcnRp b25zKCspDQo+ID4NCj4gPiAgPiA+wqDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy93YXRj aGRvZy94aWxpbnhfd3dkdC5jDQo+ID4NCj4gPiAgPiA+DQo+ID4NCj4gPiAgPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3dhdGNoZG9nL0tjb25maWcgYi9kcml2ZXJzL3dhdGNoZG9nL0tjb25maWcN Cj4gPiBpbmRleA0KPiA+DQo+ID4gID4gPiAzNTUxMDBkYWQ2MGEuLjJlZDE3ZjI3ODc4MyAxMDA2 NDQNCj4gPg0KPiA+ICA+ID4gLS0tIGEvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnDQo+ID4NCj4g PiAgPiA+ICsrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZw0KPiA+DQo+ID4gID4gPiBAQCAt MzA3LDYgKzMwNywyMiBAQCBjb25maWcgWElMSU5YX1dBVENIRE9HDQo+ID4NCj4gPiAgPiA+wqDC oCDCoMKgwqDCoMKgwqAgwqDCoFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNo b29zZSBNIGhlcmU6IHRoZQ0KPiA+DQo+ID4gID4gPsKgwqAgwqDCoMKgwqDCoMKgIMKgwqBtb2R1 bGUgd2lsbCBiZSBjYWxsZWQgb2ZfeGlsaW54X3dkdC4NCj4gPg0KPiA+ICA+ID4NCj4gPg0KPiA+ ICA+ID4gK2NvbmZpZyBYSUxJTlhfV0lORE9XX1dBVENIRE9HDQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIHRyaXN0YXRlICJYaWxpbnggV2luZG93IFdhdGNoZG9nIHRpbWVyIg0KPiA+DQo+ID4g ID4gPiArwqDCoMKgwqDCoCBkZXBlbmRzIG9uIEhBU19JT01FTQ0KPiA+DQo+ID4gID4gPiArwqDC oMKgwqDCoCBzZWxlY3QgV0FUQ0hET0dfQ09SRQ0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBo ZWxwDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIMKgIFdpbmRvdyBXYXRjaGRvZyBkcml2ZXIg Zm9yIHRoZSB2ZXJzYWxfd3dkdCBpcCBjb3JlLg0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCDC oCBXaW5kb3cgd2F0Y2hkb2cgdGltZXIoV1dEVCkgY29udGFpbnMgY2xvc2VkKGZpcnN0KSBhbmQN Cj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgwqAgb3BlbihzZWNvbmQpIHdpbmRvdyB3aXRoIDMy IGJpdCB3aWR0aC4gV1dEVCB3aWxsDQo+ID4gZ2VuZXJhdGUNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqAgwqAgYW4gaW50ZXJydXB0IGFmdGVyIHRoZSBmaXJzdCB3aW5kb3cgdGltZW91dCBhbmQg cmVzZXQNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgwqAgc2lnbmFsIGFmdGVyIHRoZSBzZWNv bmQgd2luZG93IHRpbWVvdXQuIFRpbWVvdXQgYW5kDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKg IMKgIFByZS10aW1lb3V0IGNvbmZpZ3VyYXRpb24sIFN0b3AgYW5kIFJlZnJlc2ggdHJpZ2dlcg0K PiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCDCoCBvbmx5IGluIG9wZW4gd2luZG93Lg0KPiA+DQo+ ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIMKgIFRvIGNvbXBpbGUgdGhpcyBk cml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0KPiA+DQo+ID4gID4gPiArwqDC oMKgwqDCoCDCoCBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgeGlsaW54X3d3ZHQuDQo+ID4NCj4gPiAg PiA+ICsNCj4gPg0KPiA+ICA+ID7CoMKgIGNvbmZpZyBaSUlSQVZFX1dBVENIRE9HDQo+ID4NCj4g PiAgPiA+wqDCoCDCoMKgwqDCoMKgwqAgdHJpc3RhdGUgIlpvZGlhYyBSQVZFIFdhdGNoZG9nIFRp bWVyIg0KPiA+DQo+ID4gID4gPsKgwqAgwqDCoMKgwqDCoMKgIGRlcGVuZHMgb24gSTJDDQo+ID4N Cj4gPiAgPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL01ha2VmaWxlDQo+ID4gYi9k cml2ZXJzL3dhdGNoZG9nL01ha2VmaWxlDQo+ID4NCj4gPiAgPiA+IGluZGV4IGE3ZWFkZThiNGQ0 NS4uOTdkMTBjM2QzOWM3IDEwMDY0NA0KPiA+DQo+ID4gID4gPiAtLS0gYS9kcml2ZXJzL3dhdGNo ZG9nL01ha2VmaWxlDQo+ID4NCj4gPiAgPiA+ICsrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvTWFrZWZp bGUNCj4gPg0KPiA+ICA+ID4gQEAgLTE0OCw2ICsxNDgsNyBAQCBvYmotJChDT05GSUdfTTU0eHhf V0FUQ0hET0cpICs9DQo+ID4NCj4gPiAgPiBtNTR4eF93ZHQubw0KPiA+DQo+ID4gID4gPg0KPiA+ DQo+ID4gID4gPsKgwqAgIyBNaWNyb0JsYXplIEFyY2hpdGVjdHVyZQ0KPiA+DQo+ID4gID4gPsKg wqAgb2JqLSQoQ09ORklHX1hJTElOWF9XQVRDSERPRykgKz0gb2ZfeGlsaW54X3dkdC5vDQo+ID4N Cj4gPiAgPiA+ICtvYmotJChDT05GSUdfWElMSU5YX1dJTkRPV19XQVRDSERPRykgKz0geGlsaW54 X3d3ZHQubw0KPiA+DQo+ID4gID4gPg0KPiA+DQo+ID4gID4gPsKgwqAgIyBNSVBTIEFyY2hpdGVj dHVyZQ0KPiA+DQo+ID4gID4gPsKgwqAgb2JqLSQoQ09ORklHX0FUSDc5X1dEVCkgKz0gYXRoNzlf d2R0Lm8gZGlmZiAtLWdpdA0KPiA+DQo+ID4gID4gPiBhL2RyaXZlcnMvd2F0Y2hkb2cveGlsaW54 X3d3ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cveGlsaW54X3d3ZHQuYw0KPiA+IG5ldw0KPiA+DQo+ ID4gID4gPiBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4IDAwMDAwMDAwMDAwMC4uOGZhMmNiMjIyNWU4 DQo+ID4NCj4gPiAgPiA+IC0tLSAvZGV2L251bGwNCj4gPg0KPiA+ICA+ID4gKysrIGIvZHJpdmVy cy93YXRjaGRvZy94aWxpbnhfd3dkdC5jDQo+ID4NCj4gPiAgPiA+IEBAIC0wLDAgKzEsMzgyIEBA DQo+ID4NCj4gPiAgPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ DQo+ID4gID4gPiArLyoNCj4gPg0KPiA+ICA+ID4gKyAqIFdpbmRvdyBXYXRjaGRvZyBEZXZpY2Ug RHJpdmVyIGZvciBYaWxpbnggVmVyc2FsIFdXRFQNCj4gPg0KPiA+ICA+ID4gKyAqDQo+ID4NCj4g PiAgPiA+ICsgKiAoQykgQ29weXJpZ2h0IDIwMjEgWGlsaW54LCBJbmMuDQo+ID4NCj4gPiAgPiA+ ICsgKi8NCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPg0KPiA+DQo+ID4gID4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiA+DQo+ ID4gID4gPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ID4NCj4gPiAgPiA+ICsjaW5jbHVkZSA8 bGludXgvaW9wb3J0Lmg+DQo+ID4NCj4gPiAgPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNl Lmg+DQo+ID4NCj4gPiAgPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KPiA+DQo+ ID4gID4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+DQo+ID4gID4gPiArI2luY2x1 ZGUgPGxpbnV4L3dhdGNoZG9nLmg+DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gKyNk ZWZpbmUgWFdXRFRfREVGQVVMVF9USU1FT1VUwqDCoMKgwqDCoMKgwqDCoMKgwqAgNDANCj4gPg0K PiA+ICA+ID4gKyNkZWZpbmUgWFdXRFRfTUlOX1RJTUVPVVTCoMKgwqAgMQ0KPiA+DQo+ID4gID4g PiArI2RlZmluZSBYV1dEVF9NQVhfVElNRU9VVMKgwqAgNDINCj4gPg0KPiA+ICA+ID4gKw0KPiA+ DQo+ID4gID4gPiArLyogUmVnaXN0ZXIgb2Zmc2V0cyBmb3IgdGhlIFdXZHQgZGV2aWNlICovDQo+ ID4NCj4gPiAgPiA+ICsjZGVmaW5lIFhXV0RUX01XUl9PRkZTRVTCoMKgwqDCoMKgIDB4MDANCj4g Pg0KPiA+ICA+ID4gKyNkZWZpbmUgWFdXRFRfRVNSX09GRlNFVMKgwqDCoMKgwqDCoMKgwqDCoCAw eDA0DQo+ID4NCj4gPiAgPiA+ICsjZGVmaW5lIFhXV0RUX0ZDUl9PRkZTRVTCoMKgwqDCoMKgwqDC oMKgwqAgMHgwOA0KPiA+DQo+ID4gID4gPiArI2RlZmluZSBYV1dEVF9GV1JfT0ZGU0VUwqDCoMKg wqDCoMKgwqAgMHgwYw0KPiA+DQo+ID4gID4gPiArI2RlZmluZSBYV1dEVF9TV1JfT0ZGU0VUwqDC oMKgwqDCoMKgwqAgMHgxMA0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICsvKiBNYXN0 ZXIgV3JpdGUgQ29udHJvbCBSZWdpc3RlciBNYXNrcyAqLw0KPiA+DQo+ID4gID4gPiArI2RlZmlu ZSBYV1dEVF9NV1JfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBCSVQoMCkNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArLyogRW5hYmxl IGFuZCBTdGF0dXMgUmVnaXN0ZXIgTWFza3MgKi8NCj4gPg0KPiA+ICA+ID4gKyNkZWZpbmUgWFdX RFRfRVNSX1dJTlRfTUFTSyBCSVQoMTYpDQo+ID4NCj4gPiAgPiA+ICsjZGVmaW5lIFhXV0RUX0VT Ul9XU1dfTUFTSyBCSVQoOCkNCj4gPg0KPiA+ICA+ID4gKyNkZWZpbmUgWFdXRFRfRVNSX1dFTl9N QVNLIEJJVCgwKQ0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICsvKiBGdW5jdGlvbiBj b250cm9sIFJlZ2lzdGVyIE1hc2tzICovDQo+ID4NCj4gPiAgPiA+ICsjZGVmaW5lIFhXV0RUX1NC Q19NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDB4RkYwMA0KPiA+DQo+ID4gID4gPiArI2RlZmluZSBYV1dEVF9TQkNfU0hJRlTCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNg0KPiA+ DQo+ID4gID4gPiArI2RlZmluZSBYV1dEVF9CU1NfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4QzANCj4gPg0KPiA+ICA+ID4gKw0K PiA+DQo+ID4gID4gPiArc3RhdGljIGludCB3d2R0X3RpbWVvdXQ7DQo+ID4NCj4gPiAgPiA+ICsN Cj4gPg0KPiA+ICA+ID4gK21vZHVsZV9wYXJhbSh3d2R0X3RpbWVvdXQsIGludCwgMDY0NCk7DQo+ ID4NCj4gPiAgPiBNT0RVTEVfUEFSTV9ERVNDKHd3ZHRfdGltZW91dCwNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiV2F0Y2hkb2cgdGlt ZSBpbiBzZWNvbmRzLiAoZGVmYXVsdD0iDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19NT0RVTEVfU1RSSU5HKFhXV0RUX0RFRkFVTFRf VElNRU9VVCkNCj4gPiAiKSIpOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICtzdHJ1 Y3QgeHd3ZHRfZGV2aWNlIHsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgdm9pZCBfX2lvbWVt ICpiYXNlOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBzcGlubG9ja190IHNwaW5sb2NrOyAv KiBzcGlubG9jayBmb3IgcmVnaXN0ZXIgaGFuZGxpbmcgKi8NCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqAgc3RydWN0IHdhdGNoZG9nX2RldmljZSB4aWxpbnhfd3dkdF93ZGQ7DQo+ID4NCj4gPiAg PiA+ICvCoMKgwqDCoMKgIHN0cnVjdCBjbGsgKmNsazsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKg wqAgaW50IGlycTsNCj4gPg0KPiA+ICA+ID4gK307DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ ICA+ID4gK3N0YXRpYyBpbnQgaXNfd3dkdF9pbl9jbG9zZWRfd2luZG93KHN0cnVjdCB3YXRjaGRv Z19kZXZpY2UgKndkZCkNCj4gPg0KPiA+ICA+DQo+ID4NCj4gPiAgPiBzaG91bGQgcmV0dXJuIGJv b2wNCj4gPg0KPiA+IFdpbGwgdXBkYXRlIGluIFYyLg0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+ ID4gK3sNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgdTMyIGNvbnRyb2xfc3RhdHVzX3JlZzsN Cj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgc3RydWN0IHh3d2R0X2RldmljZSAqeGRldiA9IHdh dGNoZG9nX2dldF9kcnZkYXRhKHdkZCk7DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqAgc3Bpbl9sb2NrKCZ4ZGV2LT5zcGlubG9jayk7DQo+ID4NCj4gPiAgPiA+ICvC oMKgwqDCoMKgIGNvbnRyb2xfc3RhdHVzX3JlZyA9IGlvcmVhZDMyKHhkZXYtPmJhc2UgKw0KPiA+ IFhXV0RUX0VTUl9PRkZTRVQpOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBzcGluX3VubG9j aygmeGRldi0+c3BpbmxvY2spOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpZiAoY29udHJv bF9zdGF0dXNfcmVnICYgWFdXRFRfRVNSX1dFTl9NQVNLKQ0KPiA+DQo+ID4gID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghKGNvbnRyb2xfc3RhdHVz X3JlZyAmDQo+ID4gWFdXRFRfRVNSX1dTV19NQVNLKSkNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIDA7DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqAgcmV0dXJuIDE7DQo+ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4gQ2FuIGJlIHdyaXR0ZW4g YXMgZXhwcmVzaW9uIHdpdGhvdXQgaWYgc3RhdGVtZW50DQo+ID4NCj4gPiBXaWxsIHVwZGF0ZSBp biBWMg0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+ID4gK30NCj4gPg0KPiA+ICA+ID4gKw0KPiA+ DQo+ID4gID4gPiArc3RhdGljIGludCB4aWxpbnhfd3dkdF9zdGFydChzdHJ1Y3Qgd2F0Y2hkb2df ZGV2aWNlICp3ZGQpIHsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgc3RydWN0IHh3d2R0X2Rl dmljZSAqeGRldiA9IHdhdGNoZG9nX2dldF9kcnZkYXRhKHdkZCk7DQo+ID4NCj4gPiAgPiA+ICvC oMKgwqDCoMKgIHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKnhpbGlueF93d2R0X3dkZCA9ICZ4ZGV2 LQ0KPiA+DQo+ID4gID4gPnhpbGlueF93d2R0X3dkZDsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKg wqAgdTY0IHRpbWVfb3V0LCBwcmVfdGltZW91dCwgY291bnQ7DQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIHUzMiBjb250cm9sX3N0YXR1c19yZWcsIGZjcjsNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqAgaW50IHJldDsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDC oCBjb3VudCA9IGNsa19nZXRfcmF0ZSh4ZGV2LT5jbGspOw0KPiA+DQo+ID4gID4gPiArwqDCoMKg wqDCoCBpZiAoIWNvdW50KQ0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOw0KPiA+DQo+ID4gID4gPiArDQo+ID4N Cj4gPiAgPiBJcyB0aGVyZSBhIHJlYXNvbiB0byBiZWxpZXZlIHRoYXQgdGhlIGNsb2NrIHJhdGUg Y2FuIGNoYW5nZSA/DQo+ID4NCj4gPiAgPiBJZiBub3QgSSB3b3VsZCBzdWdnZXN0IHRvIHJlYWQg aXQgb25jZSBhbmQgc3RvcmUgaXQgaW4gc3RydWN0IHh3d2R0X2RldmljZS4NCj4gPg0KPiA+IFdp bGwgdXBkYXRlIGluIFYyLg0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAg LyogQ2FsY3VsYXRlIHRpbWVvdXQgY291bnQgKi8NCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAg cHJlX3RpbWVvdXQgPSBjb3VudCAqIHdkZC0+cHJldGltZW91dDsNCj4gPg0KPiA+ICA+ID4gK8Kg wqDCoMKgwqAgdGltZV9vdXQgPSBjb3VudCAqIHdkZC0+dGltZW91dDsNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqAgaWYgKCF3YXRjaGRvZ19hY3RpdmUoeGlsaW54X3d3ZHRfd2RkKSkgew0KPiA+ DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dMKgID0gY2xrX2VuYWJsZSh4ZGV2LT5jbGspOw0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+IFRo aXMgaXMgYXQgdGhlIHZlcnkgbGVhc3QgY29uZnVzaW5nLg0KPiA+DQo+ID4gID4gVGhlIGxhc3Qg YWN0aW9uIGluIHRoZSBwcm9iZSBmdW5jdGlvbiBpcyB0byBjYWxsDQo+ID4gY2xrX2Rpc2FibGVf dW5wcmVwYXJlKCksDQo+ID4NCj4gPiAgPiBtZWFuaW5nIHRoZSBjbG9jayBzaG91bGQgbm90IGJl IHByZXBhcmVkIGhlcmUuIEhvdyBjYW4gaXQgYmUNCj4gPiBlbmFibGVkDQo+ID4NCj4gPiAgPiB3 aXRob3V0IGJlaW5nIHByZXBhcmVkID8NCj4gPg0KPiA+IFdpbGwgdXBkYXRlIGluIFYyDQo+ID4N Cj4gPiAgPg0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChyZXQpIHsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRl dl9lcnIod2RkLT5wYXJlbnQsDQo+ID4gIkZhaWxlZCB0byBlbmFibGUgY2xvY2tcbiIpOw0KPiA+ DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4NCj4gPiAg PiA+ICvCoMKgwqDCoMKgIH0NCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gSSB0aGluayBp dCB3b3VsZCBiZSBiZXR0ZXIgdG8gc2VwYXJhdGUgdGhlIGZ1bmN0aW9ucyB0byBzdGFydC9zdG9w DQo+ID4gdGhlIGNsb2NrDQo+ID4NCj4gPiAgPiBmcm9tIHRoZSBmdW5jdGlvbiB0byB1cGRhdGUv ZW5hYmxlIHRoZSB3YXRjaGRvZy4gVGhlIHVzZSBvZg0KPiA+DQo+ID4gID4gd2F0Y2hkb2dfYWN0 aXZlKCkgY29tYmluZWQgd2l0aA0KPiA+DQo+ID4gID4gY2xrX2VuYWJsZS9jbGtfZGlzYWJsZS9j bGtfcHJlcGFyZV9lbmFibGUvY2xrX2Rpc2FibGVfdW5wcmVwYXJlDQo+ID4NCj4gPiAgPiBpcyBj b25mdXNpbmcgYW5kIG1ha2VzIGl0IGFsbCBidXQgaW1wb3NzaWJsZSB0byByZXZpZXcgdGhlIGRy aXZlci4NCj4gPg0KPiA+ICA+DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHNwaW5fbG9jaygm eGRldi0+c3BpbmxvY2spOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpb3dyaXRlMzIoWFdX RFRfTVdSX01BU0ssIHhkZXYtPmJhc2UgKw0KPiA+DQo+ID4gID4gWFdXRFRfTVdSX09GRlNFVCk7 DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlvd3JpdGUzMih+KHUzMilYV1dEVF9FU1JfV0VO X01BU0ssDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgwqAgeGRldi0+YmFzZSArIFhXV0RUX0VTUl9PRkZTRVQpOw0KPiA+DQo+ID4gID4g PiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlmIChwcmVfdGltZW91dCkgew0KPiA+DQo+ ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlvd3Jp dGUzMigodTMyKSh0aW1lX291dCAtIHByZV90aW1lb3V0KSwNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIMKgIHhkZXYtPmJhc2UgKw0KPiA+IFhXV0RUX0ZXUl9PRkZTRVQpOw0KPiA+ DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlv d3JpdGUzMigodTMyKXByZV90aW1lb3V0LCB4ZGV2LT5iYXNlICsNCj4gPg0KPiA+ICA+IFhXV0RU X1NXUl9PRkZTRVQpOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGZjciA9IGlvcmVhZDMyKHhkZXYtPmJhc2UgKw0KPiA+IFhXV0RUX1NX Ul9PRkZTRVQpOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZjciA9IChmY3IgPj4gWFdXRFRfU0JDX1NISUZUKSAmDQo+ID4gWFdXRFRf U0JDX01BU0s7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZmNyID0gZmNyIHwgWFdXRFRfQlNTX01BU0s7DQo+ID4NCj4gPiAgPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW93cml0ZTMyKGZjciwg eGRldi0+YmFzZSArDQo+ID4gWFdXRFRfRkNSX09GRlNFVCk7DQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIH0gZWxzZSB7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaW93cml0ZTMyKCh1MzIpcHJlX3RpbWVvdXQsDQo+ID4NCj4gPiAg PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCB4ZGV2LT5iYXNlICsNCj4gPiBYV1dEVF9GV1JfT0ZG U0VUKTsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpb3dyaXRlMzIoKHUzMil0aW1lX291dCwgeGRldi0+YmFzZSArDQo+ID4NCj4gPiAg PiBYV1dEVF9TV1JfT0ZGU0VUKTsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpb3dyaXRlMzIoMHgwLCB4ZGV2LT5iYXNlICsNCj4gPiBY V1dEVF9GQ1JfT0ZGU0VUKTsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgfQ0KPiA+DQo+ID4g ID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIC8qIEVuYWJsZSB0aGUgd2luZG93IHdh dGNoZG9nIHRpbWVyICovDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGNvbnRyb2xfc3RhdHVz X3JlZyA9IGlvcmVhZDMyKHhkZXYtPmJhc2UgKw0KPiA+IFhXV0RUX0VTUl9PRkZTRVQpOw0KPiA+ DQo+ID4gID4gPiArwqDCoMKgwqDCoCBjb250cm9sX3N0YXR1c19yZWcgfD0gWFdXRFRfRVNSX1dF Tl9NQVNLOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpb3dyaXRlMzIoY29udHJvbF9zdGF0 dXNfcmVnLCB4ZGV2LT5iYXNlICsNCj4gPiBYV1dEVF9FU1JfT0ZGU0VUKTsNCj4gPg0KPiA+ICA+ ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBzcGluX3VubG9jaygmeGRldi0+c3Bpbmxv Y2spOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGRldl9kYmco eGlsaW54X3d3ZHRfd2RkLT5wYXJlbnQsICJXYXRjaGRvZyBTdGFydGVkIVxuIik7DQo+ID4NCj4g PiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgcmV0dXJuIDA7DQo+ID4NCj4gPiAg PiA+ICt9DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK3N0YXRpYyBpbnQgeGlsaW54 X3d3ZHRfc3RvcChzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQpIHsNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqAgc3RydWN0IHh3d2R0X2RldmljZSAqeGRldiA9IHdhdGNoZG9nX2dldF9kcnZk YXRhKHdkZCk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHN0cnVjdCB3YXRjaGRvZ19kZXZp Y2UgKnhpbGlueF93d2R0X3dkZCA9ICZ4ZGV2LQ0KPiA+DQo+ID4gID4gPnhpbGlueF93d2R0X3dk ZDsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpZiAoIWlzX3d3 ZHRfaW5fY2xvc2VkX3dpbmRvdyh3ZGQpKSB7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X3dhcm4oeGlsaW54X3d3ZHRfd2RkLT5w YXJlbnQsICJ0aW1lcg0KPiA+IGluIGNsb3NlZA0KPiA+DQo+ID4gID4gd2luZG93Iik7DQo+ID4N Cj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIH0NCj4gPg0KPiA+ICA+ID4g Kw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBzcGluX2xvY2soJnhkZXYtPnNwaW5sb2NrKTsN Cj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpb3dyaXRlMzIoWFdX RFRfTVdSX01BU0ssIHhkZXYtPmJhc2UgKw0KPiA+DQo+ID4gID4gWFdXRFRfTVdSX09GRlNFVCk7 DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIC8qIERpc2FibGUgdGhlIFdpbmRvdyB3YXRjaGRv ZyB0aW1lciAqLw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpb3dyaXRlMzIofih1MzIpWFdX RFRfRVNSX1dFTl9NQVNLLA0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIMKgIHhkZXYtPmJhc2UgKyBYV1dEVF9FU1JfT0ZGU0VUKTsNCj4g Pg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBzcGluX3VubG9jaygmeGRl di0+c3BpbmxvY2spOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKg IGlmICh3YXRjaGRvZ19hY3RpdmUoeGlsaW54X3d3ZHRfd2RkKSkNCj4gPg0KPiA+ICA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjbGtfZGlzYWJsZSh4ZGV2 LT5jbGspOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4gVGhlIHN0 b3AgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkIGlmIHRoZSB3YXRjaGRvZyBpcyBub3QgcnVubmlu ZywNCj4gPiBpZSBpZg0KPiA+DQo+ID4gID4gd2F0Y2hkb2dfYWN0aXZlKCkgcmV0dXJucyBmYWxz ZS4NCj4gPg0KPiA+ICA+IEkgZG9uJ3QgdW5kZWVyc3RhbmQgdGhlIGxvZ2ljIG9mIGNsb2NrIGhh bmRsaW5nIGluIHRoaXMgZHJpdmVyLg0KPiA+DQo+ID4gID4gTW9yZSBvbiB0aGF0IGJlbG93Lg0K PiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgZGV2X2RiZyh4aWxpbnhfd3dk dF93ZGQtPnBhcmVudCwgIldhdGNoZG9nIFN0b3BwZWQhXG4iKTsNCj4gPg0KPiA+ICA+ID4gKw0K PiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4gPg0KPiA+ICA+ID4gK30NCj4g Pg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArc3RhdGljIGludCB4aWxpbnhfd3dkdF9rZWVw YWxpdmUoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkKSB7DQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIHUzMiBjb250cm9sX3N0YXR1c19yZWc7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKg IHN0cnVjdCB4d3dkdF9kZXZpY2UgKnhkZXYgPSB3YXRjaGRvZ19nZXRfZHJ2ZGF0YSh3ZGQpOw0K PiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIC8qIFJlZnJlc2ggaW4g b3BlbiB3aW5kb3cgaXMgaWdub3JlZCAqLw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpZiAo IWlzX3d3ZHRfaW5fY2xvc2VkX3dpbmRvdyh3ZGQpKQ0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPiA+DQo+ID4gID4g PiArDQo+ID4NCj4gPiAgPiBUaGlzIGlzIGRhbmdlcm91cy4gVGhlcmUgaXMgbm8gcmVhc29uIGZv ciB1c2Vyc3BhY2UgdG8gYWRoZXJlIHRvDQo+ID4gdGhlc2UNCj4gPg0KPiA+ICA+IHJlc3RyaWN0 aW9ucy4NCj4gPg0KPiA+ICA+DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHNwaW5fbG9jaygm eGRldi0+c3BpbmxvY2spOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDC oMKgIGlvd3JpdGUzMihYV1dEVF9NV1JfTUFTSywgeGRldi0+YmFzZSArDQo+ID4NCj4gPiAgPiBY V1dEVF9NV1JfT0ZGU0VUKTsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgY29udHJvbF9zdGF0 dXNfcmVnID0gaW9yZWFkMzIoeGRldi0+YmFzZSArDQo+ID4gWFdXRFRfRVNSX09GRlNFVCk7DQo+ ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGNvbnRyb2xfc3RhdHVzX3JlZyB8PSBYV1dEVF9FU1Jf V0lOVF9NQVNLOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBjb250cm9sX3N0YXR1c19yZWcg Jj0gflhXV0RUX0VTUl9XU1dfTUFTSzsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgaW93cml0 ZTMyKGNvbnRyb2xfc3RhdHVzX3JlZywgeGRldi0+YmFzZSArDQo+ID4gWFdXRFRfRVNSX09GRlNF VCk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGNvbnRyb2xfc3RhdHVzX3JlZyA9IGlvcmVh ZDMyKHhkZXYtPmJhc2UgKw0KPiA+IFhXV0RUX0VTUl9PRkZTRVQpOw0KPiA+DQo+ID4gID4gPiAr wqDCoMKgwqDCoCBjb250cm9sX3N0YXR1c19yZWcgfD0gWFdXRFRfRVNSX1dTV19NQVNLOw0KPiA+ DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpb3dyaXRlMzIoY29udHJvbF9zdGF0dXNfcmVnLCB4ZGV2 LT5iYXNlICsNCj4gPiBYV1dEVF9FU1JfT0ZGU0VUKTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ ID4gID4gPiArwqDCoMKgwqDCoCBzcGluX3VubG9jaygmeGRldi0+c3BpbmxvY2spOw0KPiA+DQo+ ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHJldHVybiAwOw0KPiA+DQo+ID4g ID4gPiArfQ0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICtzdGF0aWMgaW50IHhpbGlu eF93d2R0X3NldF90aW1lb3V0KHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCwNCj4gPg0KPiA+ ICA+ID4gKw0KPiA+IHVuc2lnbmVkIGludCBuZXdfdGltZSkNCj4gPg0KPiA+ICA+ID4gK3sNCj4g Pg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgdTMyIHJldCA9IDA7DQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIHN0cnVjdCB4d3dkdF9kZXZpY2UgKnhkZXYgPSB3YXRjaGRvZ19nZXRfZHJ2ZGF0YSh3 ZGQpOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp4 aWxpbnhfd3dkdF93ZGQgPSAmeGRldi0NCj4gPg0KPiA+ICA+ID54aWxpbnhfd3dkdF93ZGQ7DQo+ ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgaWYgKCFpc193d2R0X2lu X2Nsb3NlZF93aW5kb3cod2RkKSkgew0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl93YXJuKHhpbGlueF93d2R0X3dkZC0+cGFyZW50 LCAidGltZXINCj4gPiBpbiBjbG9zZWQNCj4gPg0KPiA+ICA+IHdpbmRvdyIpOw0KPiA+DQo+ID4g ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAt RUlOVkFMOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCB9DQo+ID4NCj4gPiAgPiA+ICsNCj4g Pg0KPiA+ICA+DQo+ID4NCj4gPiAgPiBTbyB1c2Vyc3BhY2UgY2FuIGNsb2cgdGhlIGxvZyBieSBj b250aW51b3VzbHkgdHJ5aW5nIHRvIHNldCB0aGUgdGltZW91dCA/DQo+ID4NCj4gPiAgPg0KPiA+ DQo+ID4gID4gQWxzbywgYWdhaW4sIHRoaXMgaXMgZGFuZ2Vyb3VzLiBVc2Vyc3BhY2UgZG9lcyBu b3Qga25vdyB0aGUgd2luZG93IHNpemUuDQo+ID4NCj4gPiB1c2VyIGNhbiBjb25maWd1cmUgd2lu ZG93IHNpemUuDQo+ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqAgaWYgKG5ld190aW1lIDwgWFdXRFRfTUlOX1RJTUVPVVQgfHwNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqAgwqDCoMKgIG5ld190aW1lID4gWFdXRFRfTUFYX1RJTUVPVVQpIHsNCj4gPg0K PiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZf d2Fybih4aWxpbnhfd3dkdF93ZGQtPnBhcmVudCwNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJ0aW1lb3V0IHZhbHVlIG11c3QgYmUNCj4gPiAlZDw9eDw9JWQsIHVzaW5nICVkXG4i LA0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWFdXRFRfTUlOX1RJTUVPVVQsDQo+ ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYV1dEVF9NQVhfVElNRU9VVCwNCj4gPiBu ZXdfdGltZSk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIH0N Cj4gPg0KPiA+ICA+DQo+ID4NCj4gPiAgPiBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIHdhdGNoZG9n IGNvcmUuDQo+ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIHdkZC0+dGltZW91dCA9IG5ld190aW1lOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDC oCB3ZGQtPnByZXRpbWVvdXQgPSAwOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvC oMKgwqDCoMKgIGlmICh3YXRjaGRvZ19hY3RpdmUoeGlsaW54X3d3ZHRfd2RkKSkgew0KPiA+DQo+ ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IHhpbGlueF93d2R0X3N0YXJ0KHdkZCk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkNCj4gPg0KPiA+ICA+ID4gKw0KPiA+ IGRldl9kYmcoeGlsaW54X3d3ZHRfd2RkLT5wYXJlbnQsICJ0aW1lciBzdGFydA0KPiA+DQo+ID4g ID4gZmFpbGVkIik7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIH0NCj4gPg0KPiA+ICA+ID4g Kw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPiA+DQo+ID4gID4gPiAr fQ0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICtzdGF0aWMgaW50IHhpbGlueF93d2R0 X3NldF9wcmV0aW1lb3V0KHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UNCj4gPiAqd2RkLA0KPiA+DQo+ ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCDCoMKgwqDCoMKgIHUzMg0KPiA+IG5ld19wcmV0aW1lb3V0KQ0KPiA+DQo+ID4gID4gPiArew0K PiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCB1MzIgcmV0ID0gMDsNCj4gPg0KPiA+ICA+ID4gK8Kg wqDCoMKgwqAgc3RydWN0IHh3d2R0X2RldmljZSAqeGRldiA9IHdhdGNoZG9nX2dldF9kcnZkYXRh KHdkZCk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHN0cnVjdCB3YXRjaGRvZ19kZXZpY2Ug KnhpbGlueF93d2R0X3dkZCA9ICZ4ZGV2LQ0KPiA+DQo+ID4gID4gPnhpbGlueF93d2R0X3dkZDsN Cj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpZiAoIWlzX3d3ZHRf aW5fY2xvc2VkX3dpbmRvdyh3ZGQpKSB7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X3dhcm4oeGlsaW54X3d3ZHRfd2RkLT5wYXJl bnQsICJ0aW1lcg0KPiA+IGluIGNsb3NlZA0KPiA+DQo+ID4gID4gd2luZG93Iik7DQo+ID4NCj4g PiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FSU5WQUw7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIH0NCj4gPg0KPiA+ICA+DQo+ID4N Cj4gPiAgPiBUaGlzIHJlc3RyaWN0aW9uIGlzIG5vdCBvbmx5IGRhbmdlcm91cyBidXQgY29uZnVz aW5nLCBhbmQgc2ltcGx5DQo+IHVuYWNjZXB0YWJsZS4NCj4gPg0KPiA+ICA+IFVzZXJzcGFjZSB3 aWxsIGdldCAtRUlOVkFMIHdpdGggbm8gaWRlYSB3aGF0IGlzIHdyb25nLg0KPiA+DQo+ID4gID4g QSB3YXRjaGRvZyBkYWVtb24gd2lsbCBiYWlsIG91dCBmb3Igbm8gZ29vZCByZWFzb24uDQo+ID4N Cj4gPiAgPg0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlmIChu ZXdfcHJldGltZW91dCA8IHdkZC0+bWluX3RpbWVvdXQgfHwNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqAgwqDCoMKgIG5ld19wcmV0aW1lb3V0ID49IHdkZC0+dGltZW91dCkNCj4gPg0KPiA+ICA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJ TlZBTDsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gVGhpcyBpcyBoYW5kbGVkIGJ5IHRo ZSB3YXRjaGRvZyBjb3JlLg0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAg d2RkLT5wcmV0aW1lb3V0ID0gbmV3X3ByZXRpbWVvdXQ7DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0K PiA+ICA+ID4gK8KgwqDCoMKgwqAgaWYgKHdhdGNoZG9nX2FjdGl2ZSh4aWxpbnhfd3dkdF93ZGQp KSB7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0ID0geGlsaW54X3d3ZHRfc3RhcnQod2RkKTsNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPiA+DQo+ID4g ID4gPiArDQo+ID4gZGV2X2RiZyh4aWxpbnhfd3dkdF93ZGQtPnBhcmVudCwgInRpbWVyIHN0YXJ0 DQo+ID4NCj4gPiAgPiBmYWlsZWQiKTsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgfQ0KPiA+ DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+ID4N Cj4gPiAgPiA+ICt9DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK3N0YXRpYyB2b2lk IHh3d2R0X2Nsa19kaXNhYmxlX3VucHJlcGFyZSh2b2lkICpkYXRhKSB7DQo+ID4NCj4gPiAgPiA+ ICvCoMKgwqDCoMKgIGNsa19kaXNhYmxlX3VucHJlcGFyZShkYXRhKTsNCj4gPg0KPiA+ICA+ID4g K30NCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArc3RhdGljIGlycXJldHVybl90IHhp bGlueF93d2R0X2lzcihpbnQgaXJxLCB2b2lkICp3ZG9nX2FyZykgew0KPiA+DQo+ID4gID4gPiAr wqDCoMKgwqDCoCBzdHJ1Y3QgeHd3ZHRfZGV2aWNlICp4ZGV2ID0gd2RvZ19hcmc7DQo+ID4NCj4g PiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgd2F0Y2hkb2dfbm90aWZ5X3ByZXRp bWVvdXQoJnhkZXYtPnhpbGlueF93d2R0X3dkZCk7DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ ICA+ID4gK8KgwqDCoMKgwqAgcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+DQo+ID4gID4gPiArfQ0K PiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHdhdGNo ZG9nX2luZm8geGlsaW54X3d3ZHRfaWRlbnQgPSB7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKg IC5vcHRpb25zID0gV0RJT0ZfTUFHSUNDTE9TRSB8DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoCBXRElPRl9LRUVQQUxJVkVQSU5H IHwNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCDCoMKgIFdESU9GX1NFVFRJTUVPVVQsDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIC5m aXJtd2FyZV92ZXJzaW9uID0gMSwNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgLmlkZW50aXR5 ID0gInhsbnhfd2luZG93IHdhdGNoZG9nIiwNCj4gPg0KPiA+ICA+ID4gK307DQo+ID4NCj4gPiAg PiA+ICsNCj4gPg0KPiA+ICA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2F0Y2hkb2dfaW5mbyB4 aWxpbnhfd3dkdF9wcmV0aW1lb3V0X2lkZW50ID0NCj4gPiB7DQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIC5vcHRpb25zID0gV0RJT0ZfTUFHSUNDTE9TRSB8DQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoCBXRElPRl9LRUVQQUxJ VkVQSU5HIHwNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCDCoMKgIFdESU9GX1BSRVRJTUVPVVQgfA0KPiA+DQo+ID4gID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqAgV0RJT0ZfU0VUVElNRU9V VCwNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgLmZpcm13YXJlX3ZlcnNpb24gPSAxLA0KPiA+ DQo+ID4gID4gPiArwqDCoMKgwqDCoCAuaWRlbnRpdHkgPSAieGxueF93aW5kb3cgd2F0Y2hkb2ci LA0KPiA+DQo+ID4gID4gPiArfTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCB3YXRjaGRvZ19vcHMgeGlsaW54X3d3ZHRfb3BzID0gew0KPiA+DQo+ ID4gID4gPiArwqDCoMKgwqDCoCAub3duZXIgPSBUSElTX01PRFVMRSwNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqAgLnN0YXJ0ID0geGlsaW54X3d3ZHRfc3RhcnQsDQo+ID4NCj4gPiAgPiA+ICvC oMKgwqDCoMKgIC5zdG9wID0geGlsaW54X3d3ZHRfc3RvcCwNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqAgLnBpbmcgPSB4aWxpbnhfd3dkdF9rZWVwYWxpdmUsDQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIC5zZXRfdGltZW91dCA9IHhpbGlueF93d2R0X3NldF90aW1lb3V0LA0KPiA+DQo+ID4g ID4gPiArwqDCoMKgwqDCoCAuc2V0X3ByZXRpbWVvdXQgPSB4aWxpbnhfd3dkdF9zZXRfcHJldGlt ZW91dCwgfTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArc3RhdGljIGludCB4d3dk dF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4NCj4gPiAgPiA+ICvC oMKgwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ID4NCj4gPiAgPiA+ ICvCoMKgwqDCoMKgIHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKnhpbGlueF93d2R0X3dkZDsNCj4g Pg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgc3RydWN0IHh3d2R0X2RldmljZSAqeGRldjsNCj4gPg0K PiA+ICA+ID4gK8KgwqDCoMKgwqAgdTMyIHByZV90aW1lb3V0ID0gMDsNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqAgaW50IHJldDsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDC oMKgwqDCoCB4ZGV2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp4ZGV2KSwgR0ZQX0tFUk5F TCk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlmICgheGRldikNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01F TTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCB4aWxpbnhfd3dk dF93ZGQgPSAmeGRldi0+eGlsaW54X3d3ZHRfd2RkOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDC oCB4aWxpbnhfd3dkdF93ZGQtPmluZm8gPSAmeGlsaW54X3d3ZHRfaWRlbnQ7DQo+ID4NCj4gPiAg PiA+ICvCoMKgwqDCoMKgIHhpbGlueF93d2R0X3dkZC0+b3BzID0gJnhpbGlueF93d2R0X29wczsN Cj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgeGlsaW54X3d3ZHRfd2RkLT5wYXJlbnQgPSBkZXY7 DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgeGRldi0+YmFzZSA9 IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsNCj4gPg0KPiA+ICA+ID4g K8KgwqDCoMKgwqAgaWYgKElTX0VSUih4ZGV2LT5iYXNlKSkNCj4gPg0KPiA+ICA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUih4ZGV2 LT5iYXNlKTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCByZXQg PSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJwcmV0aW1lb3V0LXNlYyIsDQo+ ID4NCj4gPiAgPiA+ICsNCj4gPiAmcHJlX3RpbWVvdXQpOw0KPiA+DQo+ID4gID4gPiArwqDCoMKg wqDCoCBpZiAocmV0KQ0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRldl9kYmcoZGV2LA0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgIlBhcmFtZXRlcg0KPiA+IFwicHJldGltZW91dC1zZWNcIiBub3QgZm91bmRcbiIpOw0K PiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHhkZXYtPmNsayA9IGRl dm1fY2xrX2dldChkZXYsIE5VTEwpOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBpZiAoSVNf RVJSKHhkZXYtPmNsaykpDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIoeGRldi0+Y2xrKTsNCj4gPg0KPiA+ICA+ ID4gKw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCByZXQgPSBjbGtfZ2V0X3JhdGUoeGRldi0+ Y2xrKTsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgaWYgKCFyZXQpDQo+ID4NCj4gPiAgPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5W QUw7DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgcmV0ID0gY2xr X3ByZXBhcmVfZW5hYmxlKHhkZXYtPmNsayk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlm IChyZXQpIHsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBkZXZfZXJyKGRldiwgInVuYWJsZSB0byBlbmFibGUgY2xvY2tcbiIpOw0KPiA+ DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiByZXQ7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIH0NCj4gPg0KPiA+ICA+ID4gK8Kg wqDCoMKgwqAgcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwNCj4gPg0KPiA+ICA+ IHh3d2R0X2Nsa19kaXNhYmxlX3VucHJlcGFyZSwNCj4gPg0KPiA+ICA+ID4gKw0KPiA+IHhkZXYt PmNsayk7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlmIChyZXQpDQo+ID4NCj4gPiAgPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfY2xr X2Rpc2FibGU7DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+DQo+ID4NCj4gPiAgPiBTZWVt cyBwb2ludGxlc3MuIFdoYXQgaGFwcGVucyB3aGVuIHlvdSB1bmxvYWQgdGhlIGRyaXZlciA/DQo+ ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCB4aWxpbnhfd3dkdF93ZGQtPnBy ZXRpbWVvdXQgPSBwcmVfdGltZW91dDsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgeGlsaW54 X3d3ZHRfd2RkLT50aW1lb3V0ID0gWFdXRFRfREVGQVVMVF9USU1FT1VUOw0KPiA+DQo+ID4gID4g PiArwqDCoMKgwqDCoCB4aWxpbnhfd3dkdF93ZGQtPm1pbl90aW1lb3V0ID0gWFdXRFRfTUlOX1RJ TUVPVVQ7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHhpbGlueF93d2R0X3dkZC0+bWF4X3Rp bWVvdXQgPSBYV1dEVF9NQVhfVElNRU9VVDsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4g PiArwqDCoMKgwqDCoCB4ZGV2LT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCAi d2R0Iik7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlmICh4ZGV2LT5pcnEgPCAwKSB7DQo+ ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0ID0geGRldi0+aXJxOw0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2Nsa19kaXNhYmxlOw0KPiA+DQo+ID4gID4gPiAr wqDCoMKgwqDCoCB9DQo+ID4NCj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAg aWYgKCFkZXZtX3JlcXVlc3RfaXJxKGRldiwgeGRldi0+aXJxLCB4aWxpbnhfd3dkdF9pc3IsDQo+ ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoMKgIDAsIGRldl9uYW1lKGRl diksDQo+ID4geGRldikpIHsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB4aWxpbnhfd3dkdF93ZGQtPmluZm8gPQ0KPiA+ICZ4aWxpbnhf d3dkdF9wcmV0aW1lb3V0X2lkZW50Ow0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCB9DQo+ID4N Cj4gPiAgPiA+ICsNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAgcmV0ID0gd2F0Y2hkb2dfaW5p dF90aW1lb3V0KHhpbGlueF93d2R0X3dkZCwNCj4gPg0KPiA+ICA+ID4gKw0KPiA+IHd3ZHRfdGlt ZW91dCwgJnBkZXYtPmRldik7DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGlmIChyZXQpDQo+ ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZGV2X2luZm8oJnBkZXYtPmRldiwgIkNvbmZpZ3VyZWQgZGVmYXVsdA0KPiA+IHRpbWVvdXQNCj4g Pg0KPiA+ICA+IHZhbHVlXG4iKTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArwqDC oMKgwqDCoCBzcGluX2xvY2tfaW5pdCgmeGRldi0+c3BpbmxvY2spOw0KPiA+DQo+ID4gID4gPiAr wqDCoMKgwqDCoCB3YXRjaGRvZ19zZXRfZHJ2ZGF0YSh4aWxpbnhfd3dkdF93ZGQsIHhkZXYpOw0K PiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIHJldCA9IGRldm1fd2F0 Y2hkb2dfcmVnaXN0ZXJfZGV2aWNlKGRldiwgeGlsaW54X3d3ZHRfd2RkKTsNCj4gPg0KPiA+ICA+ ID4gK8KgwqDCoMKgwqAgaWYgKHJldCkNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9jbGtfZGlzYWJsZTsNCj4gPg0KPiA+ ICA+ID4gKw0KPiA+DQo+ID4gID4gQXQgdGhpcyBwb2ludCB0aGUgd2F0Y2hkb2cgaXMgZnVsbHkg aW5zdGFudGlhdGVkLCBhbmQgdXNlcnNwYWNlIG1heQ0KPiA+IGhhdmUNCj4gPg0KPiA+ICA+IGVu YWJsZWQgaXQuDQo+ID4NCj4gPiAgPg0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBjbGtfZGlz YWJsZV91bnByZXBhcmUoeGRldi0+Y2xrKTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4g QW5kIG5vdyBpdHMgY2xvY2sgaXMgZ2V0dGluZyBzdG9wcGVkLiBBY3R1YWxseSwgaXQgaXMgZ2V0 dGluZyB1bnByZXBhcmVkLg0KPiA+DQo+ID4gID4gRG9lcyB0aGlzIGV2ZW4gd29yayA/DQo+ID4N Cj4gPiAgPg0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCBkZXZfaW5mbyhkZXYsICJYaWxpbngg V2luZG93IFdhdGNoZG9nIFRpbWVyIHdpdGggdGltZW91dA0KPiA+ICVkc1xuIiwNCj4gPg0KPiA+ ICA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4aWxpbnhf d3dkdF93ZGQtPnRpbWVvdXQpOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICvCoMKg wqDCoMKgIHJldHVybiAwOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICtlcnJfY2xr X2Rpc2FibGU6DQo+ID4NCj4gPiAgPiA+ICvCoMKgwqDCoMKgIGNsa19kaXNhYmxlX3VucHJlcGFy ZSh4ZGV2LT5jbGspOw0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+IGRldm1fYWRkX2FjdGlvbl9v cl9yZXNldCgpIGFscmVhZHkgaGFuZGxlcyB0aGlzLg0KPiA+DQo+ID4gID4NCj4gPg0KPiA+ICA+ ID4gK8KgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gPg0KPiA+ICA+ID4gK30NCj4gPg0KPiA+ICA+ ID4gKw0KPiA+DQo+ID4gID4gPiArLyogTWF0IGZvciBvZl9wbGF0Zm9ybSBiaW5kaW5nICovDQo+ ID4NCj4gPiAgPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB4d3dkdF9vZl9t YXRjaFtdID0gew0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCB7IC5jb21wYXRpYmxlID0gInhs bngsdmVyc2FsLXd3ZHQtMS4wIiwgfSwNCj4gPg0KPiA+ICA+ID4gK8KgwqDCoMKgwqAge30sDQo+ ID4NCj4gPiAgPiA+ICt9Ow0KPiA+DQo+ID4gID4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwg eHd3ZHRfb2ZfbWF0Y2gpOw0KPiA+DQo+ID4gID4gPiArDQo+ID4NCj4gPiAgPiA+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciB4d3dkdF9kcml2ZXIgPSB7DQo+ID4NCj4gPiAgPiA+ICvC oMKgwqDCoMKgIC5wcm9iZSA9IHh3d2R0X3Byb2JlLA0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDC oCAuZHJpdmVyID0gew0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC5uYW1lID0gIlhpbGlueCBXaW5kb3cgV2F0Y2hkb2ciLA0KPiA+DQo+ ID4gID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5vZl9t YXRjaF90YWJsZSA9IHh3d2R0X29mX21hdGNoLA0KPiA+DQo+ID4gID4gPiArwqDCoMKgwqDCoCB9 LA0KPiA+DQo+ID4gID4gPiArfTsNCj4gPg0KPiA+ICA+ID4gKw0KPiA+DQo+ID4gID4gPiArbW9k dWxlX3BsYXRmb3JtX2RyaXZlcih4d3dkdF9kcml2ZXIpOw0KPiA+DQo+ID4gID4gPiArDQo+ID4N Cj4gPiAgPiA+ICtNT0RVTEVfQVVUSE9SKCJOZWVsaSBTcmluaXZhcyA8c25lZWxpQHhpbGlueC5j b20NCj4gPiA8bWFpbHRvOnNuZWVsaUB4aWxpbnguY29tPj4iKTsNCj4gPg0KPiA+ICA+ID4gK01P RFVMRV9ERVNDUklQVElPTigiWGlsaW54IFdpbmRvdyBXYXRjaGRvZyBkcml2ZXIiKTsNCj4gPg0K PiA+ICA+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gPg0KPiA+ICA+ID4NCj4gPg0KPiA+ IFRoYW5rcw0KPiA+DQo+ID4gU3Jpbml2YXMgTmVlbGkuDQo+ID4NCg0K