From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web10.3903.1675907157434761816 for ; Wed, 08 Feb 2023 17:45:57 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=kMfEBiZE; spf=pass (domain: intel.com, ip: 134.134.136.126, 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=1675907157; x=1707443157; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=rnk0yru0HMkGbW/xOkANor8jzcBZXEZqjHorekrpWUA=; b=kMfEBiZETJtmFtp7ox4w49pYJ2ZfHnwy7M7yCv4T/O4IJgbXlZ+RT4XX vNoA3bkXoGgXlzydfwgpNxmOHgL0Tm01LupYtaBiQ5xRR0TD59WbfMW8u L8Vi3ZvJSVkoPliuzhpJy8yVZgbz1UE1cHca3dDHYfy8K1yfG1foinJE+ WRPaqN99OUVfT1oxzUhOJv4gDweaAQmNJj9KuFAKt8JyCXH7XzrLCObeG K8MwVEOm1DIIUHEs4fLtbVth6UkkVeU6fo6ENFf2hvygVAURyFwv6HU7w N8xCv0JPnCHpM1Kn/MgwMTpYbu0KbvLJaQNFyEZKeGmX0SWuWAgC1u7Zc A==; X-IronPort-AV: E=McAfee;i="6500,9779,10615"; a="313618497" X-IronPort-AV: E=Sophos;i="5.97,281,1669104000"; d="scan'208";a="313618497" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Feb 2023 17:45:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10615"; a="791422799" X-IronPort-AV: E=Sophos;i="5.97,281,1669104000"; d="scan'208";a="791422799" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga004.jf.intel.com with ESMTP; 08 Feb 2023 17:45:56 -0800 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.16; Wed, 8 Feb 2023 17:45:56 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.16 via Frontend Transport; Wed, 8 Feb 2023 17:45:56 -0800 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.100) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Wed, 8 Feb 2023 17:45:56 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c5PvuZTwTwOefN3q9oQWQR0u9GeL0QmoDXZNp0WuaSV/eeyReWF3f4ctKCkAYbYWjeQgCM18C6LEqs4vuaFOhm2X8v5hRizvq8WZJC7K07u6vV7a48LE00sL15ZHS/9vxPdgXHddZFOYkQmY+14HzKCLrw6R4Ra4aVmVxhrkalZ558xr+lIBCbSI1MFc+WNtCLbdcvq3zmaF/P0VhGVXcNo/JG+3B3gvtuwRS9BCneNeDuNBeYQOuh4O0AhHGiZK34XqlsP9Am+3Q/C7CV4MsWYoMxSySgs8xhEZD56SpqlfLoZ9WFU/J0kV+bkvMKekxkvaYSMGYXgrJA3YE4xnEw== 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=rnk0yru0HMkGbW/xOkANor8jzcBZXEZqjHorekrpWUA=; b=InxienjyJQgkiIbCPeUbPZU1TsSO+tDEQYSdHybXzkeSfXfOJWAdbwOuM3lUeF29eSuukeAIe/AythBvboetlNuPBCHNC2ThcAVxL6YVkTwlbDgKenknBA05b+a2Gk2EJA9QPx9UAVK9410a51KELDL3aZ+ljowZrb1dyFoL97v12+7r+ofPqE2TkvFCtd0YCmjWdrLbY1OdMbqUWnMz2xSF7OgicRSm9u8r/jjSJcp1GesgJqs3YiNGb+uijQTDIvT40ki47dOPpLvERyvOMVxnYbf3Er3FA6qSG7eWRjwamB+1+AF82KsjklUbKHsYsoSoLRtbFoFFBAUuNCEtGg== 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 CY5PR11MB6140.namprd11.prod.outlook.com (2603:10b6:930:28::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17; Thu, 9 Feb 2023 01:45:48 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68%5]) with mapi id 15.20.6086.017; Thu, 9 Feb 2023 01:45:48 +0000 From: "Michael D Kinney" To: Sunil V L , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" , Abner Chang , "Kinney, Michael D" Subject: Re: [edk2-staging/RiscV64QemuVirt PATCH V7 03/20] MdePkg: Add BaseRiscVSbiLib Library for RISC-V Thread-Topic: [edk2-staging/RiscV64QemuVirt PATCH V7 03/20] MdePkg: Add BaseRiscVSbiLib Library for RISC-V Thread-Index: AQHZM01XBrJ8kPdYlUK+QcpFNnx0ga7F6ZKw Date: Thu, 9 Feb 2023 01:45:48 +0000 Message-ID: References: <20230128191807.2080547-1-sunilvl@ventanamicro.com> <20230128191807.2080547-4-sunilvl@ventanamicro.com> In-Reply-To: <20230128191807.2080547-4-sunilvl@ventanamicro.com> 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_|CY5PR11MB6140:EE_ x-ms-office365-filtering-correlation-id: 9a2d5868-4a02-431b-faf8-08db0a3f5e4f 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: C1HxKacs1iwM6QseBeMc12IuaW9GRd1mnhgg6XEdy1UKQLkbC9XmXgJRyHq7yCDPBPoSWVWIaMVxTjgmSLYEQ6MTce9+QOHqBMkyOShA2bXNdsZ0f98HWSsOqUity9Aoi+X8SmjLOeCQgsqyqMgv+BScglge/ddoBoapsWNjMp41+EqRsTh2Qe7bCCgnjhwCnrTKvlJL8CB6ndJPxZFYr5EdHyQQ1SAhi1VvIZ7w6L0zFLwj4NjOpOi+G9d4OAe6n3+89C+5x2aaBQqZum5XWfuz3sx3CC57mw/3FBy5BXq2ljQRNRlvjG4mBlhhCPPJwm0mHMI2+3BqOuezawXL3B6IWi6P8uXcnZCnGC7IEAJZLVuzkdJg6EHUQm14z6JzNWXfe8hGlEpVZvN06ts6lV2MyxpFQzpaomDffqRubEhRAO+MDoa7J2GL+Gx6G2zZxmquSEabaa315W0Mfkr/jrTf0SWMD4C/xkbqgF1/7gP4WcdVGwZK7U8pUiAl8yznHiiRyNf9U1qQUCI2kkGg8xaiSFhS07eN0obtflkIbGLHM01dMLsXh2uJbEY0WF+bN/8SEDJpTLgGfljMqIyDUThiE55ckc0T3fAp9z3EPR3IFlu39imruJSQUqGu93ACNHM+B0fVc9E9yhKOYklSzndSV1vjX/pkBX73oXy8yDTdIgSzT3aeH1qh61j4/dcukpBULTbCMTeoGAyYS8dn7ccFxKytQrwfmnCnNK1YLtw= 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:(13230025)(346002)(396003)(366004)(39860400002)(136003)(376002)(451199018)(8676002)(66556008)(66476007)(64756008)(4326008)(66946007)(66446008)(76116006)(38100700002)(122000001)(316002)(54906003)(110136005)(86362001)(2906002)(33656002)(55016003)(52536014)(41300700001)(8936002)(38070700005)(5660300002)(83380400001)(30864003)(107886003)(966005)(26005)(9686003)(6506007)(53546011)(186003)(82960400001)(71200400001)(478600001)(7696005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cTAvRWVkcXVhOXhsaE9lSEgzSGR6OW1kZlRZakUraEJKTmVxL0tGWTNxZmlh?= =?utf-8?B?NzRvVU5pY1o2QW1Tdk5KQlh4VThHZWVlRm9ZS3V5bi9ZSG1BWTJzSXg1aDBw?= =?utf-8?B?T1hiWTBOTmEvb1JILy9rL3VXRUZNK3BGcUdwd0RHQjJzV3BqNlVyZmlFT2U3?= =?utf-8?B?K05UcE0zendwOUNBMFphN1VTb1FoU0VjMWRBUXRKLzRja1BqWEdYaXhiV2lh?= =?utf-8?B?STBBS1RscytoUXEyVStCY0FJcXRTM295OVZsUWhyOFhBNXN5Q1FwZC96VTZz?= =?utf-8?B?TDhERjByK0NYdUV1REdaZHhaYU9GS1JWa3A2NGVkM1NNY2Y0TTl1a2lHU2Ru?= =?utf-8?B?RWRRUk1LUERkYXd4eWg3dlUycHVRWHgrM1pFeC9WYlBuSE9mZTIwd1hoNWpH?= =?utf-8?B?RzFLcmVFYmNqVXVtVkUxbXY4NVlrQmtEUC90MzFLNFh1a3ZkN3E4YVZQL3hO?= =?utf-8?B?UW5va2pLYjNpOWRjdldieHZ1OGFObXBZRG9Gcld2THVMVGo1SjJXdG9iaGUx?= =?utf-8?B?U2hJelYrMWRKeThPbjdxZ21lT1VGNjNKVHJrVlI4d1V4SERQaW1Ta2FvSTRJ?= =?utf-8?B?anVET1pERk54OTJEbFhIWDh1S3JOaVZJd0RYV3pTdnFZZ3hRcmNmd284Yy9o?= =?utf-8?B?cWdRQXVEZThMdnJaY1ZmVDkzZDcrYndScWdhMkpnbXptSXFKQWloMWZmVmVa?= =?utf-8?B?RTdaamNBWTgyRGhCV2thL3EyTUpLL0pNWUtDY2pHODZrY2ttV29rZnFpeWdI?= =?utf-8?B?ZUVXTHhKQjFlTHJZTjhLZ3RNbkNDeDFjbzcwS21EU0VWVHFacW1QTm0wRkJn?= =?utf-8?B?MXlCMXNjZUdsZlZtSzlCejRBQUJ6blB0R0tDcFQxZTcvYkxHSXFJMWVFZktu?= =?utf-8?B?UU04bjVHeGtrZUJISjJIQjQ2c3FsdllycWdDZGNpcFh1M1h1R05yaU5NVjdZ?= =?utf-8?B?UVd1WjhobFRhR204S0NTajkwemtZV2VtMW5BTzI3dWRHTWdoZHVMMzBnVnNo?= =?utf-8?B?MFRKRHFwbmFybjlFclZ2cHQxbURrZ3M3V2xkdGhIdmZ0elBTQmszbDU3RjlV?= =?utf-8?B?dXhXK0ZQRDhWQ3AvREZIa0FBR21qb1NrVlZ1Tkp2MDBTVXloa1QxRWxDRkRC?= =?utf-8?B?VG1sQkJZL3J4WUVuT2JXamVRdUhtcS9VRUdlZ05JUEpBcnFOTmRXTGh4L3Ra?= =?utf-8?B?STZjeDRvT29pck81OFd2Mkg1UGRlZ2dsa0RuV05scXF6NjR3QUpDTUZXd2JN?= =?utf-8?B?bTBjM2JuTDZEeEJpQTBEWUNUWVBPaU9KNHBDTHlOekRqeTFzZG9pbGErSjU1?= =?utf-8?B?Z1JnS010V1VXaVVNYXphUXQzVWpZVC96WlZYVEtKL29aOGlmUmdrcUFsMUFJ?= =?utf-8?B?cUdsZ0s1OVpYUTJjVklhQWtubkVKczR2OUVBQlNvaWpZc056MVRQUW05NU5Z?= =?utf-8?B?UXU1Z1d2Q0VXUkJVZkI1WkphYWxLa3pHanNubEcyc3Z4VHRoUDdLUnZEMDQ2?= =?utf-8?B?R3dFbnB3dVJNM2tQYjhQWStDS09IcUVJbm1rZThHUTZ3RDlscGdVcEF4b1E4?= =?utf-8?B?RTNHNXk3UGpRekczdllIb1dWT3ZScTNQUGhVdWcxbzlpM0NuY2kvMTRJQ1Ni?= =?utf-8?B?R0hyM3BCenlEZ1VaNUMzeDB3OXVjOVlVM1g3UUF3L2RNQXVUUm10TG1lTTMz?= =?utf-8?B?TytnTkZFcWZ5b21MRzJhNVpJZG1kc3k0dVZJWUYraFZZOVBGcHpORDRYeVpO?= =?utf-8?B?T1NmSFpvVUhMaXBPSVNCd0VCNnh1RStCSkR2MEdiTEdmaVp5S2llNUY4WnRE?= =?utf-8?B?UVpFc2tsM1JkZ1M0bWUvQXRHaHFDSmJPSzkwV1p1N0Y2cmZuZ3AwZ29jMlRX?= =?utf-8?B?SEMwSGh1WkpLci9TSkxvOHd4TmpIamc3ZDArYTMwSmhKOTJxNWxBSG5IaUlG?= =?utf-8?B?V0lpS2RDNThodHUzRThQVzdlb2dXUk1iaEJUd1kxYTd4VTJJQ0g2WWlUTWwz?= =?utf-8?B?VHRjNE5mbjBTVmZCSHFwUjZNN2dLKzhpQ3NsU1p4QVp3Q0t2SkV2Z3FRd3VH?= =?utf-8?B?cis5em5lMisxaFZqbXZSYXRHVVRpSmNDRDhpZUlram95aXNkUmh6YjhRb2Vs?= =?utf-8?B?K2pITmdNUFZaeEtHZkJicG1GdDdLWFFVdW5hbDBFUXE3MnhCNHNvYm1qSmtT?= =?utf-8?B?ZGc9PQ==?= 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: 9a2d5868-4a02-431b-faf8-08db0a3f5e4f X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Feb 2023 01:45:48.3949 (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: bQ8T2jb0uN6XPspWz0qdEVe7Y9IQ2pK/XWZ2rfgW+Kd+ZP+xid2+AfkytRiC7hyPTwjvHOJ4K1idO4CaD3IR3YjJRbk07xGSP9qFsErhxfU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6140 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 T25lIGNvbW1lbnQgYmVsb3cuDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBTdW5pbCBWIEwgPHN1bmlsdmxAdmVudGFuYW1pY3JvLmNvbT4NCj4gU2VudDog U2F0dXJkYXksIEphbnVhcnkgMjgsIDIwMjMgMTE6MTggQU0NCj4gVG86IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+OyBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFu ZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47DQo+IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0Bh bWQuY29tPg0KPiBTdWJqZWN0OiBbZWRrMi1zdGFnaW5nL1Jpc2NWNjRRZW11VmlydCBQQVRDSCBW NyAwMy8yMF0gTWRlUGtnOiBBZGQgQmFzZVJpc2NWU2JpTGliIExpYnJhcnkgZm9yIFJJU0MtVg0K PiANCj4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lk PTQwNzYNCj4gDQo+IFRoaXMgbGlicmFyeSBpcyByZXF1aXJlZCB0byBtYWtlIFNCSSBlY2FsbHMg ZnJvbSB0aGUgUy1tb2RlIEVESzIuDQo+IFRoaXMgaXMgbW9zdGx5IGNvcGllZCBmcm9tDQo+IGVk azItcGxhdGZvcm1zL1NpbGljb24vUklTQy1WL1Byb2Nlc3NvclBrZy9MaWJyYXJ5L1Jpc2NWRWRr MlNiaUxpYg0KPiANCj4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiBD YzogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5 OiBTdW5pbCBWIEwgPHN1bmlsdmxAdmVudGFuYW1pY3JvLmNvbT4NCj4gQWNrZWQtYnk6IEFibmVy IENoYW5nIDxhYm5lci5jaGFuZ0BhbWQuY29tPg0KPiAtLS0NCj4gIE1kZVBrZy9NZGVQa2cuZGVj ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsNCj4gIE1kZVBrZy9NZGVQ a2cuZHNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsNCj4gIE1kZVBr Zy9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi9CYXNlUmlzY1ZTYmlMaWIuaW5mIHwgIDI1ICsrKw0K PiAgTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIuaCAgICAgICAgICAgfCAx MjcgKysrKysrKysrKysNCj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi9CYXNlUmlz Y1ZTYmlMaWIuYyAgIHwgMjI3ICsrKysrKysrKysrKysrKysrKysrDQo+ICA1IGZpbGVzIGNoYW5n ZWQsIDM4NiBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5k ZWMgYi9NZGVQa2cvTWRlUGtnLmRlYw0KPiBpbmRleCAzZDA4ZjIwZDE1YjAuLmNhMmU0ZGNmODE1 YyAxMDA2NDQNCj4gLS0tIGEvTWRlUGtnL01kZVBrZy5kZWMNCj4gKysrIGIvTWRlUGtnL01kZVBr Zy5kZWMNCj4gQEAgLTMxNiw2ICszMTYsMTAgQEAgW0xpYnJhcnlDbGFzc2VzLklBMzIsIExpYnJh cnlDbGFzc2VzLlg2NF0NCj4gICAgIyMgIEBsaWJyYXJ5Y2xhc3MgIFByb3ZpZGVzIGZ1bmN0aW9u IHRvIHN1cHBvcnQgVERYIHByb2Nlc3NpbmcuDQo+ICAgIFRkeExpYnxJbmNsdWRlL0xpYnJhcnkv VGR4TGliLmgNCj4gDQo+ICtbTGlicmFyeUNsYXNzZXMuUklTQ1Y2NF0NCj4gKyAgIyMgIEBsaWJy YXJ5Y2xhc3MgIFByb3ZpZGVzIGZ1bmN0aW9uIHRvIG1ha2UgZWNhbGxzIHRvIFNCSQ0KPiArICBC YXNlUmlzY1ZTYmlMaWJ8SW5jbHVkZS9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi5oDQo+ICsNCj4g IFtHdWlkc10NCj4gICAgIw0KPiAgICAjIEdVSUQgZGVmaW5lZCBpbiBVRUZJMi4xL1VFRkkyLjAv RUZJMS4xDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTWRlUGtnLmRzYyBiL01kZVBrZy9NZGVQa2cu ZHNjDQo+IGluZGV4IDMyYTg1MmRjNDY2ZS4uMGFjNzYxOGI0NjIzIDEwMDY0NA0KPiAtLS0gYS9N ZGVQa2cvTWRlUGtnLmRzYw0KPiArKysgYi9NZGVQa2cvTWRlUGtnLmRzYw0KPiBAQCAtMTkwLDQg KzE5MCw3IEBAIFtDb21wb25lbnRzLkFSTSwgQ29tcG9uZW50cy5BQVJDSDY0XQ0KPiAgICBNZGVQ a2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvQmFzZUlvTGliSW50cmluc2ljQXJtVmlydC5p bmYNCj4gICAgTWRlUGtnL0xpYnJhcnkvQmFzZVN0YWNrQ2hlY2tMaWIvQmFzZVN0YWNrQ2hlY2tM aWIuaW5mDQo+IA0KPiArW0NvbXBvbmVudHMuUklTQ1Y2NF0NCj4gKyAgTWRlUGtnL0xpYnJhcnkv QmFzZVJpc2NWU2JpTGliL0Jhc2VSaXNjVlNiaUxpYi5pbmYNCj4gKw0KPiAgW0J1aWxkT3B0aW9u c10NCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi9CYXNlUmlz Y1ZTYmlMaWIuaW5mIGIvTWRlUGtnL0xpYnJhcnkvQmFzZVJpc2NWU2JpTGliL0Jhc2VSaXNjVlNi aUxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5k MDMxMzJiZjAxYzENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNl UmlzY1ZTYmlMaWIvQmFzZVJpc2NWU2JpTGliLmluZg0KPiBAQCAtMCwwICsxLDI1IEBADQo+ICsj IyBAZmlsZQ0KPiArIyBSSVNDLVYgTGlicmFyeSB0byBjYWxsIFNCSSBlY2FsbHMNCj4gKyMNCj4g KyMgIENvcHlyaWdodCAoYykgMjAyMCwgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxv cG1lbnQgTFAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIw0KPiArIyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyMNCj4gKyMjDQo+ICsNCj4g K1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgID0gMHgwMDAxMDAxYg0KPiArICBC QVNFX05BTUUgICAgICAgICAgID0gQmFzZVJpc2NWU2JpTGliDQo+ICsgIEZJTEVfR1VJRCAgICAg ICAgICAgPSBENzQyQ0YzRC1FNjAwLTQwMDktOEZCNS0zMTgwNzMwMDg1MDgNCj4gKyAgTU9EVUxF X1RZUEUgICAgICAgICA9IEJBU0UNCj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICA9IDEuMA0KPiAr ICBMSUJSQVJZX0NMQVNTICAgICAgID0gUmlzY1ZTYmlMaWINCj4gKw0KPiArW1NvdXJjZXNdDQo+ ICsgIEJhc2VSaXNjVlNiaUxpYi5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01k ZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBCYXNlTGliDQo+IGRpZmYg LS1naXQgYS9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi5oIGIvTWRlUGtn L0luY2x1ZGUvTGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjNhM2NiZmI4NzlmMQ0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZVJpc2NWU2JpTGliLmgNCj4gQEAgLTAs MCArMSwxMjcgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBMaWJyYXJ5IHRvIGNhbGwgdGhlIFJJU0Mt ViBTQkkgZWNhbGxzDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIsIEhld2xldHQg UGFja2FyZCBEZXZlbG9wbWVudCBMUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsNCj4g KyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiAr ICBAcGFyIEdsb3NzYXJ5Og0KPiArICAgIC0gSGFydCAtIEhhcmR3YXJlIFRocmVhZCwgc2ltaWxh ciB0byBhIENQVSBjb3JlDQo+ICsNCj4gKyAgQ3VycmVudGx5LCBFREsyIG5lZWRzIHRvIGNhbGwg U0JJIG9ubHkgdG8gc2V0IHRoZSB0aW1lIGFuZCB0byBkbyBzeXN0ZW0gcmVzZXQuDQo+ICsNCj4g KyoqLw0KPiArDQo+ICsjaWZuZGVmIFJJU0NWX1NCSV9MSUJfSF8NCj4gKyNkZWZpbmUgUklTQ1Zf U0JJX0xJQl9IXw0KPiArDQo+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiArDQo+ICsvKiBTQkkgRXh0 ZW5zaW9uIElEcyAqLw0KPiArI2RlZmluZSBTQklfRVhUX1RJTUUgIDB4NTQ0OTRENDUNCj4gKyNk ZWZpbmUgU0JJX0VYVF9TUlNUICAweDUzNTI1MzU0DQo+ICsNCj4gKy8qIFNCSSBmdW5jdGlvbiBJ RHMgZm9yIFRJTUUgZXh0ZW5zaW9uKi8NCj4gKyNkZWZpbmUgU0JJX0VYVF9USU1FX1NFVF9USU1F UiAgMHgwDQo+ICsNCj4gKy8qIFNCSSBmdW5jdGlvbiBJRHMgZm9yIFNSU1QgZXh0ZW5zaW9uICov DQo+ICsjZGVmaW5lIFNCSV9FWFRfU1JTVF9SRVNFVCAgMHgwDQo+ICsNCj4gKyNkZWZpbmUgU0JJ X1NSU1RfUkVTRVRfVFlQRV9TSFVURE9XTiAgICAgMHgwDQo+ICsjZGVmaW5lIFNCSV9TUlNUX1JF U0VUX1RZUEVfQ09MRF9SRUJPT1QgIDB4MQ0KPiArI2RlZmluZSBTQklfU1JTVF9SRVNFVF9UWVBF X1dBUk1fUkVCT09UICAweDINCj4gKw0KPiArI2RlZmluZSBTQklfU1JTVF9SRVNFVF9SRUFTT05f Tk9ORSAgICAgMHgwDQo+ICsjZGVmaW5lIFNCSV9TUlNUX1JFU0VUX1JFQVNPTl9TWVNGQUlMICAw eDENCj4gKw0KPiArLyogU0JJIHJldHVybiBlcnJvciBjb2RlcyAqLw0KPiArI2RlZmluZSBTQklf U1VDQ0VTUyAgICAgICAgICAgICAgICAwDQo+ICsjZGVmaW5lIFNCSV9FUlJfRkFJTEVEICAgICAg ICAgICAgIC0xDQo+ICsjZGVmaW5lIFNCSV9FUlJfTk9UX1NVUFBPUlRFRCAgICAgIC0yDQo+ICsj ZGVmaW5lIFNCSV9FUlJfSU5WQUxJRF9QQVJBTSAgICAgIC0zDQo+ICsjZGVmaW5lIFNCSV9FUlJf REVOSUVEICAgICAgICAgICAgIC00DQo+ICsjZGVmaW5lIFNCSV9FUlJfSU5WQUxJRF9BRERSRVNT ICAgIC01DQo+ICsjZGVmaW5lIFNCSV9FUlJfQUxSRUFEWV9BVkFJTEFCTEUgIC02DQo+ICsjZGVm aW5lIFNCSV9FUlJfQUxSRUFEWV9TVEFSVEVEICAgIC03DQo+ICsjZGVmaW5lIFNCSV9FUlJfQUxS RUFEWV9TVE9QUEVEICAgIC04DQo+ICsNCj4gKyNkZWZpbmUgU0JJX0xBU1RfRVJSICBTQklfRVJS X0FMUkVBRFlfU1RPUFBFRA0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQ2NCAg ICBCb290SGFydElkOw0KPiArICBWT0lEICAgICAgKlBlaVNlcnZpY2VUYWJsZTsgICAgLy8gUEVJ IFNlcnZpY2UgdGFibGUNCj4gKyAgVk9JRCAgICAgICpQcmVQaUhvYkxpc3Q7ICAgICAgIC8vIFBy ZSBQSSBIb2IgTGlzdA0KPiArICBVSU5UNjQgICAgRmxhdHRlbmVkRGV2aWNlVHJlZTsgLy8gUG9p bnRlciB0byBGbGF0dGVuZWQgRGV2aWNlIHRyZWUNCj4gK30gRUZJX1JJU0NWX0ZJUk1XQVJFX0NP TlRFWFQ7DQo+ICsNCj4gKy8vDQo+ICsvLyBFREsyIE9wZW5TQkkgZmlybXdhcmUgZXh0ZW5zaW9u IHJldHVybiBzdGF0dXMuDQo+ICsvLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UTiAg ICBFcnJvcjsgLy8vPCBTQkkgc3RhdHVzIGNvZGUNCj4gKyAgVUlOVE4gICAgVmFsdWU7IC8vLzwg VmFsdWUgcmV0dXJuZWQNCj4gK30gU0JJX1JFVDsNCj4gKw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ ICtTYmlTZXRUaW1lciAoDQo+ICsgIElOICBVSU5UNjQgIFRpbWUNCj4gKyAgKTsNCj4gKw0KPiAr RUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTYmlTeXN0ZW1SZXNldCAoDQo+ICsgIElOICBVSU5U TiAgUmVzZXRUeXBlLA0KPiArICBJTiAgVUlOVE4gIFJlc2V0UmVhc29uDQo+ICsgICk7DQo+ICsN Cj4gKy8qKg0KPiArICBHZXQgZmlybXdhcmUgY29udGV4dCBvZiB0aGUgY2FsbGluZyBoYXJ0Lg0K PiArDQo+ICsgIEBwYXJhbVtvdXRdIEZpcm13YXJlQ29udGV4dCAgICAgIFRoZSBmaXJtd2FyZSBj b250ZXh0IHBvaW50ZXIuDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArR2V0RmlybXdh cmVDb250ZXh0ICgNCj4gKyAgT1VUIEVGSV9SSVNDVl9GSVJNV0FSRV9DT05URVhUICAqKkZpcm13 YXJlQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgU2V0IGZpcm13YXJlIGNvbnRl eHQgb2YgdGhlIGNhbGxpbmcgaGFydC4NCj4gKw0KPiArICBAcGFyYW1baW5dIEZpcm13YXJlQ29u dGV4dCAgICAgICBUaGUgZmlybXdhcmUgY29udGV4dCBwb2ludGVyLg0KPiArKiovDQo+ICtWT0lE DQo+ICtFRklBUEkNCj4gK1NldEZpcm13YXJlQ29udGV4dCAoDQo+ICsgIElOIEVGSV9SSVNDVl9G SVJNV0FSRV9DT05URVhUICAqRmlybXdhcmVDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0K PiArICBHZXQgcG9pbnRlciB0byBPcGVuU0JJIEZpcm13YXJlIENvbnRleHQNCj4gKw0KPiArICBH ZXQgdGhlIHBvaW50ZXIgb2YgZmlybXdhcmUgY29udGV4dC4NCj4gKw0KPiArICBAcGFyYW0gICAg RmlybXdhcmVDb250ZXh0UHRyICAgUG9pbnRlciB0byByZXRyaWV2ZSBwb2ludGVyIHRvIHRoZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlybXdhcmUgQ29udGV4dC4NCj4g KyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtHZXRGaXJtd2FyZUNvbnRleHRQb2ludGVyICgN Cj4gKyAgSU4gT1VUIEVGSV9SSVNDVl9GSVJNV0FSRV9DT05URVhUICAqKkZpcm13YXJlQ29udGV4 dFB0cg0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgU2V0IHBvaW50ZXIgdG8gT3BlblNCSSBG aXJtd2FyZSBDb250ZXh0DQo+ICsNCj4gKyAgU2V0IHRoZSBwb2ludGVyIG9mIGZpcm13YXJlIGNv bnRleHQuDQo+ICsNCj4gKyAgQHBhcmFtICAgIEZpcm13YXJlQ29udGV4dFB0ciAgIFBvaW50ZXIg dG8gRmlybXdhcmUgQ29udGV4dC4NCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtTZXRG aXJtd2FyZUNvbnRleHRQb2ludGVyICgNCj4gKyAgSU4gRUZJX1JJU0NWX0ZJUk1XQVJFX0NPTlRF WFQgICpGaXJtd2FyZUNvbnRleHRQdHINCj4gKyAgKTsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYg LS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIvQmFzZVJpc2NWU2JpTGliLmMg Yi9NZGVQa2cvTGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIvQmFzZVJpc2NWU2JpTGliLmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xNTIyMmE1Mjg3NTMNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIvQmFz ZVJpc2NWU2JpTGliLmMNCj4gQEAgLTAsMCArMSwyMjcgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBJ bnN0YW5jZSBvZiB0aGUgU0JJIGVjYWxsIGxpYnJhcnkuDQo+ICsNCj4gKyAgSXQgYWxsb3dzIGNh bGxpbmcgYW4gU0JJIGZ1bmN0aW9uIHZpYSBhbiBlY2FsbCBmcm9tIFMtTW9kZS4NCj4gKw0KPiAr ICBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgSGV3bGV0dCBQYWNrYXJkIERldmVsb3BtZW50IExQ LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUg PExpYnJhcnkvQmFzZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5o Pg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0Jhc2VSaXNjVlNiaUxpYi5oPg0KPiArDQo+ICsvLw0KPiArLy8gTWF4aW11bSBhcmd1bWVudHMg Zm9yIFNCSSBlY2FsbA0KPiArI2RlZmluZSBTQklfQ0FMTF9NQVhfQVJHUyAgNg0KPiArDQo+ICsv KioNCj4gKyAgQ2FsbCBTQkkgY2FsbCB1c2luZyBlY2FsbCBpbnN0cnVjdGlvbi4NCj4gKw0KPiAr ICBBc3NlcnRzIHdoZW4gTnVtQXJncyBleGNlZWRzIFNCSV9DQUxMX01BWF9BUkdTLg0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gRXh0SWQgICAgU0JJIGV4dGVuc2lvbiBJRC4NCj4gKyAgQHBhcmFtW2lu XSBGdW5jSWQgICBTQkkgZnVuY3Rpb24gSUQuDQo+ICsgIEBwYXJhbVtpbl0gTnVtQXJncyAgTnVt YmVyIG9mIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBlY2FsbC4NCj4gKyAgQHBhcmFtW2luXSAu Li4gICAgICBBcmd1bWVudCBsaXN0IGZvciB0aGUgZWNhbGwuDQo+ICsNCj4gKyAgQHJldHZhbCAg UmV0dXJucyBTQklfUkVUIHN0cnVjdHVyZSB3aXRoIHZhbHVlIGFuZCBlcnJvciBjb2RlLg0KPiAr DQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArU0JJX1JFVA0KPiArRUZJQVBJDQo+ICtTYmlDYWxsICgN Cj4gKyAgSU4gIFVJTlROICBFeHRJZCwNCj4gKyAgSU4gIFVJTlROICBGdW5jSWQsDQo+ICsgIElO ICBVSU5UTiAgTnVtQXJncywNCj4gKyAgLi4uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gICAg STsNCj4gKyAgU0JJX1JFVCAgUmV0Ow0KPiArICBVSU5UTiAgICBBcmdzW1NCSV9DQUxMX01BWF9B UkdTXTsNCj4gKyAgVkFfTElTVCAgQXJnTGlzdDsNCj4gKw0KPiArICBWQV9TVEFSVCAoQXJnTGlz dCwgTnVtQXJncyk7DQo+ICsNCj4gKyAgaWYgKE51bUFyZ3MgPiBTQklfQ0FMTF9NQVhfQVJHUykg ew0KPiArICAgIFJldC5FcnJvciA9IFNCSV9FUlJfSU5WQUxJRF9QQVJBTTsNCj4gKyAgICBSZXQu VmFsdWUgPSAtMTsNCj4gKyAgICByZXR1cm4gUmV0Ow0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChJ ID0gMDsgSSA8IFNCSV9DQUxMX01BWF9BUkdTOyBJKyspIHsNCj4gKyAgICBpZiAoSSA8IE51bUFy Z3MpIHsNCj4gKyAgICAgIEFyZ3NbSV0gPSBWQV9BUkcgKEFyZ0xpc3QsIFVJTlROKTsNCj4gKyAg ICB9IGVsc2Ugew0KPiArICAgICAgLy8gRGVmYXVsdCB0byAwIGZvciBhbGwgYXJndW1lbnRzIHRo YXQgYXJlIG5vdCBnaXZlbg0KPiArICAgICAgQXJnc1tJXSA9IDA7DQo+ICsgICAgfQ0KPiArICB9 DQo+ICsNCj4gKyAgVkFfRU5EIChBcmdMaXN0KTsNCj4gKw0KPiArICByZWdpc3RlciBVSU5UTiAg YTAgYXNtICgiYTAiKSA9IEFyZ3NbMF07DQo+ICsgIHJlZ2lzdGVyIFVJTlROICBhMSBhc20gKCJh MSIpID0gQXJnc1sxXTsNCj4gKyAgcmVnaXN0ZXIgVUlOVE4gIGEyIGFzbSAoImEyIikgPSBBcmdz WzJdOw0KPiArICByZWdpc3RlciBVSU5UTiAgYTMgYXNtICgiYTMiKSA9IEFyZ3NbM107DQo+ICsg IHJlZ2lzdGVyIFVJTlROICBhNCBhc20gKCJhNCIpID0gQXJnc1s0XTsNCj4gKyAgcmVnaXN0ZXIg VUlOVE4gIGE1IGFzbSAoImE1IikgPSBBcmdzWzVdOw0KPiArICByZWdpc3RlciBVSU5UTiAgYTYg YXNtICgiYTYiKSA9IChVSU5UTikoRnVuY0lkKTsNCj4gKyAgcmVnaXN0ZXIgVUlOVE4gIGE3IGFz bSAoImE3IikgPSAoVUlOVE4pKEV4dElkKTsNCj4gKw0KPiArICBhc20gdm9sYXRpbGUgKCJlY2Fs bCIgXA0KPiArICAgICAgIDogIityIiAoYTApLCAiK3IiIChhMSkgXA0KPiArICAgICAgIDogInIi IChhMiksICJyIiAoYTMpLCAiciIgKGE0KSwgInIiIChhNSksICJyIiAoYTYpLCAiciIgKGE3KSBc DQo+ICsgICAgICAgOiAibWVtb3J5Iik7IFwNCj4gKyAgUmV0LkVycm9yID0gYTA7DQo+ICsgIFJl dC5WYWx1ZSA9IGExOw0KDQpXaHkgaXMgaW5saW5lIGFzc2VtYmx5IHVzZWQgaGVyZT8gIEkgc2Vl IHVzZSBvZiAuUyBmaWxlcyBpbiBCYXNlTGliDQpDYW4gdGhpcyBiZSBjb252ZXJ0ZWQgdG8gLlMg ZmlsZT8NCg0KPiArICByZXR1cm4gUmV0Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgVHJhbnNs YXRlIFNCSSBlcnJvciBjb2RlIHRvIEVGSSBzdGF0dXMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBT YmlFcnJvciAgIFNCSSBlcnJvciBjb2RlDQo+ICsgIEByZXR2YWwgRUZJX1NUQVRVUw0KPiArKiov DQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArVHJhbnNsYXRlRXJyb3Ig KA0KPiArICBJTiAgVUlOVE4gIFNiaUVycm9yDQo+ICsgICkNCj4gK3sNCj4gKyAgc3dpdGNoIChT YmlFcnJvcikgew0KPiArICAgIGNhc2UgU0JJX1NVQ0NFU1M6DQo+ICsgICAgICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ICsgICAgY2FzZSBTQklfRVJSX0ZBSUxFRDoNCj4gKyAgICAgIHJldHVybiBF RklfREVWSUNFX0VSUk9SOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBTQklfRVJSX05P VF9TVVBQT1JURUQ6DQo+ICsgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiArICAgICAg YnJlYWs7DQo+ICsgICAgY2FzZSBTQklfRVJSX0lOVkFMSURfUEFSQU06DQo+ICsgICAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBT QklfRVJSX0RFTklFRDoNCj4gKyAgICAgIHJldHVybiBFRklfQUNDRVNTX0RFTklFRDsNCj4gKyAg ICAgIGJyZWFrOw0KPiArICAgIGNhc2UgU0JJX0VSUl9JTlZBTElEX0FERFJFU1M6DQo+ICsgICAg ICByZXR1cm4gRUZJX0xPQURfRVJST1I7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIFNC SV9FUlJfQUxSRUFEWV9BVkFJTEFCTEU6DQo+ICsgICAgICByZXR1cm4gRUZJX0FMUkVBRFlfU1RB UlRFRDsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICAvLw0KPiAr ICAgICAgLy8gUmVhY2hlcyBoZXJlIG9ubHkgaWYgU0JJIGhhcyBkZWZpbmVkIGEgbmV3IGVycm9y IHR5cGUNCj4gKyAgICAgIC8vDQo+ICsgICAgICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgICAgIHJl dHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICsgICAgICBicmVhazsNCj4gKyAgfQ0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgQ2xlYXIgcGVuZGluZyB0aW1lciBpbnRlcnJ1cHQgYml0IGFuZCBzZXQg dGltZXIgZm9yIG5leHQgZXZlbnQgYWZ0ZXIgVGltZS4NCj4gKw0KPiArICBUbyBjbGVhciB0aGUg dGltZXIgd2l0aG91dCBzY2hlZHVsaW5nIGEgdGltZXIgZXZlbnQsIHNldCBUaW1lIHRvIGENCj4g KyAgcHJhY3RpY2FsbHkgaW5maW5pdGUgdmFsdWUgb3IgbWFzayB0aGUgdGltZXIgaW50ZXJydXB0 IGJ5IGNsZWFyaW5nIHNpZS5TVElFLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRpbWUgICAgICAg ICAgICAgICAgIFRoZSB0aW1lIG9mZnNldCB0byB0aGUgbmV4dCBzY2hlZHVsZWQgdGltZXIgaW50 ZXJydXB0Lg0KPiArKiovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1NiaVNldFRpbWVyICgNCj4g KyAgSU4gIFVJTlQ2NCAgVGltZQ0KPiArICApDQo+ICt7DQo+ICsgIFNiaUNhbGwgKFNCSV9FWFRf VElNRSwgU0JJX0VYVF9USU1FX1NFVF9USU1FUiwgMSwgVGltZSk7DQo+ICt9DQo+ICsNCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2JpU3lzdGVtUmVzZXQgKA0KPiArICBJTiAgVUlOVE4g IFJlc2V0VHlwZSwNCj4gKyAgSU4gIFVJTlROICBSZXNldFJlYXNvbg0KPiArICApDQo+ICt7DQo+ ICsgIFNCSV9SRVQgIFJldDsNCj4gKw0KPiArICBSZXQgPSBTYmlDYWxsICgNCj4gKyAgICAgICAg ICBTQklfRVhUX1NSU1QsDQo+ICsgICAgICAgICAgU0JJX0VYVF9TUlNUX1JFU0VULA0KPiArICAg ICAgICAgIDIsDQo+ICsgICAgICAgICAgUmVzZXRUeXBlLA0KPiArICAgICAgICAgIFJlc2V0UmVh c29uDQo+ICsgICAgICAgICAgKTsNCj4gKw0KPiArICByZXR1cm4gVHJhbnNsYXRlRXJyb3IgKFJl dC5FcnJvcik7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBHZXQgZmlybXdhcmUgY29udGV4dCBv ZiB0aGUgY2FsbGluZyBoYXJ0Lg0KPiArDQo+ICsgIEBwYXJhbVtvdXRdIEZpcm13YXJlQ29udGV4 dCAgICAgIFRoZSBmaXJtd2FyZSBjb250ZXh0IHBvaW50ZXIuDQo+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gc3VjY2VlZHMuDQo+ICsqKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArR2V0RmlybXdhcmVDb250ZXh0ICgNCj4gKyAgT1VUIEVGSV9SSVND Vl9GSVJNV0FSRV9DT05URVhUICAqKkZpcm13YXJlQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsg ICpGaXJtd2FyZUNvbnRleHQgPSAoRUZJX1JJU0NWX0ZJUk1XQVJFX0NPTlRFWFQgKilSaXNjVkdl dFN1cGVydmlzb3JTY3JhdGNoICgpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU2V0IGZpcm13 YXJlIGNvbnRleHQgb2YgdGhlIGNhbGxpbmcgaGFydC4NCj4gKw0KPiArICBAcGFyYW1baW5dIEZp cm13YXJlQ29udGV4dCAgICAgICBUaGUgZmlybXdhcmUgY29udGV4dCBwb2ludGVyLg0KPiArKiov DQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1NldEZpcm13YXJlQ29udGV4dCAoDQo+ICsgIElOIEVG SV9SSVNDVl9GSVJNV0FSRV9DT05URVhUICAqRmlybXdhcmVDb250ZXh0DQo+ICsgICkNCj4gK3sN Cj4gKyAgUmlzY1ZTZXRTdXBlcnZpc29yU2NyYXRjaCAoKFVJTlQ2NClGaXJtd2FyZUNvbnRleHQp Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgR2V0IHBvaW50ZXIgdG8gT3BlblNCSSBGaXJtd2Fy ZSBDb250ZXh0DQo+ICsNCj4gKyAgR2V0IHRoZSBwb2ludGVyIG9mIGZpcm13YXJlIGNvbnRleHQg dGhyb3VnaCBPcGVuU0JJIEZXIEV4dGVuc2lvbiBTQkkuDQo+ICsNCj4gKyAgQHBhcmFtICAgIEZp cm13YXJlQ29udGV4dFB0ciAgIFBvaW50ZXIgdG8gcmV0cmlldmUgcG9pbnRlciB0byB0aGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpcm13YXJlIENvbnRleHQuDQo+ICsq Ki8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArR2V0RmlybXdhcmVDb250ZXh0UG9pbnRlciAoDQo+ ICsgIElOIE9VVCBFRklfUklTQ1ZfRklSTVdBUkVfQ09OVEVYVCAgKipGaXJtd2FyZUNvbnRleHRQ dHINCj4gKyAgKQ0KPiArew0KPiArICBHZXRGaXJtd2FyZUNvbnRleHQgKEZpcm13YXJlQ29udGV4 dFB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZXQgdGhlIHBvaW50ZXIgdG8gT3BlblNC SSBGaXJtd2FyZSBDb250ZXh0DQo+ICsNCj4gKyAgU2V0IHRoZSBwb2ludGVyIG9mIGZpcm13YXJl IGNvbnRleHQgdGhyb3VnaCBPcGVuU0JJIEZXIEV4dGVuc2lvbiBTQkkuDQo+ICsNCj4gKyAgQHBh cmFtICAgIEZpcm13YXJlQ29udGV4dFB0ciAgIFBvaW50ZXIgdG8gRmlybXdhcmUgQ29udGV4dC4N Cj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtTZXRGaXJtd2FyZUNvbnRleHRQb2ludGVy ICgNCj4gKyAgSU4gRUZJX1JJU0NWX0ZJUk1XQVJFX0NPTlRFWFQgICpGaXJtd2FyZUNvbnRleHRQ dHINCj4gKyAgKQ0KPiArew0KPiArICBTZXRGaXJtd2FyZUNvbnRleHQgKEZpcm13YXJlQ29udGV4 dFB0cik7DQo+ICt9DQo+IC0tDQo+IDIuMzguMA0KDQo=