From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.34156.1611564803613437647 for ; Mon, 25 Jan 2021 00:53:24 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=nUa6GWTi; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: ray.ni@intel.com) IronPort-SDR: O8R3CAscgCd3KcFPLW4dbHF3uYWCKyzE9OdxpoilavZFv0GZW5emmVTnyDVwVTrd+XoSnbynJm x/ctpmIqyHkQ== X-IronPort-AV: E=McAfee;i="6000,8403,9874"; a="179837691" X-IronPort-AV: E=Sophos;i="5.79,373,1602572400"; d="scan'208";a="179837691" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jan 2021 00:53:22 -0800 IronPort-SDR: LzNo+cxhIjavhU1uIeO4cp4lDPtEbqWrBYq21LTVXAMaZlnIg7OHwh4Tu3akkxAWGOeKdwn2jN uHFiBkFwUeew== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,373,1602572400"; d="scan'208";a="352925033" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga003.jf.intel.com with ESMTP; 25 Jan 2021 00:53:21 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) 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.2106.2; Mon, 25 Jan 2021 00:53:21 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Mon, 25 Jan 2021 00:53:21 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.170) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 25 Jan 2021 00:53:20 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VkmYpQ9MSNqKLPTneV9JRswvwhO4vYHc8+/KKUsa+yJuxB4VFaCLfSyBwCLrTKbzbLZSrOqx6srDXXnHQj1wINn+I5PPUplUiX8fo6lebCAztPm0YOhYUtZuvmrahxsKMVE0E4Dpor06VxyomyKbQ+6JJ97QIBZsoXRC5XmpDbCQOWnhHUFViVf88QtOMxynov1LDGzJnobnkFD0bl1aUnOp0bnmB9PHSIabuJhK1O1RWUrFtMPYwEvb2+X5qBqna66FQ7M4Mzqegvv6dF1AKffo6u3K/qXk5TTXKIiopQ3khXJ9kDg1YaXlTXkUaXan2Itqmy6ibMU3uTuaLTI5Sw== 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-SenderADCheck; bh=BM2j9iiLhaT2Ce8gxhArRDruimEbbqFba1uGyanwkqA=; b=Kdf3g+fdZ8Zxi2NWGCKJWJ1+hdr9IKTHjIA8fL3gdt72czemTk8n4lFbaO+IZJfT7G3CHgvphOM4qqozhTs+CKoWFszaSUo3ei0sD3pqjCxvA3UySYyR5KferZDewsYv4QQ2JeR281jGTIJpD3r/4S5/Q2Ibo2h3OTzDZNmyR5Qkli4EBBYlsVlZZjMj3/AcGItOTBOJyfnXMlx8K/ufuxtsgmWCQpp7qoUCYpeufyzqH0nQakCpig0E4vWL0jSrzrC8GWGB4Gjd1JFFuUDC4YLeSaviprQiQO04fW5SrSDHnZL8mIBddB4PNM1RZxYtkasSudz2TxYnZXN6Ui1hGA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BM2j9iiLhaT2Ce8gxhArRDruimEbbqFba1uGyanwkqA=; b=nUa6GWTiE3RHGbFw0TQTv37OQMY7ZJ62qsOV8bYyK44sBaC0xBdguXpr1a9vwHRVixGbyH7zJeFB538mNqnJQP9WxBxTyYlUXaJCUai9qPNwU4K62JSbgly+lqO+5lSuKglJnicpeTPtNQZLYCGxb7OMcmrqzmCIqrCDycmXUaA= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by MWHPR1101MB2270.namprd11.prod.outlook.com (2603:10b6:301:54::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.13; Mon, 25 Jan 2021 08:53:20 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::8d64:91ed:c259:e95]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::8d64:91ed:c259:e95%6]) with mapi id 15.20.3784.019; Mon, 25 Jan 2021 08:53:20 +0000 From: "Ni, Ray" To: "Zeng, Star" , "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Dong, Eric" , Laszlo Ersek , "Kumar, Rahul1" Subject: Re: [edk2-devel] [Patch 1/1] UefiCpuPkg/Library/MpInitLib: Fix AP VolatileRegisters race condition Thread-Topic: [edk2-devel] [Patch 1/1] UefiCpuPkg/Library/MpInitLib: Fix AP VolatileRegisters race condition Thread-Index: AQHW8OGJiFj6Ko1F4k2BdWpXIX87Xao3rrCAgAAhzoCAADn4gIAAAZ/A Date: Mon, 25 Jan 2021 08:53:19 +0000 Message-ID: References: <20210122171020.589-1-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.194] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fa12bf9f-265b-480e-8e6a-08d8c10eaa26 x-ms-traffictypediagnostic: MWHPR1101MB2270: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +mynkECisDe9mTk3ePXtQuooKpoJNHz046Be89+pbjIgM1qXIciNRRFqGHRva74GDeVulQot8oYQQGUQCAyDdsIkqbIunqOAevWAp31AVgRtewKvvjKcyYIQv/JptUTF+/37TmDkX0bE0laWypNJIdxgiKSxiFJJlh7oyYWjNrTrB2HaexMn21bb9MpOrbEWp+QilBO4ZOsGqnWOw3MImlaUuL3+UTg0u6nx+RPUN991f2us+SbTCg5y3l0s2yU6QxwiqV0mfqkbyW/KZTdgfolBR+rFV9EvayVURptLwTMb6c0u4tA08LLXz0rUTtkgxyOnaYjDmm5UOkz03q54Po3tIQnWkgXdBWw5quSCGAQOKz25IPvl9gdDSMFJNqAgUX8PLzcYvRiZhJK9jTs7LXGRxVfMLYP/FDEOk4aeMPBIIkFhxW9w8SRbdze9Dy+aCg5qP2lzKl1Z9kVCTWHcGA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4930.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(376002)(366004)(39860400002)(346002)(136003)(396003)(66946007)(66476007)(66446008)(66556008)(64756008)(2906002)(9686003)(71200400001)(86362001)(83380400001)(8676002)(33656002)(52536014)(53546011)(186003)(6506007)(5660300002)(26005)(4326008)(316002)(478600001)(8936002)(76116006)(7696005)(55016002)(107886003)(110136005)(54906003)(966005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?cnpuWk12QTZFdk1oYzZTcThLOEJiOHoxcVlqNUdPMkFFTG4rbmJQTWhUbWlR?= =?utf-8?B?NmdXWThNazBZWGk5dDIvdnVyaDJpM0dIOHo5TzI2c0k4d1dBdFo5Ry84NGgx?= =?utf-8?B?MlNma0VsYWZ6dWRoMkt4OHF0UHk1bDk4Qm5GdnllaENwckNZeFpLZXk1enM0?= =?utf-8?B?OWpkRjRvNDhuTHZlc09NNndWRXdWZUJveGQ5bEEvTXVQUmVPQnp6ZldydTI4?= =?utf-8?B?NU5kdjk0YlRwcGNYKzVqd1haaXdHUml6Tnd0cWZQbHZ3SGlpandqaWRCSU5B?= =?utf-8?B?ZkhnczE0U3JRVnhnbDJ3ckpCZjhKbjVjTllmWmErNEo0TGpqUUpEcDZaVjRm?= =?utf-8?B?VTZvaFQvOUhXOHdGZEJ3dFlsd1lobVROTkw3bU4zS05TbEZ0UlQ0WWFYTnBI?= =?utf-8?B?RXZvVE1vSmVpd01jZ1ZtTEhWaUlMM2M2SThKZ0lyL2NWRXdMS05uakQyYXFy?= =?utf-8?B?M3JxQ0dvZ3phVzRxRDY0K0dSbFdRaDdiMVhTTlRQeUpiYTE0bDFSbzMxWE8r?= =?utf-8?B?SWFQTDFVcTR1S3p6NXJ6SGpGQ2dQOTV5eEZ4OUVvS0lZUkJFb0xlWGF5cDhB?= =?utf-8?B?cVdHWXR1M2cwb1NjdEI0UjdGTjhoUFpraUQzN1Q0MU9Cb2o0dDNiVS9Oa3Q4?= =?utf-8?B?WGpXdnV1bkRlcW9keGpCUlEvQklaSStpNWc0MVVNMjViMnlpdG9jM3RGcTJz?= =?utf-8?B?WkErbXN3RTQ4R1U5LzE2M3d3R0VYNHVLKzU1WjlOQmY1aWo4VFY1Rlc4VXp6?= =?utf-8?B?OStPZmlpN0FRdVVGNm5oaGVwWWF0TzdmQnptdUxQTFBVRXRHOFdpUGNEZ3ZI?= =?utf-8?B?VGs3a2dBWDhqSU5tR0p6Vk5JY1BvYmRJMFpyemZYVEFQWFlQcmVEUGxhU1Jp?= =?utf-8?B?b2Y1UXBGejA5TDFhWjNQRDJkbUhRdWkwQVZvbTRQWDZ5bkVlUG1QQ2hOU20y?= =?utf-8?B?WXhYVnB5K3lyd2lUNlZZM2ppS0IzcnlhRjZyUUU5dWhsWlZsUVUrL3JobnNH?= =?utf-8?B?U25pVjFwUTRpRU9jdFdOMUNIaGtpNlVacWI0anFGS0VxZlJCa0l4eTdQNDUv?= =?utf-8?B?SlJvMlR3UXdSam45MlJWeDVRamNvY2VrbXcyOVNQSVB0c1lZK2hQclNjNjNM?= =?utf-8?B?ZGZiU1M3RWZlbG5TMjdvdklhcXlBU09Mb1VUdmtQc0tjYVdGOTU1WEhZZFov?= =?utf-8?B?YVpKN1kyZ0hPRUZ1Zk8xd1RDd3Q1alluUlplK2drR3YyKzdBVzA3WVFST2Zk?= =?utf-8?B?Q3RYZitWY3RvMmxmUGdqK0MzRkkvcUlHQ29jZFV0RytkT0U2eUhDcFZWY0JS?= =?utf-8?Q?FVBLkviXPmv1w=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4930.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa12bf9f-265b-480e-8e6a-08d8c10eaa26 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jan 2021 08:53:19.9539 (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: x6ki47xXCrqGyMqElM6gRrWiSQxpdCsguswaX5RSb07ZndAGQeSqE53mMc0YkLg4RniUCNruSefTK3xc/n06gg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1101MB2270 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U3RhciwNCllvdSBhcmUgcmlnaHQuIFRoZXJlIGlzIG5vIHNlcXVlbmNlIHJlcXVpcmVtZW50IGJl dHdlZW4gRmluaXNoZWRDb3VudCsrIGFuZCBOdW1BcHNFeGVjdXRpbmctLS4NCg0KSW4gZmFjdCwg SSBoYXZlIHN1Ym1pdHRlZCBhbm90aGVyIGJ1Z3ppbGxhIGh0dHBzOi8vYnVnemlsbGEudGlhbm9j b3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3OS4NCiANCldpdGggdGhhdCBCdWd6aWxsYSwgdGhl IHdhaXQgb24gKEZpbmlzaGVkQ291bnQgPT0gQ3B1Q291bnQgLSAxKSB3aWxsIGJlIHJlbW92ZWQg Zm9yIHRoZSAxc3Qgd2FrZSB1cCBjYXNlLg0KDQpUaGFua3MsDQpSYXkNCg0KDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5j b20+DQo+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAyNSwgMjAyMSA0OjQzIFBNDQo+IFRvOiBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdy b3Vwcy5pbw0KPiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IE5pLCBSYXkg PHJheS5uaUBpbnRlbC5jb20+OyBMYXN6bG8NCj4gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsg S3VtYXIsIFJhaHVsMSA8cmFodWwxLmt1bWFyQGludGVsLmNvbT47DQo+IFplbmcsIFN0YXIgPHN0 YXIuemVuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BhdGNoIDEv MV0gVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYjogRml4IEFQDQo+IFZvbGF0aWxlUmVnaXN0 ZXJzIHJhY2UgY29uZGl0aW9uDQo+IA0KPiBNaWtlLA0KPiANCj4gT2gsIHNlZSBpdC4NCj4gVGhl cmUgaXMgbm8gc2VxdWVuY2UgZGVwZW5kZW5jZSBiZXR3ZWVuIEZpbmlzaGVkQ291bnQgaW5jcmVt ZW50IGFuZA0KPiBOdW1BcHNFeGVjdXRpbmcgZGVjcmVtZW50LCByaWdodD8NCj4gDQo+ICAgICAg SW50ZXJsb2NrZWRJbmNyZW1lbnQgKChVSU5UMzIgKikgJkNwdU1wRGF0YS0+RmluaXNoZWRDb3Vu dCk7DQo+IA0KPiAgICAgIEludGVybG9ja2VkRGVjcmVtZW50ICgoVUlOVDMyICopICZDcHVNcERh dGEtPk1wQ3B1RXhjaGFuZ2VJbmZvLQ0KPiA+TnVtQXBzRXhlY3V0aW5nKTsNCj4gDQo+IA0KPiBU aGFua3MsDQo+IFN0YXINCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBG cm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4g U2VudDogTW9uZGF5LCBKYW51YXJ5IDI1LCAyMDIxIDE6MTYgUE0NCj4gPiBUbzogWmVuZywgU3Rh ciA8c3Rhci56ZW5nQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5uZXksDQo+ ID4gTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogRG9uZywg RXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBM YXN6bG8NCj4gPiBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+OyBLdW1hciwgUmFodWwxIDxyYWh1 bDEua3VtYXJAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BhdGNo IDEvMV0gVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYjogRml4IEFQDQo+ID4gVm9sYXRpbGVS ZWdpc3RlcnMgcmFjZSBjb25kaXRpb24NCj4gPg0KPiA+IEhpIFN0YXIsDQo+ID4NCj4gPiBUaGF0 IGxpbmUgaXMgb25seSBhY3RpdmUgd2hlbiAoQ3B1TXBEYXRhLT5TZXZFc0lzRW5hYmxlZCkgaXMg VFJVRS4NCj4gPg0KPiA+IFRoZSByYWNlIGNvbmRpdGlvbiBhZGRyZXNzZWQgYnkgdGhpcyBCWiBp cyBmb3Igc3lzdGVtcyB3aXRoIFNlY0VzSXNFbmFibGVkDQo+ID4gRkFMU0UuDQo+ID4NCj4gPiBG cm9tIGNvbW1lbnRzIGluIHRoaXMgZmlsZSB0aGUgU2VjRXNJc0VuYWJsZWQgY2FzZXMgaGF2ZSBh bHJlYWR5IGJlZW4NCj4gPiBoYW5kbGVkLg0KPiA+DQo+ID4gTWlrZQ0KPiA+DQo+ID4gPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogWmVuZywgU3RhciA8c3Rhci56ZW5n QGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IFN1bmRheSwgSmFudWFyeSAyNCwgMjAyMSA3OjE1IFBN DQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpbm5leSwgTWljaGFlbCBEDQo+ID4g PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiBDYzogRG9uZywgRXJpYyA8ZXJp Yy5kb25nQGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+Ow0KPiA+ID4gTGFz emxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IEt1bWFyLCBSYWh1bDENCj4gPiA+IDxyYWh1 bDEua3VtYXJAaW50ZWwuY29tPjsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4g PiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BhdGNoIDEvMV0gVWVmaUNwdVBrZy9MaWJy YXJ5L01wSW5pdExpYjoNCj4gPiA+IEZpeCBBUCBWb2xhdGlsZVJlZ2lzdGVycyByYWNlIGNvbmRp dGlvbg0KPiA+ID4NCj4gPiA+IERvZXMNCj4gPiA+DQo+ID4NCj4gaHR0cHM6Ly9naXRodWIuY29t L3RpYW5vY29yZS9lZGsyL2Jsb2IvbWFzdGVyL1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaQ0KPiA+ ID4gdExpYi9NcExpYi5jI0w5MDkgKGFsc28gZGVjcmVtZW50cw0KPiA+ID4gTnVtQXBzRXhlY3V0 aW5nKSBhbHNvIG5lZWQgYmUgaGFuZGxlZD8NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPiBT dGFyDQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiBG cm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFs ZiBPZg0KPiA+ID4gPiBNaWNoYWVsIEQgS2lubmV5DQo+ID4gPiA+IFNlbnQ6IFNhdHVyZGF5LCBK YW51YXJ5IDIzLCAyMDIxIDE6MTAgQU0NCj4gPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlv DQo+ID4gPiA+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTmksIFJheSA8 cmF5Lm5pQGludGVsLmNvbT47DQo+ID4gPiA+IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5j b20+OyBLdW1hciwgUmFodWwxDQo+ID4gPiA+IDxyYWh1bDEua3VtYXJAaW50ZWwuY29tPg0KPiA+ ID4gPiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BhdGNoIDEvMV0gVWVmaUNwdVBrZy9MaWJyYXJ5 L01wSW5pdExpYjogRml4DQo+ID4gPiA+IEFQIFZvbGF0aWxlUmVnaXN0ZXJzIHJhY2UgY29uZGl0 aW9uDQo+ID4gPiA+DQo+ID4gPiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3Jn L3Nob3dfYnVnLmNnaT9pZD0zMTgyDQo+ID4gPiA+DQo+ID4gPiA+IEZpeCB0aGUgb3JkZXIgb2Yg b3BlcmF0aW9ucyBpbiBBcFdha2V1cEZ1bmN0aW9uKCkgd2hlbg0KPiA+ID4gPiBQY2RDcHVBcExv b3BNb2RlIGlzIHNldCB0byBITFQgbW9kZSB0aGF0IHVzZXMgSU5JVC1TSVBJLVNJUEkgdG8NCj4g d2FrZQ0KPiA+ID4gPiBBUHMuICBJbiB0aGlzIG1vZGUsIHZvbGF0aWxlIHN0YXRlIGlzIHJlc3Rv cmVkIGFuZCBzYXZlZCBlYWNoIHRpbWUgYQ0KPiA+ID4gPiBJTklULVNJUEktU0lQSSBpcyBzZW50 IHRvIGFuIEFQIHRvIHJlcXVlc3QgYSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZA0KPiA+ID4gPiBv biB0aGUgQVAuICBXaGVuIHRoZSBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgdGhlIHZvbGF0aWxlIHN0 YXRlIG9mIHRoZQ0KPiA+ID4gPiBBUCBpcyBzYXZlZC4gIEhvd2V2ZXIsIHRoZSBjb3VudGVycyBO dW1BcHNFeGVjdXRpbmcgYW5kDQo+ID4gPiA+IEZpbmlzaGVkQ291bnQgYXJlIHVwZGF0ZWQgYmVm b3JlIHRoZSB2b2xhdGlsZSBzdGF0ZSBpcyBzYXZlZC4gIFRoaXMNCj4gPiA+ID4gYWxsb3dzIGZv ciBhIHJhY2UgY29uZGl0aW9uIHdpbmRvdyBmb3IgdGhlIEJTUCB0aGF0IGlzIHdhaXRpbmcgb24N Cj4gPiA+ID4gdGhlc2UgY291bnRlcnMgdG8gcmVxdWVzdCBhIG5ldyBJTklULVNJUEktU0lQSSBi ZWZvcmUgYWxsIHRoZSBBUHMNCj4gPiA+ID4gaGF2ZSBjb21wbGV0ZWx5IHNhdmVkIHRoZWlyIHZv bGF0aWxlIHN0YXRlLiAgVGhlIGZpeCBpcyB0byBzYXZlIHRoZQ0KPiA+ID4gPiBBUCB2b2xhdGls ZSBzdGF0ZSBiZWZvcmUgdXBkYXRpbmcgdGhlIE51bUFwc0V4ZWN1dGluZyBhbmQNCj4gPiA+ID4g RmluaXNoZWRDb3VudCBjb3VudGVycy4NCj4gPiA+ID4NCj4gPiA+ID4gQ2M6IEVyaWMgRG9uZyA8 ZXJpYy5kb25nQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNv bT4NCj4gPiA+ID4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4gPiA+ IENjOiBSYWh1bCBLdW1hciA8cmFodWwxLmt1bWFyQGludGVsLmNvbT4NCj4gPiA+ID4gU2lnbmVk LW9mZi1ieTogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ ID4gPiA+IC0tLQ0KPiA+ID4gPiAgVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYi5j IHwgMzENCj4gPiA+ID4gKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQ0KPiA+ID4gPiAgMSBm aWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQ0KPiA+ID4gPg0K PiA+ID4gPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYi5j DQo+ID4gPiA+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYi5jDQo+ID4gPiA+ IGluZGV4IDY4MWZhNzliNGNmZi4uOGIxZjdmODRiYWQ2IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9V ZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wTGliLmMNCj4gPiA+ID4gKysrIGIvVWVmaUNw dVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYi5jDQo+ID4gPiA+IEBAIC03NjksMTUgKzc2OSw2 IEBAIEFwV2FrZXVwRnVuY3Rpb24gKA0KPiA+ID4gPiAgICAgICAgUmVzdG9yZVZvbGF0aWxlUmVn aXN0ZXJzDQo+ID4gPiA+ICgmQ3B1TXBEYXRhLT5DcHVEYXRhWzBdLlZvbGF0aWxlUmVnaXN0ZXJz LA0KPiA+ID4gPiBGQUxTRSk7DQo+ID4gPiA+ICAgICAgICBJbml0aWFsaXplQXBEYXRhIChDcHVN cERhdGEsIFByb2Nlc3Nvck51bWJlciwgQmlzdERhdGEsDQo+ID4gPiA+IEFwVG9wT2ZTdGFjayk7 DQo+ID4gPiA+ICAgICAgICBBcFN0YXJ0dXBTaWduYWxCdWZmZXIgPSBDcHVNcERhdGEtDQo+ID4g PiA+ID5DcHVEYXRhW1Byb2Nlc3Nvck51bWJlcl0uU3RhcnR1cEFwU2lnbmFsOw0KPiA+ID4gPiAt DQo+ID4gPiA+IC0gICAgICAvLw0KPiA+ID4gPiAtICAgICAgLy8gRGVsYXkgZGVjcmVtZW50aW5n IHRoZSBBUHMgZXhlY3V0aW5nIGNvdW50IHdoZW4gU0VWLUVTIGlzDQo+ID4gZW5hYmxlZA0KPiA+ ID4gPiAtICAgICAgLy8gdG8gYWxsb3cgdGhlIEFQcyB0byBpc3N1ZSBhbiBBUF9SRVNFVF9IT0xE IGJlZm9yZSB0aGUgQlNQDQo+ID4gcG9zc2libHkNCj4gPiA+ID4gLSAgICAgIC8vIHBlcmZvcm1z IGFub3RoZXIgSU5JVC1TSVBJLVNJUEkgc2VxdWVuY2UuDQo+ID4gPiA+IC0gICAgICAvLw0KPiA+ ID4gPiAtICAgICAgaWYgKCFDcHVNcERhdGEtPlNldkVzSXNFbmFibGVkKSB7DQo+ID4gPiA+IC0g ICAgICAgIEludGVybG9ja2VkRGVjcmVtZW50ICgoVUlOVDMyICopICZDcHVNcERhdGEtDQo+ID4g PiA+ID5NcENwdUV4Y2hhbmdlSW5mby0+TnVtQXBzRXhlY3V0aW5nKTsNCj4gPiA+ID4gLSAgICAg IH0NCj4gPiA+ID4gICAgICB9IGVsc2Ugew0KPiA+ID4gPiAgICAgICAgLy8NCj4gPiA+ID4gICAg ICAgIC8vIEV4ZWN1dGUgQVAgZnVuY3Rpb24gaWYgQVAgaXMgcmVhZHkgQEAgLTg2NiwxOSArODU3 LDMzIEBADQo+ID4gPiA+IEFwV2FrZXVwRnVuY3Rpb24gKA0KPiA+ID4gPiAgICAgICAgfQ0KPiA+ ID4gPiAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBpZiAoQ3B1TXBEYXRhLT5BcExvb3BN b2RlID09IEFwSW5IbHRMb29wKSB7DQo+ID4gPiA+ICsgICAgICAvLw0KPiA+ID4gPiArICAgICAg Ly8gU2F2ZSBBUCB2b2xhdGlsZSByZWdpc3RlcnMNCj4gPiA+ID4gKyAgICAgIC8vDQo+ID4gPiA+ ICsgICAgICBTYXZlVm9sYXRpbGVSZWdpc3RlcnMgKCZDcHVNcERhdGEtDQo+ID4gPiA+ID5DcHVE YXRhW1Byb2Nlc3Nvck51bWJlcl0uVm9sYXRpbGVSZWdpc3RlcnMpOw0KPiA+ID4gPiArICAgIH0N Cj4gPiA+ID4gKw0KPiA+ID4gPiAgICAgIC8vDQo+ID4gPiA+ICAgICAgLy8gQVAgZmluaXNoZWQg ZXhlY3V0aW5nIEMgY29kZQ0KPiA+ID4gPiAgICAgIC8vDQo+ID4gPiA+ICAgICAgSW50ZXJsb2Nr ZWRJbmNyZW1lbnQgKChVSU5UMzIgKikgJkNwdU1wRGF0YS0+RmluaXNoZWRDb3VudCk7DQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgaWYgKENwdU1wRGF0YS0+SW5pdEZsYWcgPT0gQXBJbml0Q29uZmln KSB7DQo+ID4gPiA+ICsgICAgICAvLw0KPiA+ID4gPiArICAgICAgLy8gRGVsYXkgZGVjcmVtZW50 aW5nIHRoZSBBUHMgZXhlY3V0aW5nIGNvdW50IHdoZW4gU0VWLUVTIGlzDQo+ID4gZW5hYmxlZA0K PiA+ID4gPiArICAgICAgLy8gdG8gYWxsb3cgdGhlIEFQcyB0byBpc3N1ZSBhbiBBUF9SRVNFVF9I T0xEIGJlZm9yZSB0aGUgQlNQDQo+ID4gcG9zc2libHkNCj4gPiA+ID4gKyAgICAgIC8vIHBlcmZv cm1zIGFub3RoZXIgSU5JVC1TSVBJLVNJUEkgc2VxdWVuY2UuDQo+ID4gPiA+ICsgICAgICAvLw0K PiA+ID4gPiArICAgICAgaWYgKCFDcHVNcERhdGEtPlNldkVzSXNFbmFibGVkKSB7DQo+ID4gPiA+ ICsgICAgICAgIEludGVybG9ja2VkRGVjcmVtZW50ICgoVUlOVDMyICopICZDcHVNcERhdGEtDQo+ ID4gPiA+ID5NcENwdUV4Y2hhbmdlSW5mby0+TnVtQXBzRXhlY3V0aW5nKTsNCj4gPiA+ID4gKyAg ICAgIH0NCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gICAgICAvLw0KPiA+ID4g PiAgICAgIC8vIFBsYWNlIEFQIGlzIHNwZWNpZmllZCBsb29wIG1vZGUNCj4gPiA+ID4gICAgICAv Lw0KPiA+ID4gPiAgICAgIGlmIChDcHVNcERhdGEtPkFwTG9vcE1vZGUgPT0gQXBJbkhsdExvb3Ap IHsNCj4gPiA+ID4gLSAgICAgIC8vDQo+ID4gPiA+IC0gICAgICAvLyBTYXZlIEFQIHZvbGF0aWxl IHJlZ2lzdGVycw0KPiA+ID4gPiAtICAgICAgLy8NCj4gPiA+ID4gLSAgICAgIFNhdmVWb2xhdGls ZVJlZ2lzdGVycyAoJkNwdU1wRGF0YS0NCj4gPiA+ID4gPkNwdURhdGFbUHJvY2Vzc29yTnVtYmVy XS5Wb2xhdGlsZVJlZ2lzdGVycyk7DQo+ID4gPiA+ICAgICAgICAvLw0KPiA+ID4gPiAgICAgICAg Ly8gUGxhY2UgQVAgaW4gSExULWxvb3ANCj4gPiA+ID4gICAgICAgIC8vDQo+ID4gPiA+IC0tDQo+ ID4gPiA+IDIuMjkuMi53aW5kb3dzLjINCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4gDQo+ID4gPiA+DQoNCg==