From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.groups.io with SMTP id smtpd.web12.9131.1588940225602336664 for ; Fri, 08 May 2020 05:17:05 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=bUn+YTDs; 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=1588940224; 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=cK8B2+fW2JA10XQMI1bfXI0WcV/DeqwVLSOQ0a/Otck=; b=bUn+YTDsS2iuQOwcjw4CKXRULutcYJVZ+5Rg6sehZjT93bmnR+6blo1RCNEEJ7BnYR3Zqz BQxhY0VD2BOm/vZ/nZJd5C4dS+NvQWG5iIh7hhbT0+LUd75GNidY6MRbGnHkN0cfeeDugY nvA2/H3zt5MwIkeedi2oM5wayySP6zY= 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-6-yYx_h689MBiepxRJ-nAkIA-1; Fri, 08 May 2020 08:17:00 -0400 X-MC-Unique: yYx_h689MBiepxRJ-nAkIA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E41D9107ACCD; Fri, 8 May 2020 12:16:58 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-114-60.ams2.redhat.com [10.36.114.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id A48925C1BE; Fri, 8 May 2020 12:16:57 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Jiewen Yao , Jordan Justen , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 2/4] OvmfPkg/PlatformPei: rewrite MemTypeInfo HOB production logic Date: Fri, 8 May 2020 14:16:49 +0200 Message-Id: <20200508121651.16045-3-lersek@redhat.com> In-Reply-To: <20200508121651.16045-1-lersek@redhat.com> References: <20200508121651.16045-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VGhlIHByZXZpb3VzIHBhdGNoIGhhcyBubyBlZmZlY3QgLS0gaS5lLiwgaXQgY2Fubm90IHN0b3Ag dGhlIHRyYWNraW5nIG9mCkJTIENvZGUvRGF0YSBpbiBNZW1UeXBlSW5mbyAtLSBpZiB0aGUgdmly dHVhbCBtYWNoaW5lIGFscmVhZHkgaGFzIGEKTWVtb3J5VHlwZUluZm9ybWF0aW9uIFVFRkkgdmFy aWFibGUuCgpJbiB0aGF0IGNhc2UsIG91ciBjdXJyZW50IGxvZ2ljIGFsbG93cyB0aGUgRFhFIElQ TCBQRUlNIHRvIHRyYW5zbGF0ZSB0aGUKVUVGSSB2YXJpYWJsZSB0byB0aGUgSE9CLCBhbmQgdGhh dCB0cmFuc2xhdGlvbiBpcyB2ZXJiYXRpbS4gSWYgdGhlCnZhcmlhYmxlIGFscmVhZHkgY29udGFp bnMgcmVjb3JkcyBmb3IgQlMgQ29kZS9EYXRhLCB0aGUgaXNzdWVzIGxpc3RlZCBpbgp0aGUgcHJl dmlvdXMgcGF0Y2ggcGVyc2lzdCBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS4KCkZvciB0aGlzIHJl YXNvbiwgKmFsd2F5cyogaW5zdGFsbCBQbGF0Zm9ybVBlaSdzIG93biBNZW1UeXBlSW5mbyBIT0Iu IFRoaXMKcHJldmVudHMgdGhlIERYRSBJUEwgUEVJTSdzIHZhcmlhYmxlLXRvLUhPQiB0cmFuc2xh dGlvbi4KCkluIFBsYXRmb3JtUGVpLCBjb25zdW1lIHRoZSByZWNvcmRzIGluIHRoZSBNZW1vcnlU eXBlSW5mb3JtYXRpb24gVUVGSQp2YXJpYWJsZSBhcyBoaW50czoKCi0gSWdub3JlIGFsbCBtZW1v cnkgdHlwZXMgZm9yIHdoaWNoIHdlIHdvdWxkbid0IGJ5IGRlZmF1bHQgaW5zdGFsbCByZWNvcmRz CiAgaW4gdGhlIEhPQi4gVGhpcyBoaWRlcyBCUyBDb2RlL0RhdGEgZnJvbSBhbnkgZXhpc3RlbnQK ICBNZW1vcnlUeXBlSW5mb3JtYXRpb24gdmFyaWFibGUuCgotIEZvciB0aGUgbWVtb3J5IHR5cGVz IHRoYXQgb3VyIGRlZmF1bHRzIGNvdmVyLCBlbmFibGUgdGhlIHJlY29yZHMgaW4gdGhlCiAgVUVG SSB2YXJpYWJsZSB0byBpbmNyZWFzZSAoYW5kICpvbmx5KiB0byBpbmNyZWFzZSkgdGhlIHBhZ2Ug Y291bnRzLgoKICBUaGlzIGxldHMgdGhlIE1lbW9yeVR5cGVJbmZvcm1hdGlvbiBVRUZJIHZhcmlh YmxlIGZ1bmN0aW9uIGFzIGRlc2lnbmVkLAogIGJ1dCBpdCBlbGltaW5hdGVzIGEgcmVib290IHdo ZW4gc3VjaCBhIG5ldyBPVk1GIGJpbmFyeSBpcyBkZXBsb3llZCAoYSkKICB0aGF0IGhhcyBoaWdo ZXIgbWVtb3J5IGNvbnN1bXB0aW9uIHRoYW4gdHJhY2tlZCBieSB0aGUgdmlydHVhbCBtYWNoaW5l J3MKICBVRUZJIHZhcmlhYmxlIHByZXZpb3VzbHksICpidXQqIChiKSB3aG9zZSBkZWZhdWx0cyBh bHNvIHJlZmxlY3QgdGhvc2UKICBoaWdoZXIgcGFnZSBjb3VudHMuCgpDYzogQXJkIEJpZXNoZXV2 ZWwgPGFyZC5iaWVzaGV1dmVsQGFybS5jb20+CkNjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT4KQ2M6IEpvcmRhbiBKdXN0ZW4gPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+CkNj OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+ClJlZjogaHR0cHM6 Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA2ClNpZ25lZC1vZmYt Ynk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQogT3ZtZlBrZy9QbGF0Zm9y bVBlaS9NZW1UeXBlSW5mby5jIHwgMTYxICsrKysrKysrKysrKysrLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL092 bWZQa2cvUGxhdGZvcm1QZWkvTWVtVHlwZUluZm8uYyBiL092bWZQa2cvUGxhdGZvcm1QZWkvTWVt VHlwZUluZm8uYwppbmRleCA4MTAwYTJkYjdkNDQuLmQyODdmYjlkN2RmMCAxMDA2NDQKLS0tIGEv T3ZtZlBrZy9QbGF0Zm9ybVBlaS9NZW1UeXBlSW5mby5jCisrKyBiL092bWZQa2cvUGxhdGZvcm1Q ZWkvTWVtVHlwZUluZm8uYwpAQCAtMSw3ICsxLDUgQEAKIC8qKiBAZmlsZQ0KLSAgUHJvZHVjZSBh IGRlZmF1bHQgbWVtb3J5IHR5cGUgaW5mb3JtYXRpb24gSE9CIHVubGVzcyB3ZSBjYW4gZGV0ZXJt aW5lLCBmcm9tDQotICB0aGUgZXhpc3RlbmNlIG9mIHRoZSAiTWVtb3J5VHlwZUluZm9ybWF0aW9u IiB2YXJpYWJsZSwgdGhhdCB0aGUgRFhFIElQTCBQRUlNDQotICB3aWxsIHByb2R1Y2UgdGhlIEhP Qi4NCisgIFByb2R1Y2UgdGhlIG1lbW9yeSB0eXBlIGluZm9ybWF0aW9uIEhPQi4NCiANCiAgIENv cHlyaWdodCAoQykgMjAxNy0yMDIwLCBSZWQgSGF0LCBJbmMuDQogDQpAQCAtMjUsNyArMjMsNyBA QAogLy8gb2YgQklOIGhpbnRzIHRoYXQgbWFkZSBzZW5zZSBhdCBhIHBhcnRpY3VsYXIgdGltZSwg Zm9yIHNvbWUgKG5vdyBsaWtlbHkNCiAvLyB1bmtub3duKSB3b3JrbG9hZHMgLyBib290IHBhdGhz Lg0KIC8vDQotU1RBVElDIEVGSV9NRU1PUllfVFlQRV9JTkZPUk1BVElPTiBtRGVmYXVsdE1lbW9y eVR5cGVJbmZvcm1hdGlvbltdID0gew0KK1NUQVRJQyBFRklfTUVNT1JZX1RZUEVfSU5GT1JNQVRJ T04gbU1lbW9yeVR5cGVJbmZvcm1hdGlvbltdID0gew0KICAgeyBFZmlBQ1BJTWVtb3J5TlZTLCAg ICAgICAweDAwNCB9LA0KICAgeyBFZmlBQ1BJUmVjbGFpbU1lbW9yeSwgICAweDAwOCB9LA0KICAg eyBFZmlSZXNlcnZlZE1lbW9yeVR5cGUsICAweDAwNCB9LA0KQEAgLTQyLDExICs0MCwxMTcgQEAg QnVpbGRNZW1UeXBlSW5mb0hvYiAoCiB7DQogICBCdWlsZEd1aWREYXRhSG9iICgNCiAgICAgJmdF ZmlNZW1vcnlUeXBlSW5mb3JtYXRpb25HdWlkLA0KLSAgICBtRGVmYXVsdE1lbW9yeVR5cGVJbmZv cm1hdGlvbiwNCi0gICAgc2l6ZW9mIG1EZWZhdWx0TWVtb3J5VHlwZUluZm9ybWF0aW9uDQorICAg IG1NZW1vcnlUeXBlSW5mb3JtYXRpb24sDQorICAgIHNpemVvZiBtTWVtb3J5VHlwZUluZm9ybWF0 aW9uDQogICAgICk7DQotICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogZGVmYXVsdCBtZW1vcnkg dHlwZSBpbmZvcm1hdGlvbiBIT0IgYnVpbHRcbiIsDQotICAgIF9fRlVOQ1RJT05fXykpOw0KK30N CisNCisvKioNCisgIFJlZnJlc2ggdGhlIG1NZW1vcnlUeXBlSW5mb3JtYXRpb24gYXJyYXkgKHdo aWNoIHdlJ2xsIHR1cm4gaW50byB0aGUNCisgIE1lbW9yeVR5cGVJbmZvcm1hdGlvbiBIT0IpIGZy b20gdGhlIE1lbW9yeVR5cGVJbmZvcm1hdGlvbiBVRUZJIHZhcmlhYmxlLg0KKw0KKyAgTm9ybWFs bHksIHRoZSBEWEUgSVBMIFBFSU0gYnVpbGRzIHRoZSBIT0IgZnJvbSB0aGUgVUVGSSB2YXJpYWJs ZS4gQnV0IGl0IGRvZXMNCisgIHNvICp0cmFuc3BhcmVudGx5Ki4gSW5zdGVhZCwgd2UgY29uc2lk ZXIgdGhlIFVFRkkgdmFyaWFibGUgYXMgYSBsaXN0IG9mDQorICBoaW50cywgZm9yIHVwZGF0aW5n IG91ciBIT0IgZGVmYXVsdHM6DQorDQorICAtIFJlY29yZCB0eXBlcyBub3QgY292ZXJlZCBpbiBt TWVtb3J5VHlwZUluZm9ybWF0aW9uIGFyZSBpZ25vcmVkLiBJbg0KKyAgICBwYXJ0aWN1bGFyLCB0 aGlzIGhpZGVzIHJlY29yZCB0eXBlcyBmcm9tIHRoZSBVRUZJIHZhcmlhYmxlIHRoYXQgbWF5IGxl YWQgdG8NCisgICAgcmVib290cyB3aXRob3V0IGJlbmVmaXRpbmcgU01NIHNlY3VyaXR5LCBzdWNo IGFzIEVmaUJvb3RTZXJ2aWNlc0RhdGEuDQorDQorICAtIFJlY29yZHMgdGhhdCB3b3VsZCBsb3dl ciB0aGUgZGVmYXVsdHMgaW4gbU1lbW9yeVR5cGVJbmZvcm1hdGlvbiBhcmUgYWxzbw0KKyAgICBp Z25vcmVkLg0KKw0KKyAgQHBhcmFtW2luXSBSZWFkT25seVZhcmlhYmxlMiAgVGhlIEVGSV9QRUlf UkVBRF9PTkxZX1ZBUklBQkxFMl9QUEkgdXNlZCBmb3INCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHJpZXZpbmcgdGhlIE1lbW9yeVR5cGVJbmZvcm1hdGlvbiBVRUZJDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4NCisqKi8NCitTVEFUSUMNCitW T0lEDQorUmVmcmVzaE1lbVR5cGVJbmZvICgNCisgIElOIEVGSV9QRUlfUkVBRF9PTkxZX1ZBUklB QkxFMl9QUEkgKlJlYWRPbmx5VmFyaWFibGUyDQorICApDQorew0KKyAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgIERhdGFTaXplOw0KKyAgRUZJX01FTU9SWV9UWVBFX0lORk9STUFUSU9OIEVu dHJpZXNbRWZpTWF4TWVtb3J5VHlwZSArIDFdOw0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBOdW1FbnRyaWVzOw0K KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIEhvYlJlY29yZElkeDsNCisNCisgIC8vDQor ICAvLyBSZWFkIHRoZSBNZW1vcnlUeXBlSW5mb3JtYXRpb24gVUVGSSB2YXJpYWJsZSBmcm9tIHRo ZQ0KKyAgLy8gZ0VmaU1lbW9yeVR5cGVJbmZvcm1hdGlvbkd1aWQgbmFtZXNwYWNlLg0KKyAgLy8N CisgIERhdGFTaXplID0gc2l6ZW9mIEVudHJpZXM7DQorICBTdGF0dXMgPSBSZWFkT25seVZhcmlh YmxlMi0+R2V0VmFyaWFibGUgKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVh ZE9ubHlWYXJpYWJsZTIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfTUVN T1JZX1RZUEVfSU5GT1JNQVRJT05fVkFSSUFCTEVfTkFNRSwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZnRWZpTWVtb3J5VHlwZUluZm9ybWF0aW9uR3VpZCwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmRGF0YVNpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRyaWVz DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KKyAgICAvLw0KKyAgICAvLyBJZiB0aGUgVUVGSSB2YXJpYWJsZSBkb2VzIG5v dCBleGlzdCAoRUZJX05PVF9GT1VORCksIHdlIGNhbid0IHVzZSBpdCBmb3INCisgICAgLy8gdWRw YXRpbmcgbU1lbW9yeVR5cGVJbmZvcm1hdGlvbi4NCisgICAgLy8NCisgICAgLy8gSWYgdGhlIFVF RkkgdmFyaWFibGUgZXhpc3RzIGJ1dCBFbnRyaWVzIGlzIHRvbyBzbWFsbCB0byBob2xkIGl0DQor ICAgIC8vIChFRklfQlVGRkVSX1RPT19TTUFMTCksIHRoZW4gdGhlIHZhcmlhYmxlIGNvbnRlbnRz IGFyZSBhcmd1YWJseSBpbnZhbGlkLg0KKyAgICAvLyBUaGF0J3MgYmVjYXVzZSBFbnRyaWVzIGhh cyByb29tIGZvciBldmVyeSBkaXN0aW5jdCBFRklfTUVNT1JZX1RZUEUsDQorICAgIC8vIGluY2x1 ZGluZyB0aGUgdGVybWluYXRvciByZWNvcmQgd2l0aCBFZmlNYXhNZW1vcnlUeXBlLiBUaHVzLCB3 ZSBjYW4ndA0KKyAgICAvLyB1c2UgdGhlIFVFRkkgdmFyaWFibGUgZm9yIHVwZGF0aW5nIG1NZW1v cnlUeXBlSW5mb3JtYXRpb24uDQorICAgIC8vDQorICAgIC8vIElmIHRoZSBVRUZJIHZhcmlhYmxl IGNvdWxkbid0IGJlIHJlYWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCB3ZQ0KKyAgICAvLyBzaW1p bGFybHkgY2FuJ3QgdXNlIGl0IGZvciB1ZHBhdGluZyBtTWVtb3J5VHlwZUluZm9ybWF0aW9uLg0K KyAgICAvLw0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEdldFZhcmlhYmxlKCk6ICVy XG4iLCBfX0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KKyAgICByZXR1cm47DQorICB9DQorDQorICAv Lw0KKyAgLy8gU2FuaXR5LWNoZWNrIHRoZSBVRUZJIHZhcmlhYmxlIHNpemUgYWdhaW5zdCB0aGUg cmVjb3JkIHNpemUuDQorICAvLw0KKyAgaWYgKERhdGFTaXplICUgc2l6ZW9mIEVudHJpZXNbMF0g IT0gMCkgew0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IGludmFsaWQgVUVGSSB2YXJp YWJsZSBzaXplICVMdVxuIiwgX19GVU5DVElPTl9fLA0KKyAgICAgIChVSU5UNjQpRGF0YVNpemUp KTsNCisgICAgcmV0dXJuOw0KKyAgfQ0KKyAgTnVtRW50cmllcyA9IERhdGFTaXplIC8gc2l6ZW9m IEVudHJpZXNbMF07DQorDQorICAvLw0KKyAgLy8gRm9yIGVhY2ggcmVjb3JkIGluIG1NZW1vcnlU eXBlSW5mb3JtYXRpb24sIGV4Y2VwdCB0aGUgdGVybWluYXRvciByZWNvcmQsDQorICAvLyBsb29r IHVwIHRoZSBmaXJzdCBtYXRjaCAoaWYgYW55KSBpbiB0aGUgVUVGSSB2YXJpYWJsZSwgYmFzZWQg b24gdGhlIG1lbW9yeQ0KKyAgLy8gdHlwZS4NCisgIC8vDQorICBmb3IgKEhvYlJlY29yZElkeCA9 IDA7DQorICAgICAgIEhvYlJlY29yZElkeCA8IEFSUkFZX1NJWkUgKG1NZW1vcnlUeXBlSW5mb3Jt YXRpb24pIC0gMTsNCisgICAgICAgSG9iUmVjb3JkSWR4KyspIHsNCisgICAgRUZJX01FTU9SWV9U WVBFX0lORk9STUFUSU9OICpIb2JSZWNvcmQ7DQorICAgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICBJZHg7DQorICAgIEVGSV9NRU1PUllfVFlQRV9JTkZPUk1BVElPTiAqVmFyaWFibGVSZWNv cmQ7DQorDQorICAgIEhvYlJlY29yZCA9ICZtTWVtb3J5VHlwZUluZm9ybWF0aW9uW0hvYlJlY29y ZElkeF07DQorDQorICAgIGZvciAoSWR4ID0gMDsgSWR4IDwgTnVtRW50cmllczsgSWR4KyspIHsN CisgICAgICBWYXJpYWJsZVJlY29yZCA9ICZFbnRyaWVzW0lkeF07DQorDQorICAgICAgaWYgKFZh cmlhYmxlUmVjb3JkLT5UeXBlID09IEhvYlJlY29yZC0+VHlwZSkgew0KKyAgICAgICAgYnJlYWs7 DQorICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8vDQorICAgIC8vIElmIHRoZXJlIGlzIGEgbWF0 Y2gsIGFsbG93IHRoZSBVRUZJIHZhcmlhYmxlIHRvIGluY3JlYXNlIE51bWJlck9mUGFnZXMuDQor ICAgIC8vDQorICAgIGlmIChJZHggPCBOdW1FbnRyaWVzICYmDQorICAgICAgICBIb2JSZWNvcmQt Pk51bWJlck9mUGFnZXMgPCBWYXJpYWJsZVJlY29yZC0+TnVtYmVyT2ZQYWdlcykgew0KKyAgICAg IERFQlVHICgoREVCVUdfVkVSQk9TRSwgIiVhOiBUeXBlIDB4JXg6IE51bWJlck9mUGFnZXMgMHgl eCAtPiAweCV4XG4iLA0KKyAgICAgICAgX19GVU5DVElPTl9fLCBIb2JSZWNvcmQtPlR5cGUsIEhv YlJlY29yZC0+TnVtYmVyT2ZQYWdlcywNCisgICAgICAgIFZhcmlhYmxlUmVjb3JkLT5OdW1iZXJP ZlBhZ2VzKSk7DQorDQorICAgICAgSG9iUmVjb3JkLT5OdW1iZXJPZlBhZ2VzID0gVmFyaWFibGVS ZWNvcmQtPk51bWJlck9mUGFnZXM7DQorICAgIH0NCisgIH0NCiB9DQogDQogLyoqDQpAQCAtNzAs NDcgKzE3NCwxMCBAQCBPblJlYWRPbmx5VmFyaWFibGUyQXZhaWxhYmxlICgKICAgSU4gVk9JRCAg ICAgICAgICAgICAgICAgICAgICAgKlBwaQ0KICAgKQ0KIHsNCi0gIEVGSV9QRUlfUkVBRF9PTkxZ X1ZBUklBQkxFMl9QUEkgKlJlYWRPbmx5VmFyaWFibGUyOw0KLSAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICBEYXRhU2l6ZTsNCi0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KLQ0KICAgREVCVUcgKChERUJVR19WRVJCT1NFLCAiJWFcbiIsIF9fRlVOQ1RJ T05fXykpOw0KIA0KLSAgLy8NCi0gIC8vIENoZWNrIGlmIHRoZSAiTWVtb3J5VHlwZUluZm9ybWF0 aW9uIiB2YXJpYWJsZSBleGlzdHMsIGluIHRoZQ0KLSAgLy8gZ0VmaU1lbW9yeVR5cGVJbmZvcm1h dGlvbkd1aWQgbmFtZXNwYWNlLg0KLSAgLy8NCi0gIFJlYWRPbmx5VmFyaWFibGUyID0gUHBpOw0K LSAgRGF0YVNpemUgPSAwOw0KLSAgU3RhdHVzID0gUmVhZE9ubHlWYXJpYWJsZTItPkdldFZhcmlh YmxlICgNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5VmFyaWFibGUy LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX01FTU9SWV9UWVBFX0lORk9S TUFUSU9OX1ZBUklBQkxFX05BTUUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Z0VmaU1lbW9yeVR5cGVJbmZvcm1hdGlvbkd1aWQsDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkRhdGFTaXpl LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKTsNCi0gIHN3aXRjaCAoU3RhdHVzKSB7DQotICBjYXNlIEVGSV9C VUZGRVJfVE9PX1NNQUxMOg0KLSAgICAvLw0KLSAgICAvLyBUaGUgdmFyaWFibGUgZXhpc3RzOyB0 aGUgRFhFIElQTCBQRUlNIHdpbGwgYnVpbGQgdGhlIEhPQiBmcm9tIGl0Lg0KLSAgICAvLw0KLSAg ICBicmVhazsNCi0gIGNhc2UgRUZJX05PVF9GT1VORDoNCi0gICAgLy8NCi0gICAgLy8gVGhlIHZh cmlhYmxlIGRvZXMgbm90IGV4aXN0OyBpbnN0YWxsIHRoZSBkZWZhdWx0IG1lbW9yeSB0eXBlIGlu Zm9ybWF0aW9uDQotICAgIC8vIEhPQi4NCi0gICAgLy8NCi0gICAgQnVpbGRNZW1UeXBlSW5mb0hv YiAoKTsNCi0gICAgYnJlYWs7DQotICBkZWZhdWx0Og0KLSAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiJWE6IHVuZXhwZWN0ZWQ6IEdldFZhcmlhYmxlKCk6ICVyXG4iLCBfX0ZVTkNUSU9OX18sDQot ICAgICAgU3RhdHVzKSk7DQotICAgIEFTU0VSVCAoRkFMU0UpOw0KLSAgICBDcHVEZWFkTG9vcCAo KTsNCi0gICAgYnJlYWs7DQotICB9DQotDQorICBSZWZyZXNoTWVtVHlwZUluZm8gKFBwaSk7DQor ICBCdWlsZE1lbVR5cGVJbmZvSG9iICgpOw0KICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KIH0NCiAN Ci0tIAoyLjE5LjEuMy5nMzAyNDdhYTVkMjAxCgoK