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 E560242B3A; Thu, 18 May 2023 12:33:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BB7BC40E25; Thu, 18 May 2023 12:33:13 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id B65D54014F; Thu, 18 May 2023 12:33:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684405992; x=1715941992; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=82pzFfLxDmh8aB6IwCe3wgajHrgoFZkko0bw+L+LXXg=; b=aWDjH2yxD0KFbM3Pjigb214N0cKggSLFg/ySSPdPeffp6pGIH0K5LoBn E/LJB+p9IVH+TLVlQks9Mx8jsyEyfUnEZNwdaVyI9mCfeSSWDObjvQEMn Uimf9EmZ0myXqPrajCvLgBr0qu2OtUgasjxJx5x0Bx0CjvRnLmEy6sYSq i0xxlLgTYeS9wrf7s7L7ldTAetfQ92bvPXmSjQcjubgv077l9BJLLAON1 pYXncByHiwPb4sYubFm/rtB8mTE/QFc/TONlTVX320goGoLMQjH7nv0Vo 8HvjoUPnIIeVLhqg7XPpSC+/lEElWBCF5CoMdb/ZU2Bh98Hr26zNzNWFt A==; X-IronPort-AV: E=McAfee;i="6600,9927,10713"; a="336597559" X-IronPort-AV: E=Sophos;i="5.99,285,1677571200"; d="scan'208";a="336597559" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2023 03:33:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10713"; a="679642937" X-IronPort-AV: E=Sophos;i="5.99,285,1677571200"; d="scan'208";a="679642937" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga006.jf.intel.com with ESMTP; 18 May 2023 03:33:10 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Thu, 18 May 2023 03:33:10 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Thu, 18 May 2023 03:33:10 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Thu, 18 May 2023 03:33:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ScTYVkxQJ3D1XEQSZV1g3orubCeqFCkDM8HZjANup+yfdlC+ViuMleicCGPHIH01HqN1lr0tWt+U2pZkRpFjHQafC/9PCZ/ryXR0esk+BcVSBzwn1B1tMqYTKZoauWxnFboxZ07L4soZY5CGVbwXxrtYyIxWNPGTskJ0+bBBbyNfgbXY70bo6U1i51u24mlCfLQNpkrOOhZRYINDrv8izObJDnUD3wI1gQZoJts6biO9uk4ngLO3p631jfbAmlpIqd90B+zqTueRHRhSPp55gQrZbnelqSfMzMalh7zWPJ2D5nYiRnaynuFi12m9R3gFj0W6BBcVhvgbjgDF1TltXA== 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=82pzFfLxDmh8aB6IwCe3wgajHrgoFZkko0bw+L+LXXg=; b=FnYzye2FQHt/Q9/MOVOZWBXFL2JRlgANRybFPajpU/MGtZkcMSuPELIsHozHL7ZEDKdZbaZWs1EjFEJi1BYiPEOE7NDAnnQpvGaUPZi2XnKpouzn7F0F/ewOfCRfxaJt7v/0Y83wF5UZ6J+q8C88WIw0YFvFnrYWU20jeyNMSlAdtkoUfIn/09RkxmBbGYi98QluBVFWldb19vQl35i2vkCAIjMqyGomz0w7IoCHdrLCEOw5TB+gC0QjHw/8H2EvbKoNpQ6EZ7hsycYYImAM/6m09zv01FmWzMhngr2BoSfNQj460PFZXHLNKM37meP3h+nq/XLvkL3jTJa1fWR20g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM4PR11MB5994.namprd11.prod.outlook.com (2603:10b6:8:5d::20) by LV8PR11MB8607.namprd11.prod.outlook.com (2603:10b6:408:1ec::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.19; Thu, 18 May 2023 10:33:07 +0000 Received: from DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589]) by DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589%7]) with mapi id 15.20.6411.019; Thu, 18 May 2023 10:33:07 +0000 From: "Zhang, Qi Z" To: 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" 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/+A= Date: Thu, 18 May 2023 10:33:07 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB5994:EE_|LV8PR11MB8607:EE_ x-ms-office365-filtering-correlation-id: d261e4b3-3f4e-4698-def9-08db578b453b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Dqf9VkLJGzTi6TfWAAJBKEq6wrQmfEOIzujS0q64n9C4qaWIMa5+IlbNTWHezzEnuZH0isj/4UE8ZLNEbgNMeqDt29uH0oQCl/A5CGrzTs0m+g0HmtuyeByWESv/yfJ3Gq7/1lq8NLzo+ct5aZT5+jlhCBNlDamLcLtjmPCrJwz/OrTPr2z9l414cqzZQdU0ZWZSaojg8oyEo+plikHWimf/jBDujTDe+m6oYJo3ZiWX+BA94bK/jlpITtrbP95jnHGQtrjgiMY5il1GOMNwa0Q4oyULF4Yjscej0Cbl4eyY4n5DT8/sdWKS4Xj0Wp0H6offYET5lARbSiDZ28ajhiYNz/5i3eZw7/eXi6mUUxcZ1ot9s2dB2iIBpgS173zdyZ9aBWxY0Pxn18/Z3gxOAHZzi6RISdATE2m28C4aTyTm0HwmtiQhZhZCibBCVE6t5CHmNtrmiA+S4E+ifXkdaVJ912sqI7mStXPHkFphALGaEHDWdGaq2VAlnXAgE4dYQcX4gm0pxHMnW4+kxYVPxrpASTujCxETStaYCpBYf6fP6gpwWD0k2VVjkuNucVXiXxYTfyUsCIcRkH4labjJ9uLuD8gBYcwPXaa8apf6snkXhDr0MitUOBiSNL4e/3d4V4kmleFez1WQxRzzQP0ozv933G+4QXGo64QK51cMB84= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5994.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(136003)(39860400002)(346002)(376002)(366004)(451199021)(30864003)(316002)(2906002)(478600001)(52536014)(41300700001)(8936002)(4326008)(8676002)(54906003)(110136005)(66899021)(71200400001)(64756008)(66476007)(66446008)(66556008)(76116006)(66946007)(5660300002)(7696005)(53546011)(966005)(9686003)(6506007)(26005)(107886003)(82960400001)(38100700002)(186003)(55016003)(122000001)(83380400001)(38070700005)(86362001)(33656002)(32563001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MWlqeEtMa1NZbGdzSUwxc2J2S0tXNFhTV29yNWpHNVRwK0pIVHlGZlFXWjZE?= =?utf-8?B?cURqbDNpbzN6RXJnbnpLMytQSSt6by96NU9xV0x0TitFaGt0UGhsUVhCMjRH?= =?utf-8?B?RDZkVE5zS0RPQ3hEUXRHeGhteUFoTUxmQ1NSUUU0enBXb2wxbFVzbU5TZ0tx?= =?utf-8?B?VjBpS1k0SUZQUkRCYjRZUmQwcGk0cGdCSzV6WGliMkZES3ZwN0Q2MVVSRWZo?= =?utf-8?B?bndmQ0grRlJEcTdXb0NmZ2hVc0VXRFZkamorWVJXOXQyZ1kzUjVHNTJTNnlL?= =?utf-8?B?NFNqbkIwS3FQaS94U05BTFIyRGFqZ1poWFBYR2diaGZUK292MC9iTllYK0s1?= =?utf-8?B?UFdTRDhxWnJWN0g1ckZaS2JmaEJFeTVyZ3YzUGhsL2pMTnUrNDlsbm9EOGRP?= =?utf-8?B?THlkY3hXQ0dFUDBsdFJjaHFKK05xYXhFOFlINFBOenBiSUkxNTZMYkxUVUpE?= =?utf-8?B?akNGRHFBajFBWVdZRDQxYWxyVU1MRVBmSUVsZytKT2V2UVJRK2dtR3F5OUN5?= =?utf-8?B?T2NRS2VyNlQrVWgyVVFGQU9FNkNlNWNHRExSWGRnVnVmK0tCV3IxRW5RQkNa?= =?utf-8?B?TVczTmFzMmxKMEFjb0RLZ1FpWkhGVlB2S3g1YWZuNmtrbTdNZHFIVUkvRmk0?= =?utf-8?B?WnJuejhjcHNnNm5sQTA3SXlXdklHME53SlZWMnZLT0JhVHBWaGxvNDFPaFdO?= =?utf-8?B?TmZXMXhaQUVESHNLU1lYczBISDd0YXA1cnFqOEoxTUxrdjIxRnFvK3BaYkxG?= =?utf-8?B?SjdqZVIyanJrOVJVNXJDa1NRQ1E3TVFxblFnYUU1dkhDNXlVUFZOYk93RzRo?= =?utf-8?B?S29tdjF2c2tlSXRDRVpLU1VWQlVTd0ZBYnR2Sk9ybGZUV2ZRMUd0QjFCQUJo?= =?utf-8?B?Nk5DclQzT1dxMVFmK3lCMEExaDFaKzlrWUlWb2R5bEZKWHo1eDlzSGtCRUlX?= =?utf-8?B?bkJzSDE5UyswSm95ZjQyZ24ybWFHL1E4WFlDVVdmMjJEdGdtdDZqT0I5TTU4?= =?utf-8?B?QmFCNytLV0o4YXZjRjJYVlhUeWpKOTNscmI4VFRBbmhUNWJJK3JsM1BlRWxH?= =?utf-8?B?S1oyclFhZmdZVVl6eWYvTmFHSTBWeEVtdy95bGE1d3FiMGY2L3hVQ0VieEdJ?= =?utf-8?B?eXZGWGxJL1ZHSFhyMzJ0MXloVVNuRlNtSjF3MkJXeG9hWUdCWkQxcmNOa2FB?= =?utf-8?B?dW5rOUtCMGY4OHM1ZzYrWW9DN0dEbldNdmU3bVZyWDJvYnI2TklnaXkvbXVH?= =?utf-8?B?dWVYYi9LekszY29Md1ZBb1Y1TUpLbmRKc000OXdaeWcrQzBmajlIdytWa1RO?= =?utf-8?B?SEZFeXRrcDRkZHNaeFlBVEVITXkrSlVjUE9FaWorQ1RlODhDS3BYcUErMElt?= =?utf-8?B?ekhHNVRMbVQwaUJ0S2t4RnJjUS9EczBlWEtzL21HeXJ3UGdiaEtaTWRHUWlU?= =?utf-8?B?aXNkNlFLRGpRYWRNY0dEL1owZnpGdWJpUHpXTkt0QnVtb3lHUDd0WFhrYkxm?= =?utf-8?B?RTZFeEorTVVVdTY4SGU1WG4xU0F5dHJRQXJ2TkhLbmErK2hCMWdRcnQzaUxw?= =?utf-8?B?Z3dsVithaTFxQWkzbjlmMlczSE84TWRIL2xnd00zRnhFK2tlUVFCOG16UmFT?= =?utf-8?B?SWlaQ2ZxZUMzUU8zWkVRZFRMcU1JK0FTS1JzWGxqQlh6bjdzMHFnN05iKzlX?= =?utf-8?B?NGpZVEJnc3JOM294dzltdGlGZlNGZ0RDWWswWjR1dDhMYUxVMVllM2pNU0ZD?= =?utf-8?B?VG5mcTF6VGl5SEhoZE0zMVVyV1dUL25BTWpHVlBDVXdCdkp5RnlhTkcxRHVL?= =?utf-8?B?TE9pYmNIQmxFUHVqTDdoOW5aMlphQlUvNzJWMFNZSERJRVNhTTNhTjJxWjBD?= =?utf-8?B?UkF3NmQ4bWkwZ2YyN0ROb2RuVGo0NmZVeWU0cjVqbEFGSktLNEorQnU2ZGhk?= =?utf-8?B?U3hOTjRFSGlodmlTNXFVMlJDcGdUcHNRdVREMjB5VDdRaU1zbVRWUW1WcEdM?= =?utf-8?B?clNqeFlHV3g4R0hWaDErSC9Ya2pQNlIweVJaY3hMOC9kMXQzMlNYT3FvQTg2?= =?utf-8?B?MzFkOUt5WFp0Yzc5SEVwSlloYUZwbkkrUkpYSlNGcGNtemRVemV2TDc5QzBH?= =?utf-8?Q?NzMcl7lxHGJDm/7yI2D5zfvEK?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5994.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d261e4b3-3f4e-4698-def9-08db578b453b X-MS-Exchange-CrossTenant-originalarrivaltime: 18 May 2023 10:33:07.6306 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BbbiHuhwHKvIFqeG0X+Zb/7D3YPZWI3vmx9dTaqsYIfBAxdQXDfCIa0FIaswnWZhOx6b2sJXxWTvLWvOSuBOUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR11MB8607 X-OriginatorOrg: intel.com 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT3JpIEthbSA8b3Jpa2FA bnZpZGlhLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBNYXkgMTcsIDIwMjMgMTE6MTkgUE0NCj4g VG86IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBD YzogdGVjaGJvYXJkQGRwZGsub3JnOyBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNv bkBpbnRlbC5jb20+Ow0KPiBCdXJha292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwu Y29tPjsgV2lsZXMsIEtlaXRoDQo+IDxrZWl0aC53aWxlc0BpbnRlbC5jb20+OyBMaWFuZywgQ3Vu bWluZyA8Y3VubWluZy5saWFuZ0BpbnRlbC5jb20+OyBXdSwNCj4gSmluZ2ppbmcgPGppbmdqaW5n Lnd1QGludGVsLmNvbT47IFpoYW5nLCBIZWxpbiA8aGVsaW4uemhhbmdAaW50ZWwuY29tPjsNCj4g TWNuYW1hcmEsIEpvaG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsgWHUsIFJvc2VuDQo+IDxy b3Nlbi54dUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBzZWVraW5nIGNvbW11bml0eSBpbnB1 dCBvbiBhZGFwdGluZyBEUERLIHRvIFA0UnVudGltZQ0KPiBiYWNrZW5kDQo+IA0KPiBIaSBaaGFu ZywNCj4gDQo+IHJ0ZV9mbG93IGlzIGFuIGV4Y2VsbGVudCBjYW5kaWRhdGUgZm9yIGltcGxlbWVu dGluZyBQNC4NCj4gV2UgYW5kIHNvbWUgaW50ZXJuYWwgdGVzdHMgdGhhdCBzaG93cyBncmVhdCBw cm9taXNlIGluIHRoaXMgcmVnYXJkLg0KPiANCj4gSSB3b3VsZCBiZSB2ZXJ5IGhhcHB5IHRvIHN1 cHBseSBhbnkgbmVlZGVkIGluZm9ybWF0aW9uIGFuZCBoYXZlDQo+IGRpc2N1c3Npb24gb24gaG93 IHRvIGNvbnRpbnVlIHdpdGggdGhpcyBwcm9qZWN0Lg0KDQpUaGFuayB5b3UgT3JpISBQbGVhc2Ug Y2hlY2sgbXkgZm9sbG93aW5nIGNvbW1lbnRzDQoNClJlZ2FyZHMNClFpDQoNCj4gDQo+IFBsZWFz ZSBzZWUgaW5saW5lIGRldGFpbGVkIGFuc3dlcnMuDQo+IA0KPiBCZXN0LA0KPiBPcmkgS2FtDQo+ IA0KPiANCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog WmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IE1vbmRheSwgTWF5 IDgsIDIwMjMgOTo0MCBBTQ0KPiA+IFN1YmplY3Q6IHNlZWtpbmcgY29tbXVuaXR5IGlucHV0IG9u IGFkYXB0aW5nIERQREsgdG8gUDRSdW50aW1lDQo+IGJhY2tlbmQNCj4gPg0KPiA+IEhpOg0KPiA+ DQo+ID4gT3VyIHRlYW0gaXMgY3VycmVudGx5IHdvcmtpbmcgb24gZGV2ZWxvcGluZyBhIERQREsg UE1EIGZvciBhIFA0LQ0KPiA+IHByb2dyYW1tZWQgbmV0d29yayBjb250cm9sbGVyLCBiYXNlZCBv biBjdXN0b21lciBmZWVkYmFjayB0byBpbnRlZ3JhdGUNCj4gPiBEUERLIGludG8gdGhlIFA0UnVu dGltZSBiYWNrZW5kIC5baHR0cHM6Ly9wNC5vcmcvcDQtDQo+ID4gc3BlYy9wNHJ1bnRpbWUvbWFp bi9QNFJ1bnRpbWUtU3BlYy5odG1sXQ0KPiA+DQo+ID4gKCopIEhvd2V2ZXIsIHdlIGFyZSBmYWNp bmcgY2hhbGxlbmdlcyBpbiBhZGFwdGluZyBEUERLJ3MgcnRlX2Zsb3cgQVBJDQo+ID4gdG8gdGhl IFA0UnVudGltZSBBUEksIHByaW1hcmlseSBkdWUgdG8gdGhlIHRyYW5zaXRpb24gZnJvbSBhDQo+ ID4gdGFibGUtYmFzZWQgQVBJIHdpdGggZmllbGRzIG9mIGFyYml0cmFyeSBiaXRzIHdpZHRoIGF0 IGFyYml0cmFyeQ0KPiA+IG9mZnNldCB0byBhIHByb3RvY29sLWJhc2VkIEFQSSAobW9yZSBkZXRh aWwgYmUgZGVzY3JpYmVkIGluIHBvc3Qtc2NyaXB0KS4NCj4gPg0KPiA+IFdlIGFyZSBzZWVraW5n IHN1Z2dlc3Rpb25zIGFuZCBiZXN0IHByYWN0aWNlcyBmcm9tIHRoZSBvcGVuLXNvdXJjZQ0KPiA+ IGNvbW11bml0eSB0byBoZWxwIHVzIHdpdGggdGhpcyBpbnRlZ3JhdGlvbi4gU3BlY2lmaWNhbGx5 LCB3ZSBhcmUNCj4gPiBpbnRlcmVzdGVkIGluDQo+ID4gbGVhcm5pbmc6DQo+ID4NCj4gPiAoKikg SWYgYW55b25lIGhhcyBwcmV2aW91c2x5IGF0dGVtcHRlZCB0byBtYXAgcnRlX2Zsb3cgdG8gUDQt YmFzZWQNCj4gZGV2aWNlcy4NCj4gDQo+IFdlIGRpZCB0cnkgc3VjY2Vzc2Z1bGx5Lg0KPiANCj4g PiAoKikgVGhvdWdodHMgb24gaG93IHRvIG1hcCBmcm9tIHRhYmxlLWJhc2VkIG1hdGNoaW5nIHRv IHByb3RvY29sLWJhc2VkDQo+ID4gbWF0Y2hpbmcgbGlrZSBpbiBydGVfZmxvdy4NCj4gDQo+IFJ0 ZV9mbG93IGlzIHRhYmxlIGJhc2VkIChncm91cHMpLCBub3cgd2l0aCB0aGUgaW50cm9kdWN0aW9u IG9mIHRlbXBsYXRlIEFQSQ0KPiBydGVfZmxvdyBpcyBldmVuIG1vcmUgdGFibGUgYmFzZWQgKHdl IGFkZGVkIHRoZSBjb25jZXB0IG9mIHRhYmxlcykgd2hpY2gNCj4gYXJlIGp1c3Qgd2hhdA0KPiBw NCByZXF1aXJlcy4NCg0KWWVzLCB0aGUgcnRlX2Zsb3cgdGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8g bWFwIGEgc2VxdWVuY2Ugb2YgcGF0dGVybnMgdG8gYSBQNCB0YWJsZSBhbmQgYSBzZXF1ZW5jZSBv ZiBhY3Rpb25zIHRvIGEgUDQgYWN0aW9uLiBIb3dldmVyLCBVc2luZyBhIGZpeGVkIHJ0ZV9mbG93 IHRlbXBsYXRlIGNhbiBiZSBwcm9ibGVtYXRpYyB3aGVuIGhhbmRsaW5nIGRpZmZlcmVudCBQNCBw cm9ncmFtcyBpbiB0aGUgc2FtZSBkcml2ZXIuIFRvIHByb3ZpZGUgbW9yZSBmbGV4aWJpbGl0eSwg dGhlIG1hcHBpbmcgb2YgcGF0dGVybnMgYW5kIGFjdGlvbnMgY2FuIGJlIGV4dGVybmFsaXplZCBp bnRvIGEgY29uZmlndXJhdGlvbiBmaWxlIG9yIHBhcnQgb2YgdGhlIGZpcm13YXJlIGNhbiBiZSBs ZWFybmVkIGZyb20gZHJpdmVyLCBhbGxvd2luZyBmb3IgY3VzdG9taXphdGlvbiBiYXNlZCBvbiB0 aGUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9mIGVhY2ggUDQgcGlwZWxpbmUuIGFjdHVhbGx5IHdl IGhhdmUgZW5hYmxlZCB0aGlzIGFwcHJvYWNoIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIGRpZmZl cmVudCBQNCBwcm9ncmFtcy4NCg0KSG93ZXZlciwgYW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggdG8g Y29uc2lkZXIgaXMgd2hldGhlciBpdCB3b3VsZCBiZSBmZWFzaWJsZSB0byBkaXJlY3RseSBleHBv c2UgdGhlIFA0IHRhYmxlIGFuZCBhY3Rpb24gbmFtZXMgb3IgSURzIHRvIHRoZSBhcHBsaWNhdGlv biwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBydGVfZmxvdyB0ZW1wbGF0ZXMuIFRoaXMgYXBwcm9h Y2ggb2ZmZXJzIHNldmVyYWwgcG90ZW50aWFsIGJlbmVmaXRzOg0KDQpJbnRlZ3JhdGlvbiB3aXRo IFA0cnVudGltZSBCYWNrZW5kOiBCeSBleHBvc2luZyB0aGUgUDQgdGFibGUgYW5kIGFjdGlvbiBu YW1lcyBvciBJRHMgZGlyZWN0bHksIERQREsgY291bGQgYmUgZWFzaWx5IGludGVncmF0ZWQgYXMg YSBQNHJ1bnRpbWUgYmFja2VuZC4gVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciB0cmFuc2xh dGlvbiBmcm9tIHRoZSBQNHJ1bnRpbWUgQVBJIHRvIHJ0ZV9mbG93IHRlbXBsYXRlcyBpbiB0aGUg YXBwbGljYXRpb24sIHNpbXBsaWZ5aW5nIHRoZSBpbnRlZ3JhdGlvbiBwcm9jZXNzLg0KDQpFbGlt aW5hdGlvbiBvZiBNYW51YWwgTWFwcGluZzogRXhwb3NpbmcgdGhlIFA0IHRhYmxlIGFuZCBhY3Rp b24gbmFtZXMgb3IgSURzIHRvIHRoZSBhcHBsaWNhdGlvbiB3b3VsZCByZW1vdmUgdGhlIHJlcXVp cmVtZW50IGZvciB0aGUgZW5naW5lZXJpbmcgdGVhbSB0byBtYW51YWxseSBtYXAgZWFjaCBwaXBl bGluZSB0byBzcGVjaWZpYyBydGVfZmxvdyB0ZW1wbGF0ZXMuIFRoaXMgaXMgcGFydGljdWxhcmx5 IGJlbmVmaWNpYWwgaW4gY2FzZXMgd2hlcmUgaGFyZHdhcmUgdmVuZG9ycyBwcm92aWRlIGN1c3Rv bWVycyB3aXRoIGEgdG9vbGNoYWluIHRvIGNyZWF0ZSB0aGVpciBvd24gUDQgcGlwZWxpbmVzIGJ1 dCBkbyBub3QgbmVjZXNzYXJpbHkgb3duIHRoZSBQNCBwcm9ncmFtcy4gQnkgZWxpbWluYXRpbmcg dGhlIGRlcGVuZGVuY3kgb24gcnRlX2Zsb3cgdGVtcGxhdGVzLCB0aGlzIGFwcHJvYWNoIHJlZHVj ZXMgY29tcGxleGl0eSBpbiB1c2luZyBEUERLIGFzIHRoZSBkcml2ZXIuDQoNClRvIGJlIG1vcmUg c3BlY2lmaWMsIHRoZSBwcm9wb3NlZCBBUEkgZm9yIGV4cG9zaW5nIFA0IHRhYmxlIGFuZCBhY3Rp b24gbmFtZXMgb3IgSURzIGRpcmVjdGx5IHRvIHRoZSBhcHBsaWNhdGlvbiBjb3VsZCBiZSBhcyBm b2xsb3dzOg0KDQovKiBHZXQgdGhlIHRhYmxlIGluZm8gKi8NCnN0cnVjdCBydGVfcDRfdGFibGVf aW5mbyB0YmxfaW5mbzsNCnJ0ZV9wNF90YWJsZV9pbmZvX2dldF9ieV9uYW1lKHBvcnRfaWQsICJk ZWNhcF92eGxhbl90Y3BfdGFibGUiLCAmdGJsX2luZm8pOw0KDQovKiBDcmVhdGUgdGhlIGtleSAq Lw0Kc3RydWN0IHJ0ZV9wNF90YWJsZV9rZXkgKmtleTsNCnJ0ZV9wNF90YWJsZV9rZXlfY3JlYXRl KHBvcnRfaWQsIHRibF9pbmZvLT5pZCwgJmtleSk7DQoNCi8qIFNldCB0aGUga2V5IGZpZWxkcyAq Lw0KcnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXksICJ3aXJl X3BvcnQiLCAmd2lyZV9wb3J0LCAyKTsNCnJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25h bWUocG9ydF9pZCwga2V5LCAidHVuX2lwX3NyYyIsICZ0dW5faXBfc3JjLCA0KTsNCnJ0ZV9wNF90 YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwga2V5LCAidHVuX2lwX2RzdCIsICZ0 dW5faXBfZHN0LCA0KTsNCnJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9p ZCwga2V5LCAidm5pIiwgJnZuaSwgMyk7DQpydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9u YW1lKHBvcnRfaWQsIGtleSwgImlwdjRfc3JjIiwgJmlwdjRfc3JjLCA0KTsNCnJ0ZV9wNF90YWJs ZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwga2V5LCAiaXB2NF9kc3QiLCAmaXB2NF9k c3QsIDQpOw0KcnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXks ICJzcmNfcG9ydCIsICZzcmNfcG9ydCwgMik7DQpydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9i eV9uYW1lKHBvcnRfaWQsIGtleSwgImRzdF9wb3J0IiwgJmRzdF9wb3J0LCAyKTsNCg0KLyogR2V0 IHRoZSBhY3Rpb24gc3BlYyBpbmZvICovDQpzdHJ1Y3QgcnRlX3A0X2FjdGlvbl9zcGVjX2luZm8g YXNfaW5mbzsNCnJ0ZV9wNF9hY3Rpb25fc3BlY19pbmZvX2dldF9ieV9uYW1lKHBvcnRfaWQsICJk ZWNhcF92eGxhbl9md2QiLCAmYXNfaW5mbyk7DQoNCg0KLyogQ3JlYXRlIHRoZSBhY3Rpb24gKi8N CnN0cnVjdCBydGVfcDRfYWN0aW9uICphY3Rpb247DQpydGVfcDRfYWN0aW9uX2NyZWF0ZShwb3J0 X2lkLCBhc19pbmZvLT5pZCwgJmFjdGlvbik7DQoNCg0KLyogU2V0IHRoZSBhY3Rpb24gZmllbGRz ICovDQpydGVfcDRfdGFibGVfYWN0aW9uX2ZpZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGFjdGlv biwgIm1vZF9pZCIsICZtb2RfaWQsIDMpOw0KcnRlX3A0X3RhYmxlX2FjdGlvbl9maWVsZF9zZXRf YnlfbmFtZShwb3J0X2lkLCBhY3Rpb24sICJwb3J0X2lkIiwgJnRhcmdldF9wb3J0X2lkLCAyKTsN Cg0KLyogQWRkIHRoZSBlbnRyeSAqLw0KcnRlX3A0X3RhYmxlX2VudHJ5X2FkZChwb3J0X2lkLCB0 YmxfaW5mby0+aWQsIGtleSwgYWN0aW9uKTsNCg0KLi4uDQoNCg0KDQoNCg0KPiANCj4gPiAoKikg QW55IGlkZWFzIG9uIGhvdyB0byBleHRlbmQgb3IgZXhwYW5kIHRoZSBydGVfZmxvdyBBUElzIHRv IGJldHRlcg0KPiA+IGFjY29tbW9kYXRlIFA0LWJhc2VkIG9yIG90aGVyIHRhYmxlLW1hdGNoaW5n IGJhc2VkIGRldmljZXMuDQo+ID4NCj4gDQo+IExldHMgZGlzY3VzcyBhbnkgaXNzdWUgeW91IGhh dmUuDQo+IA0KPiA+IFlvdXIgaW5zaWdodHMgYW5kIGZlZWRiYWNrIHdvdWxkIGJlIGdyZWF0bHkg YXBwcmVjaWF0ZWQhDQo+ID4NCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PSBQb3N0LVNjcmlw dCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4NCj4gPiBNb3JlIGRldGFpbHMgb24g dGhlIHByb2JsZW0gYmVsb3csIGZvciBhbnlvbmUgaW50ZXJlc3RlZA0KPiA+DQo+ID4gSW4gUDQs IGZsb3cgb2ZmbG9hZGluZyBjYW4gYmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIFA0UnVudGltZSBB UEksDQo+ID4gd2hpY2ggcHJvdmlkZXMgYSBzdGFuZGFyZCBpbnRlcmZhY2UgZm9yIGNvbnRyb2xs aW5nIGFuZCBjb25maWd1cmluZw0KPiA+IHRoZSBkYXRhIHBsYW5lIGJlaGF2aW9yIG9mIG5ldHdv cmsgZGV2aWNlcy4gUDRSdW50aW1lIGFsbG93cyBuZXR3b3JrDQo+ID4gb3BlcmF0b3JzIHRvIGR5 bmFtaWNhbGx5IGFkZCwgbW9kaWZ5LCBhbmQgcmVtb3ZlIGZsb3cgcnVsZXMgaW4gdGhlDQo+ID4g aGFyZHdhcmUgZm9yd2FyZGluZyB0YWJsZXMgb2YgUDQtZW5hYmxlZCBkZXZpY2VzLg0KPiA+DQo+ ID4gVGhlIFA0UnVudGltZSBBUEkgaXMgYSB0YWJsZS1iYXNlZCBBUEksIGl0IGFzc3VtZSB0aGUg cGFja2V0IHByb2Nlc3MNCj4gPiBwaXBlbGluZSB3YXMgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUg a2V5L2FjdGlvbiB1bml0cyAodGFibGVzKS4gSW4NCj4gPiBQNFJ1bnRpbWUsIGVhY2ggdGFibGUg ZGVmaW5lcyB0aGUgZmllbGRzIHRvIGJlIG1hdGNoZWQgYW5kIHRoZSBhY3Rpb25zDQo+ID4gdG8g YmUgdGFrZW4gb24gaW5jb21pbmcgcGFja2V0cy4gRHVyaW5nIGNvbXBpbGF0aW9uLCB0aGUgUDQg Y29tcGlsZXINCj4gPiBhc3NpZ25zIGEgdW5pcXVlDQo+ID4gdWludDMyIElEIHRvIGVhY2ggdGFi bGUsIGFjdGlvbiwgYW5kIGZpZWxkLCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGgNCj4gPiBpdHMg Y29ycmVzcG9uZGluZyBzdHJpbmcgbmFtZS4gVGhlc2UgSURzIGhhdmUgbm8gaW5oZXJlbnQgcmVs YXRpb25zaGlwDQo+ID4gdG8gYW55IG5ldHdvcmsgcHJvdG9jb2wgYnV0IGluc3RlYWQgc2VydmUg YXMgYSBtZWFucyB0byBpZGVudGlmeQ0KPiA+IGRpZmZlcmVudCBjb21wb25lbnRzIG9mIGEgUDQg cHJvZ3JhbSB3aXRoaW4gdGhlIFA0UnVudGltZSBBUEkuDQo+ID4NCj4gVGhpcyBpcyB0aGUgY29u Y2VwdCBvZiB0YWJsZXMgYW5kIGdyb3VwcyBpbiBydGVfZmxvdy4NCj4gDQo+ID4gSWYgd2UgY2hv b3NlIHRvIHVzZSBydGVfZmxvdyBhcyB0aGUgbG93LWxldmVsIEFQSSBmb3IgUDRSdW50aW1lLCBh DQo+ID4gdHJhbnNsYXRpb24gbGF5ZXIgaXMgbmVlZGVkIGluIHRoZSBhcHBsaWNhdGlvbiB0byBt YXAgdGhlIFA0IHRhYmxlcw0KPiA+IGFuZCBhY3Rpb25zIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJ0 ZV9mbG93IHJ1bGVzLiBIb3dldmVyLCB0aGlzDQo+ID4gdHJhbnNsYXRpb24gbGF5ZXIgY2FuIGJl IHByb2JsZW1hdGljIGFzIGl0IGlzIG5vdCBlYXNpbHkgc2NhbGFibGUuDQo+ID4gV2hlbiB0aGUg UDQgcGlwZWxpbmUgaXMgcmVmaW5lZCBvciB1cGRhdGVkLCB0aGUgdHJhbnNsYXRpb24gcnVsZXMg bWF5DQo+ID4gYWxzbyBuZWVkIHRvIGJlIHVwZGF0ZWQsIHdoaWNoIGNhbiByZXN1bHQgaW4gZXJy b3JzIGFuZCByZWR1Y2VkIGVmZmljaWVuY3kuDQo+ID4NCj4gSSBkb24ndCB1bmRlcnN0YW5kIHdo eS4NCj4gDQo+ID4gT24gdGhlIG90aGVyIGhhbmQsIGEgaGFyZHdhcmUgdmVuZG9yIHRoYXQgcHJv dmlkZXMgYSBQNC1lbmFibGVkIGRldmljZQ0KPiA+IGlzIHJlcXVpcmVkIHRvIGltcGxlbWVudCBh biBydGVfZmxvdyBpbnRlcmZhY2UgaW4gdGhlaXIgRFBESyBQTUQuDQo+ID4gVHlwaWNhbGx5LCB0 aGUNCj4gPiBQNCBjb21waWxlciBnZW5lcmF0ZXMgaGludHMgZm9yIHRoZSBkcml2ZXIgb24gaG93 IHRvIG1hcCBQNCB0YWJsZXMgdG8NCj4gPiBoYXJkd2FyZSByZXNvdXJjZXMsIGFuZCBob3cgdG8g Y29udmVydCB0YWJsZSBlbnRyeSBhZGQvbW9kaWZ5L2RlbGV0ZQ0KPiA+IGFjdGlvbnMgaW50byBs b3ctbGV2ZWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIEhvd2V2ZXIsIGJlY2F1c2UNCj4gPiBy dGVfZmxvdyBpcyBwcm90b2NvbC1iYXNlZCwgaXQgcG9zZXMgYW4gYWRkaXRpb25hbCBjaGFsbGVu Z2UgZm9yDQo+ID4gZHJpdmVyIGRldmVsb3BlcnMsIHdobyBtdXN0IGNyZWF0ZSBhbm90aGVyIHRy YW5zbGF0aW9uIGxheWVyIHRvDQo+ID4gY29udmVydCBydGVfZmxvdyB0b2tlbnMgaW50byBQNCBv YmplY3QgaWRlbnRpZmllcnMuIFRoaXMgdHJhbnNsYXRpb24NCj4gPiBsYXllciBtdXN0IGJlIGNh cmVmdWxseSBkZXNpZ25lZCBhbmQgaW1wbGVtZW50ZWQgdG8gZW5zdXJlIG9wdGltYWwNCj4gPiBw ZXJmb3JtYW5jZSBhbmQgc2NhbGFiaWxpdHksIGFuZCB0byBlbnN1cmUgdGhhdCB0aGUgZHJpdmVy IGNhbiBlZmZpY2llbnRseQ0KPiBoYW5kbGUgdGhlIGR5bmFtaWMgbmF0dXJlIG9mIFA0IHByb2dy YW1zLg0KPiA+DQo+IFJpZ2h0LCBidXQgc29tZSBvZiB0aGUgdHJhbnNsYXRpb24gY2FuIGJlIGRv bmUgaW4gc2hhcmVkIGNvZGUgYnkgYWxsIFBNRHMNCj4gYW5kIHRoZSB0cmFuc2xhdGlvbiBpcyBz dGF0aWMgZm9yIHRoZSBjb21waWxhdGlvbiBzbyBpbnNlcnRpbmcgcnVsZXMgY2FuIGJlDQo+IHN1 cHBlciBmYXN0IHdpdGggbm8gbmVlZCBmb3IgZXh0cmEgd29yay4NCj4gDQo+ID4gVG8gYmV0dGVy IHVuZGVyc3RhbmQgdGhlIHByb2JsZW0sIGxldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhh bXBsZQ0KPiA+IHRoYXQgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgdGhlIFA0UnVudGltZSBBUEkg dG8gcHJvZ3JhbSBhIHJ1bGUgZm9yDQo+ID4gcHJvY2Vzc2luZyBhIFZYTEFOIHBhY2tldC4gVGhl IHJ1bGUgbWF0Y2hlcyBhIFZYTEFOIHBhY2tldCwNCj4gPiBkZWNhcHN1bGF0ZXMgdGhlIHR1bm5l bCBoZWFkZXIsIGFuZCBmb3J3YXJkcyBpdCB0byBhIHNwZWNpZmljIHBvcnQuDQo+ID4NCj4gPiBU aGUgUDQgc291cmNlIGNvZGUgYmVsb3cgZGVzY3JpYmVzIHRoZSBWWExBTiBkZWNhcCB0YWJsZQ0K PiA+IGRlY2FwX3Z4bGFuX3RjcF90YWJsZSwgd2hpY2ggbWF0Y2hlcyB0aGUgb3V0ZXIgSVAgYWRk cmVzcywgVk5JLCBpbm5lcg0KPiA+IElQIGFkZHJlc3MsIGFuZCBpbm5lciBUQ1AgcG9ydC4gRm9y IGVhY2ggcnVsZSwgZm91ciBhY3Rpb24NCj4gPiBzcGVjaWZpY2F0aW9ucyBjYW4gYmUgc2VsZWN0 ZWQuIFdlIHdpbGwgZm9jdXMgb24gb25lIGFjdGlvbg0KPiA+IHNwZWNpZmljYXRpb24gZGVjYXBf dnhsYW5fZndkIHRoYXQgcGVyZm9ybXMgZGVjYXBzdWxhdGlvbiBhbmQgZm9yd2FyZHMNCj4gdGhl IHBhY2tldCB0byBhIHNwZWNpZmljIHBvcnQuDQo+ID4NCj4gPiB0YWJsZSBkZWNhcF92eGxhbl90 Y3BfdGFibGUgew0KPiA+IMKgwqDCoCBrZXkgPSB7DQo+ID4gwqDCoMKgwqDCoMKgwqAgaGRycy5p cHY0W21ldGEuZGVwdGgtMV0uc3JjX2lwOiBleGFjdCBAbmFtZSgidHVuX2lwX3NyYyIpOw0KPiA+ IMKgwqDCoMKgwqDCoMKgIGhkcnMuaXB2NFttZXRhLmRlcHRoLTFdLmRzdF9pcDogZXhhY3QgQG5h bWUoInR1bl9pcF9kc3QiKTsNCj4gPiDCoMKgwqDCoMKgwqDCoCBoZHJzLnZ4bGFuW21ldGEuZGVw dGgtMV0udm5pwqAgOiBleGFjdCBAbmFtZSgidm5pIik7DQo+ID4gwqDCoMKgwqDCoMKgwqAgaGRy cy5pcHY0W21ldGEuZGVwdGhdLnNyY19pcMKgIDogZXhhY3QgQG5hbWUoImlwdjRfc3JjIik7DQo+ ID4gwqDCoMKgwqDCoMKgwqAgaGRycy5pcHY0W21ldGEuZGVwdGhdLmRzdF9pcMKgIDogZXhhY3Qg QG5hbWUoImlwdjRfZHN0Iik7DQo+ID4gwqDCoMKgwqDCoMKgwqAgaGRycy50Y3Auc3BvcnTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiBleGFjdCBAbmFtZSgic3JjX3BvcnQiKTsNCj4g PiDCoMKgwqDCoMKgwqDCoCBoZHJzLnRjcC5kcG9ydMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA6IGV4YWN0IEBuYW1lKCJkc3RfcG9ydCIpOw0KPiA+IMKgwqDCoCB9DQo+ID4gwqDCoMKg IGFjdGlvbnMgPSB7DQo+ID4gwqDCoMKgwqDCoMKgwqAgQHRhYmxlb25seSBkZWNhcF92eGxhbl9m d2Q7DQo+ID4gwqDCoMKgwqDCoMKgwqAgQHRhYmxlb25seSBkZWNhcF92eGxhbl9kbmF0X2Z3ZDsN Cj4gPiDCoMKgwqDCoMKgwqDCoCBAdGFibGVvbmx5IGRlY2FwX3Z4bGFuX3NuYXRfZndkOw0KPiA+ IMKgwqDCoMKgwqDCoMKgIEBkZWZhdWx0b25seSBzZXRfZXhjZXB0aW9uOw0KPiA+IMKgwqDCoCB9 DQo+ID4gfQ0KPiBUcmFuc2xhdGUgdG8gcnRlX2Zsb3c6DQo+IHRlbXBsYXRlIHBhdHRlcm4gcmVs YXhlZF9tb2RlID0gMSBwYXR0ZXJuID0gIElwdjRfc3JjIC8gaXB2NF9kc3QgIC8gdm5pIC8NCj4g aXB2NF9zcmMgLyBpcHY0X2RzdCAvIHRjcF9zcG9ydCAvIHRjcF9kcG9ydCBtYXAgc3RydWN0dXJl ID0gew0KPiAJdHVuX2lwX3NyYyA9ICZwYXR0ZXJuW2lwdjRfc3JjXQ0KPiAJLi4uLg0KPiB9DQo+ ID4gLi4uDQo+ID4NCj4gPiBhY3Rpb24gZGVjYXBfdnhsYW5fZndkKFBvcnRJZF90IHBvcnRfaWQp IHsNCj4gPiDCoMKgwqAgbWV0YS5tb2RfYWN0aW9uID0gKGJpdDwxMT4pVlhMQU5fREVDQVBfT1VU RVJfSVBWNDsNCj4gPiDCoMKgwqAgc2VuZF90b19wb3J0KHBvcnRfaWQpOw0KPiA+IH0NCj4gPg0K PiBTYW1lIGFzIGFib3ZlIGp1c3Qgd2l0aCBhY3Rpb24gdGVtcGxhdGUNCj4gDQo+ID4gQmVsb3cg aXMgYW4gZXhhbXBsZSBvZiB0aGUgaGludCB0aGF0IHRoZSBjb21waWxlciB3aWxsIGdlbmVyYXRl IGZvcg0KPiA+IHRoZQ0KPiA+IGRlY2FwX3Z4bGFuX3RjcF90YWJsZToNCj4gPg0KPiA+IFRhYmxl IElEOsKgwqDCoMKgwqAgODQ1NDE0NA0KPiA+IE5hbWU6wqDCoMKgwqDCoMKgwqDCoMKgIGRlY2Fw X3Z4bGFuX3RjcF90YWJsZQ0KPiA+IEZpZWxkIElEwqDCoMKgwqDCoMKgIE5hbWXCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNYXRjaCBUeXBlwqDCoMKg wqAgQml0IFdpZHRoDQo+ID4gQnl0ZSBXaWR0aMKgwqDCoMKgIEJ5dGUgT3JkZXINCj4gPiAxwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHVuX2lwX3NyY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gNMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG5ldHdvcmsNCj4gPiAywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdHVuX2lwX2RzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0 wqDCoMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gNMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5l dHdvcmsNCj4gPiAzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm5pwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleGFjdMKgwqAgwqDCoMKgwqDC oMKgwqAyNA0KPiA+IDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gNMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlwdjRfc3JjwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gNMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ldHdvcmsNCj4gPiA1wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaXB2NF9kc3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAgMzINCj4gPiA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbmV0d29yaw0KPiA+IDbCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqBzcmNfcG9ydMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleGFjdMKgwqDCoMKgwqDCoMKg wqDCoCAxNg0KPiA+IDLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gN8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRzdF9wb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDE2DQo+ID4gMsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ldHdvcmsgU3BlYyBJRMKgwqDCoMKgwqDCoMKgIE5hbWUN Cj4gPiA4NTE5NzE2wqDCoMKgwqDCoMKgIMKgZGVjYXBfdnhsYW5fZndkDQo+ID4gODUxOTcxOMKg wqDCoMKgwqDCoMKgIGRlY2FwX3Z4bGFuX2RuYXRfZndkDQo+ID4gODUxOTcyMMKgwqDCoMKgwqDC oMKgIGRlY2FwX3Z4bGFuX3NuYXRfZndkDQo+ID4gODUxOTY5NcKgwqDCoMKgwqDCoMKgIHNldF9l eGNlcHRpb24NCj4gPg0KPiA+IEFuZCB0aGUgaGludCBvZiBhY3Rpb24gc3BlYyAiZGVjYXBfdnhs YW5fZndkIiBhcyBiZWxvdzoNCj4gPg0KPiA+IFNwZWMgSUQ6wqDCoMKgwqDCoMKgIDg1MTk3MTYN Cj4gPiBOYW1lOsKgwqDCoMKgwqDCoMKgwqDCoCBkZWNhcF92eGxhbl9md2QNCj4gPiBGaWVsZCBJ RMKgwqDCoMKgwqDCoCBOYW1lwqDCoMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgQml0IFdpZHRowqDCoMKgwqDCoCBCeXRlIFdpZHRoDQo+ID4gQnl0ZSBPcmRl cg0KPiA+IDHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0X2lkwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg NA0KPiA+IGhvc3QNCj4gPg0KPiA+IFBsZWFzZSBub3RlIHRoYXQgZGlmZmVyZW50IGNvbXBpbGVy cyBtYXkgYXNzaWduIGRpZmZlcmVudCBJRHMuDQo+ID4NCj4gPiBCZWxvdyBpcyBhbiBleGFtcGxl IG9mIGhvdyB0byBwcm9ncmFtIGEgcnVsZSB1c2luZyB0aGUgUDQgcnVudGltZSBBUEkNCj4gPiBp biBKU09OIGZvcm1hdC4gVGhpcyBydWxlIG1hdGNoZXMgZmllbGRzIGFuZCBkaXJlY3RzIHBhY2tl dHMgdG8gcG9ydCA1Lg0KPiA+DQo+ID4gew0KPiA+IMKgwqDCoCAidHlwZSI6IDEswqAgLy9JTlNF UlQNCj4gPiDCoMKgwqAgImVudGl0eSI6IHsNCj4gPiDCoMKgwqDCoMKgwqDCoCAidGFibGVfZW50 cnkiOiB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAidGFibGVfaWQiOiA4NDU0MTQ0LA0K PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1hdGNoIjogWw0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB7ICJmaWVsZF9pZCI6IDEsICJleGFjdCI6IHsgInZhbHVlIjogWzEw LCAwLCAwLCAxXSB9DQo+ID4gfSzCoMKgIC8vIG91dGVyIHNyYyBJUCA9DQo+ID4gMTAuMC4wLjEN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRfaWQiOiAyLCAiZXhh Y3QiOiB7ICJ2YWx1ZSI6IFsxMCwgMCwgMCwgMl0gfQ0KPiA+IH0swqAgLy8gb3V0ZXIgZHN0IElQ ID0NCj4gPiAxMC4wLjAuMg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7ICJm aWVsZF9pZCI6IDMsICJleGFjdCI6IHsgInZhbHVlIjogWzAsIDAsIDEwXSB9IH0sDQo+ID4gLy/C oCB2bmkgPSAxMCwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRf aWQiOiA0LCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFsxOTIsIDAsIDAsIDFdIH0NCj4gPiB9LCAvLyBp bm5lciBzcmMgSVAgPQ0KPiA+IDE5Mi4wLjAuMQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB7ImZpZWxkX2lkIjogNSwgImV4YWN0IjogeyAidmFsdWUiOiBbMTkyLCAwLCAwLCAy XSB9DQo+ID4gfSwgLy8gaW5uZXIgZHN0IElQID0NCj4gPiAxOTIuMC4wLjINCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgeyJmaWVsZF9pZCI6IDYsICJleGFjdCI6IHsgInZhbHVl IjogWzAsIDIwMF0gfSB9LCAvLw0KPiA+IHRjcCBzcmMgcG9ydCA9IDIwMA0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7ImZpZWxkX2lkIjogNywgImV4YWN0IjogeyAidmFsdWUi OiBbMCwgMjAxXSB9IH0sIC8vDQo+ID4gdGNwIGRzdCBwb3J0ID0gMjAxDQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBdLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFjdGlvbiI6IHsN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFjdGlvbiI6IHsNCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uX2lkIjogODUxOTcxNiwN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAicGFyYW1zIjogWw0K PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAicGFy YW1faWQiOiAxLCAidmFsdWUiOiBbNSwgMCwgMCwgMF0gfQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC4uLg0KPiA+IMKgwqDCoMKgwqDCoMKgIH0NCj4gPiDCoMKgwqAgfcKgwqDCoCAuLi4N Cj4gPiB9DQo+ID4NCj4gPiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgaXMgb25seSBhIHBhcnQgb2Yg dGhlIGZ1bGwgY29tbWFuZC4gRm9yIG1vcmUNCj4gPiBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVy IHRvIHRoZSBwNHJ1bnRpbWUucHJvdG9bMl0NCj4gPg0KPiA+IDEuIGh0dHBzOi8vcDQub3JnL3A0 LXNwZWMvcDRydW50aW1lL21haW4vUDRSdW50aW1lLVNwZWMuaHRtbA0KPiA+IDIuDQo+ID4NCj4g aHR0cHM6Ly9naXRodWIuY29tL3A0bGFuZy9wNHJ1bnRpbWUvYmxvYi9tYWluL3Byb3RvL3A0L3Yx L3A0cnVudGltZS5wDQo+IHINCj4gPiBvdG8NCj4gPg0KPiA+IFRoYW5rIHlvdSBmb3IgeW91ciBh dHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuDQo+ID4NCj4gDQo+IEkgdGhpbmsgdGhhdCB3ZSBzaG91 bGQgc2NoZWR1bGUgc29tZSBtZWV0aW5nIHRvIHNlZSBob3cgbXVjaCBnYXBzIHdlDQo+IHJlYWxs eSBoYXZlIGJldHdlZW4gdGhlIHJ0ZV9mbG93IGFuZA0KPiBQNCBhbmQgaG93IHdlIGNhbiBpbXBy b3ZlIHRoZSBydGVfZmxvdyB0byBhbGxvdyB0aGUgYmVzdCBleHBlcmllbmNlLg0KDQpTb3VuZCBh IGdvb2QgaWRlYSENCj4gDQo+ID4gUmVnYXJkcw0KPiA+IFFpDQo=