From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 43C00A00C2; Wed, 4 Jan 2023 08:39:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2343C40A82; Wed, 4 Jan 2023 08:39:39 +0100 (CET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2048.outbound.protection.outlook.com [40.107.8.48]) by mails.dpdk.org (Postfix) with ESMTP id D9F9A40697 for ; Wed, 4 Jan 2023 08:39:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g96YENhaTAsgFv1dwu+1t75qOeSOLWgQE6HgxgsciX0=; b=SLerzGDKP5WZwMqxqYT/ehregaSeH2qZXi6eH8PAxDh+rXyJKmYHJuX4Pkd+Lr6cz6wYf9S8TnWGKyFuo843pZv6kG/Seb6ylwIPPquCwxhe3eG3TGka7nG86Wf5CdGpiFEU1M2kFj74dD3VHJEy9Z7VKTQUaArOeaCX91La+eQ= Received: from AM6P192CA0064.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:82::41) by PR3PR08MB5705.eurprd08.prod.outlook.com (2603:10a6:102:93::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.9; Wed, 4 Jan 2023 07:39:35 +0000 Received: from AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:82:cafe::49) by AM6P192CA0064.outlook.office365.com (2603:10a6:209:82::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Wed, 4 Jan 2023 07:39:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT039.mail.protection.outlook.com (100.127.140.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.17 via Frontend Transport; Wed, 4 Jan 2023 07:39:34 +0000 Received: ("Tessian outbound 3ad958cd7492:v132"); Wed, 04 Jan 2023 07:39:34 +0000 X-CR-MTA-TID: 64aa7808 Received: from c0246231f21e.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 007B9352-42DC-431A-8D4A-2D6A8216BCF9.1; Wed, 04 Jan 2023 07:39:34 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c0246231f21e.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 04 Jan 2023 07:39:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ns3avIKbYq+exOwUIEa/rwvi6h5m0ZPXFfJXj1eupLZwG8rM6SBzJiFLYbr+ADhcnX7R4tXR6sEWEr2Y/dXqxpP+rAbL5J2UD+55X/rFL8CIzHGxPqRUTFu+ZdB6+z6fH+3dDEbk7zCFhyMak/tzfYCATfmuGEWAxAG9b2HJr/QpwVVywM48zeh4L427hY8elKIfEPi414GasrInhFPEMSbD+4ypi8sbfuWrBlIR2MKPCsgvJrWON2dNESq0MEpUjcHCjppN6LHahB/30XYbqDrTkpp+Yno+wvaqSenJMCFiuJJJEJkkM7zVvQ+CXNTVB4s2XBN8CkNzCF3jGKqxiA== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=g96YENhaTAsgFv1dwu+1t75qOeSOLWgQE6HgxgsciX0=; b=UTzfNGon7E2o2AtOvCp3XF9AEE0BU9qILSsl0flQW+z14z36lzIYRg6ohn4667ePveJcfBZrLoh5xYpTQ/myXvvSQ1j3K1TFM6pMUPTNUs2bd5haeux/Dw9CSXRStGdSf7xwhAfc5wpHBsMYX9WqO9ms2Q2rnfo7r/omd1yopnj4/X59EmcdnOUiUfg++0nX0JUOJMJ+YNFxnL8NWmG9L8iV302sTje78p4OsemrR1ijGhQrvWrStzDL+u21EooIApDd+EdBgKMbMZJgelnYuc6ddeYuejI7WpzFFaZp5eJAn56ZBgDMxu9dpcYN4TO5V1bszeY+uMLR6hpidJyT3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g96YENhaTAsgFv1dwu+1t75qOeSOLWgQE6HgxgsciX0=; b=SLerzGDKP5WZwMqxqYT/ehregaSeH2qZXi6eH8PAxDh+rXyJKmYHJuX4Pkd+Lr6cz6wYf9S8TnWGKyFuo843pZv6kG/Seb6ylwIPPquCwxhe3eG3TGka7nG86Wf5CdGpiFEU1M2kFj74dD3VHJEy9Z7VKTQUaArOeaCX91La+eQ= Received: from AS8PR08MB7718.eurprd08.prod.outlook.com (2603:10a6:20b:50a::22) by DU0PR08MB7812.eurprd08.prod.outlook.com (2603:10a6:10:3b4::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14; Wed, 4 Jan 2023 07:39:27 +0000 Received: from AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::75b3:8b57:e8a9:f8b6]) by AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::75b3:8b57:e8a9:f8b6%4]) with mapi id 15.20.5986.009; Wed, 4 Jan 2023 07:39:26 +0000 From: Feifei Wang To: Konstantin Ananyev , "thomas@monjalon.net" , Ferruh Yigit , Andrew Rybchenko , Ray Kinsella CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , Ruifeng Wang , nd Subject: =?utf-8?B?5Zue5aSNOiDlm57lpI06IOWbnuWkjTog5Zue5aSNOiBbUEFUQ0ggdjIgMS8z?= =?utf-8?Q?]_ethdev:_add_API_for_direct_rearm_mode?= Thread-Topic: =?utf-8?B?5Zue5aSNOiDlm57lpI06IOWbnuWkjTogW1BBVENIIHYyIDEvM10gZXRoZGV2?= =?utf-8?Q?:_add_API_for_direct_rearm_mode?= Thread-Index: AQHY0hubrZ1gYS40jUunqUVQppYvUK38aE4AgAxcYgCAARargIAA+/HQgAFWdICACumswIAR0k6AgGP2ClA= Date: Wed, 4 Jan 2023 07:39:25 +0000 Message-ID: References: <20220927024756.947272-1-feifei.wang2@arm.com> <20220927024756.947272-2-feifei.wang2@arm.com> <771c16c9-cb84-2d35-5e64-3686b7b5822e@yandex.ru> <2d17cd4e-2eca-3e34-ea81-0a72903d46f1@yandex.ru> <48648668-928e-2283-fd95-dae1c6f50746@yandex.ru> In-Reply-To: <48648668-928e-2283-fd95-dae1c6f50746@yandex.ru> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C6D77EC94694704DB07185E4BB8DAEBD.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AS8PR08MB7718:EE_|DU0PR08MB7812:EE_|AM7EUR03FT039:EE_|PR3PR08MB5705:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c43a507-fb7a-4923-095d-08daee26d366 x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: KMjrvQB52eTfihTbgHnPiSRMh8TrmjsU7nKhwv6AxXf1s0XdjwA5BGiEjULd+HYmAZETfwRXM/Vgcrmj1Q9Ev04qsUoiMgfaGmYGI1z7JSEP/v0zmAwfMNGbUZK5oweOncd+AHu0jjrPYli4X+ZCWFui4rxvfzPQG+PyPcP7OZT9Qq5oT+hKZsDBh35vK/7/peAOXDj36yROuA96xhTOXpGHXrStLVPZZy25/3L+4ryOFWJLFf0v+K9tYoYSg9yu+m9Mz6e1jb1I2mWgClsuexRW5j1eWWS4cbKWcKi7jSj+68MGkPKSIokwWH1/UcBpx2htk7sj9/qGuXjGsbVqwPLeMn9Dd+6O8Tj67MnAYrNuDoacq4deeWZbcvlrYD8Ir0phLEKWk9e3u1YaOjIltt0SS1qDjrKxBw6jbs5i93/dm8rUVbIHyi0Tmz5E4r7suGg1EhcPUxzYipRwxsEyuA7m4uhHeI9NgEbMoKihPX2l8Owtqa72DS5bM93JbjYgDZPsVFCX8zoh0Zxu2ypWeEFUb8NDPGpgKkxLA0Pxkgkcm9yhvu2hdu2VdQDtfPbcwlwgimRxPeR761e2CRi2uGyUdS+YhvUSg6pGpMgkHBGNEkewqrkHG9H7Hy1vWbRwQE/nr40i/Yx9KwQXrJtnIlIARpf4hTTP/JP7wHeVDr+z+7wdTQ+JXBVVDbPjls/PF0snf1fIGWk/P/Jg4Uszw4z4MFKGVnPslZ9VafQtuC+StDStSTwMqq0leqXqXXKZD0O4ajIGrUJzu3iWb9B/bElEMyEC8gPZQmYv+M1KaGg= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7718.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(376002)(346002)(136003)(39860400002)(396003)(366004)(451199015)(122000001)(38100700002)(33656002)(224303003)(55016003)(86362001)(38070700005)(7696005)(316002)(71200400001)(54906003)(110136005)(66946007)(186003)(76116006)(26005)(9686003)(66899015)(66556008)(966005)(30864003)(6506007)(2906002)(41300700001)(478600001)(64756008)(4326008)(66476007)(5660300002)(83380400001)(8936002)(66446008)(52536014)(579004)(414714003)(473944003); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB7812 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 466d5317-22c9-4c14-add3-08daee26ce10 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BtqTKrypyuWX2KhBafju48tH+CVC9GAELFcDHT3KucBkBHJkI/v+ut6sO2Z/a//sAlq1k3CFXNKxCX9lCGy6GwlzYViWTKRXEyduThqMi8GFy3wPB3NvndKDaZwJqWIAPjmU1lsaMD0ktExVqT07EUghrYL+VglgYgGDToi/IrYk5g9L8Ysuz9D2HZRtD41hUE33oeJzLgN4pcmJ+0Q3ejjGEmvF3qrbAxDkIibrHklxGp1E0eVkBHVOqft5g11I+c+VmTpB8ON7T7cBAx9SpN0ApbPjgBRZ9UJlx8hWfmnAVLVqsXIxU4eG/OYannahxL1IOg6TLXFkEKqUmJtb9EyjvoKZgCmm3KKMj38ECe0JibpCJZgteu77l6oyQXHp+2B1ePtnooZZlCIvmz3tnCkqURJNNEkfUQjfMEyLr0RdcMqurJEs5qmwg31iVDnYKBPzYawJLrXJRSrZsS+/9N+I4DB5Sn0Iid8KBlwL9e9Q/SHFKGPhPd4r3vvnozZaq75Rg7fVZWBenVcFGIJ+AxmWVjx/dyNr6mDG8Jud1S4pJlSzJ0fm0jzDTg+LTWnikjIw7WRa9iBMRQCeVTWflgygrjVq6u8x/ZzyDtgtLaN99KXmdqa6hEYinmtEqXaZavmDMepRLdBtf7SM1DknjEQQfaLXlxJ0hG6X9NNkSBWVyPuqh/xK9NnXc9Hf2wX64dJVd7giKnM9MShGRgCHjJeOaSAVKbTfrusoOc9yvbkQZa37/zs1FAbnZUnX9ANS/AnRDwMSW1ciK0mkpLKyOnrU+WZpS/ZbwS+DCgGM6KPhYMYpmAS0EbJ7Wkeo5r6A X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(396003)(376002)(346002)(136003)(451199015)(40470700004)(46966006)(36840700001)(82740400003)(33656002)(81166007)(356005)(70206006)(36860700001)(70586007)(41300700001)(4326008)(110136005)(54906003)(40460700003)(316002)(40480700001)(52536014)(2906002)(55016003)(83380400001)(30864003)(336012)(8936002)(5660300002)(9686003)(82310400005)(478600001)(966005)(47076005)(26005)(186003)(6506007)(7696005)(86362001)(66899015)(224303003)(23180200003)(473944003)(414714003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2023 07:39:34.8412 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0c43a507-fb7a-4923-095d-08daee26d366 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5705 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGksIEtvbnN0YW50aW4NCg0KPiAtLS0tLemCruS7tuWOn+S7ti0tLS0tDQo+IOWPkeS7tuS6ujog S29uc3RhbnRpbiBBbmFueWV2IDxrb25zdGFudGluLnYuYW5hbnlldkB5YW5kZXgucnU+DQo+IOWP kemAgeaXtumXtDogVHVlc2RheSwgTm92ZW1iZXIgMSwgMjAyMiAxMjozNyBBTQ0KPiDmlLbku7bk uro6IEZlaWZlaSBXYW5nIDxGZWlmZWkuV2FuZzJAYXJtLmNvbT47IHRob21hc0Btb25qYWxvbi5u ZXQ7DQo+IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QHhpbGlueC5jb20+OyBBbmRyZXcgUnli Y2hlbmtvDQo+IDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT47IFJheSBLaW5zZWxsYSA8 bWRyQGFzaHJvZS5ldT4NCj4g5oqE6YCBOiBkZXZAZHBkay5vcmc7IG5kIDxuZEBhcm0uY29tPjsg SG9ubmFwcGEgTmFnYXJhaGFsbGkNCj4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+OyBS dWlmZW5nIFdhbmcNCj4gPFJ1aWZlbmcuV2FuZ0Bhcm0uY29tPg0KPiDkuLvpopg6IFJlOiDlm57l pI06IOWbnuWkjTog5Zue5aSNOiBbUEFUQ0ggdjIgMS8zXSBldGhkZXY6IGFkZCBBUEkgZm9yIGRp cmVjdCByZWFybQ0KPiBtb2RlDQo+IA0KPiANCj4gDQo+IEhpIEZlaWZlaSwNCj4gDQo+IA0KPiA+ Pj4+Pj4+IEFkZCBBUEkgZm9yIGVuYWJsaW5nIGRpcmVjdCByZWFybSBtb2RlIGFuZCBmb3IgbWFw cGluZyBSWCBhbmQgVFgNCj4gPj4+Pj4+PiBxdWV1ZXMuIEN1cnJlbnRseSwgdGhlIEFQSSBzdXBw b3J0cyAxOjEodHhxIDogcnhxKSBtYXBwaW5nLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gRnVydGhl cm1vcmUsIHRvIGF2b2lkIFJ4IGxvYWQgVHggZGF0YSBkaXJlY3RseSwgYWRkIEFQSSBjYWxsZWQN Cj4gPj4+Pj4+PiAncnRlX2V0aF90eHFfZGF0YV9nZXQnIHRvIGdldCBUeCBzd19yaW5nIGFuZCBp dHMgaW5mb3JtYXRpb24uDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBTdWdnZXN0ZWQtYnk6IEhvbm5h cHBhIE5hZ2FyYWhhbGxpDQo+ID4+IDxob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tPg0KPiA+ Pj4+Pj4+IFN1Z2dlc3RlZC1ieTogUnVpZmVuZyBXYW5nIDxydWlmZW5nLndhbmdAYXJtLmNvbT4N Cj4gPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBGZWlmZWkgV2FuZyA8ZmVpZmVpLndhbmcyQGFybS5j b20+DQo+ID4+Pj4+Pj4gUmV2aWV3ZWQtYnk6IFJ1aWZlbmcgV2FuZyA8cnVpZmVuZy53YW5nQGFy bS5jb20+DQo+ID4+Pj4+Pj4gUmV2aWV3ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+ID4+ IDxob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tPg0KPiA+Pj4+Pj4+IC0tLQ0KPiA+Pj4+Pj4+ ICAgICAgbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmggICB8ICA5ICsrKysNCj4gPj4+Pj4+PiAg ICAgIGxpYi9ldGhkZXYvZXRoZGV2X3ByaXZhdGUuYyAgfCAgMSArDQo+ID4+Pj4+Pj4gICAgICBs aWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyAgICAgIHwgMzcgKysrKysrKysrKysrKysNCj4gPj4+Pj4+ PiAgICAgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5oICAgICAgfCA5NQ0KPiA+Pj4+Pj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4+Pj4+Pj4gICAgICBsaWIvZXRoZGV2 L3J0ZV9ldGhkZXZfY29yZS5oIHwgIDUgKysNCj4gPj4+Pj4+PiAgICAgIGxpYi9ldGhkZXYvdmVy c2lvbi5tYXAgICAgICAgfCAgNCArKw0KPiA+Pj4+Pj4+ICAgICAgNiBmaWxlcyBjaGFuZ2VkLCAx NTEgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9l dGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4+Pj4+Pj4gYi9saWIvZXRoZGV2L2V0aGRldl9kcml2 ZXIuaCBpbmRleCA0N2E1NWE0MTllLi4xNGY1MjkwN2MxDQo+IDEwMDY0NA0KPiA+Pj4+Pj4+IC0t LSBhL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4+Pj4+Pj4gKysrIGIvbGliL2V0aGRl di9ldGhkZXZfZHJpdmVyLmgNCj4gPj4+Pj4+PiBAQCAtNTgsNiArNTgsOCBAQCBzdHJ1Y3QgcnRl X2V0aF9kZXYgew0KPiA+Pj4+Pj4+ICAgICAgCWV0aF9yeF9kZXNjcmlwdG9yX3N0YXR1c190IHJ4 X2Rlc2NyaXB0b3Jfc3RhdHVzOw0KPiA+Pj4+Pj4+ICAgICAgCS8qKiBDaGVjayB0aGUgc3RhdHVz IG9mIGEgVHggZGVzY3JpcHRvciAqLw0KPiA+Pj4+Pj4+ICAgICAgCWV0aF90eF9kZXNjcmlwdG9y X3N0YXR1c190IHR4X2Rlc2NyaXB0b3Jfc3RhdHVzOw0KPiA+Pj4+Pj4+ICsJLyoqICBVc2UgVHgg bWJ1ZnMgZm9yIFJ4IHRvIHJlYXJtICovDQo+ID4+Pj4+Pj4gKwlldGhfcnhfZGlyZWN0X3JlYXJt X3QgcnhfZGlyZWN0X3JlYXJtOw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gICAgICAJLyoqDQo+ID4+ Pj4+Pj4gICAgICAJICogRGV2aWNlIGRhdGEgdGhhdCBpcyBzaGFyZWQgYmV0d2VlbiBwcmltYXJ5 IGFuZA0KPiA+Pj4+Pj4+IHNlY29uZGFyeSBwcm9jZXNzZXMgQEAgLTQ4Niw2ICs0ODgsMTEgQEAg dHlwZWRlZiBpbnQNCj4gPj4+Pj4+ICgqZXRoX3J4X2VuYWJsZV9pbnRyX3QpKHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LA0KPiA+Pj4+Pj4+ICAgICAgdHlwZWRlZiBpbnQgKCpldGhfcnhfZGlzYWJs ZV9pbnRyX3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+Pj4+Pj4+ICAgICAgCQkJCSAg ICB1aW50MTZfdCByeF9xdWV1ZV9pZCk7DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiArLyoqPCBAaW50 ZXJuYWwgR2V0IFR4IGluZm9ybWF0aW9uIG9mIGEgdHJhbnNtaXQgcXVldWUgb2YgYW4NCj4gPj4+ Pj4+PiArRXRoZXJuZXQgZGV2aWNlLiAqLyB0eXBlZGVmIHZvaWQgKCpldGhfdHhxX2RhdGFfZ2V0 X3QpKHN0cnVjdA0KPiA+Pj4+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4+Pj4+Pj4gKwkJCQkgICAg ICB1aW50MTZfdCB0eF9xdWV1ZV9pZCwNCj4gPj4+Pj4+PiArCQkJCSAgICAgIHN0cnVjdCBydGVf ZXRoX3R4cV9kYXRhDQo+ID4+ICp0eHFfZGF0YSk7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICAg ICAgLyoqIEBpbnRlcm5hbCBSZWxlYXNlIG1lbW9yeSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGdp dmVuDQo+ID4+Pj4+Pj4gUngvVHgNCj4gPj4+PiBxdWV1ZS4NCj4gPj4+Pj4+ICovDQo+ID4+Pj4+ Pj4gICAgICB0eXBlZGVmIHZvaWQgKCpldGhfcXVldWVfcmVsZWFzZV90KShzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwNCj4gPj4+Pj4+PiAgICAgIAkJCQkgICAgdWludDE2X3QgcXVldWVfaWQpOyBA QCAtMTEzOCw2DQo+ICsxMTQ1LDggQEAgc3RydWN0DQo+ID4+Pj4+Pj4gZXRoX2Rldl9vcHMgew0K PiA+Pj4+Pj4+ICAgICAgCWV0aF9yeHFfaW5mb19nZXRfdCAgICAgICAgIHJ4cV9pbmZvX2dldDsN Cj4gPj4+Pj4+PiAgICAgIAkvKiogUmV0cmlldmUgVHggcXVldWUgaW5mb3JtYXRpb24gKi8NCj4g Pj4+Pj4+PiAgICAgIAlldGhfdHhxX2luZm9fZ2V0X3QgICAgICAgICB0eHFfaW5mb19nZXQ7DQo+ ID4+Pj4+Pj4gKwkvKiogR2V0IHRoZSBhZGRyZXNzIHdoZXJlIFR4IGRhdGEgaXMgc3RvcmVkICov DQo+ID4+Pj4+Pj4gKwlldGhfdHhxX2RhdGFfZ2V0X3QgICAgICAgICB0eHFfZGF0YV9nZXQ7DQo+ ID4+Pj4+Pj4gICAgICAJZXRoX2J1cnN0X21vZGVfZ2V0X3QgICAgICAgcnhfYnVyc3RfbW9kZV9n ZXQ7IC8qKjwgR2V0IFJ4DQo+ID4+IGJ1cnN0DQo+ID4+Pj4+PiBtb2RlICovDQo+ID4+Pj4+Pj4g ICAgICAJZXRoX2J1cnN0X21vZGVfZ2V0X3QgICAgICAgdHhfYnVyc3RfbW9kZV9nZXQ7IC8qKjwg R2V0IFR4DQo+ID4+IGJ1cnN0DQo+ID4+Pj4+PiBtb2RlICovDQo+ID4+Pj4+Pj4gICAgICAJZXRo X2Z3X3ZlcnNpb25fZ2V0X3QgICAgICAgZndfdmVyc2lvbl9nZXQ7IC8qKjwgR2V0DQo+ID4+IGZp cm13YXJlDQo+ID4+Pj4+PiB2ZXJzaW9uICovDQo+ID4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9l dGhkZXYvZXRoZGV2X3ByaXZhdGUuYw0KPiA+Pj4+Pj4+IGIvbGliL2V0aGRldi9ldGhkZXZfcHJp dmF0ZS5jIGluZGV4IDQ4MDkwYzg3OWEuLmJmZTE2YzdkNzcNCj4gPj4+Pj4+PiAxMDA2NDQNCj4g Pj4+Pj4+PiAtLS0gYS9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4gPj4+Pj4+PiArKysg Yi9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4gPj4+Pj4+PiBAQCAtMjc2LDYgKzI3Niw3 IEBAIGV0aF9kZXZfZnBfb3BzX3NldHVwKHN0cnVjdA0KPiA+PiBydGVfZXRoX2ZwX29wcw0KPiA+ Pj4+Pj4gKmZwbywNCj4gPj4+Pj4+PiAgICAgIAlmcG8tPnJ4X3F1ZXVlX2NvdW50ID0gZGV2LT5y eF9xdWV1ZV9jb3VudDsNCj4gPj4+Pj4+PiAgICAgIAlmcG8tPnJ4X2Rlc2NyaXB0b3Jfc3RhdHVz ID0gZGV2LT5yeF9kZXNjcmlwdG9yX3N0YXR1czsNCj4gPj4+Pj4+PiAgICAgIAlmcG8tPnR4X2Rl c2NyaXB0b3Jfc3RhdHVzID0gZGV2LT50eF9kZXNjcmlwdG9yX3N0YXR1czsNCj4gPj4+Pj4+PiAr CWZwby0+cnhfZGlyZWN0X3JlYXJtID0gZGV2LT5yeF9kaXJlY3RfcmVhcm07DQo+ID4+Pj4+Pj4N Cj4gPj4+Pj4+PiAgICAgIAlmcG8tPnJ4cS5kYXRhID0gZGV2LT5kYXRhLT5yeF9xdWV1ZXM7DQo+ ID4+Pj4+Pj4gICAgICAJZnBvLT5yeHEuY2xiayA9ICh2b2lkDQo+ID4+Pj4+Pj4gKiopKHVpbnRw dHJfdClkZXYtPnBvc3RfcnhfYnVyc3RfY2JzOw0KPiA+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIv ZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ID4+Pj4+Pj4g aW5kZXggMGMyYzEwODhjMC4uMGRjY2VjMmU0YiAxMDA2NDQNCj4gPj4+Pj4+PiAtLS0gYS9saWIv ZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+Pj4+Pj4+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRl di5jDQo+ID4+Pj4+Pj4gQEAgLTE2NDgsNiArMTY0OCw0MyBAQCBydGVfZXRoX2Rldl9pc19yZW1v dmVkKHVpbnQxNl90DQo+IHBvcnRfaWQpDQo+ID4+Pj4+Pj4gICAgICAJcmV0dXJuIHJldDsNCj4g Pj4+Pj4+PiAgICAgIH0NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ICtpbnQNCj4gPj4+Pj4+PiArcnRl X2V0aF90eF9xdWV1ZV9kYXRhX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9p ZCwNCj4gPj4+Pj4+PiArCQkJc3RydWN0IHJ0ZV9ldGhfdHhxX2RhdGEgKnR4cV9kYXRhKSB7DQo+ ID4+Pj4+Pj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+ Pj4gKwlSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0K PiA+Pj4+Pj4+ICsJZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPj4+Pj4+PiAr DQo+ID4+Pj4+Pj4gKwlpZiAocXVldWVfaWQgPj0gZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXMpIHsN Cj4gPj4+Pj4+PiArCQlSVEVfRVRIREVWX0xPRyhFUlIsICJJbnZhbGlkIFR4IHF1ZXVlX2lkPSV1 XG4iLA0KPiA+Pj4+Pj4gcXVldWVfaWQpOw0KPiA+Pj4+Pj4+ICsJCXJldHVybiAtRUlOVkFMOw0K PiA+Pj4+Pj4+ICsJfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArCWlmICh0eHFfZGF0YSA9PSBO VUxMKSB7DQo+ID4+Pj4+Pj4gKwkJUlRFX0VUSERFVl9MT0coRVJSLCAiQ2Fubm90IGdldCBldGhk ZXYgcG9ydCAldQ0KPiA+PiBUeA0KPiA+Pj4+Pj4gcXVldWUgJXUgZGF0YSB0byBOVUxMXG4iLA0K PiA+Pj4+Pj4+ICsJCQlwb3J0X2lkLCBxdWV1ZV9pZCk7DQo+ID4+Pj4+Pj4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ID4+Pj4+Pj4gKwl9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsJaWYgKGRldi0+ ZGF0YS0+dHhfcXVldWVzID09IE5VTEwgfHwNCj4gPj4+Pj4+PiArCQkJZGV2LT5kYXRhLT50eF9x dWV1ZXNbcXVldWVfaWRdID09IE5VTEwpIHsNCj4gPj4+Pj4+PiArCQlSVEVfRVRIREVWX0xPRyhF UlIsDQo+ID4+Pj4+Pj4gKwkJCSAgICJUeCBxdWV1ZSAlIlBSSXUxNiIgb2YgZGV2aWNlIHdpdGgN Cj4gPj4gcG9ydF9pZD0lIg0KPiA+Pj4+Pj4+ICsJCQkgICBQUkl1MTYiIGhhcyBub3QgYmVlbiBz ZXR1cFxuIiwNCj4gPj4+Pj4+PiArCQkJICAgcXVldWVfaWQsIHBvcnRfaWQpOw0KPiA+Pj4+Pj4+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+Pj4+Pj4+ICsJfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+ PiArCWlmICgqZGV2LT5kZXZfb3BzLT50eHFfZGF0YV9nZXQgPT0gTlVMTCkNCj4gPj4+Pj4+PiAr CQlyZXR1cm4gLUVOT1RTVVA7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsJZGV2LT5kZXZfb3Bz LT50eHFfZGF0YV9nZXQoZGV2LCBxdWV1ZV9pZCwgdHhxX2RhdGEpOw0KPiA+Pj4+Pj4+ICsNCj4g Pj4+Pj4+PiArCXJldHVybiAwOw0KPiA+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ ICAgICAgc3RhdGljIGludA0KPiA+Pj4+Pj4+ICAgICAgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19z cGxpdChjb25zdCBzdHJ1Y3QNCj4gPj4+Pj4+PiBydGVfZXRoX3J4c2VnX3NwbGl0DQo+ID4+Pj4g KnJ4X3NlZywNCj4gPj4+Pj4+PiAgICAgIAkJCSAgICAgdWludDE2X3Qgbl9zZWcsIHVpbnQzMl90 ICptYnBfYnVmX3NpemUsDQo+ID4+IGRpZmYgLS1naXQNCj4gPj4+Pj4+PiBhL2xpYi9ldGhkZXYv cnRlX2V0aGRldi5oIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmggaW5kZXgNCj4gPj4+Pj4+PiAy ZTc4MzUzNmMxLi5kYWY3ZjA1ZDYyIDEwMDY0NA0KPiA+Pj4+Pj4+IC0tLSBhL2xpYi9ldGhkZXYv cnRlX2V0aGRldi5oDQo+ID4+Pj4+Pj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4g Pj4+Pj4+PiBAQCAtMTk0OSw2ICsxOTQ5LDIzIEBAIHN0cnVjdCBydGVfZXRoX3R4cV9pbmZvIHsN Cj4gPj4+Pj4+PiAgICAgIAl1aW50OF90IHF1ZXVlX3N0YXRlOyAgICAgICAgLyoqPCBvbmUgb2YN Cj4gPj4gUlRFX0VUSF9RVUVVRV9TVEFURV8qLiAqLw0KPiA+Pj4+Pj4+ICAgICAgfSBfX3J0ZV9j YWNoZV9taW5fYWxpZ25lZDsNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiAr ICogQGludGVybmFsDQo+ID4+Pj4+Pj4gKyAqIFN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgcG9pbnRl cnMgdG8gaW50ZXJuYWwgZXRoZGV2IFR4IGRhdGEuDQo+ID4+Pj4+Pj4gKyAqIFRoZSBtYWluIHB1 cnBvc2UgaXMgdG8gbG9hZCBhbmQgc3RvcmUgVHggcXVldWUgZGF0YSBpbg0KPiA+Pj4+Pj4+ICtk aXJlY3QgcmVhcm0NCj4gPj4+Pj4+IG1vZGUuDQo+ID4+Pj4+Pj4gKyAqLw0KPiA+Pj4+Pj4+ICtz dHJ1Y3QgcnRlX2V0aF90eHFfZGF0YSB7DQo+ID4+Pj4+Pj4gKwl1aW50NjRfdCAqb2ZmbG9hZHM7 DQo+ID4+Pj4+Pj4gKwl2b2lkICp0eF9zd19yaW5nOw0KPiA+Pj4+Pj4+ICsJdm9sYXRpbGUgdm9p ZCAqdHhfcmluZzsNCj4gPj4+Pj4+PiArCXVpbnQxNl90ICp0eF9uZXh0X2RkOw0KPiA+Pj4+Pj4+ ICsJdWludDE2X3QgKm5iX3R4X2ZyZWU7DQo+ID4+Pj4+Pj4gKwl1aW50MTZfdCBuYl90eF9kZXNj Ow0KPiA+Pj4+Pj4+ICsJdWludDE2X3QgdHhfcnNfdGhyZXNoOw0KPiA+Pj4+Pj4+ICsJdWludDE2 X3QgdHhfZnJlZV90aHJlc2g7DQo+ID4+Pj4+Pj4gK30gX19ydGVfY2FjaGVfbWluX2FsaWduZWQ7 DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IGZpcnN0IG9mIGFsbCBpdCBpcyBub3Qg Y2xlYXIgd2h5IHRoaXMgc3RydWN0IGhhcyB0byBiZSBpbiBwdWJsaWMNCj4gPj4+Pj4+IGhlYWRl ciwgd2h5IGl0IGNhbid0IGJlIGluIG9uIG9mIGV0aGRldiAncHJpdmF0ZScgaGVhZGVycy4NCj4g Pj4+Pj4+IFNlY29uZCBpdCBsb29rcyBsaWtlIGEgc25pcHBldCBmcm9tIHByaXZhdGUgdHhxIGZp ZWxkcyBmb3Igc29tZQ0KPiA+Pj4+Pj4gSW50ZWwgKGFuZCBhbGlrZSkgUE1EcyAoaTQwZSwgaWNl LCBldGMuKS4NCj4gPj4+Pj4+IEhvdyBpdCBzdXBwb3NlZCB0byB0byBiZSB1bml2ZXJzYWwgYW5k IGJlIGFwcGxpY2FibGUgZm9yIGFueSBQTUQNCj4gPj4+Pj4+IHRoYXQgZGVjaWRlcyB0byBpbXBs ZW1lbnQgdGhpcyBuZXcgQVBJPw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4gICAgICAv KiBHZW5lcmljIEJ1cnN0IG1vZGUgZmxhZyBkZWZpbml0aW9uLCB2YWx1ZXMgY2FuIGJlIE9SZWQu DQo+ID4+Pj4+Pj4gKi8NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ICAgICAgLyoqDQo+ID4+Pj4+Pj4g QEAgLTQ3MTgsNiArNDczNSwyNyBAQCBpbnQNCj4gcnRlX2V0aF9yZW1vdmVfcnhfY2FsbGJhY2so dWludDE2X3QNCj4gPj4+Pj4+IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+Pj4+Pj4+ ICAgICAgaW50IHJ0ZV9ldGhfcmVtb3ZlX3R4X2NhbGxiYWNrKHVpbnQxNl90IHBvcnRfaWQsIHVp bnQxNl90DQo+ID4+IHF1ZXVlX2lkLA0KPiA+Pj4+Pj4+ICAgICAgCQljb25zdCBzdHJ1Y3QgcnRl X2V0aF9yeHR4X2NhbGxiYWNrICp1c2VyX2NiKTsNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ICsvKioN Cj4gPj4+Pj4+PiArICogR2V0IHRoZSBhZGRyZXNzIHdoaWNoIFR4IGRhdGEgaXMgc3RvcmVkLg0K PiA+Pj4+Pj4+ICsgKg0KPiA+Pj4+Pj4+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+Pj4+Pj4+ICsg KiAgIFRoZSBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIEV0aGVybmV0IGRldmljZS4NCj4gPj4+Pj4+ PiArICogQHBhcmFtIHF1ZXVlX2lkDQo+ID4+Pj4+Pj4gKyAqICAgVGhlIFR4IHF1ZXVlIG9uIHRo ZSBFdGhlcm5ldCBkZXZpY2UgZm9yIHdoaWNoIGluZm9ybWF0aW9uDQo+ID4+Pj4+Pj4gKyAqICAg d2lsbCBiZSByZXRyaWV2ZWQuDQo+ID4+Pj4+Pj4gKyAqIEBwYXJhbSB0eHFfZGF0YQ0KPiA+Pj4+ Pj4+ICsgKiAgIEEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBvZiB0eXBlICpydGVfZXRoX3R4cV9k YXRhKiB0byBiZQ0KPiBmaWxsZWQuDQo+ID4+Pj4+Pj4gKyAqDQo+ID4+Pj4+Pj4gKyAqIEByZXR1 cm4NCj4gPj4+Pj4+PiArICogICAtIDA6IFN1Y2Nlc3MNCj4gPj4+Pj4+PiArICogICAtIC1FTk9E RVY6ICBJZiAqcG9ydF9pZCogaXMgaW52YWxpZC4NCj4gPj4+Pj4+PiArICogICAtIC1FTk9UU1VQ OiByb3V0aW5lIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSBQTUQuDQo+ID4+Pj4+Pj4g KyAqICAgLSAtRUlOVkFMOiAgVGhlIHF1ZXVlX2lkIGlzIG91dCBvZiByYW5nZS4NCj4gPj4+Pj4+ PiArICovDQo+ID4+Pj4+Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+Pj4+Pj4+ICtpbnQgcnRl X2V0aF90eF9xdWV1ZV9kYXRhX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdA0KPiA+PiBx dWV1ZV9pZCwNCj4gPj4+Pj4+PiArCQlzdHJ1Y3QgcnRlX2V0aF90eHFfZGF0YSAqdHhxX2RhdGEp Ow0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiAgICAgIC8qKg0KPiA+Pj4+Pj4+ICAgICAgICogUmV0 cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgZ2l2ZW4gcG9ydCdzIFJ4IHF1ZXVlLg0KPiA+Pj4+Pj4+ ICAgICAgICoNCj4gPj4+Pj4+PiBAQCAtNjIwOSw2ICs2MjQ3LDYzIEBAIHJ0ZV9ldGhfdHhfYnVm ZmVyKHVpbnQxNl90IHBvcnRfaWQsDQo+ID4+Pj4+Pj4gdWludDE2X3QNCj4gPj4+Pj4+IHF1ZXVl X2lkLA0KPiA+Pj4+Pj4+ICAgICAgCXJldHVybiBydGVfZXRoX3R4X2J1ZmZlcl9mbHVzaChwb3J0 X2lkLCBxdWV1ZV9pZCwgYnVmZmVyKTsNCj4gPj4+Pj4+PiAgICAgIH0NCj4gPj4+Pj4+Pg0KPiA+ Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiArICogQHdhcm5pbmcNCj4gPj4+Pj4+PiArICogQGIgRVhQ RVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLA0KPiB3aXRob3V0 DQo+ID4+Pj4+Pj4gK3ByaW9yIG5vdGljZQ0KPiA+Pj4+Pj4+ICsgKg0KPiA+Pj4+Pj4+ICsgKiBQ dXQgVHggYnVmZmVycyBpbnRvIFJ4IHN3LXJpbmcgYW5kIHJlYXJtIGRlc2NzLg0KPiA+Pj4+Pj4+ ICsgKg0KPiA+Pj4+Pj4+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+Pj4+Pj4+ICsgKiAgIFBvcnQg aWRlbnRpZnlpbmcgdGhlIHJlY2VpdmUgc2lkZS4NCj4gPj4+Pj4+PiArICogQHBhcmFtIHF1ZXVl X2lkDQo+ID4+Pj4+Pj4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSB0cmFuc21pdCBxdWV1ZSBpZGVu dGlmeWluZyB0aGUgcmVjZWl2ZSBzaWRlLg0KPiA+Pj4+Pj4+ICsgKiAgIFRoZSB2YWx1ZSBtdXN0 IGJlIGluIHRoZSByYW5nZSBbMCwgbmJfcnhfcXVldWUgLSAxXSBwcmV2aW91c2x5DQo+ID4+Pj4+ PiBzdXBwbGllZA0KPiA+Pj4+Pj4+ICsgKiAgIHRvIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpLg0K PiA+Pj4+Pj4+ICsgKiBAcGFyYW0gdHhxX2RhdGENCj4gPj4+Pj4+PiArICogICBBIHBvaW50ZXIg dG8gYSBzdHJ1Y3R1cmUgb2YgdHlwZSAqcnRlX2V0aF90eHFfZGF0YSogdG8gYmUNCj4gZmlsbGVk Lg0KPiA+Pj4+Pj4+ICsgKiBAcmV0dXJuDQo+ID4+Pj4+Pj4gKyAqICAgVGhlIG51bWJlciBvZiBk aXJlY3QtcmVhcm1lZCBidWZmZXJzLg0KPiA+Pj4+Pj4+ICsgKi8NCj4gPj4+Pj4+PiArX19ydGVf ZXhwZXJpbWVudGFsDQo+ID4+Pj4+Pj4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHVpbnQx Nl90DQo+ID4+Pj4+Pj4gK3J0ZV9ldGhfcnhfZGlyZWN0X3JlYXJtKHVpbnQxNl90IHBvcnRfaWQs IHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+Pj4+Pj4+ICsJCXN0cnVjdCBydGVfZXRoX3R4cV9kYXRh ICp0eHFfZGF0YSkgew0KPiA+Pj4+Pj4+ICsJdWludDE2X3QgbmJfcmVhcm07DQo+ID4+Pj4+Pj4g KwlzdHJ1Y3QgcnRlX2V0aF9mcF9vcHMgKnA7DQo+ID4+Pj4+Pj4gKwl2b2lkICpxZDsNCj4gPj4+ Pj4+PiArDQo+ID4+Pj4+Pj4gKyNpZmRlZiBSVEVfRVRIREVWX0RFQlVHX1JYDQo+ID4+Pj4+Pj4g KwlpZiAocG9ydF9pZCA+PSBSVEVfTUFYX0VUSFBPUlRTIHx8DQo+ID4+Pj4+Pj4gKwkJCXF1ZXVl X2lkID49IFJURV9NQVhfUVVFVUVTX1BFUl9QT1JUKQ0KPiA+PiB7DQo+ID4+Pj4+Pj4gKwkJUlRF X0VUSERFVl9MT0coRVJSLA0KPiA+Pj4+Pj4+ICsJCQkiSW52YWxpZCBwb3J0X2lkPSV1IG9yIHF1 ZXVlX2lkPSV1XG4iLA0KPiA+Pj4+Pj4+ICsJCQlwb3J0X2lkLCBxdWV1ZV9pZCk7DQo+ID4+Pj4+ Pj4gKwkJcmV0dXJuIDA7DQo+ID4+Pj4+Pj4gKwl9DQo+ID4+Pj4+Pj4gKyNlbmRpZg0KPiA+Pj4+ Pj4+ICsNCj4gPj4+Pj4+PiArCXAgPSAmcnRlX2V0aF9mcF9vcHNbcG9ydF9pZF07DQo+ID4+Pj4+ Pj4gKwlxZCA9IHAtPnJ4cS5kYXRhW3F1ZXVlX2lkXTsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4g KyNpZmRlZiBSVEVfRVRIREVWX0RFQlVHX1JYDQo+ID4+Pj4+Pj4gKwlSVEVfRVRIX1ZBTElEX1BP UlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIDApOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArCWlm IChxZCA9PSBOVUxMKSB7DQo+ID4+Pj4+Pj4gKwkJUlRFX0VUSERFVl9MT0coRVJSLCAiSW52YWxp ZCBSeCBxdWV1ZV9pZD0ldSBmb3INCj4gPj4+Pj4+IHBvcnRfaWQ9JXVcbiIsDQo+ID4+Pj4+Pj4g KwkJCXF1ZXVlX2lkLCBwb3J0X2lkKTsNCj4gPj4+Pj4+PiArCQlyZXR1cm4gMDsNCj4gPj4+Pj4+ PiArCX0NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKwlpZiAoIXAtPnJ4X2RpcmVjdF9yZWFybSkN Cj4gPj4+Pj4+DQo+ID4+Pj4+PiBUaGlzIGNoZWNrIHNob3VsZCBiZSBkb25lIGFsd2F5cyAodW5j b25kaXRpb25hbGx5KS4NCj4gPj4+Pj4+IGl0IGlzIG5vdCBhIG1hbmRhdG9yeSBmdW5jdGlvbiBm b3IgdGhlIGRyaXZlciAoaXQgY2FuIHNhZmVseSBza2lwDQo+ID4+Pj4+PiB0bw0KPiA+Pj4+IGlt cGxlbWVudCBpdCkuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+ICsJCXJldHVybiAtRU5PVFNVUDsNCj4g Pj4+Pj4+DQo+ID4+Pj4+PiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdWludDE2X3QsIHdoeSBzaWdu ZWQgaW50ZWdlcnMgaGVyZT8NCj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+ICsjZW5kaWYN Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKwluYl9yZWFybSA9IHAtPnJ4X2RpcmVjdF9yZWFybShx ZCwgdHhxX2RhdGEpOw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFNvIHJ4X2RpcmVjdF9yZWFybSgpIGZ1 bmN0aW9uIGtub3dzIGhvdyB0byBleHRyYWN0IGRhdGEgZnJvbSBUWA0KPiA+PiBxdWV1ZT8NCj4g Pj4+Pj4+IEFzIEkgdW5kZXJzdGFuZCB0aGF0IGlzIHBvc3NpYmxlIG9ubHkgaW4gb25lIGNhc2U6 DQo+ID4+Pj4+PiByeF9kaXJlY3RfcmVhcm0oKSBoYXMgZnVsbCBrbm93bGVkZ2UgYW5kIGFjZXNz IG9mIHR4cSBpbnRlcm5hbHMsIGV0Yy4NCj4gPj4+Pj4+IFRoYXQgbWVhbnMgdGhhdCByeHEgYW5k IHR4cSBoYXZlIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBkcml2ZXIgYW5kDQo+ID4+Pj4+PiBkZXZp Y2UgdHlwZS4NCj4gPj4+Pj4+DQo+ID4+Pj4+IFRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLCBhbmQg SSBoYXZlIHNvbWUgcXVlc3Rpb25zIGZvciB0aGlzLg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gRmlyc3Qg b2YgYWxsLCBJIHN0aWxsIHRoaW5rIGl0IGlzIG5vdCB0aGUgYmVzdCBkZXNpZ24gY2hvaWNlLg0K PiA+Pj4+Pj4gSWYgd2UgZ29pbmcgYWhlYWQgd2l0aCBpbnRyb2R1Y2luZyB0aGlzIGZlYXR1cmUs IGl0IGJldHRlciBiZSBhcw0KPiA+Pj4+Pj4gZ2VuZXJpYyBhcyBwb3NzaWJsZS4NCj4gPj4+Pj4+ IFBsdXMgaXQgbWl4ZXMgVFggYW5kIFJYIGNvZGUtcGF0aHMgdG9nZXRoZXIsIHdoaWxlIGl0IHdv dWxkIGJlDQo+ID4+Pj4+PiBtdWNoIGJldHRlciB0byB0byBrZWVwIHRoZW0gaW5kZXBlbmRlbnQg YXMgdGhleSBhcmUgcmlnaHQgbm93Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEFub3RoZXIgdGhpbmcg d2l0aCBzdWNoIGFwcHJvYWNoIC0gZXZlbiBmb3IgdGhlIHNhbWUgUE1ELCBib3RoDQo+ID4+Pj4+ PiBUWFEgYW5kIFJYUSBjYW4gaGF2ZSBkaWZmZXJlbnQgaW50ZXJuYWwgZGF0YSBmb3JtYXQgYW5k IGJlaGF2aW9yDQo+ID4+Pj4+PiBsb2dpYyAoZGVwZW5kaW5nIG9uIHBvcnQvcXVldWUgY29uZmln dXJhdGlvbikuDQo+ID4+Pj4+IDEuIEhlcmUgVFhRIGFuZCBSWFEgaGF2ZSBkaWZmZXJlbnQgaW50 ZXJuYWwgZm9ybWF0IG1lYW5zIHRoZSBxdWV1ZQ0KPiA+Pj4+PiB0eXBlIGFuZCAgZGVzY3MgY2Fu IGJlIGRpZmZlcmVudCwgcmlnaHQ/IElmIEkgdW5kZXJzdGFuZA0KPiA+Pj4+PiBjb3JyZWN0bHks IGJhc2VkIG9uIHlvdXIgZmlyc3Qgc3RyYXRlZ3ksIGlzIGl0IG1lYW5zIHdlIHdpbGwgbmVlZA0K PiA+Pj4+PiBkaWZmZXJlbnQgJ3JlYXJtX2Z1bmMnIGZvciBkaWZmZXJlbnQgcXVldWUgdHlwZSBp biB0aGUgc2FtZSBQTUQ/DQo+ID4+Pj4NCj4gPj4+PiBZZXMsIEkgdGhpbmsgc28uDQo+ID4+Pj4g SWYgbGV0IHNheSB3ZSBoYXZlIHNvbWUgUE1EIHdoZXJlIGRlcGVuZGluZyBvbiB0aGUgY29uZmln LCB0aGVyZQ0KPiA+Pj4+IGNwdWxkIGJlDQo+ID4+Pj4gMiBkaWZmZXJlbnQgUlhRIGZvcm1hdHM6 IHJ4cV9hIGFuZCByeHFfYiwgYW5kIDIgZGlmZmVyZW50IHR4cQ0KPiA+Pj4+IGZvcm1hdHM6IHR4 cV9jLCB0eHFfZC4NCj4gPj4+PiBUaGVuIGFzc3VtaW5nIFBNRCB3b3VsZCBsaWtlIHRvIHN1cHBv cnQgZGlyZWN0LXJlYXJtIG1vZGUgZm9yIGFsbA0KPiA+Pj4+IGZvdXIgY29tYmluYXRpb25zLCBp dCBuZWVkcyA0IGRpZmZlcmVudCByZWFybSBmdW5jdGlvbnM6DQo+ID4+Pj4NCj4gPj4+PiByZWFy bV90eHFfY190b19yeHFfYSgpDQo+ID4+Pj4gcmVhcm1fdHhxX2NfdG9fcnhxX2IoKQ0KPiA+Pj4+ IHJlYXJtX3R4cV9kX3RvX3J4cV9hKCkNCj4gPj4+PiByZWFybV90eHFfZF90b19yeHFfYigpDQo+ ID4+Pj4NCj4gPj4+IFRoYW5rIHlvdSBmb3IgeW91ciBkZXRhaWxlZCBleHBsYW5hdGlvbiwgSSBj YW4gdW5kZXJzdGFuZCB0aGlzLg0KPiA+DQo+ID4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4+IFNvIHJ4 X2RpcmVjdF9yZWFybSgpIGZ1bmN0aW9uIHNlbGVjdGlvbiBoYXZlIHRvIGJlIGRvbmUgYmFzZWQg b24NCj4gPj4+Pj4+IGJvdGggUlhRIGFuZCBUWFEgY29uZmlnLg0KPiA+Pj4+Pj4gU28gaW5zdGVh ZCBvZiBydGVfZXRoX3R4X3F1ZXVlX2RhdGFfZ2V0KCksIHlvdSdsbCBwcm9iYWJseSBuZWVkOg0K PiA+Pj4+Pj4gZXRoX3J4X2RpcmVjdF9yZWFybV90IHJ0ZV9ldGhfZ2V0X3J4X2RpcmVjdF9yZWFy bV9mdW5jKHJ4X3BvcnQsDQo+ID4+Pj4+PiByeF9xdWV1ZSwgdHhfcG9ydCwgdHhfcXVldWUpOw0K PiA+Pj4+Pj4gVGhlbiwgaXQgd2lsbCBiZSB1c2VyIHJlc3BvbnNpYmlsaXR5IHRvIHN0b3JlIGl0 IHNvbWV3aGVyZSBhbmQNCj4gPj4+Pj4+IGNhbGwNCj4gPj4+PiBwZXJpb2RpY2FsbHk6DQo+ID4+ Pj4+Pg0KPiA+Pj4+Pj4gY29udHJvbF9wYXRoOg0KPiA+Pj4+Pj4gCS4uLg0KPiA+Pj4+Pj4gCXJl YXJtX2Z1bmMgPSBydGVfZXRoX2dldF9yeF9kaXJlY3RfcmVhcm1fZnVuYyhyeHBvcnQsDQo+IHJ4 cXVldWUsDQo+ID4+Pj4+PiAJCSB0eHBvcnQsIHR4cXVldWUpOw0KPiA+Pj4+Pj4gZGF0YS1wYXRo Og0KPiA+Pj4+Pj4gCXdoaWxlKC4uLikgew0KPiA+Pj4+Pj4gCQlyZWFybV9mdW5jKHJ4cG9ydCwg dHhwb3J0LCByeHF1ZXVlLCB0eHF1ZXVlKTsNCj4gPj4+Pj4+IAkJcnRlX2V0aF9yeF9idXJzdChy eHBvcnQsIHJ4cXVldWUsIC4uLi4pOw0KPiA+Pj4+Pj4gCQlydGVfZXRoX3R4X2J1cnN0KHR4cG9y dCwgdHhxdWV1ZSwgLi4uLik7DQo+ID4+Pj4+PiAJfQ0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+ Pj4+PiBJbiB0aGF0IGNhc2UgdGhlcmUgc2VlbXMgYWJzb2x1dGVseSBubyBwb2ludCB0byBpbnRy b2R1Y2Ugc3RydWN0DQo+ID4+Pj4+PiBydGVfZXRoX3R4cV9kYXRhLiByeF9kaXJlY3RfcmVhcm0o KSBhY2Nlc3NlcyBUWFEgcHJpdmF0ZSBkYXRhDQo+ID4+Pj4+PiBkaXJlY3RseSBhbnl3YXkuDQo+ ID4+Pj4+IDIuIFRoaXMgaXMgYSB2ZXJ5IGdvb2QgcHJvcG9zYWwgYW5kIGl0IHdpbGwgYmUgb3Vy IGZpcnN0IGNob2ljZS4NCj4gPj4+Pj4gQmVmb3JlIHdvcmtpbmcgb24gaXQsIEkgaGF2ZSBhIGZl dyBxdWVzdGlvbnMgYWJvdXQgaG93IHRvDQo+ID4+Pj4+IGltcGxlbWVudA0KPiA+Pj4+ICdyZWFy bV9mdW5jJy4NCj4gPj4+Pj4gTGlrZSB5b3Ugc2F5IGFib3ZlLCBtaXhlZCBSeCBhbmQgVHggcGF0 aCBjb2RlIGluICdyZWFybV9mdW5jJw0KPiA+Pj4+PiBtZWFucyB0aGUgaGFyZC1jb2RlIGlzIG1p eGVkIGxpa2U6DQo+ID4+Pj4+IHJlYXJtX2Z1bmMoLi4uKSB7DQo+ID4+Pj4+ICAgICAgICAgLi4u DQo+ID4+Pj4+ICAgICAgICB0eGVwID0gJnR4cS0+c3dfcmluZ1t0eHEtPnR4X25leHRfZGQgLSAo dHhxLT50eF9yc190aHJlc2ggLSAxKV07DQo+ID4+Pj4+ICAgICAgICBmb3IgKC4uLikgew0KPiA+ Pj4+PiAgICAgICAgICAgcnhlcFtpXS5tYnVmID0gdHhlcFtpXS5tYnVmOw0KPiA+Pj4+PiAgICAg ICAgICAgbWIwID0gdHhlcFtpXS5tYnVmOw0KPiA+Pj4+PiAgICAgICAgICAgcGFkZHIgPSBtYjAt PmJ1Zl9pb3ZhICsgUlRFX1BLVE1CVUZfSEVBRFJPT007DQo+ID4+Pj4+ICAgICAgICAgIGRtYV9h ZGRyMCA9IHZkdXBxX25fdTY0KHBhZGRyKTsNCj4gPj4+Pj4gICAgICAgICAgdnN0MXFfdTY0KCh1 aW50NjRfdCAqKSZyeGRwKystPnJlYWQsIGRtYV9hZGRyMCk7DQo+ID4+Pj4+ICAgICAgICB9DQo+ ID4+Pj4+IH0NCj4gPj4+Pj4gSXMgbXkgdW5kZXJzdGFuZGluZyBpcyByaWdodD8NCj4gPj4+Pg0K PiA+Pj4+DQo+ID4+Pj4gU29ycnksIEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgcXVlc3Rpb24uDQo+ ID4+Pj4gQ2FuIHlvdSBwcm9iYWJseSBlbGFib3JhdGUgYSBiaXQ/DQo+ID4+Pg0KPiA+Pj4gU29y cnkgZm9yIG15IHVuY2xlYXIgZXhwcmVzc2lvbi4NCj4gPj4+DQo+ID4+PiBJIG1lYW4gaWYgd2Ug bmVlZCB0d28gZnVuYyB3aGljaCBjb250YWlucyB0eCBhbmQgcnggcGF0aHMgY29kZQ0KPiA+PiBy ZXNwZWN0aXZlbHkgaW4gcmVhcm1fZnVuYywgbGlrZToNCj4gPj4+IHJlYXJtX2Z1bmMoLi4uKSB7 DQo+ID4+PiAgICAgICAgICAgIHJ0ZV90eF9maWxsX3N3X3Jpbmc7DQo+ID4+PiAgICAgICAgICAg IHJ0ZV9yeF9yZWFybV9kZXNjczsNCj4gPj4+IH0NCj4gPj4+DQo+ID4+PiBPciBqdXN0IG1peGVk IHR4IGFuZCByeCBwYXRoIGNvZGUgbGlrZSBJIHNhaWQgYmVmb3JlLiBJIHByZWZlciAncngNCj4g Pj4+IGFuZCB0eCBoYXJkIGNvZGUgbWl4ZWQnLCBiZWNhdXNlIGZyb20gdGhlIHBlcmZvcm1hbmNl IHBlcnNwZWN0aXZlLA0KPiA+Pj4gdGhpcyBjYW4NCj4gPj4gcmVkdWNlIHRoZSBjb3N0IG9mIGZ1 bmN0aW9uIGNhbGxzLg0KPiA+Pg0KPiA+PiBJIHN1cHBvc2UgaXQgZGVwZW5kcyBvbiB3aGF0IHdl IGNob29zZToNCj4gPj4gSWYgd2UgcmVzdHJpY3QgaXQgaW4gYSB3YXkgdGhhdCByeHEgYW5kIHR4 cSBoYXZlIHRvIGJlbG9uZyB0byB0aGUNCj4gPj4gc2FtZSBQTUQsIHRoZW4gSSBzdXBwb3NlIHRo aXMgZGVjaXNpb24gY291bGQgYmUgbGVmdCB0byBlYWNoIHBhcnRpY3VsYXINCj4gUE1ELg0KPiA+ PiBJZiB3ZSdkIGxpa2UgdG8gYWxsb3cgcmVhcm0gdG8gd29yayBhY2Nyb3NzIGRpZmZlcmVudCBQ TURzIChpLmUuIGl0DQo+ID4+IHdvdWxkIGFsbG93IHRvIHJlYXJtIG1seCB3aXRoIGljZSBhbmQg dmlzYS12ZXJzYSksIHRoZW4geWVzIHdlIG5lZWQNCj4gPj4gUE1EcyBzb21laG93IHRvIGV4cG9z ZSByeF9zd19yaW5nIGFic3RyYWN0aW9uIHRvIGVhY2ggb3RoZXIuDQo+ID4+IE15IHByZWZlcmVu Y2Ugd291bGQgYmUgdGhlIHNlY29uZCBvbmUgLSBhcyBpdCB3aWxsIG1ha2UgdGhpcyBmZWF0dXJl DQo+ID4+IG1vcmUgZmxleGlibGUgYW5kIHdvdWxkIGhlbHAgdG8gYWRvcHQgaXQgbW9yZSB3aWRl bHkuDQo+ID4+IFRob3VnaCB0aGUgZmlyc3Qgb25lIGlzIHByb2JhYmx5IGVhc2llciB0byBpbXBs ZW1lbnQsIGFuZCBhcyBJDQo+ID4+IHVkbmVyc3RhbmQgeW91IGFyZSBsZWFuaW5nIHRvd2FyZHMg dGhlIGZpcnN0IG9uZS4NCj4gPj4NCj4gPj4gS29uc3RhbnRpbg0KPiA+DQo+ID4gSGksIEtvbnN0 YW50aW4NCj4gPg0KPiA+IDEuIEFmdGVyIGZ1cnRoZXIgY29uc2lkZXJhdGlvbiwgSSB0aGluayB3 ZSBzaG91bGQgZ2l2ZSB1cA0KPiAncnRlX2V0aF9nZXRfcnhfZGlyZWN0X3JlYXJtJyAgZnVuY3Rp b25zLg0KPiA+ICAgQW5kIGp1c3Qga2VlcCBvbmUgQVBJICdydGVfZXRoX2RpcmVjdF9yZWFybScg d2hpY2ggY29udGFpbnMgZGlmZmVyZW50DQo+IHF1ZXVlIHR5cGVzIHBhdGggaW4gdGhlIHBtZCBk cml2ZXIuDQo+ID4NCj4gPiBUaGlzIGlzIGR1ZSB0byB0aGF0IGFwcGxpY2F0aW9uIGNhbiBkeW5h bWljYWxseSBjb25maWd1cmUNCj4gPiBxdWV1ZS1tYXBwaW5nIGluIHRoZSBkYXRhIHBhdGgsIGFu ZCB0aHVzIGV4cGFuZCBkaXJlY3QtcmVhcm0gdXNhZ2UNCj4gPiBzY2VuYXJpb3MgYmFzZWQgb24g dGhpcyB3YXkuIEZvciBleGFtcGxlLCBjb25zaWRlciBhIGZsb3cgd2hpY2gNCj4gPiByZWNlaXZl ZCBieSBvbmUgcnhfcXVldWUocnhxXzEpIGFuZCBzZW50IGJ5IHR3byBkaWZmZXJlbnQgdHlwZXMN Cj4gdHhfcXVldWVzKCB0eXBlX2EgdHhxXzEgYW5kIHR5cGVfYiB0eHFfMiksIFVzZXJzIGNhbiBk eW5hbWljYWxseSBtYXANCj4gZGlyZWN0X3JlYXJtIGFjY29yZGluZyB0byB0eCBwYXRoLg0KPiAN Cj4gVGhhdCdzIGdvb2QgcG9pbnQsIGluZGVlZCBmb3Igc3VjaCBjYXNlIHNwZWNpYWwgZnVuY3Rp b24gcG9pbnRlciBkb2Vzbid0IGxvb2sNCj4gdmVyeSBjb252ZW5pZXQuDQo+IEkgc3RpbGwgdGhp bmsgdGhhdCB0aGUgYmVzdCB3YXkgdG8gZGVhbCB3aXRoIG11bHRpcGxlIHNvdXJjZXMgd291bGQg YmUgdG8NCj4gZXhwb3NlIHNvbWUgc29ydCBvZiByeF9zd19yaW5nIGFic3RyYWN0aW9uLg0KPiBU aGVuIGl0IGNvdWxkIGJlIG9idGFpZW5kIG9uY2UgYW5kIHBhc3NlZCBhcyBhIHBhcmFtdGVyIHRv IGFjdHVhbCByZWFybQ0KPiBmdW5jdGlvbi4NCj4gSW4gdGhhdCBjYXNlLCB1c2VyIGNhbiBldmVu IHJlLWFybSBSWCBxdWV1ZSBub3QgZnJvbSBUWCBxdWV1ZSBvbmx5LCBidXQNCj4gZnJvbSBvdGhl ciBzb3VyY2VzIHRvbyAoZnJlZWQgbWJ1ZnMsIGV0Yy4pLg0KPiBBcyBJIHVuZGVyc3RhbmQgd2hh dCB5b3Ugc3VnZ2VzdCBpcyBvbmUgdW5pZmllZCBmdW5jdGlvbjoNCj4gaW50IHJ0ZV9ldGhfcnhf ZGlyZWN0X3JlYXJtKHJ4X3BvcnQsIHJ4X3F1ZXVlLCB0eF9wb3J0LCB0eF9xdWV1ZSksIGNvcnJl Y3Q/DQo+IEkgYW0gbm90IGFnYWluc3QgaXQgaW4gcHJpbmNpcGxlLCBidXQgZG9lcyBpdCBtZWFu IGF0IGVhY2ggaW52b2NhdGlvbiwgaW5zaWRlDQo+IFBNRCBsYXllciwgZmlyc3QgdGhpbmcgeW91 IHdvdWxkIGhhdmUgdG8gZG8gLSBjaGVjayB0aGF0IHJ4X3F1ZXVlIGFuZA0KPiB0eF9xdWV1ZSBh cmUgZnJvbSB0aGUgc2FtZSBkZXZpY2UgdHlwZSBhbmQgc2VsZWN0IHByb3BlciBiZWhhdmlvdXIg KGZvcg0KPiBkaWZmZXJlbnQgcXVldWUgY29uZmlncyk/DQoNClNvcnJ5IGZvciBteSBsYXRlIHJl cGx5LiBXZSBqdXN0IHVzZWQgZGlyZWN0LXJlYXJtIHRvIGRlYWwgd2l0aCBtdWx0aXBsZSBzb3Vy Y2VzIGJ5IGV4cG9zZQ0Kc29tZSBzb3J0IG9mIHJ4X3N3X3JpbmcgYWJzdHJhY3Rpb24uIChGb3Ig ZXhhbXBsZSwgUng6IGl4Z2JlICAgVHg6aTQwZSnvvJoNCmh0dHA6Ly9wYXRjaGVzLmRwZGsub3Jn L3Byb2plY3QvZHBkay9jb3Zlci8yMDIzMDEwNDA3MzA0My4xMTIwMTY4LTEtZmVpZmVpLndhbmcy QGFybS5jb20vDQpGb2xsb3dpbmcgYXJlIHRoZSAgdGVzdCByZXN1bHRzOg0KKDEpIGRwZGsgbDNm d2QgdGVzdCB3aXRoIG11bHRpcGxlIGRyaXZlcnM6ICBwb3J0IDA6IDgyNTk5IE5JQyAgIHBvcnQg MTogWEw3MTAgTklDDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQoJCVdpdGhvdXQgZmFzdCBmcmVlCVdpdGggZmFzdCBmcmVlDQpUaHVuZGVyeDI6ICAgICAg ICAgKzkuNDQlCQkJKzcuMTQlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQoNCigyKSBkcGRrIGwzZndkIHRlc3Qgd2l0aCBzYW1lIGRyaXZlcjogcG9ydCAw ICYmIDEgWEw3MTAgTklDDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQoqRGlyZWN0IHJlYXJtIHdpdGggZXhwb3Npbmcgcnhfc3dfcmluZzoNCgkJV2l0aG91 dCBmYXN0IGZyZWUJV2l0aCBmYXN0IGZyZWUNCkFtcGVyZSBhbHRyYTogICAgICsxNC45OCUJCSsx NS43NyUNCm4xc2RwOgkJICs2LjQ3JQkJCSswLjUyJQ0KDQoqRGlyZWN0IHJlYXJtIHdpdGggb25l IHVuaWZpZWQgZnVuY3Rpb24gKGNvbW11bml0eSBwYXRjaCk6DQoJCVdpdGhvdXQgZmFzdCBmcmVl CVdpdGggZmFzdCBmcmVlDQpBbXBlcmUgYWx0cmE6ICAgICArMTcuMTglCQkrMTYuOTIlDQpuMXNk cDoJCSArMTUuMDklCQkrNC4yJQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KDQooMykgVlBQIHRlc3Qgd2l0aCBzYW1lIGRyaXZlcjogcG9ydCAwICYmIDEg WEw3MTAgTklDDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQoqRGlyZWN0IHJlYXJtIHdpdGggZXhwb3Npbmcgcnhfc3dfcmluZzoNCkFtcGVyZSBhbHRyYTog ICAgICs0LjU5JQ0KbjFzZHA6CQkgKzUuNCUNCg0KKkRpcmVjdCByZWFybSB3aXRoIG9uZSB1bmlm aWVkIGZ1bmN0aW9uIChjb21tdW5pdHkgcGF0Y2gpOg0KQW1wZXJlIGFsdHJhOiAgICAgKzQuNTAl DQpuMXNkcDoJCSArNC41JQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KQWNjb3JkaW5nIHRvIHRoZSB0ZXN0IHJlc3VsdHMsIHdlIGNhbiBzZWUgZGlyZWN0 LXJlYXJtIG1vZGUgYnkgZXhwb3NlIHJ4X3N3X3JpbmcgY2FuDQppbXByb3ZlIHRoZSBwZXJmb3Jt YW5jZSBzaWduaWZpY2FudGx5IGZvciB0aGUgc2FtZSBkcml2ZXIgYW5kIGRpZmZlcmVudCBkcml2 ZXIuDQoNCkNvbXBhcmVkIHdpdGggZGlyZWN0LXJlYXJtIHdpdGggb25lIHVuaWZpZWQgZnVuY3Rp b24gaW4gY29tbXVuaXR5LCB0aGVyZSB3aWxsIGJlIHNvbWUNCnBlcmZvcm1hbmNlIGRlZ3JhZGF0 aW9uIGluIG4xc2RwIGZvciBuZXcgZGlyZWN0LXJlYXJtIG1vZGUuIFRoaXMgaXMgZHVlIHRvIHdl IHNlcGFyYXRlIGZpbGwgc3dfcmluZw0KYW5kIGZsdXNoIGRlc2NyaXB0b3JzIG9wZXJhdGlvbiB3 aGljaCBtYXkgaW5jcmVhc2UgY2FjaGUtbWlzc2VzLiBGb3Igb3RoZXIgc2VydmVycywgcGVyZm9y bWFuY2UgaXMgT2suDQpJIHRoaW5rIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGluIG4xc2RwIGNh biBiZSBhY2hpZXZlZCBhbmQgbmV3IHNjaGVtZSBjYW4gYnJpbmcgYmV0dGVyIGV4cGFuc2liaWxp dHkuDQoNCkJlc3QgUmVnYXJkcw0KRmVpZmVpDQo+IA0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAt LS0tLS0tLS0tLS0tLS0tDQo+ID4gcnRlX2V0aF9yeF9idXJzdChyeHFfMSk7DQo+ID4NCj4gPiAl cm91dGluZyB0YWJsZSBsb29rdXAgdG8gZGVjaWRlIHR4IHF1ZXVlJSB0eHFfbiA9IHR4cV8xIG9y IHR4cV8yPw0KPiA+DQo+ID4gcnRlX2V0aF90eF9idXJzdCh0eHFfbik7DQo+ID4gcnRlX2V0aF9k aXJlY3RfcmVhcm0odHhxX24pOw0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAtLS0tLS0tLS0tLS0t LS0tIFRodXMsIHRoaXMgY2FuIGF2b2lkIHJlcGVhdGVkbHkgY2FsbGluZw0KPiA+ICdydGVfZXRo X2dldF9yeF9kaXJlY3RfcmVhcm0nIGluIHRoZSBkYXRhIHBhdGggdG8gcmVkdWNlIHBlcmZvcm1h bmNlLg0KPiA+DQo+ID4gRnVydGhlcm1vcmUsIHJ0ZV9ldGhfZGlyZWN0X3JlYXJtIGNhbiBiZSBp bXBsZW1lbnRlZCBhczoNCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gLS0tLS0tLS0tLS0tLS0tLSBy dGVfZXRoX2RpcmVjdF9yZWFybSA9IGk0MGVfZXRoX2RpcmVjdF9yZWFybTsNCj4gPiBpNDBlX2V0 aF9kaXJlY3RfcmVhcm0gew0KPiA+IAlyZWFybV9xdWV1ZV9jb25maWdfYSBwYXRoOw0KPiA+IAly ZWFybV9xdWV1ZV9jb25maWdfYiBwYXRoOw0KPiA+IAlyZWFybV9xdWV1ZV9jb25maWdfYyBwYXRo Ow0KPiA+IAlyZWFybV9xdWV1ZV9jb25maWdfZCBwYXRoOw0KPiA+IH0NCj4gPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ID4gLS0tLS0tLS0tLS0tLS0tLSBUaGlzIGltcGxlbWVudGF0aW9uIHJlZmVycyB0byAn cnRlX2V0aF9yeF9idXJzdCcgYW5kDQo+ID4gJ3J0ZV9ldGhfdHhfYnVyc3QnLiBJZiB0aGVyZSB3 aWxsIGJlIGRpZmZlcmVudCBxdWV1ZSB0eXBlcywgdGhlDQo+ID4gaW1wbGVtZW50YXRpb24gd2ls bCBiZSBpbiBwbWQgbGF5ZXIuDQo+ID4NCj4gPiAyLiBJJ20gbm90IHN1cmUgd2hldGhlciBjcm9z cyBwbWQgdXNhZ2UgaXMgcmVhbGlzdGljLg0KPiA+IENvbnNpZGVyIHRoZSB0cmFkZW9mZiBiZXR3 ZWVuIHBlcmZvcm1hbmNlIGFuZCBkaWZmZXJlbnQgcG1kIG1hcCwNCj4gbWF5YmUNCj4gPiB3ZSBj YW4gcHJvdmlkZSB0d28gZGlmZmVyZW50IGRpcmVjdCByZWFybSBtb2RlIGZvciB1c2Vycy4gT25l IGlzIG1peGVkIFJ4DQo+IGFuZCBUeCBwYXRoIGFuZCBpcyB1c2VkIGZvciB0aGUgc2FtZSBwbWQu DQo+ID4gVGhlIG90aGVyIGlzIHNlcGFyYXRlIFJ4IGFuZCBUeCBwYXRoLCBhbmQgaXMgdXNlZCBm b3IgZGlmZmVyZW50IHBtZC4NCj4gPiBCZXN0IFJlZ2FyZHMNCj4gPiBGZWlmZWkNCj4gPj4NCj4g Pj4NCj4gPj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEFub3RoZXIgd2F5IC0gbWFr ZSBydGVfZXRoX3R4cV9kYXRhIHRvdGFsbHkgb3BhcXVlIGFuZCBhbGxvdw0KPiBQTUQNCj4gPj4g dG8NCj4gPj4+Pj4+IHN0b3JlIHRoZXJlIHNvbWUgZGF0YSB0aGF0IHdpbGwgaGVscCBpdCB0byBk aXN0aW5ndWlzaCBleHBlY3RlZA0KPiA+Pj4+Pj4gVFhRDQo+ID4+IGZvcm1hdC4NCj4gPj4+Pj4+ IFRoYXQgd2lsbCBhbGxvdyBQTUQgdG8ga2VlcCByeF9kaXJlY3RfcmVhcm0oKSB0aGUgc2FtZSBm b3IgYWxsDQo+ID4+Pj4+PiBzdXBwb3J0ZWQgVFhRIGZvcm1hdHMgKGl0IHdpbGwgbWFrZSBkZWNp c2lvbiBpbnRlcm5hbGx5IGJhc2VkIG9uDQo+ID4+Pj4+PiBkYXRhIHN0b3JlZCBpbiB0eHFfZGF0 YSkuDQo+ID4+Pj4+PiBUaG91Z2ggaW4gdGhhdCBjYXNlIHlvdSdsbCBwcm9iYWJseSBuZWVkIG9u ZSBtb3JlIGRldi1vcCB0byBmcmVlDQo+ID4+Pj4gdHhxX2RhdGEuDQo+ID4+Pj4+DQo+ID4+Pg0K PiA+DQoNCg==