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 CE1C242AF1; Thu, 18 May 2023 16:46:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5D21B40E25; Thu, 18 May 2023 16:46:04 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2040.outbound.protection.outlook.com [40.107.22.40]) by mails.dpdk.org (Postfix) with ESMTP id 1D9874014F; Thu, 18 May 2023 16:46:03 +0200 (CEST) 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=puHenqICL7zfNp9luyigRgvtnzcvK+kGafKnmDYlTpM=; b=1iDh4HMLCYX6c44ueOhLY/xH/F2K/9TfeM6183PrYE6V0yRzGqhWGuLVk2utZfyW529Dp0nedL2mz+sbnSNd4NVMyRukeeEGL9O0KXERHYd6BRRPdePBQj5oqsgOORK5UlPvoo2gVAa1v6SFsFOE9q1fniH7OvX/lg09WW7ASAs= Received: from AS9PR07CA0001.eurprd07.prod.outlook.com (2603:10a6:20b:46c::11) by AS2PR08MB9547.eurprd08.prod.outlook.com (2603:10a6:20b:60c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.34; Thu, 18 May 2023 14:45:49 +0000 Received: from AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46c:cafe::5) by AS9PR07CA0001.outlook.office365.com (2603:10a6:20b:46c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.6 via Frontend Transport; Thu, 18 May 2023 14:45:49 +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.6411.21 via Frontend Transport; Thu, 18 May 2023 14:45:49 +0000 Received: ("Tessian outbound 8b05220b4215:v136"); Thu, 18 May 2023 14:45:48 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d218dbd2acdff6e0 X-CR-MTA-TID: 64aa7808 Received: from 19478cf9ce37.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 296E446A-B69F-4E66-BE81-6A6FED5CCFF7.1; Thu, 18 May 2023 14:45:43 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 19478cf9ce37.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 18 May 2023 14:45:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TmWKl1Ka7fzyStlwoSrJlal3rBzB3fK1BVcVGwA0O980BjIWHgG1+Rj/BKJyG5C1wFOPuLLEDMvJW2ZtxkivA8V4AeJX2PYDxkjA1gTSujmqOAPjQLN/sKsdXOEQbH5Pvzx3kNWsfGupqadzrAqwfLfOSRWVN3mhZ1gpMuUVcGu907wl3vsSyXoRm48XN83AVhASogI1Noi2Rp7CWRwcd6tADT+HnrCu5C4k50P+yQsmNuw4COsVfmrp3cLnCj/y4DrSOmNOGhb3ySSv/AxYc2IMotYd0BYiXEuu1fnCWChIRVJ8ViqUDqWLU7KUGJ5OtDY78DM73FxKztaTR7sl1A== 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=puHenqICL7zfNp9luyigRgvtnzcvK+kGafKnmDYlTpM=; b=gk4ioMOfJ+BhA1sAf7S/2wznHN6n90iuyzBFJIRcmqsczQTGzHJYLNUYuZ5duxlIx0AqpwFCKjc+ZCPDwc1jRd87Qw0LkPHTRBNjYiVR6dWcba2HCTHyKrtrrhoahJybjj6PbHTo91rBYlWpaw/MVVbj9ZV7FNLT5DF6pkafgw4oNLtPlv0izPVMcETotGwI8uKS+avR0OQhobLQ3zUkXEXWoKyQpS+ZBVD9DUrmfI8AJhPadauF0q/tjPzgWC7+IaHUkoJGNgYxew/Q4kG+wmenT76bS0XJT9cftiGow7g+Cfmsa9QvCChYWDtwfEqUqd81IAqVHkGBQ9QL3NaP8Q== 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=puHenqICL7zfNp9luyigRgvtnzcvK+kGafKnmDYlTpM=; b=1iDh4HMLCYX6c44ueOhLY/xH/F2K/9TfeM6183PrYE6V0yRzGqhWGuLVk2utZfyW529Dp0nedL2mz+sbnSNd4NVMyRukeeEGL9O0KXERHYd6BRRPdePBQj5oqsgOORK5UlPvoo2gVAa1v6SFsFOE9q1fniH7OvX/lg09WW7ASAs= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by AS8PR08MB8826.eurprd08.prod.outlook.com (2603:10a6:20b:5bb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.34; Thu, 18 May 2023 14:45:38 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::621c:838a:cb11:19b7]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::621c:838a:cb11:19b7%6]) with mapi id 15.20.6411.018; Thu, 18 May 2023 14:45:38 +0000 From: Honnappa Nagarahalli To: "Zhang, Qi Z" , Ori Kam , "dev@dpdk.org" CC: "techboard@dpdk.org" , "Richardson, Bruce" , "Burakov, Anatoly" , "Wiles, Keith" , "Liang, Cunming" , "Wu, Jingjing" , "Zhang, Helin" , "Mcnamara, John" , "Xu, Rosen" , nd , nd Subject: RE: seeking community input on adapting DPDK to P4Runtime backend Thread-Topic: seeking community input on adapting DPDK to P4Runtime backend Thread-Index: AdmBdydpWI/N9jo8SXuEnV2EuOZZewHVxP7QACYE/+AADB9l8A== Date: Thu, 18 May 2023 14:45:38 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C646B9B893CE7D4FB4C0582BA7011977.0 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: DBAPR08MB5814:EE_|AS8PR08MB8826:EE_|AM7EUR03FT039:EE_|AS2PR08MB9547:EE_ X-MS-Office365-Filtering-Correlation-Id: 89a38b5b-b000-47fb-110f-08db57ae9237 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: EQxZIXluUkao4x0QAgf4S3cvX0hqdcejMKcND36hV3NzLwXN5R9eRtH1GAp9N3Ek5TKJgIDnLCsVpsTcuPO8rOBVF2fWNZqt573NQRxJWPRrFiUYRO7mMeugcFTSPQOr73xbBsGHUbHXqXtbI0roP6BWhMHgEsVvlk2yUgKWXjMWCte5Hsxes0JKwOqbUC2yqpa82ADHzt5h6emQzL51BC8YqsF38bbC9wX0VTdY5LJFCAWzQBj9ng268JKrZqP+XWlOtePa6DkW8LHvmK91tCbGk1i5/DxzlMOAiVw97f9nDRaUuDGYPR57zyQrTtUPGJKiOohlm6WgMZLlcNU7ZZ/RXQw0m+5Nx7/LBV42vwowFlMsZC8N/FdiG8+WiRLUoxe8d1BJKFR47KP4Ka6t2AudBZI51BTTQFvLBolxBnt7rAqvw2lPWtfySj/PKbbhMnVethgr215hJS/MwCLG5DRFS+KSRKJrP6snxZ6+r5yf1cDNCRlFFMvyLgsHwy4zeWValVD4OPJJHdT1k9jHM664mnRxeq8iwsaY9i5OnfeBUQC12Wpd1bosH/C6JQkWgzgdWiFWg2ZSTTluTy4rSXeqwWEDa5lBFUT3JMMvugBilz/D21wf91OB1zU9yh3h X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(346002)(136003)(366004)(39860400002)(376002)(396003)(451199021)(7416002)(966005)(5660300002)(52536014)(8936002)(8676002)(83380400001)(33656002)(30864003)(2906002)(186003)(122000001)(38100700002)(86362001)(55016003)(38070700005)(53546011)(9686003)(6506007)(110136005)(54906003)(71200400001)(316002)(66476007)(478600001)(66556008)(64756008)(4326008)(66946007)(66446008)(76116006)(66899021)(7696005)(41300700001)(32563001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8826 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: 94b59458-8c67-46fe-53d6-08db57ae8bae X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rg64neZKn+FjekWsZRfZIuibTJAMFKWqsYaIiaL3Eajy6QGi5uYHtxMh03VMFXemFu4cEhl79LNgDk8TFBjckRTBsJL2rszizdXBa0JouOxsMzqVQy1GVXLt+ry4TPMKI3zYu/2UlmBokQrrHclEBiKA+qZM9bI4F3ym+D6muYg4Xjdpfb5sXbn/xj6/6IFc+bjxcFalOUJ7jEmotGmKFDSh/7gwSjK2rMpD05R7jXkx2gYUFcdUrw0MHDrRqReTUU3VV0Mj2vhi4vWLdl6TX9N0Wr/+y3KmDYMhYGq2QGdBLwbSbJgJLNbpLmgALrSIT1P5wpHUBJm2apIF2Qupyfb6GuDFijbL2bTUdrV4FX6wM+EyaUvZw0FgM8pv/emypR3vzUCAR0xEjN3MnBkhK4ogbdHgjjMq++S72AAJ8OQyGrD9MLt3e6zkyYJWc5pnSYpghucuPZlOpdxTAlacrTtkE/4dhM3K7Le/zRswb0zoyugB3N9jhl0GmU+oGw3nXoxKvcNbnd+6fZi2RRfPPxqNMGbYFf2u27153UN6Ny285qC8JXJWN9CEIXKr/kzNqfyIWPCtDAoXUZuePoVSQR/WQMAiYpJT7PDqpmf8yjEZYJtBj9WhRe81m3F6tbQ6SlOT4hr8jQdL9+lhO/8gJgLL6/h1lYiYshvBrCPWEvAlF5PpKeA5bw8IdAzbd4pZQBfreuNn251fE8L9qpLZm2AefeUcI24f5kOBPbs3LIu+F5cFNESGshV/ioGNzkTo 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:(13230028)(4636009)(346002)(39860400002)(136003)(396003)(376002)(451199021)(36840700001)(40470700004)(46966006)(52536014)(8936002)(5660300002)(8676002)(83380400001)(53546011)(9686003)(81166007)(186003)(26005)(36860700001)(47076005)(6506007)(82310400005)(86362001)(82740400003)(356005)(336012)(40460700003)(316002)(40480700001)(41300700001)(70206006)(55016003)(33656002)(70586007)(54906003)(7696005)(478600001)(450100002)(966005)(4326008)(110136005)(2906002)(30864003)(66899021)(32563001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2023 14:45:49.1128 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 89a38b5b-b000-47fb-110f-08db57ae9237 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: AS2PR08MB9547 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 PHNuaXA+DQoNCj4gPg0KPiA+IEhpIFpoYW5nLA0KPiA+DQo+ID4gcnRlX2Zsb3cgaXMgYW4gZXhj ZWxsZW50IGNhbmRpZGF0ZSBmb3IgaW1wbGVtZW50aW5nIFA0Lg0KPiA+IFdlIGFuZCBzb21lIGlu dGVybmFsIHRlc3RzIHRoYXQgc2hvd3MgZ3JlYXQgcHJvbWlzZSBpbiB0aGlzIHJlZ2FyZC4NCj4g Pg0KPiA+IEkgd291bGQgYmUgdmVyeSBoYXBweSB0byBzdXBwbHkgYW55IG5lZWRlZCBpbmZvcm1h dGlvbiBhbmQgaGF2ZQ0KPiA+IGRpc2N1c3Npb24gb24gaG93IHRvIGNvbnRpbnVlIHdpdGggdGhp cyBwcm9qZWN0Lg0KPiANCj4gVGhhbmsgeW91IE9yaSEgUGxlYXNlIGNoZWNrIG15IGZvbGxvd2lu ZyBjb21tZW50cw0KPiANCj4gUmVnYXJkcw0KPiBRaQ0KPiANCj4gPg0KPiA+IFBsZWFzZSBzZWUg aW5saW5lIGRldGFpbGVkIGFuc3dlcnMuDQo+ID4NCj4gPiBCZXN0LA0KPiA+IE9yaSBLYW0NCj4g Pg0KPiA+DQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ IEZyb206IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IE1v bmRheSwgTWF5IDgsIDIwMjMgOTo0MCBBTQ0KPiA+ID4gU3ViamVjdDogc2Vla2luZyBjb21tdW5p dHkgaW5wdXQgb24gYWRhcHRpbmcgRFBESyB0byBQNFJ1bnRpbWUNCj4gPiBiYWNrZW5kDQo+ID4g Pg0KPiA+ID4gSGk6DQo+ID4gPg0KPiA+ID4gT3VyIHRlYW0gaXMgY3VycmVudGx5IHdvcmtpbmcg b24gZGV2ZWxvcGluZyBhIERQREsgUE1EIGZvciBhIFA0LQ0KPiA+ID4gcHJvZ3JhbW1lZCBuZXR3 b3JrIGNvbnRyb2xsZXIsIGJhc2VkIG9uIGN1c3RvbWVyIGZlZWRiYWNrIHRvDQo+ID4gPiBpbnRl Z3JhdGUgRFBESyBpbnRvIHRoZSBQNFJ1bnRpbWUgYmFja2VuZCAuW2h0dHBzOi8vcDQub3JnL3A0 LQ0KPiA+ID4gc3BlYy9wNHJ1bnRpbWUvbWFpbi9QNFJ1bnRpbWUtU3BlYy5odG1sXQ0KPiA+ID4N Cj4gPiA+ICgqKSBIb3dldmVyLCB3ZSBhcmUgZmFjaW5nIGNoYWxsZW5nZXMgaW4gYWRhcHRpbmcg RFBESydzIHJ0ZV9mbG93DQo+ID4gPiBBUEkgdG8gdGhlIFA0UnVudGltZSBBUEksIHByaW1hcmls eSBkdWUgdG8gdGhlIHRyYW5zaXRpb24gZnJvbSBhDQo+ID4gPiB0YWJsZS1iYXNlZCBBUEkgd2l0 aCBmaWVsZHMgb2YgYXJiaXRyYXJ5IGJpdHMgd2lkdGggYXQgYXJiaXRyYXJ5DQo+ID4gPiBvZmZz ZXQgdG8gYSBwcm90b2NvbC1iYXNlZCBBUEkgKG1vcmUgZGV0YWlsIGJlIGRlc2NyaWJlZCBpbiBw b3N0LXNjcmlwdCkuDQo+ID4gPg0KPiA+ID4gV2UgYXJlIHNlZWtpbmcgc3VnZ2VzdGlvbnMgYW5k IGJlc3QgcHJhY3RpY2VzIGZyb20gdGhlIG9wZW4tc291cmNlDQo+ID4gPiBjb21tdW5pdHkgdG8g aGVscCB1cyB3aXRoIHRoaXMgaW50ZWdyYXRpb24uIFNwZWNpZmljYWxseSwgd2UgYXJlDQo+ID4g PiBpbnRlcmVzdGVkIGluDQo+ID4gPiBsZWFybmluZzoNCj4gPiA+DQo+ID4gPiAoKikgSWYgYW55 b25lIGhhcyBwcmV2aW91c2x5IGF0dGVtcHRlZCB0byBtYXAgcnRlX2Zsb3cgdG8gUDQtYmFzZWQN Cj4gPiBkZXZpY2VzLg0KPiA+DQo+ID4gV2UgZGlkIHRyeSBzdWNjZXNzZnVsbHkuDQo+ID4NCj4g PiA+ICgqKSBUaG91Z2h0cyBvbiBob3cgdG8gbWFwIGZyb20gdGFibGUtYmFzZWQgbWF0Y2hpbmcg dG8NCj4gPiA+IHByb3RvY29sLWJhc2VkIG1hdGNoaW5nIGxpa2UgaW4gcnRlX2Zsb3cuDQo+ID4N Cj4gPiBSdGVfZmxvdyBpcyB0YWJsZSBiYXNlZCAoZ3JvdXBzKSwgbm93IHdpdGggdGhlIGludHJv ZHVjdGlvbiBvZg0KPiA+IHRlbXBsYXRlIEFQSSBydGVfZmxvdyBpcyBldmVuIG1vcmUgdGFibGUg YmFzZWQgKHdlIGFkZGVkIHRoZSBjb25jZXB0DQo+ID4gb2YgdGFibGVzKSB3aGljaCBhcmUganVz dCB3aGF0DQo+ID4gcDQgcmVxdWlyZXMuDQo+IA0KPiBZZXMsIHRoZSBydGVfZmxvdyB0ZW1wbGF0 ZSBjYW4gYmUgdXNlZCB0byBtYXAgYSBzZXF1ZW5jZSBvZiBwYXR0ZXJucyB0byBhIFA0DQo+IHRh YmxlIGFuZCBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgdG8gYSBQNCBhY3Rpb24uIEhvd2V2ZXIsIFVz aW5nIGEgZml4ZWQgcnRlX2Zsb3cNCj4gdGVtcGxhdGUgY2FuIGJlIHByb2JsZW1hdGljIHdoZW4g aGFuZGxpbmcgZGlmZmVyZW50IFA0IHByb2dyYW1zIGluIHRoZSBzYW1lDQo+IGRyaXZlci4gVG8g cHJvdmlkZSBtb3JlIGZsZXhpYmlsaXR5LCB0aGUgbWFwcGluZyBvZiBwYXR0ZXJucyBhbmQgYWN0 aW9ucyBjYW4gYmUNCj4gZXh0ZXJuYWxpemVkIGludG8gYSBjb25maWd1cmF0aW9uIGZpbGUgb3Ig cGFydCBvZiB0aGUgZmlybXdhcmUgY2FuIGJlIGxlYXJuZWQNCj4gZnJvbSBkcml2ZXIsIGFsbG93 aW5nIGZvciBjdXN0b21pemF0aW9uIGJhc2VkIG9uIHRoZSBzcGVjaWZpYyByZXF1aXJlbWVudHMg b2YNCj4gZWFjaCBQNCBwaXBlbGluZS4gYWN0dWFsbHkgd2UgaGF2ZSBlbmFibGVkIHRoaXMgYXBw cm9hY2ggaW4gb3JkZXIgdG8NCj4gYWNjb21tb2RhdGUgZGlmZmVyZW50IFA0IHByb2dyYW1zLg0K PiANCj4gSG93ZXZlciwgYW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggdG8gY29uc2lkZXIgaXMgd2hl dGhlciBpdCB3b3VsZCBiZSBmZWFzaWJsZSB0bw0KPiBkaXJlY3RseSBleHBvc2UgdGhlIFA0IHRh YmxlIGFuZCBhY3Rpb24gbmFtZXMgb3IgSURzIHRvIHRoZSBhcHBsaWNhdGlvbiwgcmF0aGVyDQo+ IHRoYW4gcmVseWluZyBvbiBydGVfZmxvdyB0ZW1wbGF0ZXMuIFRoaXMgYXBwcm9hY2ggb2ZmZXJz IHNldmVyYWwgcG90ZW50aWFsDQo+IGJlbmVmaXRzOg0KPiANCj4gSW50ZWdyYXRpb24gd2l0aCBQ NHJ1bnRpbWUgQmFja2VuZDogQnkgZXhwb3NpbmcgdGhlIFA0IHRhYmxlIGFuZCBhY3Rpb24gbmFt ZXMNCj4gb3IgSURzIGRpcmVjdGx5LCBEUERLIGNvdWxkIGJlIGVhc2lseSBpbnRlZ3JhdGVkIGFz IGEgUDRydW50aW1lIGJhY2tlbmQuIFRoaXMNCj4gZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgdHJh bnNsYXRpb24gZnJvbSB0aGUgUDRydW50aW1lIEFQSSB0byBydGVfZmxvdw0KPiB0ZW1wbGF0ZXMg aW4gdGhlIGFwcGxpY2F0aW9uLCBzaW1wbGlmeWluZyB0aGUgaW50ZWdyYXRpb24gcHJvY2Vzcy4N Cj4gDQo+IEVsaW1pbmF0aW9uIG9mIE1hbnVhbCBNYXBwaW5nOiBFeHBvc2luZyB0aGUgUDQgdGFi bGUgYW5kIGFjdGlvbiBuYW1lcyBvciBJRHMNCj4gdG8gdGhlIGFwcGxpY2F0aW9uIHdvdWxkIHJl bW92ZSB0aGUgcmVxdWlyZW1lbnQgZm9yIHRoZSBlbmdpbmVlcmluZyB0ZWFtIHRvDQo+IG1hbnVh bGx5IG1hcCBlYWNoIHBpcGVsaW5lIHRvIHNwZWNpZmljIHJ0ZV9mbG93IHRlbXBsYXRlcy4gVGhp cyBpcyBwYXJ0aWN1bGFybHkNCj4gYmVuZWZpY2lhbCBpbiBjYXNlcyB3aGVyZSBoYXJkd2FyZSB2 ZW5kb3JzIHByb3ZpZGUgY3VzdG9tZXJzIHdpdGggYSB0b29sY2hhaW4NCj4gdG8gY3JlYXRlIHRo ZWlyIG93biBQNCBwaXBlbGluZXMgYnV0IGRvIG5vdCBuZWNlc3NhcmlseSBvd24gdGhlIFA0IHBy b2dyYW1zLiBCeQ0KPiBlbGltaW5hdGluZyB0aGUgZGVwZW5kZW5jeSBvbiBydGVfZmxvdyB0ZW1w bGF0ZXMsIHRoaXMgYXBwcm9hY2ggcmVkdWNlcw0KPiBjb21wbGV4aXR5IGluIHVzaW5nIERQREsg YXMgdGhlIGRyaXZlci4NCj4gDQo+IFRvIGJlIG1vcmUgc3BlY2lmaWMsIHRoZSBwcm9wb3NlZCBB UEkgZm9yIGV4cG9zaW5nIFA0IHRhYmxlIGFuZCBhY3Rpb24gbmFtZXMgb3INCj4gSURzIGRpcmVj dGx5IHRvIHRoZSBhcHBsaWNhdGlvbiBjb3VsZCBiZSBhcyBmb2xsb3dzOg0KPiANCj4gLyogR2V0 IHRoZSB0YWJsZSBpbmZvICovDQo+IHN0cnVjdCBydGVfcDRfdGFibGVfaW5mbyB0YmxfaW5mbzsN Cj4gcnRlX3A0X3RhYmxlX2luZm9fZ2V0X2J5X25hbWUocG9ydF9pZCwgImRlY2FwX3Z4bGFuX3Rj cF90YWJsZSIsDQo+ICZ0YmxfaW5mbyk7DQo+IA0KPiAvKiBDcmVhdGUgdGhlIGtleSAqLw0KPiBz dHJ1Y3QgcnRlX3A0X3RhYmxlX2tleSAqa2V5Ow0KPiBydGVfcDRfdGFibGVfa2V5X2NyZWF0ZShw b3J0X2lkLCB0YmxfaW5mby0+aWQsICZrZXkpOw0KPiANCj4gLyogU2V0IHRoZSBrZXkgZmllbGRz ICovDQo+IHJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwga2V5LCAi d2lyZV9wb3J0IiwgJndpcmVfcG9ydCwNCj4gMik7IHJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0 X2J5X25hbWUocG9ydF9pZCwga2V5LCAidHVuX2lwX3NyYyIsDQo+ICZ0dW5faXBfc3JjLCA0KTsg cnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXksDQo+ICJ0dW5f aXBfZHN0IiwgJnR1bl9pcF9kc3QsIDQpOyBydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9u YW1lKHBvcnRfaWQsDQo+IGtleSwgInZuaSIsICZ2bmksIDMpOyBydGVfcDRfdGFibGVfa2V5X2Zp ZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGtleSwNCj4gImlwdjRfc3JjIiwgJmlwdjRfc3JjLCA0 KTsgcnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXksDQo+ICJp cHY0X2RzdCIsICZpcHY0X2RzdCwgNCk7IHJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25h bWUocG9ydF9pZCwga2V5LA0KPiAic3JjX3BvcnQiLCAmc3JjX3BvcnQsIDIpOyBydGVfcDRfdGFi bGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGtleSwNCj4gImRzdF9wb3J0IiwgJmRz dF9wb3J0LCAyKTsNCj4gDQo+IC8qIEdldCB0aGUgYWN0aW9uIHNwZWMgaW5mbyAqLw0KPiBzdHJ1 Y3QgcnRlX3A0X2FjdGlvbl9zcGVjX2luZm8gYXNfaW5mbzsNCj4gcnRlX3A0X2FjdGlvbl9zcGVj X2luZm9fZ2V0X2J5X25hbWUocG9ydF9pZCwgImRlY2FwX3Z4bGFuX2Z3ZCIsDQo+ICZhc19pbmZv KTsNCj4gDQo+IA0KPiAvKiBDcmVhdGUgdGhlIGFjdGlvbiAqLw0KPiBzdHJ1Y3QgcnRlX3A0X2Fj dGlvbiAqYWN0aW9uOw0KPiBydGVfcDRfYWN0aW9uX2NyZWF0ZShwb3J0X2lkLCBhc19pbmZvLT5p ZCwgJmFjdGlvbik7DQo+IA0KPiANCj4gLyogU2V0IHRoZSBhY3Rpb24gZmllbGRzICovDQo+IHJ0 ZV9wNF90YWJsZV9hY3Rpb25fZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwgYWN0aW9uLCAibW9k X2lkIiwgJm1vZF9pZCwNCj4gMyk7IHJ0ZV9wNF90YWJsZV9hY3Rpb25fZmllbGRfc2V0X2J5X25h bWUocG9ydF9pZCwgYWN0aW9uLCAicG9ydF9pZCIsDQo+ICZ0YXJnZXRfcG9ydF9pZCwgMik7DQo+ IA0KPiAvKiBBZGQgdGhlIGVudHJ5ICovDQo+IHJ0ZV9wNF90YWJsZV9lbnRyeV9hZGQocG9ydF9p ZCwgdGJsX2luZm8tPmlkLCBrZXksIGFjdGlvbik7DQpUaGVzZSBkbyBub3QgbG9vayBhdCBsaWtl IFA0IHNwZWNpZmljLiBDb3VsZCBiZSBqdXN0IGdlbmVyaWMgQVBJcy4gQ291bGQgd2UgaGF2ZSB0 aGVzZSBhcyBydGVfZmxvdyBBUElzPw0KDQo+IA0KPiAuLi4NCj4gDQo+IA0KPiANCj4gDQo+IA0K PiA+DQo+ID4gPiAoKikgQW55IGlkZWFzIG9uIGhvdyB0byBleHRlbmQgb3IgZXhwYW5kIHRoZSBy dGVfZmxvdyBBUElzIHRvIGJldHRlcg0KPiA+ID4gYWNjb21tb2RhdGUgUDQtYmFzZWQgb3Igb3Ro ZXIgdGFibGUtbWF0Y2hpbmcgYmFzZWQgZGV2aWNlcy4NCj4gPiA+DQo+ID4NCj4gPiBMZXRzIGRp c2N1c3MgYW55IGlzc3VlIHlvdSBoYXZlLg0KPiA+DQo+ID4gPiBZb3VyIGluc2lnaHRzIGFuZCBm ZWVkYmFjayB3b3VsZCBiZSBncmVhdGx5IGFwcHJlY2lhdGVkIQ0KPiA+ID4NCj4gPiA+ID09PT09 PT09PT09PT09PT09PT09PT09IFBvc3QtU2NyaXB0DQo+ID09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCj4gPiA+DQo+ID4gPiBNb3JlIGRldGFpbHMgb24gdGhlIHByb2JsZW0gYmVsb3csIGZv ciBhbnlvbmUgaW50ZXJlc3RlZA0KPiA+ID4NCj4gPiA+IEluIFA0LCBmbG93IG9mZmxvYWRpbmcg Y2FuIGJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSBQNFJ1bnRpbWUgQVBJLA0KPiA+ID4gd2hpY2gg cHJvdmlkZXMgYSBzdGFuZGFyZCBpbnRlcmZhY2UgZm9yIGNvbnRyb2xsaW5nIGFuZCBjb25maWd1 cmluZw0KPiA+ID4gdGhlIGRhdGEgcGxhbmUgYmVoYXZpb3Igb2YgbmV0d29yayBkZXZpY2VzLiBQ NFJ1bnRpbWUgYWxsb3dzIG5ldHdvcmsNCj4gPiA+IG9wZXJhdG9ycyB0byBkeW5hbWljYWxseSBh ZGQsIG1vZGlmeSwgYW5kIHJlbW92ZSBmbG93IHJ1bGVzIGluIHRoZQ0KPiA+ID4gaGFyZHdhcmUg Zm9yd2FyZGluZyB0YWJsZXMgb2YgUDQtZW5hYmxlZCBkZXZpY2VzLg0KPiA+ID4NCj4gPiA+IFRo ZSBQNFJ1bnRpbWUgQVBJIGlzIGEgdGFibGUtYmFzZWQgQVBJLCBpdCBhc3N1bWUgdGhlIHBhY2tl dCBwcm9jZXNzDQo+ID4gPiBwaXBlbGluZSB3YXMgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUga2V5 L2FjdGlvbiB1bml0cyAodGFibGVzKS4gSW4NCj4gPiA+IFA0UnVudGltZSwgZWFjaCB0YWJsZSBk ZWZpbmVzIHRoZSBmaWVsZHMgdG8gYmUgbWF0Y2hlZCBhbmQgdGhlDQo+ID4gPiBhY3Rpb25zIHRv IGJlIHRha2VuIG9uIGluY29taW5nIHBhY2tldHMuIER1cmluZyBjb21waWxhdGlvbiwgdGhlIFA0 DQo+ID4gPiBjb21waWxlciBhc3NpZ25zIGEgdW5pcXVlDQo+ID4gPiB1aW50MzIgSUQgdG8gZWFj aCB0YWJsZSwgYWN0aW9uLCBhbmQgZmllbGQsIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aA0KPiA+ ID4gaXRzIGNvcnJlc3BvbmRpbmcgc3RyaW5nIG5hbWUuIFRoZXNlIElEcyBoYXZlIG5vIGluaGVy ZW50DQo+ID4gPiByZWxhdGlvbnNoaXAgdG8gYW55IG5ldHdvcmsgcHJvdG9jb2wgYnV0IGluc3Rl YWQgc2VydmUgYXMgYSBtZWFucyB0bw0KPiA+ID4gaWRlbnRpZnkgZGlmZmVyZW50IGNvbXBvbmVu dHMgb2YgYSBQNCBwcm9ncmFtIHdpdGhpbiB0aGUgUDRSdW50aW1lIEFQSS4NCj4gPiA+DQo+ID4g VGhpcyBpcyB0aGUgY29uY2VwdCBvZiB0YWJsZXMgYW5kIGdyb3VwcyBpbiBydGVfZmxvdy4NCj4g Pg0KPiA+ID4gSWYgd2UgY2hvb3NlIHRvIHVzZSBydGVfZmxvdyBhcyB0aGUgbG93LWxldmVsIEFQ SSBmb3IgUDRSdW50aW1lLCBhDQo+ID4gPiB0cmFuc2xhdGlvbiBsYXllciBpcyBuZWVkZWQgaW4g dGhlIGFwcGxpY2F0aW9uIHRvIG1hcCB0aGUgUDQgdGFibGVzDQo+ID4gPiBhbmQgYWN0aW9ucyB0 byB0aGUgY29ycmVzcG9uZGluZyBydGVfZmxvdyBydWxlcy4gSG93ZXZlciwgdGhpcw0KPiA+ID4g dHJhbnNsYXRpb24gbGF5ZXIgY2FuIGJlIHByb2JsZW1hdGljIGFzIGl0IGlzIG5vdCBlYXNpbHkg c2NhbGFibGUuDQo+ID4gPiBXaGVuIHRoZSBQNCBwaXBlbGluZSBpcyByZWZpbmVkIG9yIHVwZGF0 ZWQsIHRoZSB0cmFuc2xhdGlvbiBydWxlcw0KPiA+ID4gbWF5IGFsc28gbmVlZCB0byBiZSB1cGRh dGVkLCB3aGljaCBjYW4gcmVzdWx0IGluIGVycm9ycyBhbmQgcmVkdWNlZA0KPiBlZmZpY2llbmN5 Lg0KPiA+ID4NCj4gPiBJIGRvbid0IHVuZGVyc3RhbmQgd2h5Lg0KPiA+DQo+ID4gPiBPbiB0aGUg b3RoZXIgaGFuZCwgYSBoYXJkd2FyZSB2ZW5kb3IgdGhhdCBwcm92aWRlcyBhIFA0LWVuYWJsZWQN Cj4gPiA+IGRldmljZSBpcyByZXF1aXJlZCB0byBpbXBsZW1lbnQgYW4gcnRlX2Zsb3cgaW50ZXJm YWNlIGluIHRoZWlyIERQREsgUE1ELg0KPiA+ID4gVHlwaWNhbGx5LCB0aGUNCj4gPiA+IFA0IGNv bXBpbGVyIGdlbmVyYXRlcyBoaW50cyBmb3IgdGhlIGRyaXZlciBvbiBob3cgdG8gbWFwIFA0IHRh Ymxlcw0KPiA+ID4gdG8gaGFyZHdhcmUgcmVzb3VyY2VzLCBhbmQgaG93IHRvIGNvbnZlcnQgdGFi bGUgZW50cnkNCj4gPiA+IGFkZC9tb2RpZnkvZGVsZXRlIGFjdGlvbnMgaW50byBsb3ctbGV2ZWwg aGFyZHdhcmUgY29uZmlndXJhdGlvbnMuDQo+ID4gPiBIb3dldmVyLCBiZWNhdXNlIHJ0ZV9mbG93 IGlzIHByb3RvY29sLWJhc2VkLCBpdCBwb3NlcyBhbiBhZGRpdGlvbmFsDQo+ID4gPiBjaGFsbGVu Z2UgZm9yIGRyaXZlciBkZXZlbG9wZXJzLCB3aG8gbXVzdCBjcmVhdGUgYW5vdGhlciB0cmFuc2xh dGlvbg0KPiA+ID4gbGF5ZXIgdG8gY29udmVydCBydGVfZmxvdyB0b2tlbnMgaW50byBQNCBvYmpl Y3QgaWRlbnRpZmllcnMuIFRoaXMNCj4gPiA+IHRyYW5zbGF0aW9uIGxheWVyIG11c3QgYmUgY2Fy ZWZ1bGx5IGRlc2lnbmVkIGFuZCBpbXBsZW1lbnRlZCB0bw0KPiA+ID4gZW5zdXJlIG9wdGltYWwg cGVyZm9ybWFuY2UgYW5kIHNjYWxhYmlsaXR5LCBhbmQgdG8gZW5zdXJlIHRoYXQgdGhlDQo+ID4g PiBkcml2ZXIgY2FuIGVmZmljaWVudGx5DQo+ID4gaGFuZGxlIHRoZSBkeW5hbWljIG5hdHVyZSBv ZiBQNCBwcm9ncmFtcy4NCj4gPiA+DQo+ID4gUmlnaHQsIGJ1dCBzb21lIG9mIHRoZSB0cmFuc2xh dGlvbiBjYW4gYmUgZG9uZSBpbiBzaGFyZWQgY29kZSBieSBhbGwNCj4gPiBQTURzIGFuZCB0aGUg dHJhbnNsYXRpb24gaXMgc3RhdGljIGZvciB0aGUgY29tcGlsYXRpb24gc28gaW5zZXJ0aW5nDQo+ ID4gcnVsZXMgY2FuIGJlIHN1cHBlciBmYXN0IHdpdGggbm8gbmVlZCBmb3IgZXh0cmEgd29yay4N Cj4gPg0KPiA+ID4gVG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0sIGxldCdzIGNvbnNp ZGVyIHRoZSBmb2xsb3dpbmcNCj4gPiA+IGV4YW1wbGUgdGhhdCBkZW1vbnN0cmF0ZXMgaG93IHRv IHVzZSB0aGUgUDRSdW50aW1lIEFQSSB0byBwcm9ncmFtIGENCj4gPiA+IHJ1bGUgZm9yIHByb2Nl c3NpbmcgYSBWWExBTiBwYWNrZXQuIFRoZSBydWxlIG1hdGNoZXMgYSBWWExBTiBwYWNrZXQsDQo+ ID4gPiBkZWNhcHN1bGF0ZXMgdGhlIHR1bm5lbCBoZWFkZXIsIGFuZCBmb3J3YXJkcyBpdCB0byBh IHNwZWNpZmljIHBvcnQuDQo+ID4gPg0KPiA+ID4gVGhlIFA0IHNvdXJjZSBjb2RlIGJlbG93IGRl c2NyaWJlcyB0aGUgVlhMQU4gZGVjYXAgdGFibGUNCj4gPiA+IGRlY2FwX3Z4bGFuX3RjcF90YWJs ZSwgd2hpY2ggbWF0Y2hlcyB0aGUgb3V0ZXIgSVAgYWRkcmVzcywgVk5JLA0KPiA+ID4gaW5uZXIg SVAgYWRkcmVzcywgYW5kIGlubmVyIFRDUCBwb3J0LiBGb3IgZWFjaCBydWxlLCBmb3VyIGFjdGlv bg0KPiA+ID4gc3BlY2lmaWNhdGlvbnMgY2FuIGJlIHNlbGVjdGVkLiBXZSB3aWxsIGZvY3VzIG9u IG9uZSBhY3Rpb24NCj4gPiA+IHNwZWNpZmljYXRpb24gZGVjYXBfdnhsYW5fZndkIHRoYXQgcGVy Zm9ybXMgZGVjYXBzdWxhdGlvbiBhbmQNCj4gPiA+IGZvcndhcmRzDQo+ID4gdGhlIHBhY2tldCB0 byBhIHNwZWNpZmljIHBvcnQuDQo+ID4gPg0KPiA+ID4gdGFibGUgZGVjYXBfdnhsYW5fdGNwX3Rh YmxlIHsNCj4gPiA+IMKgwqDCoCBrZXkgPSB7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCBoZHJzLmlw djRbbWV0YS5kZXB0aC0xXS5zcmNfaXA6IGV4YWN0IEBuYW1lKCJ0dW5faXBfc3JjIik7DQo+ID4g PiDCoMKgwqDCoMKgwqDCoCBoZHJzLmlwdjRbbWV0YS5kZXB0aC0xXS5kc3RfaXA6IGV4YWN0IEBu YW1lKCJ0dW5faXBfZHN0Iik7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCBoZHJzLnZ4bGFuW21ldGEu ZGVwdGgtMV0udm5pwqAgOiBleGFjdCBAbmFtZSgidm5pIik7DQo+ID4gPiDCoMKgwqDCoMKgwqDC oCBoZHJzLmlwdjRbbWV0YS5kZXB0aF0uc3JjX2lwwqAgOiBleGFjdCBAbmFtZSgiaXB2NF9zcmMi KTsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgIGhkcnMuaXB2NFttZXRhLmRlcHRoXS5kc3RfaXDCoCA6 IGV4YWN0IEBuYW1lKCJpcHY0X2RzdCIpOw0KPiA+ID4gwqDCoMKgwqDCoMKgwqAgaGRycy50Y3Au c3BvcnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiBleGFjdCBAbmFtZSgic3JjX3Bv cnQiKTsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgIGhkcnMudGNwLmRwb3J0wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDogZXhhY3QgQG5hbWUoImRzdF9wb3J0Iik7DQo+ID4gPiDCoMKgwqAg fQ0KPiA+ID4gwqDCoMKgIGFjdGlvbnMgPSB7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCBAdGFibGVv bmx5IGRlY2FwX3Z4bGFuX2Z3ZDsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgIEB0YWJsZW9ubHkgZGVj YXBfdnhsYW5fZG5hdF9md2Q7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCBAdGFibGVvbmx5IGRlY2Fw X3Z4bGFuX3NuYXRfZndkOw0KPiA+ID4gwqDCoMKgwqDCoMKgwqAgQGRlZmF1bHRvbmx5IHNldF9l eGNlcHRpb247DQo+ID4gPiDCoMKgwqAgfQ0KPiA+ID4gfQ0KPiA+IFRyYW5zbGF0ZSB0byBydGVf ZmxvdzoNCj4gPiB0ZW1wbGF0ZSBwYXR0ZXJuIHJlbGF4ZWRfbW9kZSA9IDEgcGF0dGVybiA9ICBJ cHY0X3NyYyAvIGlwdjRfZHN0ICAvDQo+ID4gdm5pIC8gaXB2NF9zcmMgLyBpcHY0X2RzdCAvIHRj cF9zcG9ydCAvIHRjcF9kcG9ydCBtYXAgc3RydWN0dXJlID0gew0KPiA+IAl0dW5faXBfc3JjID0g JnBhdHRlcm5baXB2NF9zcmNdDQo+ID4gCS4uLi4NCj4gPiB9DQo+ID4gPiAuLi4NCj4gPiA+DQo+ ID4gPiBhY3Rpb24gZGVjYXBfdnhsYW5fZndkKFBvcnRJZF90IHBvcnRfaWQpIHsNCj4gPiA+IMKg wqDCoCBtZXRhLm1vZF9hY3Rpb24gPSAoYml0PDExPilWWExBTl9ERUNBUF9PVVRFUl9JUFY0Ow0K PiA+ID4gwqDCoMKgIHNlbmRfdG9fcG9ydChwb3J0X2lkKTsNCj4gPiA+IH0NCj4gPiA+DQo+ID4g U2FtZSBhcyBhYm92ZSBqdXN0IHdpdGggYWN0aW9uIHRlbXBsYXRlDQo+ID4NCj4gPiA+IEJlbG93 IGlzIGFuIGV4YW1wbGUgb2YgdGhlIGhpbnQgdGhhdCB0aGUgY29tcGlsZXIgd2lsbCBnZW5lcmF0 ZSBmb3INCj4gPiA+IHRoZQ0KPiA+ID4gZGVjYXBfdnhsYW5fdGNwX3RhYmxlOg0KPiA+ID4NCj4g PiA+IFRhYmxlIElEOsKgwqDCoMKgwqAgODQ1NDE0NA0KPiA+ID4gTmFtZTrCoMKgwqDCoMKgwqDC oMKgwqAgZGVjYXBfdnhsYW5fdGNwX3RhYmxlIEZpZWxkIElEwqDCoMKgwqDCoMKgIE5hbWUNCj4g PiA+IE1hdGNoIFR5cGXCoMKgwqDCoCBCaXQgV2lkdGggQnl0ZSBXaWR0aMKgwqDCoMKgIEJ5dGUg T3JkZXINCj4gPiA+IDHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0dW5faXBfc3JjwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAg MzINCj4gPiA+IDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gPiAywqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHVuX2lwX2RzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gPiA0wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiA+ID4gM8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHZuacKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZXhhY3TCoMKgIMKgwqDCoMKgwqDCoMKgMjQNCj4gPiA+IDPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gPiA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXB2 NF9zcmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhhY3TCoMKg wqDCoMKgwqDCoMKgwqAgMzINCj4gPiA+IDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3 b3JrDQo+ID4gPiA1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXB2NF9kc3TCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAg MzINCj4gPiA+IDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gPiA2wqDC oMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgc3JjX3BvcnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAgMTYNCj4gPiA+IDLCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gPiA3wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZHN0X3BvcnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAgMTYNCj4gPiA+IDLCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBuZXR3b3JrIFNwZWMgSUTCoMKgwqDCoMKgwqDCoCBOYW1lDQo+ID4gPiA4NTE5NzE2 wqDCoMKgwqDCoMKgIMKgZGVjYXBfdnhsYW5fZndkDQo+ID4gPiA4NTE5NzE4wqDCoMKgwqDCoMKg wqAgZGVjYXBfdnhsYW5fZG5hdF9md2QNCj4gPiA+IDg1MTk3MjDCoMKgwqDCoMKgwqDCoCBkZWNh cF92eGxhbl9zbmF0X2Z3ZA0KPiA+ID4gODUxOTY5NcKgwqDCoMKgwqDCoMKgIHNldF9leGNlcHRp b24NCj4gPiA+DQo+ID4gPiBBbmQgdGhlIGhpbnQgb2YgYWN0aW9uIHNwZWMgImRlY2FwX3Z4bGFu X2Z3ZCIgYXMgYmVsb3c6DQo+ID4gPg0KPiA+ID4gU3BlYyBJRDrCoMKgwqDCoMKgwqAgODUxOTcx Ng0KPiA+ID4gTmFtZTrCoMKgwqDCoMKgwqDCoMKgwqAgZGVjYXBfdnhsYW5fZndkDQo+ID4gPiBG aWVsZCBJRMKgwqDCoMKgwqDCoCBOYW1lwqDCoMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgQml0IFdpZHRowqDCoMKgwqDCoCBCeXRlDQo+ID4gPiBXaWR0aCBC eXRlIE9yZGVyDQo+ID4gPiAxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9ydF9pZMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDMywqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDQgaG9zdA0KPiA+ID4NCj4gPiA+IFBsZWFzZSBub3RlIHRoYXQgZGlmZmVyZW50 IGNvbXBpbGVycyBtYXkgYXNzaWduIGRpZmZlcmVudCBJRHMuDQo+ID4gPg0KPiA+ID4gQmVsb3cg aXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBhIHJ1bGUgdXNpbmcgdGhlIFA0IHJ1bnRp bWUNCj4gPiA+IEFQSSBpbiBKU09OIGZvcm1hdC4gVGhpcyBydWxlIG1hdGNoZXMgZmllbGRzIGFu ZCBkaXJlY3RzIHBhY2tldHMgdG8gcG9ydCA1Lg0KPiA+ID4NCj4gPiA+IHsNCj4gPiA+IMKgwqDC oCAidHlwZSI6IDEswqAgLy9JTlNFUlQNCj4gPiA+IMKgwqDCoCAiZW50aXR5Ijogew0KPiA+ID4g wqDCoMKgwqDCoMKgwqAgInRhYmxlX2VudHJ5Ijogew0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAidGFibGVfaWQiOiA4NDU0MTQ0LA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi bWF0Y2giOiBbDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRf aWQiOiAxLCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFsxMCwgMCwgMCwgMV0gfQ0KPiA+ID4gfSzCoMKg IC8vIG91dGVyIHNyYyBJUCA9DQo+ID4gPiAxMC4wLjAuMQ0KPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHsgImZpZWxkX2lkIjogMiwgImV4YWN0IjogeyAidmFsdWUiOiBbMTAs IDAsIDAsIDJdIH0NCj4gPiA+IH0swqAgLy8gb3V0ZXIgZHN0IElQID0NCj4gPiA+IDEwLjAuMC4y DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRfaWQiOiAzLCAi ZXhhY3QiOiB7ICJ2YWx1ZSI6IFswLCAwLCAxMF0gfSB9LA0KPiA+ID4gLy/CoCB2bmkgPSAxMCwN Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7ICJmaWVsZF9pZCI6IDQsICJl eGFjdCI6IHsgInZhbHVlIjogWzE5MiwgMCwgMCwgMV0NCj4gPiA+IH0gfSwgLy8gaW5uZXIgc3Jj IElQID0NCj4gPiA+IDE5Mi4wLjAuMQ0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHsiZmllbGRfaWQiOiA1LCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFsxOTIsIDAsIDAsIDJdIH0N Cj4gPiA+IH0sIC8vIGlubmVyIGRzdCBJUCA9DQo+ID4gPiAxOTIuMC4wLjINCj4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqB7ImZpZWxkX2lkIjogNiwgImV4YWN0IjogeyAidmFs dWUiOiBbMCwgMjAwXSB9IH0sIC8vDQo+ID4gPiB0Y3Agc3JjIHBvcnQgPSAyMDANCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7ImZpZWxkX2lkIjogNywgImV4YWN0IjogeyAi dmFsdWUiOiBbMCwgMjAxXSB9IH0sIC8vDQo+ID4gPiB0Y3AgZHN0IHBvcnQgPSAyMDENCj4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXSwNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ImFjdGlvbiI6IHsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9u Ijogew0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFjdGlv bl9pZCI6IDg1MTk3MTYsDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAicGFyYW1zIjogWw0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB7ICJwYXJhbV9pZCI6IDEsICJ2YWx1ZSI6IFs1LCAwLCAwLCAwXSB9DQo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBdDQo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB9LA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuLi4NCj4gPiA+IMKgwqDCoMKgwqDC oMKgIH0NCj4gPiA+IMKgwqDCoCB9wqDCoMKgIC4uLg0KPiA+ID4gfQ0KPiA+ID4NCj4gPiA+IFBs ZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBvbmx5IGEgcGFydCBvZiB0aGUgZnVsbCBjb21tYW5kLiBG b3IgbW9yZQ0KPiA+ID4gaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgcDRydW50aW1l LnByb3RvWzJdDQo+ID4gPg0KPiA+ID4gMS4gaHR0cHM6Ly9wNC5vcmcvcDQtc3BlYy9wNHJ1bnRp bWUvbWFpbi9QNFJ1bnRpbWUtU3BlYy5odG1sDQo+ID4gPiAyLg0KPiA+ID4NCj4gPiBodHRwczov L2dpdGh1Yi5jb20vcDRsYW5nL3A0cnVudGltZS9ibG9iL21haW4vcHJvdG8vcDQvdjEvcDRydW50 aW1lLnANCj4gPiByDQo+ID4gPiBvdG8NCj4gPiA+DQo+ID4gPiBUaGFuayB5b3UgZm9yIHlvdXIg YXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLg0KPiA+ID4NCj4gPg0KPiA+IEkgdGhpbmsgdGhhdCB3 ZSBzaG91bGQgc2NoZWR1bGUgc29tZSBtZWV0aW5nIHRvIHNlZSBob3cgbXVjaCBnYXBzIHdlDQo+ ID4gcmVhbGx5IGhhdmUgYmV0d2VlbiB0aGUgcnRlX2Zsb3cgYW5kDQo+ID4gUDQgYW5kIGhvdyB3 ZSBjYW4gaW1wcm92ZSB0aGUgcnRlX2Zsb3cgdG8gYWxsb3cgdGhlIGJlc3QgZXhwZXJpZW5jZS4N Cj4gDQo+IFNvdW5kIGEgZ29vZCBpZGVhIQ0KPiA+DQo+ID4gPiBSZWdhcmRzDQo+ID4gPiBRaQ0K