From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.682.1686085571304922971 for ; Tue, 06 Jun 2023 14:06:11 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Sq52d5p3; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686085571; x=1717621571; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=oTszNzrLtYeFUdWI0j0vDhs4C8FCULADYKC435TFO9w=; b=Sq52d5p3JLbB0FoSWX4v1X+rmYoKxT+eaJMzvvuD2WDekCrVIfpeAUfp q1KykUZ7pRZJlm5dX0pYxlp9D049mAfp2PW/0XT3uDOz4mFjjiTOuKJBC cUKSEAUrgPlk8ZngYMEwZ+htuge5zK7Py0PqAswX4YyFns/0scltbMSSI nezzIs2u+uA7T97NFo4mPgEnPipOcuAiAWvLueaAXlVmdzAhjmemJllXJ wTurRrU8PAFZTbvA8ItE+imdj2t2GUOm6wVDhRQ15171NUEQNF1gHP4Mz 7NnIqF2UZZJ1sBrMgs9jq7J7gtucY17/qO0p/KcyK3hFjU1CYDRol1UTY w==; X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="354296039" X-IronPort-AV: E=Sophos;i="6.00,221,1681196400"; d="scan'208";a="354296039" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jun 2023 14:06:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="738934130" X-IronPort-AV: E=Sophos;i="6.00,221,1681196400"; d="scan'208";a="738934130" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga008.jf.intel.com with ESMTP; 06 Jun 2023 14:06:09 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 6 Jun 2023 14:06:08 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Tue, 6 Jun 2023 14:06:08 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.177) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Tue, 6 Jun 2023 14:06:08 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZnkdzGhet7s/8yVPATO94UAqmHH/L6QbF4t3VMTcyaxUV/M2O83Y6Vds6YTB4R57dKWrBX7jjM1rQlRfBwozjRcRZqzyvsm4mNnzBvFvuMHDzgGyRlj8+iY4VmUaW14jRWjhHIg3Z08r3jXeXDHGFSCUy8AMxp2AgOj+QGs8saLSdfO2m2uvSs/kgRuCCArN/HiJC+bxsXF+Eem18y2BurCKyOLAE4U7BvFnLbgRiWMPVz5XTTAmpN91gINbsFgcC6cZ7sAHbGG0CbSBYWpWkWh2/EE98n8qJ+kYCQIKQKlv9xJZSH2HIEW4GtnWaVwYDa6PVW8iLXgKRZJGUtCssg== 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=oTszNzrLtYeFUdWI0j0vDhs4C8FCULADYKC435TFO9w=; b=SPuMmhSSaxSBT9yX8Pe4xSsI53HzJi3BCyDMTr0ZuGslW8AC2wcZXuU6DEa9p14KJES8xnjrCjrF4GVJlprQ+ByIyMKvhHb2dfRBJrb0jZJ9JwBmcUs5cfaNYoOS8U4YprG0DaKsrpdaHFTLogYl4fOzsTJvGnLkbOkjnQWDuOj6V84AHiinvQ+M7JcPRxHnNN5EMawngxS9ruckJnyvcTaISwmA2L/rZNQPPbbZ/ynKG8ERtBVFL6AZyS3mcld+iDdTNTleHjyciC/6i1oINCKsROXfylgFEedsuJEIQBXHAc17Dy/84DYVLkZcgskqPTxFH+cEMakwqgCML6xUOg== 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 CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by DM4PR11MB5405.namprd11.prod.outlook.com (2603:10b6:5:394::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Tue, 6 Jun 2023 21:06:06 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::15db:10a2:d32e:c48]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::15db:10a2:d32e:c48%6]) with mapi id 15.20.6455.030; Tue, 6 Jun 2023 21:06:05 +0000 From: "Michael D Kinney" To: "Li, Yong" , "devel@edk2.groups.io" , "sunilvl@ventanamicro.com" , "Gao, Liming" CC: "Warkentin, Andrei" , "Chai, Evan" , Tuan Phan , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v2 1/1] MdePkg/BaseLib: Add SpeculationBarrier implementation for RiscV64 Thread-Topic: [edk2-devel] [PATCH v2 1/1] MdePkg/BaseLib: Add SpeculationBarrier implementation for RiscV64 Thread-Index: AQHZlHe4MTAywG+uVkaSTnbk5g3/l693wRQAgADbEQCAAz4nAIACciDA Date: Tue, 6 Jun 2023 21:06:05 +0000 Message-ID: References: <5105ea68520e82932c4253e087438db53546ea6d.1685616822.git.yong.li@intel.com> In-Reply-To: Accept-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: CO1PR11MB4929:EE_|DM4PR11MB5405:EE_ x-ms-office365-filtering-correlation-id: 42959518-8f53-4d81-f5a6-08db66d1d7b9 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kN8FUswl3rp1uHEQ+FApgTveq1MCiqBjGJqh4Dk8lyu7dRIBqOlHfw/mWE7s/vMbiV6xlDFT7O4wz86NeRNFrAxbXuQuowGQ6KYenzvjNjQuB+51UcEWlGm/+dgiaMZYjsW3I6c1H+x84+ufD+aV6p0slklSrRqXB7XKdTyMeCYKhKVVNV4YywaUdidQowBuyMwoH5zt6xqMCYLgQMdSgG61tzVYymn0S1DJjF9PQXkgzWPRKrQK5TS+sG5MyPOLxa/8MdSz2/ae63bi7BxnlZPi9EbzJyeA3J56CyO1Tn223gQzYUyIKW5B/aV03dLdM9NGgYoCJn4EuvXEXEE+78lqJa0hH/9KTmxMzWLl7t24LmzQ2jTZDmrh+uTDOU0u+CjPxrHXChN9ITF84JMAh0OdZZ2LBeOCE2z6OSKcK1DLQXQnmZPf3yH9wF7SOriy1CvwezuO5CwlyELoOUm8ESzZsJaD0wO0Yuh6Y3f93XVhR8iizoATJaK8KNbAzBUYQKFfwGavwklvQZ9cPggXONw9FObVexJK5Ik+q/2qdAmeeK1h31YboRIRNn6xCiaUwLSsK0ZtDGFHbEVfePnXP2tGE24YeEpU437cAJSYj4/PSAMnzGvGoyadLBRTnqtGYTBNTdJEQOLMi/mo5LAt4g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(396003)(376002)(39860400002)(366004)(136003)(451199021)(110136005)(19627235002)(2906002)(54906003)(66899021)(478600001)(71200400001)(5660300002)(8676002)(8936002)(52536014)(4326008)(38070700005)(86362001)(33656002)(66556008)(66446008)(66476007)(64756008)(122000001)(316002)(66946007)(76116006)(82960400001)(55016003)(38100700002)(83380400001)(41300700001)(6506007)(26005)(9686003)(53546011)(186003)(966005)(107886003)(7696005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eVh3bEUwSHJpYThQZWNFU0l4WHhCeGsvdVZmakgwT001MXRQZXdLbGNVVnB5?= =?utf-8?B?N2ZrbzNrRG1PZ2luWi9CMXVmSEc1dWZHajhjWlJRR3V5Lyt2QXRvUUNvY0Zy?= =?utf-8?B?c2pqSEtGRlhtOEdRbmd6aDR3WDc5eno4Vmtub0xzVVZhT2dueWN1V1JFWE9K?= =?utf-8?B?UE5Mc0s4cHNQMWlrZEdrcEY3aG1OdHZ2a0NDaG5NRDZCemdWM2hSaForeUlX?= =?utf-8?B?T1V0NnU5ajFqbmtTbXp2NCs1QzdJNkVkOXU1WlgyWGJQcWhjbEJ2V1NFR0JS?= =?utf-8?B?RVhpTlE5MnJuczM4SWRhejBGQ3Q1anNhcUZ1STBhNWtBNG9ESzNTb3VRaFgv?= =?utf-8?B?YS9IK2dQTVNaK2NENjRCVk5vWmhPdUh2Q28xYTBDcVQvemtMZUUyQXp4bU5B?= =?utf-8?B?SWp2Vno4TUNxRWphZWM2dTBac2RjaHQvUkhTcmlQZTdZY2VxMW9ONHYrTHlx?= =?utf-8?B?cnlTN25nbXZhODMyZlhlVXM4cEFtWE12YjVMMWQ1SXREZVAxUVozVXFZUFZj?= =?utf-8?B?Mzh0b3VBZncwUzJUSGFLN1NpL3VIQm1nUk9RU0lGaEZUSEJoVGt1NlZ0WFh2?= =?utf-8?B?dC9VdUh0SzFabWhYd2p0Qi9Ob3M3UWNzN3Vac1h6MlJMK0dwSWZsNTN1WE5N?= =?utf-8?B?WnVRSTIyellDMHhVVlIzQUxZeHRIc2R0WVo5RDVCUTBIMFVZTDFYMnA4ejUx?= =?utf-8?B?bkZWQ3JYMTZpTmNqOERvd2J0QkpEc0JaKzlSR1JzNXVuZzkvczVFWDBDWUkw?= =?utf-8?B?YTM5aVg5TENWYTJXMlBNaXVPVDVEOU4yZVp4bXo4dm5tY2VkT1kzTFpMVEh3?= =?utf-8?B?c3Q4d1BGV3lWYjFqK2JIS2ZMOWI3T1dMd2NQa00wWHBzMzlUNHBrUFMrYnVJ?= =?utf-8?B?VndRdExMdk9GT24wQXF6bng1VGdTWXA3dW8rM3JmeGpmMEp0Q0JYU2xJKys5?= =?utf-8?B?M0F2OFQ2cWRKeUkrUVRVbFg3TjhUWUxEc2txUk43cE8xTUtSVFdycitISVJw?= =?utf-8?B?RFBsUmZvOWcxUnRSV1NNd0JqR1BraDBXTklRRm5oeHBhRlg2Qzh1WjhqLytv?= =?utf-8?B?RFNUYTVzR0EvcHgvbjdEYkhjU1JRajIvTGtmNmZYbXh0T3ltOEdBSDg3ZWhQ?= =?utf-8?B?SmNiM0tIWkhzYmE1UndCODlubmxCc0dXRVdaS0VIblMxMDFGZTlOczdiV2tx?= =?utf-8?B?QzRxUTVzZ2ozV0U5TFR5MmI5Q296YmZ6MGNPTzloemUyc0VLNzNCN2RCNE9n?= =?utf-8?B?azZoVjRKSXNjOHI3QWJRTjRKNmJuOTNNaDNWcjhRQkIxYlZabW1LM0NqeWlP?= =?utf-8?B?bWZRVG9IaFM1K0JJaEdhV0RuVVFqM0tBRm9tWDQwR0VWYStjWGZpWnhTYldF?= =?utf-8?B?ckRlMTBVaUpDK2RnMnZ5WGRxOWJLaVhobTh4V1l3VS9sbmI0dy9za1QwNndz?= =?utf-8?B?bFRrc0pQcmtYSyszT21hb0xZbllYaUkrSFRsOU84R0ZjNkVBZ3Y3MGUzdXRL?= =?utf-8?B?SXo5YjBkL01QeTRGazU2ZUxCSlFqRTdKeVRwM3NPWnZtQjdndFZRYThoVmZD?= =?utf-8?B?ZFJmTm02bmw0RThmeDlOc3F6Y0RXNXZZdDgwTjNSQ3ZnMDdRaktnNmJoVGxP?= =?utf-8?B?MjhoNzZMN1pCOVBYcnhQWlpLQVNaQUp1Qk5BbzBpQzQydGlmUi9RcFdBOGFq?= =?utf-8?B?RWR0WG5FM0MreVIvMWZCb0tGMnlXTGRnS21oK2E2R0Y3YnppVmkyMVZ1YjlF?= =?utf-8?B?NWlpeWFGdit6b2xIT0hLalRzUFhYNWxOajhnYUxCNXFHbUcyelBqK1FWMXJO?= =?utf-8?B?OXdiSUY5UUY2SlA2TklDMWtTS0JKTDhvU1hWMmlTelN0ZHFlVnhwZDUxcTBj?= =?utf-8?B?YXZ6TllvSkZvYndRSmd6MVZ1QTJQbXRmVExvcnVaM0hDV09GOWovNUdYNW45?= =?utf-8?B?cWg4TUh5aUV1VEJsNnExYTdvVGQwRTNtM2pQLzR1NzZOVVF2am1BMzlEN3lw?= =?utf-8?B?YkFybUp0dlhaT3Vyd3hGeXVBaHd6VXFwVS96RjNVUHd0V0dOK0FrU0ZVbG5Z?= =?utf-8?B?ZDIyZlE4ZHFlUU9XWEZhVVN5N3E5aStZb3lwZ1RuM1VIRSt0eHJ5T0R5WVJo?= =?utf-8?B?bXpab2prQWY0ZFNQb3JNQlZiUGJpdVdCQ3l1MEJ6UkpvV0hTdXpJOVRpT0pa?= =?utf-8?B?bUE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42959518-8f53-4d81-f5a6-08db66d1d7b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2023 21:06:05.6109 (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: 8S2DEMt8+a6MquRt6EJtY8ptDrst46FB1oZKBO+VAoBHOcd0Exp8pE8isuP+wywyXUm4xb0ItZIA8wpVvQbGAN+Tzb4j1pyHEoF03WbzNNQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5405 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWVyZ2VkDQoNCk1pa2UNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IExpLCBZb25nIDx5b25nLmxpQGludGVsLmNvbT4NCj4gU2VudDogTW9uZGF5LCBKdW5lIDUsIDIw MjMgMTI6NDUgQU0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBzdW5pbHZsQHZlbnRhbmFt aWNyby5jb207IEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT47IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+IENjOiBXYXJrZW50 aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+OyBDaGFpLCBFdmFuDQo+IDxl dmFuLmNoYWlAaW50ZWwuY29tPjsgVHVhbiBQaGFuIDx0cGhhbkB2ZW50YW5hbWljcm8uY29tPg0K PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MiAxLzFdIE1kZVBrZy9CYXNlTGli OiBBZGQNCj4gU3BlY3VsYXRpb25CYXJyaWVyIGltcGxlbWVudGF0aW9uIGZvciBSaXNjVjY0DQo+ IA0KPiBIaSAgTWljaGFlbCwNCj4gDQo+IEkgdXBkYXRlZCB0aGUgY29tbWl0IG1lc3NhZ2VzIGFu ZCB0aGUgRURLIElJIENJIHBhc3NlcywNCj4gVGhlIFBSIGxpbmsgaXMgYXMgYmVsb3cuDQo+IGh0 dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9wdWxsLzQ0ODANCj4gDQo+IFBsZWFzZSBo ZWxwIG1lcmdlLCB0aGFua3MgZm9yIHRoZSBoZWxwaW5nDQo+IA0KPiANCj4gT24gMjAyMy82LzMg MTQ6MTMsIExpLCBZb25nIHdyb3RlOg0KPiA+IEhpIE1pY2hhZWwNCj4gPg0KPiA+IFRoaXMgaXMg dGhlIGNoYW5nZSB0byBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1Jpc2NWNjQuDQo+ID4gU2luY2Ug aXQgaXMgZm9yIFJpc2NWIHNwZWNpZmljLCBJIHNvbWVob3cgZ290IHRoZSByZXZpZXcgZnJvbSBT dW5pbC4NCj4gPiBOb3Qgc3VyZSBuZWVkIGFkZGl0aW9uYWwgcmV2aWV3ZXIgYW5kIG9yIGFueXRo aW5nIGVsc2UgZnJvbSBteSBzaWRlID8NCj4gPiBJdCBpcyBteSBmaXJzdCBwYXRjaCB0byBlZGsy LCBwbGVhc2UgaGVscCBwcm9jZWVkIGFuZCBsb29rIGZvciB0aGUNCj4gZmVlZGJhY2suIFRoYW5r cw0KPiA+DQo+ID4NCj4gPiBPbiAyMDIzLzYvMyAxOjA5LCBTdW5pbCBWIEwgd3JvdGU6DQo+ID4+ IE9uIFRodSwgSnVuIDAxLCAyMDIzIGF0IDA2OjU2OjA1UE0gKzA4MDAsIFlvbmcgTGkgd3JvdGU6 DQo+ID4+PiBJbXBsZW1lbnQgdGhlIFNwZWN1bGF0aW9uQmFycmllciB3aXRoIGltcGxlbWVudGF0 aW9ucyBjb25zaXN0aW5nIG9mDQo+ID4+PiBmZW5jZSBpbnN0cnVjdGlvbiB3aGljaCBwcm92aWRl cyBmaW5lci1ncmFpbiBtZW1vcnkgb3JkZXJpbmdzLg0KPiA+Pj4gUGVyZm9ybSBEYXRhIEJhcnJp ZXIgaW4gUmlzY1Y6IGZlbmNlIHJ3LHJ3DQo+ID4+PiBQZXJmb3JtIEluc3RydWN0aW9uIEJhcnJp ZXIgaW4gUmlzY1Y6IGZlbmNlLmk7IGZlbmNlIHIscg0KPiA+Pj4gTW9yZSBkZXRhaWwgaXMgaW4g QXBwZW5kaXggQTogUlZXTU8gRXhwbGFuYXRvcnkgTWF0ZXJpYWwgaW4NCj4gPj4+IGh0dHBzOi8v Z2l0aHViLmNvbS9yaXNjdi9yaXNjdi1pc2EtbWFudWFsDQo+ID4+Pg0KPiA+Pj4gVGhpcyBBUEkg aXMgZmlyc3QgaW50cm9kdWNlZCBpbiB0aGUgYmVsb3cgY29tbWl0cyBmb3IgSUEzMiBhbmQgeDY0 DQo+ID4+Pg0KPiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvY29tbWl0L2Q5ZjFj YWM1MWJkMzU0NTA3ZTg4MGU2MTRkMTFhMWRjMTYNCj4gMGQzOGEzDQo+ID4+Pg0KPiBodHRwczov L2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvY29tbWl0L2U4M2Q4NDFmZGMyODc4OTU5MTg1YzRj NmNjMzhhN2ExZTgNCj4gODM3N2E0DQo+ID4+PiBhbmQgYmVsb3cgdGhlIGNvbW1pdCBmb3IgQVJN IGFuZCBBQXJjaDY0IGltcGxlbWVudGF0aW9uDQo+ID4+Pg0KPiBodHRwczovL2dpdGh1Yi5jb20v dGlhbm9jb3JlL2VkazIvY29tbWl0L2MwOTU5YjQ0MjZiMmRhNDVjZGI4MTQ2YTUxMTZiYjRmZDkN Cj4gYjg2NTM0DQo+ID4+Pg0KPiA+Pj4gVGhpcyBjb21taXQgaXMgdG8gYWRkIHRoZSBSaXNjVjY0 IGltcGxlbWVudGF0aW9uIHdoaWNoIHdpbGwgYmUgdXNlZCBieQ0KPiA+Pj4gdmFyaWFibGUgc2Vy dmljZSB1bmRlciBWYXJpYWJsZS9SdW50aW1lRHhlDQo+ID4+Pg0KPiA+Pj4gQ2M6IEFuZHJlaSBX YXJrZW50aW4gPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0KPiA+Pj4gQ2M6IEV2YW4gQ2hh aSA8ZXZhbi5jaGFpQGludGVsLmNvbT4NCj4gPj4+IENjOiBTdW5pbCBWIEwgPHN1bmlsdmxAdmVu dGFuYW1pY3JvLmNvbT4NCj4gPj4+IENjOiBUdWFuIFBoYW4gPHRwaGFuQHZlbnRhbmFtaWNyby5j b20+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBZb25nIExpIDx5b25nLmxpQGludGVsLmNvbT4NCj4g Pj4+IC0tLQ0KPiA+Pg0KPiA+PiBSZXZpZXdlZC1ieTogU3VuaWwgViBMIDxzdW5pbHZsQHZlbnRh bmFtaWNyby5jb20+DQo+ID4+DQo+ID4+IFRoYW5rcywNCj4gPj4gU3VuaWwNCj4gPj4NCj4gPj4N Cj4gPj4gDQo+ID4+DQo+ID4+DQo=