From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.61]) by mx.groups.io with SMTP id smtpd.web10.9249.1582478765075138375 for ; Sun, 23 Feb 2020 09:26:05 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=SE8VIr0Y; spf=pass (domain: redhat.com, ip: 205.139.110.61, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582478764; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hACZCCAklrMoVzbcWB9Eh2QDRAaRIMEPT06Xp4nEKdw=; b=SE8VIr0YsSJHI7N1DyOm+AOPpPlARaIzo0sFfG1L/4kvqczG4lXhSKOg/z4bRLSpsRda1Z MDpeU+L1snGYK9APBE/bd/KP/8n6iU2lKqetIswLpDeVXKe7OCiP6P7GLUDoPr2U8x1eJH D1zvmEdmgTvlrPuX276UMCm6MQPr9zE= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-242-MuyG-gvoNeefDUYfrwBxIg-1; Sun, 23 Feb 2020 12:26:02 -0500 X-MC-Unique: MuyG-gvoNeefDUYfrwBxIg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6BA1D1851FC2; Sun, 23 Feb 2020 17:26:00 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-53.ams2.redhat.com [10.36.116.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id E31505C105; Sun, 23 Feb 2020 17:25:56 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Igor Mammedov , Jiewen Yao , Jordan Justen , Michael Kinney , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 07/16] OvmfPkg/CpuHotplugSmm: add hotplug register block helper functions Date: Sun, 23 Feb 2020 18:25:28 +0100 Message-Id: <20200223172537.28464-8-lersek@redhat.com> In-Reply-To: <20200223172537.28464-1-lersek@redhat.com> References: <20200223172537.28464-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 QWRkIGEgaGFuZGZ1bCBvZiBzaW1wbGUgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgUUVNVSdzIGhv dHBsdWcgcmVnaXN0ZXJzCm1vcmUgY29udmVuaWVudGx5LiBUaGVzZSBmdW5jdGlvbnMgdGhpbmx5 IHdyYXAgc29tZSBvZiB0aGUgcmVnaXN0ZXJzCmRlc2NyaWJlZCBpbiAiZG9jcy9zcGVjcy9hY3Bp X2NwdV9ob3RwbHVnLnR4dCIgaW4gdGhlIFFFTVUgdHJlZS4gVGhlCmZ1bmN0aW9ucyBoYW5nIChi eSBkZXNpZ24pIGlmIHRoZXkgZW5jb3VudGVyIGFuIGludGVybmFsIGZhaWx1cmUuCgpDYzogQXJk IEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+CkNjOiBJZ29yIE1hbW1lZG92 IDxpbWFtbWVkb0ByZWRoYXQuY29tPgpDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5j b20+CkNjOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPgpDYzogTWlj aGFlbCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPgpDYzogUGhpbGlwcGUgTWF0 aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPgpSZWY6IGh0dHBzOi8vYnVnemlsbGEudGlh bm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMgpTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJz ZWsgPGxlcnNla0ByZWRoYXQuY29tPgotLS0KIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVIb3Rw bHVnU21tLmluZiB8ICAgMiArCiBPdm1mUGtnL0NwdUhvdHBsdWdTbW0vUWVtdUNwdWhwLmggICAg ICAgfCAgNDcgKysrKysrKwogT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1FlbXVDcHVocC5jICAgICAg IHwgMTM2ICsrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0u aW5mIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0uaW5mCmluZGV4IGZhNzA4 NThhOGRhYi4uYWM0Y2E0YzFmNGYyIDEwMDY0NAotLS0gYS9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0v Q3B1SG90cGx1Z1NtbS5pbmYKKysrIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdT bW0uaW5mCkBAIC00LDQ0ICs0LDQ2IEBACiAjIENvcHlyaWdodCAoYykgMjAyMCwgUmVkIEhhdCwg SW5jLg0KICMNCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQogIyMNCiANCiBbRGVmaW5lc10NCiAgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgID0gMS4y OQ0KICAgUElfU1BFQ0lGSUNBVElPTl9WRVJTSU9OICAgPSAweDAwMDEwMDQ2ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgUEktMS43LjANCiAgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAg ID0gQ3B1SG90cGx1Z1NtbQ0KICAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgPSA4NEVFQTEx NC1DNkJFLTQ0NDUtOEY5MC01MUQ5Nzg2M0UzNjMNCiAgIE1PRFVMRV9UWVBFICAgICAgICAgICAg ICAgID0gRFhFX1NNTV9EUklWRVINCiAgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgID0gQ3B1 SG90cGx1Z0VudHJ5DQogDQogIw0KICMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3Ig cmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUgYnVpbGQNCiAjIHRvb2xzLg0K ICMNCiAjIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgID0gSUEzMiBYNjQNCiAjDQogDQogW1Nv dXJjZXNdDQogICBDcHVIb3RwbHVnLmMNCisgIFFlbXVDcHVocC5jDQorICBRZW11Q3B1aHAuaA0K IA0KIFtQYWNrYWdlc10NCiAgIE1kZVBrZy9NZGVQa2cuZGVjDQogICBPdm1mUGtnL092bWZQa2cu ZGVjDQogDQogW0xpYnJhcnlDbGFzc2VzXQ0KICAgQmFzZUxpYg0KICAgRGVidWdMaWINCiAgIE1t U2VydmljZXNUYWJsZUxpYg0KICAgUGNkTGliDQogICBVZWZpRHJpdmVyRW50cnlQb2ludA0KIA0K IFtQcm90b2NvbHNdDQogICBnRWZpTW1DcHVJb1Byb3RvY29sR3VpZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KIA0KIFtQY2RdDQogICBnVWVm aU92bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RRMzVTbXJhbUF0RGVmYXVsdFNtYmFzZSAgICAgICAg ICAgICAjIyBDT05TVU1FUw0KIA0KIFtGZWF0dXJlUGNkXQ0KICAgZ1VlZmlPdm1mUGtnVG9rZW5T cGFjZUd1aWQuUGNkU21tU21yYW1SZXF1aXJlICAgICAgICAgICAgICAgICAgICAgIyMgQ09OU1VN RVMNCiANCiBbRGVwZXhdDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1FlbXVD cHVocC5oIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1FlbXVDcHVocC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODJmODhmMGI3M2JiCi0tLSAvZGV2L251bGwKKysr IGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1FlbXVDcHVocC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8q KiBAZmlsZQ0KKyAgU2ltcGxlIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgYWNjZXNzIFFFTVUncyBt b2Rlcm4gQ1BVIGhvdHBsdWcgcmVnaXN0ZXINCisgIGJsb2NrLg0KKw0KKyAgVGhlc2UgZnVuY3Rp b25zIHRoaW5seSB3cmFwIHNvbWUgb2YgdGhlIHJlZ2lzdGVycyBkZXNjcmliZWQgaW4NCisgICJk b2NzL3NwZWNzL2FjcGlfY3B1X2hvdHBsdWcudHh0IiBpbiB0aGUgUUVNVSBzb3VyY2UuIElPIFBv cnRzIGFyZSBhY2Nlc3NlZA0KKyAgdmlhIEVGSV9NTV9DUFVfSU9fUFJPVE9DT0wuIElmIGEgcHJv dG9jb2wgY2FsbCBmYWlscywgdGhlc2UgZnVuY3Rpb25zIGRvbid0DQorICByZXR1cm4uDQorDQor ICBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZCBIYXQsIEluYy4NCisNCisgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQorI2lmbmRlZiBRRU1VX0NQ VUhQX0hfDQorI2RlZmluZSBRRU1VX0NQVUhQX0hfDQorDQorI2luY2x1ZGUgPFByb3RvY29sL01t Q3B1SW8uaD4gIC8vIEVGSV9NTV9DUFVfSU9fUFJPVE9DT0wNCisNCitVSU5UMzINCitRZW11Q3B1 aHBSZWFkQ29tbWFuZERhdGEyICgNCisgIElOIENPTlNUIEVGSV9NTV9DUFVfSU9fUFJPVE9DT0wg Kk1tQ3B1SW8NCisgICk7DQorDQorVUlOVDgNCitRZW11Q3B1aHBSZWFkQ3B1U3RhdHVzICgNCisg IElOIENPTlNUIEVGSV9NTV9DUFVfSU9fUFJPVE9DT0wgKk1tQ3B1SW8NCisgICk7DQorDQorVUlO VDMyDQorUWVtdUNwdWhwUmVhZENvbW1hbmREYXRhICgNCisgIElOIENPTlNUIEVGSV9NTV9DUFVf SU9fUFJPVE9DT0wgKk1tQ3B1SW8NCisgICk7DQorDQorVk9JRA0KK1FlbXVDcHVocFdyaXRlQ3B1 U2VsZWN0b3IgKA0KKyAgSU4gQ09OU1QgRUZJX01NX0NQVV9JT19QUk9UT0NPTCAqTW1DcHVJbywN CisgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0b3INCisgICk7DQorDQor Vk9JRA0KK1FlbXVDcHVocFdyaXRlQ29tbWFuZCAoDQorICBJTiBDT05TVCBFRklfTU1fQ1BVX0lP X1BST1RPQ09MICpNbUNwdUlvLA0KKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICBD b21tYW5kDQorICApOw0KKw0KKyNlbmRpZiAvLyBRRU1VX0NQVUhQX0hfDQpkaWZmIC0tZ2l0IGEv T3ZtZlBrZy9DcHVIb3RwbHVnU21tL1FlbXVDcHVocC5jIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21t L1FlbXVDcHVocC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzFl NDZmNTE5MzRhCi0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1FlbXVD cHVocC5jCkBAIC0wLDAgKzEsMTM2IEBACisvKiogQGZpbGUNCisgIFNpbXBsZSB3cmFwcGVyIGZ1 bmN0aW9ucyB0aGF0IGFjY2VzcyBRRU1VJ3MgbW9kZXJuIENQVSBob3RwbHVnIHJlZ2lzdGVyDQor ICBibG9jay4NCisNCisgIFRoZXNlIGZ1bmN0aW9ucyB0aGlubHkgd3JhcCBzb21lIG9mIHRoZSBy ZWdpc3RlcnMgZGVzY3JpYmVkIGluDQorICAiZG9jcy9zcGVjcy9hY3BpX2NwdV9ob3RwbHVnLnR4 dCIgaW4gdGhlIFFFTVUgc291cmNlLiBJTyBQb3J0cyBhcmUgYWNjZXNzZWQNCisgIHZpYSBFRklf TU1fQ1BVX0lPX1BST1RPQ09MLiBJZiBhIHByb3RvY29sIGNhbGwgZmFpbHMsIHRoZXNlIGZ1bmN0 aW9ucyBkb24ndA0KKyAgcmV0dXJuLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBSZWQgSGF0 LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1EzNU1jaEljaDkuaD4gICAg IC8vIElDSDlfQ1BVX0hPVFBMVUdfQkFTRQ0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1Fl bXVDcHVIb3RwbHVnLmg+IC8vIFFFTVVfQ1BVSFBfUl9DTURfREFUQTINCisjaW5jbHVkZSA8TGli cmFyeS9CYXNlTGliLmg+ICAgICAgICAgICAgICAgICAvLyBDcHVEZWFkTG9vcCgpDQorI2luY2x1 ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4gICAgICAgICAgICAgICAgLy8gREVCVUcoKQ0KKw0KKyNp bmNsdWRlICJRZW11Q3B1aHAuaCINCisNCitVSU5UMzINCitRZW11Q3B1aHBSZWFkQ29tbWFuZERh dGEyICgNCisgIElOIENPTlNUIEVGSV9NTV9DUFVfSU9fUFJPVE9DT0wgKk1tQ3B1SW8NCisgICkN Cit7DQorICBVSU5UMzIgICAgIENvbW1hbmREYXRhMjsNCisgIEVGSV9TVEFUVVMgU3RhdHVzOw0K Kw0KKyAgQ29tbWFuZERhdGEyID0gMDsNCisgIFN0YXR1cyA9IE1tQ3B1SW8tPklvLlJlYWQgKA0K KyAgICAgICAgICAgICAgICAgICAgICAgICBNbUNwdUlvLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICBNTV9JT19VSU5UMzIsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElDSDlfQ1BVX0hP VFBMVUdfQkFTRSArIFFFTVVfQ1BVSFBfUl9DTURfREFUQTIsDQorICAgICAgICAgICAgICAgICAg ICAgICAgIDEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICZDb21tYW5kRGF0YTINCisgICAg ICAgICAgICAgICAgICAgICAgICAgKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiAlclxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMp KTsNCisgICAgQVNTRVJUIChGQUxTRSk7DQorICAgIENwdURlYWRMb29wICgpOw0KKyAgfQ0KKyAg cmV0dXJuIENvbW1hbmREYXRhMjsNCit9DQorDQorVUlOVDgNCitRZW11Q3B1aHBSZWFkQ3B1U3Rh dHVzICgNCisgIElOIENPTlNUIEVGSV9NTV9DUFVfSU9fUFJPVE9DT0wgKk1tQ3B1SW8NCisgICkN Cit7DQorICBVSU5UOCAgICAgIENwdVN0YXR1czsNCisgIEVGSV9TVEFUVVMgU3RhdHVzOw0KKw0K KyAgQ3B1U3RhdHVzID0gMDsNCisgIFN0YXR1cyA9IE1tQ3B1SW8tPklvLlJlYWQgKA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICBNbUNwdUlvLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBN TV9JT19VSU5UOCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSUNIOV9DUFVfSE9UUExVR19C QVNFICsgUUVNVV9DUFVIUF9SX0NQVV9TVEFULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAx LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAmQ3B1U3RhdHVzDQorICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIERFQlVHICgo REVCVUdfRVJST1IsICIlYTogJXJcbiIsIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7DQorICAgIEFT U0VSVCAoRkFMU0UpOw0KKyAgICBDcHVEZWFkTG9vcCAoKTsNCisgIH0NCisgIHJldHVybiBDcHVT dGF0dXM7DQorfQ0KKw0KK1VJTlQzMg0KK1FlbXVDcHVocFJlYWRDb21tYW5kRGF0YSAoDQorICBJ TiBDT05TVCBFRklfTU1fQ1BVX0lPX1BST1RPQ09MICpNbUNwdUlvDQorICApDQorew0KKyAgVUlO VDMyICAgICBDb21tYW5kRGF0YTsNCisgIEVGSV9TVEFUVVMgU3RhdHVzOw0KKw0KKyAgQ29tbWFu ZERhdGEgPSAwOw0KKyAgU3RhdHVzID0gTW1DcHVJby0+SW8uUmVhZCAoDQorICAgICAgICAgICAg ICAgICAgICAgICAgIE1tQ3B1SW8sDQorICAgICAgICAgICAgICAgICAgICAgICAgIE1NX0lPX1VJ TlQzMiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSUNIOV9DUFVfSE9UUExVR19CQVNFICsg UUVNVV9DUFVIUF9SV19DTURfREFUQSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgJkNvbW1hbmREYXRhDQorICAgICAgICAgICAgICAgICAg ICAgICAgICk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIERFQlVHICgoREVC VUdfRVJST1IsICIlYTogJXJcbiIsIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7DQorICAgIEFTU0VS VCAoRkFMU0UpOw0KKyAgICBDcHVEZWFkTG9vcCAoKTsNCisgIH0NCisgIHJldHVybiBDb21tYW5k RGF0YTsNCit9DQorDQorVk9JRA0KK1FlbXVDcHVocFdyaXRlQ3B1U2VsZWN0b3IgKA0KKyAgSU4g Q09OU1QgRUZJX01NX0NQVV9JT19QUk9UT0NPTCAqTW1DcHVJbywNCisgIElOIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgU2VsZWN0b3INCisgICkNCit7DQorICBFRklfU1RBVFVTIFN0YXR1 czsNCisNCisgIFN0YXR1cyA9IE1tQ3B1SW8tPklvLldyaXRlICgNCisgICAgICAgICAgICAgICAg ICAgICAgICAgTW1DcHVJbywNCisgICAgICAgICAgICAgICAgICAgICAgICAgTU1fSU9fVUlOVDMy LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJQ0g5X0NQVV9IT1RQTFVHX0JBU0UgKyBRRU1V X0NQVUhQX1dfQ1BVX1NFTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgJlNlbGVjdG9yDQorICAgICAgICAgICAgICAgICAgICAgICAgICk7 DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIERFQlVHICgoREVCVUdfRVJST1Is ICIlYTogJXJcbiIsIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7DQorICAgIEFTU0VSVCAoRkFMU0Up Ow0KKyAgICBDcHVEZWFkTG9vcCAoKTsNCisgIH0NCit9DQorDQorVk9JRA0KK1FlbXVDcHVocFdy aXRlQ29tbWFuZCAoDQorICBJTiBDT05TVCBFRklfTU1fQ1BVX0lPX1BST1RPQ09MICpNbUNwdUlv LA0KKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kDQorICApDQorew0K KyAgRUZJX1NUQVRVUyBTdGF0dXM7DQorDQorICBTdGF0dXMgPSBNbUNwdUlvLT5Jby5Xcml0ZSAo DQorICAgICAgICAgICAgICAgICAgICAgICAgIE1tQ3B1SW8sDQorICAgICAgICAgICAgICAgICAg ICAgICAgIE1NX0lPX1VJTlQ4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJQ0g5X0NQVV9I T1RQTFVHX0JBU0UgKyBRRU1VX0NQVUhQX1dfQ01ELA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAmQ29tbWFuZA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJVRyAo KERFQlVHX0VSUk9SLCAiJWE6ICVyXG4iLCBfX0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KKyAgICBB U1NFUlQgKEZBTFNFKTsNCisgICAgQ3B1RGVhZExvb3AgKCk7DQorICB9DQorfQ0KLS0gCjIuMTku MS4zLmczMDI0N2FhNWQyMDEKCgo=