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 66CB842526 for ; Wed, 6 Sep 2023 10:28:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 54474402BD; Wed, 6 Sep 2023 10:28:47 +0200 (CEST) Received: from smtp.mei.co.jp (smtp.mei.co.jp [133.183.100.20]) by mails.dpdk.org (Postfix) with ESMTP id 7801A402BD for ; Wed, 6 Sep 2023 10:28:45 +0200 (CEST) Received: from mail-gw.jp.panasonic.com ([157.8.1.157]) by smtp.mei.co.jp (8.14.7/8.14.4/lvzy20) with ESMTP id 3868ShO4001271; Wed, 6 Sep 2023 17:28:43 +0900 Received: from epochmail.jp.panasonic.com ([157.8.1.130]) by mail.jp.panasonic.com (8.14.7/3.7W/kc-maili05) with ESMTP id 3868Shcs015303; Wed, 6 Sep 2023 17:28:43 +0900 Received: by epochmail.jp.panasonic.com (8.12.11.20060308/3.7W/pml-send4) id 3868Shta021167; Wed, 6 Sep 2023 17:28:43 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RDtq+/evndIjYvnMh1Wy8Do3JSYTo9UNtny6LvUR5yLcRILtJ6n/KHAfytDpeLJ1YGFvpxlsuG7CfkD8/EB055qld4TY4HxLgaB5qCq2u5awnMtdDqyBCcPZlUoZUzqPqfsI8zzzkIOYyC1iPGivtrJgd6QdzPNRsr1nGNjdcE93cQAOlJzB0DZxyeQskf/Q0BZcqmoP6MQBLX6oxCCvFhPzmYkQQzBDUsdf1QSeq88aLqXi+v5UQGd4BYNTXcJyRJEE2O9EJkGR9FP7XnyQVh1Kgjy/3+27t7Rr5Pxr7KzB7Fm6T9jLRT2UsSGUqEhCANLIPR4fw+JT4YO2k+eN8w== 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=3DjG9k3JKU1wE6pcFLNtkBpt7nIqBnke5DVlDkK2t4U=; b=OtlGvF+SYQorPopvhCRoc45S2QrY2o8ZSQt4yl5pX1FEOfZRY8UKYSC96Ug6oIsg2Aw005+iAxhofbLEPYonbZ16EbMz2egwGGdVbc8tAdDFKe7+5Og917TT9yMNECutz+ZPxmiigOKoQzgrJLgAsNV1GcK1brMYselh0rbMXe7qB99KN4cHDtobPrQu02Q9/JCfTcxT0+YTn+qD712pmWgWcWuiOB2PutNY4Ge06blFcHTdeGT137AW+rIpMEYjGu0iXJifP3E8nhsIAivh7ia0hpahMGFCVyYMpFJEqtkHTI80BmVyMQXHIJRgrka2GrsLSHI6AETq5GvTvmMMMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=jp.panasonic.com; dmarc=pass action=none header.from=jp.panasonic.com; dkim=pass header.d=jp.panasonic.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jppanasonic.onmicrosoft.com; s=selector2-jppanasonic-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3DjG9k3JKU1wE6pcFLNtkBpt7nIqBnke5DVlDkK2t4U=; b=0Xk6I/MiWsB5f1u9CYtDRfRlfeX0JW+f6pSg9vPPFmxpYpvABTIUGiHAaKy7J/YIVPu/J9GKAh9F9PmnqWiFbjEag/P5lSM3em5AlOtbSuYQH6T/LVLZYsiNZa3+tuKmcVneDxlZQgnXPeSgpL/ORiohIT2proxODm3fer3vcZ8= Received: from TYAPR01MB6378.jpnprd01.prod.outlook.com (2603:1096:400:a2::10) by OS3PR01MB6088.jpnprd01.prod.outlook.com (2603:1096:604:d6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.34; Wed, 6 Sep 2023 08:28:42 +0000 Received: from TYAPR01MB6378.jpnprd01.prod.outlook.com ([fe80::bb02:6fee:f039:b801]) by TYAPR01MB6378.jpnprd01.prod.outlook.com ([fe80::bb02:6fee:f039:b801%4]) with mapi id 15.20.6745.030; Wed, 6 Sep 2023 08:28:42 +0000 From: =?utf-8?B?Tmljb2xzb24gS2VuICjjg4vjgrPjg6vjgr3jg7Mg44Kx44OzKQ==?= To: Maxime Coquelin , David Marchand CC: "users@dpdk.org" , "Xia, Chenbo" Subject: RE: Implementing a simple TAP PMD to dpdk-vhost structure Thread-Topic: Implementing a simple TAP PMD to dpdk-vhost structure Thread-Index: AdngY3M13Z8GMXL8TeSPRhEvi+7OhAAJPASAAAJk4wAAAhvu8A== Date: Wed, 6 Sep 2023 08:28:42 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-GB, ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-panasonic-appendix: BOiYvuUmEiA7L3+6V8fmVOI3n7ZWsH1rcI+i0f7A0O4Pgu88iJqL5hoL2VZpjLrzuJTtcxxof6aHo29mjBWt86EzznnbeHbhD8wHqVQgJnd9C21mmzjk4g== x-panasonic-plugin: SecurityPlus Ver,17.1.0.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=jp.panasonic.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYAPR01MB6378:EE_|OS3PR01MB6088:EE_ x-ms-office365-filtering-correlation-id: fc5d2e3e-2bf8-4220-2de7-08dbaeb34786 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vtBzotUp67zR6aCoXi1Nb0HwrWsDYcbeZbQZTW4VC+Sf8N415hkEsVbE0IIuNE+hdHhu+OJy2DwHTCFKciraJAPwAt5iaNhA/Qx+jI4C1KMfVJTOqEl1rrA4r9JZJssU2V+aJ9RD2VOQH/y1fdPTTRJBySz8tgURW3vjTSKmZV4j0FYHnHjf48nV+W/30pKpxB0fsj/R7fraWHfLv4SLfENDSXkAFkk3a6V+Z476kjhgrt9s7khhGiBAnd6J7PdYrYkWRQ6CwbuM5xTtnm0KDWbyVi8gxMGDjLxiKoWqgY3G8y1AYf2LnV5tJt6+4whDkqCCgnhECE+rF/kxRPOErhjKEP52hjpszYBjBq9rbF9gTFeF1b7yf7xllac+jpSfZUtmvu3FIFbX1NXV2dXc9iArjFxTCfrtNV21zuQ1PuUT4NG7BnXphbUT2JXf4k/PjFUajcviNhyizAh7nj9Q0gDJ1X7H1j9iJFHf4netE4rIHIfnN0mKPtBL8bce/andxrqaY2OogbNyHgb4mrPT8TNcJ900ZQSQJxAN3QiHUNTOXI35bRkgk6jAuFmi1Edi6L/aylRsKJL7Zl0CqxeSfL7U/pBAxX4ATTPuTLwx8L7dIlm+bWnhxGUNNANubRUR x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYAPR01MB6378.jpnprd01.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(136003)(376002)(396003)(346002)(366004)(186009)(1800799009)(451199024)(6506007)(7696005)(9686003)(53546011)(71200400001)(478600001)(83380400001)(26005)(2906002)(64756008)(41300700001)(316002)(66556008)(66476007)(54906003)(8676002)(66446008)(8936002)(5660300002)(76116006)(110136005)(52536014)(66946007)(4326008)(85182001)(82960400001)(33656002)(38100700002)(86362001)(38070700005)(55016003)(122000001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c3VtekFBd0V4RWRSM1ZXM0dNRlNpb1gyanhnK3VFT1pnZ2Y3cWlXL0tObmxv?= =?utf-8?B?WG1lb3ZYTFlnMTJDRStTeHcxNndaZi9jcVhOdWdDZk5CTWNZbzVlQ1crTzJ6?= =?utf-8?B?SXF5RFdFeUJjTGNYMXArTmtkSUdVMXZTWjhmbC82cUtNR1RmQ3dRSGwvYm9N?= =?utf-8?B?aEhhb2E3Z2xCdDVGMW1GVVQ1aEdqN2NUU0xqb25GTE1MRjljdHRzRXZpWjVM?= =?utf-8?B?SGdqYWNQM1I0d05RNXFadVovVWIyZWJISUU4OFY2blBDZWxPdFVYRUZmUWxW?= =?utf-8?B?QmMyWVZNZUhMNEZTajRBT1VwWFgvNnlleHBzNXRGdE52aGVaSVJHSmJqeURD?= =?utf-8?B?K2tWa1JyVklKVGgwOEpTVmFwRlRUVlJjczJCYmZNTDQzZExrUkplNGdxM2lH?= =?utf-8?B?OXBncE1sUExqNnFjZmRaR0MvUWF0ZnlERjd1bFp3dzI3RzdFUDAvN0FkNXdk?= =?utf-8?B?NFdQb1JPeklVQWViNmFVd21NV0h4T3lzU2RsMG5PWUZHNUE0SVF3eEJ0Y3FZ?= =?utf-8?B?UGJJdlBXQ2NsMG1wYnZQeWRna0g0VzJ3TzhDeWtodnFCZmhRNHFsWTgvbDJn?= =?utf-8?B?N3E1RFFpVVRPM1RjZFFqY2U1KytXWktxQURLeHc2RUZUQmxQRFJPMEtJeDI2?= =?utf-8?B?MDZ6N2IzU2FqNGdrYVJQcUlPNk01dCt0SThBc0lQaXpBeWEwYzNwcWl6ZjBY?= =?utf-8?B?SDZGWnRjV0ZFaVRSclR1SnZRck5jREQ3MFMxVGMrUGJUV285SGhKdGJhZHpP?= =?utf-8?B?cStJaVJuN2lITG1zMUZlUDE2dFUreDNWQ2lTZUc5WjE1TnhPazREZXRvTFpp?= =?utf-8?B?NHI4VlNlZFZjUkpjeFhZd0JQa2VCdWxhTWVOekhWRW14UFd2QzExbWtEL2sx?= =?utf-8?B?cDdicDV1UTZBTW5YdzdFa1AyWFV2NFpyUW9idjk2blZ5L29iTkFXODVxZmQ0?= =?utf-8?B?VjdKdmN5dmpSbVpxQ1ZVWDh4VEtNWFFGWlhjRWUvU01kMkx3cmxuSXd4OUtM?= =?utf-8?B?WGxzZ2EwNlFxUjVRRHVkaHMvay9mY2JRUDFiSE85WmpaZEF0VDlzd1l2dHRi?= =?utf-8?B?b0hocXpmWFRhZTFOcHBTYTdUUE82WWY4L2hKcjExczQzZjAwNUlZQTlEVWpH?= =?utf-8?B?azMzeE5lck1acjh6c21LOWJZVjJNdFN0QjdrUU1ORHNTQmRCckJza3dlYi9X?= =?utf-8?B?NnE5R0t2UVAxZ3Byb25wdTZQM3hyczBtV3hBY2loYWlrYXN3KzVTdklkell6?= =?utf-8?B?VnpGOFhkT3NFTVVyN3U2aFRvWDhhUFlJZjROMFU5TUtKUGxaRU9nQldPUFRS?= =?utf-8?B?TElzOVgzd0Rpci9vRFpNbmp4cXU4YllaUStmUjRhdExWaFFQdk0rdUFHQnls?= =?utf-8?B?RFVheE54eTZkc1FuT0Z3Y1A2NjVuUElMSWREbXB1dDc2WXFmTVgvaTB3NGZy?= =?utf-8?B?ckJOcmdYSmFmb3JUOU5MUmRiUWllb05wVHVmblZsa2hscWdaVlNaMndjWW5P?= =?utf-8?B?dk9NS1JyOWE4d1Q1RUk1YVZkMjRpcXRPZ08wbFpSOFBYdmQra2xIV0FCWW9U?= =?utf-8?B?VE8zcGcvVkNrd2RXdURiVEErOUM2WmlQQmxweC9FODFidkNqcS9YaVlaem4r?= =?utf-8?B?ZmJsK1NydzNobEN2MTNaaTVuQTlQZ1BkamoxWSttKzlkdkg2YndTQlVYc0Q5?= =?utf-8?B?UFFYWVpTTk05Sy95U3ZidXc5U01lRDkvYzhweXA4M1FjSmpIZnRDbEswdHo5?= =?utf-8?B?cGVzMnQ2MGJNamJCK3NoNnkzaC9teHUrNUdibzNQTHdZUmllUm1wN2I3YjRO?= =?utf-8?B?MzdpV05RTWtNbEFrclp2am9PWmZMNWNPWGpudkpyeTlBZjNyMklxRXVaYUZM?= =?utf-8?B?QlRnU2NjaGQ4NjErcGt1MG55T1Fvdk5GY1JmTTJVeTRjOWlKMjZ5L3BJSExu?= =?utf-8?B?S3RvUk1rN0RORkZrbFYvQlJkOUliUy9iYm52WURRVGF1TlJRWnozVDdSTk5G?= =?utf-8?B?dXlaRVpicGhSbmpLdk55N3lISTNyMWxLTTQyWVFjZU1sWXBNT0pKUTZEMG90?= =?utf-8?B?LzF5S0pNRmU3R0w4Q2dzditJNDFNTzZqQi8wQ2oyOXczeVAraVNmODFjY2FM?= =?utf-8?B?aG1JOHkzYU83b2xlOEZZWi90ZjJYMXRlS0FsdXYwbkRiQkFsVjFKcGJFMTJT?= =?utf-8?B?SXc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?ZGFnQkh6b3dXbFdsZy8zSDcxcFlNaTBtU1VtcE55Zjh1VE9Xdnh6NGtaNGNN?= =?utf-8?B?K0QyNUwxejZ1T2VkUmxOU1JpREZpOElmSXVSL2ZNRTdHUU9zR0dMakh1UHJy?= =?utf-8?B?MStmdFVYWGpLSVlCZkpVcHFUTC9MbTZreG1xWEpjSm4wakFWYzZzWFQwUFFZ?= =?utf-8?B?SXFrbzRjYkpOQkNTRGdVdHdocUp3RUczSWlIN1hnejJLNW1GTkVDVHBZcGU1?= =?utf-8?B?TlFubnA1SHhqUmJUREJGbnFRNVRhQUFvakhCVlV6M0p3VXBpMm54SURjTkFD?= =?utf-8?B?ZFVaRGkwRFY1dHBwSzBSWkVKUFF1enZpK2FmaUcyUGtjUHBuRTdjUkh0Q0NK?= =?utf-8?B?M2dYR0JDOTB4dHRVVnFkVXFneGNydFkyWUU5WTE0ZWhBYXZ1T2RNOUVjdkhp?= =?utf-8?B?SVV0N0tOV1Y3NmY2LzdiVFZQWmFzQzZIeHNEYk5yUFh2M1A0RnlWVnJGUVVX?= =?utf-8?B?RXZlWlY3Y1ZZcnNoS0ZPV0p3dTE3Q0JVREtNNFVRV0FvMWl4K1NHbUR1OEt5?= =?utf-8?B?bXU3U0w2RThyanVHajlhQnBnZEFxT0VMaEpGaG1XaW5WSjZ4QnRITnJ2NWZ3?= =?utf-8?B?NkFYK2VBYUIwUXhnb1pNR3NrZ1hWTk9jWEIyNjd0OW5NZHNtTG5wbmlEQkFN?= =?utf-8?B?L3Nsb0xhVG5ieXhMSUYxOGdwMWxVWW5kRVhlWWVxV2FySjVtTmpqSzAxS2tG?= =?utf-8?B?aEpvdXluaDVwQ3ZiUHpEK1BHcklaZUtBZGVIcHdheHRpMFNnUnNwWEQ4R2Yw?= =?utf-8?B?ZjFqK2NGSFppODNlUXFOUHVTTVZhNjkvR1NSVit2ZTRHbE9pQVBCZzhoYWtN?= =?utf-8?B?YjJva3Blb3N2aU1JNk1McDNlZWVjWXNidmVyUHY4ak1yOEo0MjhpSGtpSjFT?= =?utf-8?B?NFhHZW50R1IyV3Z1QTVFMTE5UExEemVGcmVzT21hcFozNE4wR3pPTTJpaC9W?= =?utf-8?B?c3FFRStpUlc2cTBpVldVaUVrSmpEM3VPS1J1ZitkbERhZnBGZzlseXVSWmtS?= =?utf-8?B?QWxpaVJUVUF6NlN6OGlQS1hpZWVIbW9IbDBXNkJ6aGpJc0RCOHNlSFJFQ0V6?= =?utf-8?B?QTVVMVhFZ0FlSXZWNmVpdHdEMmZrNmM5b0RPNmJPcjE0Yk5KdkF0SmNQaHh0?= =?utf-8?B?TGtDS3J4QjB5V1hTTXVxQUIrck9UQ2JGSHNnV1VGQXhQSDVDNktqaXdTR0o2?= =?utf-8?B?WEpEVFVOaHQ3T2pIZzVIYk85Y2VUaElvQU42cDJpMVFRK1hoUXhReDRwZnl5?= =?utf-8?B?YS9QRkFkb28zbmZHV1EyY1JCY2tkZGVIRGUxRG1yUFdZWWl5RWhZMmF1bTla?= =?utf-8?B?eGpoRHd6anFBakEzUy9LQ1l0Wlo0RmRTbHFvWW44MzRNMGRWZmxIWmxvVi9x?= =?utf-8?B?VlNLakJuNVFoMlAxVXVCN3liL2cyYWpwTW02d3YxclhpVXNSRlFBUmNOV2J5?= =?utf-8?B?c0tvNGpqS0dPRnBGUUNWRmxZMGtRMjJKZUFPWE1nPT0=?= X-OriginatorOrg: jp.panasonic.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB6378.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc5d2e3e-2bf8-4220-2de7-08dbaeb34786 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Sep 2023 08:28:42.5002 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4863f5d6-4760-4589-be9c-42f82e075739 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dB776EyuNvUCXtABSKDnaCNy6YJwOdh/ofc4V3soENg5F2XNE/A+KLchZBfbNQCTdWtpjkriLkfGmnwJmsB2FT6rurrZ1Qt2bAp7bkHh9zQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB6088 X-TM-AS-GCONF: 00 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org SGkgTWF4aW1lLA0KDQo+IE1heWJlIHlvdSBjb3VsZCB1c2UgdGVzdHBtZCBhcHBsaWNhdGlvbiBp bnN0ZWFkLCB3aXRoIG5ldF90YXAgUE1EIGFuZCBhIG5ldF9wY2FwIFBNRD8NCg0KSSBoYXZlIGFu IGV4aXN0aW5nIHNvbHV0aW9uIHRoYXQgdXNlcyB0aGUgVEFQIFBNRCB3aGljaCBJIHRoZW4gYWRk IHRvIGEgc3RhbmRhcmQga2VybmVsIGJyaWRnZSB0aGF0IGFsbG93cyBtZSB0byBoYXZlIHR3by13 YXkgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBHdWVzdCBWTSwgYnV0IEkgc3VzcGVjdCB0aGUgcGVy Zm9ybWFuY2Ugd291bGQgYmUgYmV0dGVyIGlmIHdlIHdlcmUgdG8gdXNlIGEgRFBESyB2aXJ0aW8t YmFzZWQgc29sdXRpb247IG90aGVyd2lzZSBJIGNvdWxkIGp1c3QgZHJvcCBEUERLIGFsbCB0b2dl dGhlciBhbmQgdXNlIHRjcHJlcGxheSwgZXRjIHRvIGRpcmVjdGx5IGFjY2VzcyB0aGUgYnJpZGdl Lg0KDQpbQWxzbyBuZXRfcGNhcCBvbmx5IG91dHB1dHMgdG8ga2VybmVsIGludGVyZmFjZSAob3Ig dG8gYSBmaWxlIG9yIG51bGwpIGFzIGl0IHVzZXMgbGlicGNhcCBBUElzIGZvciBUeF0NCg0KPiBB biBhbHRlcm5hdGl2ZSB0byBuZXRfdGFwIGNvdWxkIGJlIHRvIHVzZSBWaXJ0aW8tdXNlciBQTUQg d2l0aCBWaG9zdC0ga2VybmVsIGJhY2tlbmQuDQoNClRoYXQgdXNlcyBLTkksIHdoaWNoIHRoZSBk b2N1bWVudGF0aW9uIHNheXMgaXMgZGVwcmVjYXRlZCwgYW5kIEknbSBub3Qgc3VyZSBJIHdhbnQg dG8gc3RhcnQgbXVja2luZyBhYm91dCB3aXRoIGtlcm5lbCBkcml2ZXJzLg0KDQpUaGFua3MsDQpL ZW4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE1heGltZSBDb3F1ZWxpbiA8 bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+IA0KU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIg NiwgMjAyMyA0OjE2IFBNDQpUbzogRGF2aWQgTWFyY2hhbmQgPGRhdmlkLm1hcmNoYW5kQHJlZGhh dC5jb20+OyBOaWNvbHNvbiBLZW4gKOODi+OCs+ODq+OCveODsyDjgrHjg7MpIDxrZW4ubmljb2xz b25AanAucGFuYXNvbmljLmNvbT4NCkNjOiB1c2Vyc0BkcGRrLm9yZzsgWGlhLCBDaGVuYm8gPGNo ZW5iby54aWFAaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IEltcGxlbWVudGluZyBhIHNpbXBsZSBU QVAgUE1EIHRvIGRwZGstdmhvc3Qgc3RydWN0dXJlDQoNCg0KDQpPbiA5LzYvMjMgMDg6MDcsIERh dmlkIE1hcmNoYW5kIHdyb3RlOg0KPiBIZWxsbyBLZW4sDQo+IA0KPiBPbiBXZWQsIFNlcCA2LCAy MDIzIGF0IDM6NTbigK9BTSBOaWNvbHNvbiBLZW4gKOODi+OCs+ODq+OCveODsyDjgrHjg7MpDQo+ IDxrZW4ubmljb2xzb25AanAucGFuYXNvbmljLmNvbT4gd3JvdGU6DQo+Pg0KPj4gSGkgYWxsLA0K Pj4NCj4+IFVzaW5nIGRwZGsgMjIuMTEuMiBvbiBVYnVudHUgMjIuMDQNCj4+DQo+PiBJIGhhdmUg YSByZWFsbHkgc2ltcGxlIHVzZSBjYXNlLCBidXQgSSBjYW5ub3QgZmluZCBob3cgdG8gaW1wbGVt ZW50IGl0LiBJJ3ZlIHNldCB1cCBRRU1VIHdpdGggYWxsIHRoZSByZXF1aXJlZCB2aXJ0aW8gc3Vw cG9ydCwgc28gSSBqdXN0IG5lZWQgdG8gY29uZmlndXJlIG15IEhvc3QgT1Mtc2lkZS4gSSB3YW50 IHRvIHNlbmQgZGF0YSBmcm9tIGEgUENBUCBmaWxlIHZpYSB0Y3ByZXBsYXkgZnJvbSB0aGUgSG9z dCB0byB0aGUgR3Vlc3QsIHNvIEkgdXNlIHRoaXMgY29tbWFuZCBsaW5lOg0KPj4NCj4+ICQgc3Vk byAvaG9tZS9pbnRlZy9kcGRrLXN0YWJsZS0yMi4xMS4yL2J1aWxkL2V4YW1wbGVzL2RwZGstdmhv c3QgLWwgDQo+PiAwLTMgLW4gNCAtLXNvY2tldC1tZW0gMTAyNCAtLXZkZXYgJ25ldF90YXAwJyAt LSAtLXNvY2tldC1maWxlIA0KPj4gL3RtcC9zb2NrMCAtLWNsaWVudCAtcCAxDQo+Pg0KPj4gSG93 ZXZlciwgdGhpcyBmYWlscyB3aXRoOg0KPj4NCj4+IEVBTDogRGV0ZWN0ZWQgQ1BVIGxjb3Jlczog MjANCj4+IEVBTDogRGV0ZWN0ZWQgTlVNQSBub2RlczogMQ0KPj4gRUFMOiBEZXRlY3RlZCBzdGF0 aWMgbGlua2FnZSBvZiBEUERLDQo+PiBFQUw6IE11bHRpLXByb2Nlc3Mgc29ja2V0IC92YXIvcnVu L2RwZGsvcnRlL21wX3NvY2tldA0KPj4gRUFMOiBTZWxlY3RlZCBJT1ZBIG1vZGUgJ1BBJw0KPj4g VkhPU1RfUE9SVDogRmFpbGVkIHRvIGdldCBWTURxIGluZm8uDQo+PiBFQUw6IEVycm9yIC0gZXhp dGluZyB3aXRoIGNvZGU6IDENCj4+ICAgIENhdXNlOiBDYW5ub3QgaW5pdGlhbGl6ZSBuZXR3b3Jr IHBvcnRzDQo+Pg0KPj4gVGhlIG9mZmVuZGluZyBjb2RlIGlzIGZyb20gZXhhbXBsZXMvdmhvc3Qv bWFpbi5jOg0KPj4NCj4+ICAgICAgICAgIGlmIChkZXZfaW5mby5tYXhfdm1kcV9wb29scyA9PSAw KSB7DQo+PiAgICAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBWSE9TVF9QT1JULCAiRmFpbGVk IHRvIGdldCBWTURxIGluZm8uXG4iKTsNCj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0K Pj4gICAgICAgICAgfQ0KPj4NCj4+IFRoaXMgaXMgYmVjYXVzZSB0aGUgVEFQIFBNRCBkb2Vzbid0 IHN1cHBvcnQgVk1EcSBwb29scy4NCj4+DQo+PiBJcyB0aGVyZSBhbiBlYXN5IHdheSB0byBnZXQg dGhpcyB0byB3b3JrPw0KPiANCj4gVGhpcyBzb3VuZHMgc3RyYW5nZSB0byByZXF1aXJlIFZNRHEg c3VwcG9ydC4uLg0KPiBDb3B5aW5nIE1heGltZSBhbmQgQ2hlbmJvIHdobyBwcm9iYWJseSBrbm93 IGJldHRlciBhYm91dCB0aGlzIGV4YW1wbGUgY29kZS4NCj4gDQo+IEFsdGVybmF0aXZlbHksIGRp ZCB5b3UgY29uc2lkZXIgdXNpbmcgdGVzdHBtZCB3aXRoIHRoZSB2aG9zdCBwbWQgaW5zdGVhZCA/ DQo+IA0KPiANCg0KTWF5YmUgeW91IGNvdWxkIHVzZSB0ZXN0cG1kIGFwcGxpY2F0aW9uIGluc3Rl YWQsIHdpdGggbmV0X3RhcCBQTUQgYW5kIGEgbmV0X3BjYXAgUE1EPw0KDQpBbiBhbHRlcm5hdGl2 ZSB0byBuZXRfdGFwIGNvdWxkIGJlIHRvIHVzZSBWaXJ0aW8tdXNlciBQTUQgd2l0aCBWaG9zdC0g a2VybmVsIGJhY2tlbmQuDQoNCk1heGltZQ0KDQo=