From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20055.outbound.protection.outlook.com [40.107.2.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 2FE7221ECCB15 for ; Wed, 20 Sep 2017 01:17:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=a6OvmwErNGPZoZiKUOpmMceiJT09SaqdliTegbbWfQo=; b=JazUcUCtTfAMZT92ZofrUGxONy2RbsnRcHPqO4R9GBN4tsqWK1IZk1hSOpUHEIe/uGIKyjGEA+f1FK7nLd5K63XtBy8IQ6hPV9D7lNG9ATKhP9lRovSQr7ynD3hzWxSBWPF03sMwmDUGjiMpO2v2bNxvbeEsPW6bPnck0tFWc2w= Received: from DB6PR08MB2645.eurprd08.prod.outlook.com (10.175.234.153) by DB6PR08MB2677.eurprd08.prod.outlook.com (10.175.235.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.11; Wed, 20 Sep 2017 08:20:11 +0000 Received: from DB6PR08MB2645.eurprd08.prod.outlook.com ([fe80::b153:bb0d:ce8d:bebe]) by DB6PR08MB2645.eurprd08.prod.outlook.com ([fe80::b153:bb0d:ce8d:bebe%13]) with mapi id 15.20.0056.018; Wed, 20 Sep 2017 08:20:11 +0000 From: Sakar Arora To: Ard Biesheuvel CC: Meenakshi Aggarwal , "edk2-devel@lists.01.org" , "leif.lindholm@linaro.org" Thread-Topic: [edk2] [PATCH v2] PeiLib : Inform UEFI memory to Linux Thread-Index: AQHTMRKkhNgF6hCyWUCBq6hOscU7a6K7185wgABRKICAARD5AIAAGEkAgAAc6QA= Date: Wed, 20 Sep 2017 08:20:11 +0000 Message-ID: References: <1505485954-24345-1-git-send-email-meenakshi.aggarwal@nxp.com> <1505824329-32532-1-git-send-email-meenakshi.aggarwal@nxp.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Sakar.Arora@arm.com; x-originating-ip: [217.140.105.40] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR08MB2677; 6:lYH47BmvpbKSas1y4TiYUX0BAWUQx4RYOxy6L7AMNUUZq06S3yqzI9dCElsWjYCLhJJBjl5vjsNtOdIFyOR/L2HuMDN2fyUYxgeoPrN9T2rbJ/B7/f6c4y4XEAWq94lotvtXbDF6EsFTh4HDM3yXFJm2Xm7bfZNnv577l9juYyzFNZ+d+jvgUndYQCcK5gFLg6A+owR/hYzxpXsYzPGz3dXluu1hsB5QMsmvSNmNM7SSN3NotHjXnR+dZB9VZn0mWr05iNTP25v1iOg7QCB61X2+jR8RNHHJjzTMjHHmZBTP2zhdGbxNSMBJccF8IzXy1Q2Jw44IyL63OfofLt1seQ==; 5:j2/RI6VfY2UQLreirFEySVg/nOjhKiGhKqXpafdb6v1IpgcRgfsRLn2Kqr7fGS6JQH5H4GrdgV18x3z/qVpXVlWGPlG6haeKxvdYKW+Tpl62z8yTwzS5HbCUv846bfJqbEUgorKcGymbskdNEoZrMw==; 24:1j4ERI03gGT0k0JwyS58oncx2NMD6PBuIXyMM59/Vikz7tNwIQuDi5ln3s6GUFLSMP2nV4zjqM5LHZ5bcS8fMBywfSthIlNsGf0j/pXOOYI=; 7:d/4pTMgKSUWcgF+cQbEPodVsWczOzb8i/e3FVIjuElf6nQnaUOC6z9s+yBDET1RATwW41Lwpu+sduU/zT/hp+4PMM7QPnqBTyZ+4VeAIg6DrfbG0GnyhMDwYdjNaDZzP/b10VTWEChFM5U+0ThevPBKUha+7uPaRevkFoFa8LEJOrZzKgVkEqpn2rlEnKh7uRrNY+snOwsRduoAUc2PHdb9CrIywGLpnpRAT6HyXbGs= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 95e33f67-1b16-4151-4a32-08d50000697b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DB6PR08MB2677; x-ms-traffictypediagnostic: DB6PR08MB2677: x-exchange-antispam-report-test: UriScan:(180628864354917)(185117386973197)(162533806227266); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR08MB2677; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR08MB2677; x-forefront-prvs: 04362AC73B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(376002)(346002)(51914003)(377454003)(40434004)(189002)(199003)(24454002)(13464003)(5250100002)(81166006)(81156014)(3846002)(76176999)(50986999)(6246003)(8936002)(5890100001)(6116002)(102836003)(5660300001)(97736004)(68736007)(86362001)(4326008)(7696004)(54356999)(101416001)(53546010)(2906002)(189998001)(3660700001)(66066001)(3280700002)(2900100001)(9686003)(8676002)(8656003)(53936002)(99286003)(55016002)(33656002)(966005)(2950100002)(6916009)(74316002)(93886005)(6436002)(6506006)(14454004)(229853002)(7736002)(6306002)(105586002)(106356001)(316002)(54906003)(478600001)(25786009)(305945005)(72206003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR08MB2677; H:DB6PR08MB2645.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2017 08:20:11.1543 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2677 Subject: Re: [PATCH v2] PeiLib : Inform UEFI memory to Linux X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Sep 2017 08:17:09 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIGZvciB0aGUgaW5mb3JtYXRpb24uIFNlZW1zIG15IHVuZGVyc3RhbmRpbmcgd2FzIG5v dCBjb3JyZWN0IGluIHRoaXMgY29udGV4dC4gSSBoYXZlIG5vIG90aGVyIGRvdWJ0cyBvbiB0aGlz IGNoYW5nZS4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEFyZCBCaWVzaGV1 dmVsIFttYWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NClNlbnQ6IFdlZG5lc2RheSwg U2VwdGVtYmVyIDIwLCAyMDE3IDEyOjAyIFBNDQpUbzogU2FrYXIgQXJvcmEgPFNha2FyLkFyb3Jh QGFybS5jb20+DQpDYzogTWVlbmFrc2hpIEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhw LmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmcN ClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIHYyXSBQZWlMaWIgOiBJbmZvcm0gVUVGSSBtZW1v cnkgdG8gTGludXgNCg0KT24gMTkgU2VwdGVtYmVyIDIwMTcgYXQgMjI6MzIsIFNha2FyIEFyb3Jh IDxTYWthci5Bcm9yYUBhcm0uY29tPiB3cm90ZToNCj4gVGhlIERYRSBjb3JlIGRpc3BhdGNoZXIg cmVsaWVzIG9uIHRoZSBhdmFpbGFibGUgbWVtb3J5IHRvIGFsbG9jYXRlIHNwYWNlIGZvciBsb2Fk aW5nIHRoZSByZXN0IG9mIHRoZSBtb2R1bGVzIGZyb20gdGhlIFVFRkkgaW1hZ2UuIElmIHdlIGRl Y2xhcmUgdGhlIFVFRkkgaW1hZ2UgbWVtb3J5IHNwYWNlIChmcm9tIHdoaWNoIERYRSBkaXNwYXRj aGVyIHJlYWRzIHRoZSBlZmkgbW9kdWxlcykgb3BlbiB0byBhbGxvY2F0aW9uLCBpdCBtaWdodCBs ZWFkIHRvIGRhdGEgY29ycnVwdGlvbiwgZGVwZW5kaW5nIG9uIHRoZSBsb2NhdGlvbiBvZiBVRUZJ IGltYWdlIGFuZCBjdW11bGF0aXZlIHNpemUgb2YgdW5jb21wcmVzc2VkIEVGSSBtb2R1bGVzLg0K Pg0KPiBBbHNvLCBzaW5jZSBVRUZJIGFsbG93cyB1bmxvYWRpbmcgYW5kIGxvYWRpbmcgb2YgZHJp dmVycyBhdCBydW50aW1lLCBJTU8sIHRoZXJlIGlzIGEgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgVUVG SSBpbWFnZSBldmVuIGFmdGVyIGFsbCB0aGUgbW9kdWxlcyBoYXZlIGJlZW4gZGVjb21wcmVzc2Vk IGFuZCBsb2FkZWQgaW4gdGhlIGJvb3Qgc2VxdWVuY2UuDQo+DQoNCk5vbmUgb2YgdGhpcyBpcyBy ZWxldmFudC4gVGhlIHVuY29tcHJlc3NlZCBmaXJtd2FyZSB2b2x1bWUgY29udGFpbmluZyBEWEUg Y29yZSBhbmQgZXZlcnl0aGluZyBlbHNlIGlzIHByZXNlcnZlZCBhcyBiZWZvcmUuIFRoZSBvbmx5 IHRoaW5nIHRoYXQgZ2V0cyBkaXNjYXJkZWQgaXMgdGhlIG91dGVyIEZWLCB3aGljaCBvbmx5IGNv bnRhaW5zIHRoZSBQcmVQaSBTRUMgbW9kdWxlLCBhbmQgdGhlIGNvbXByZXNzZWQgRlYsIG5laXRo ZXIgb2Ygd2hpY2ggaXMgZXZlciB0b3VjaGVkIGFnYWluIGFmdGVyIERYRSBjb3JlIGhhcyBzdGFy dGVkIGV4ZWN1dGluZy4gU28gd2Ugc2hvdWxkIG5vdCByZWdpc3RlciB0aGUgRlYgaW4gdGhlIGZp cnN0IHBsYWNlLCBhbmQgbm90IHJlc2VydmUgdGhlIG1lbW9yeSBzbyB3ZSBkb24ndCBsb3NlIGl0 Lg0KDQpJZiB5b3Ugc3RpbGwgdGhpbmsgdGhpcyBtYXkgYnJlYWsgYW55dGhpbmcsIGNvdWxkIHlv dSBwbGVhc2UgZWxhYm9yYXRlPw0KDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmdd DQo+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAxOSwgMjAxNyA2OjE4IFBNDQo+IFRvOiBTYWth ciBBcm9yYSA8U2FrYXIuQXJvcmFAYXJtLmNvbT4NCj4gQ2M6IE1lZW5ha3NoaSBBZ2dhcndhbCA8 bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+Ow0KPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsg bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnDQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIHYy XSBQZWlMaWIgOiBJbmZvcm0gVUVGSSBtZW1vcnkgdG8gTGludXgNCj4NCj4gT24gMTkgU2VwdGVt YmVyIDIwMTcgYXQgMDE6MDcsIFNha2FyIEFyb3JhIDxTYWthci5Bcm9yYUBhcm0uY29tPiB3cm90 ZToNCj4+IFRoaXMgY2hhbmdlIHdpbGwgY3JlYXRlIHRoZSBwb3NzaWJpbGl0eSBmb3IgbWVtb3J5 IHNwYWNlIGhvbGRpbmcgdGhlIFVFRkkgaW1hZ2UgdG8gYmUgb3Zlci13cml0dGVuIGJ5IHRoZSBE WEUgY29yZSBjb2RlLCBzaW5jZSB0aGlzIHNwYWNlIHdpbGwgdGhlbiBiZSBhdmFpbGFibGUgZm9y IGFsbG9jYXRpb24uDQo+DQo+IFllcy4gQnV0IHdoeSBkb2VzIHRoaXMgbWF0dGVyIGFmdGVyIHRo ZSBlbnRpcmUgcGF5bG9hZCBoYXMgYmVlbiBkZWNvbXByZXNzZWQgaW50byBtZW1vcnkgYWxyZWFk eT8NCj4NCj4NCj4+IEFueSBzdWNoIGNoYW5nZSwgaWYgcmVxdWlyZWQsIHNob3VsZCBiZSBkb25l IGp1c3QgYmVmb3JlIGJvb3RpbmcgdGhlIE9TLg0KPj4NCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+PiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxp c3RzLjAxLm9yZ10gT24gQmVoYWxmDQo+PiBPZiBNZWVuYWtzaGkgQWdnYXJ3YWwNCj4+IFNlbnQ6 IFR1ZXNkYXksIFNlcHRlbWJlciAxOSwgMjAxNyA2OjAyIFBNDQo+PiBUbzogZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmc7IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZzsNCj4+IGFyZC5iaWVzaGV1dmVs QGxpbmFyby5vcmcNCj4+IFN1YmplY3Q6IFtlZGsyXSBbUEFUQ0ggdjJdIFBlaUxpYiA6IEluZm9y bSBVRUZJIG1lbW9yeSB0byBMaW51eA0KPj4NCj4+IFdoaWxlIGNyZWF0aW5nIEhvYiBsaXN0LCBB cm1QbGF0Zm9ybVBrZyBpcyBoaWRpbmcgVUVGSSBtZW1vcnkuDQo+PiB3aGVyZWFzIHRoaXMgbWVt b3J5IGNhbiBiZSB1c2VkIGJ5IE9TLg0KPj4NCj4+IFRoaXMgcGF0Y2gsIGFsbG93cyBPUyB0byB1 c2UgVUVGSSBjb2RlIGFyZWEuDQo+Pg0KPj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBD b250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPj4gU2lnbmVkLW9mZi1ieTogVWRpdCBLdW1hciA8 dWRpdC5rdW1hckBueHAuY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogTWVlbmFrc2hpIEFnZ2Fyd2Fs IDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT4NCj4+IC0tLQ0KPj4gIEFybVBsYXRmb3JtUGtn L01lbW9yeUluaXRQZWkvTWVtb3J5SW5pdFBlaUxpYi5jIHwgNjkNCj4+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4+ICAxIGZpbGUgY2hhbmdlZCwgNjkgZGVsZXRpb25zKC0pDQo+Pg0KPj4g ZGlmZiAtLWdpdCBhL0FybVBsYXRmb3JtUGtnL01lbW9yeUluaXRQZWkvTWVtb3J5SW5pdFBlaUxp Yi5jDQo+PiBiL0FybVBsYXRmb3JtUGtnL01lbW9yeUluaXRQZWkvTWVtb3J5SW5pdFBlaUxpYi5j DQo+PiBpbmRleCAyZmViMTFmLi5kMDMyMTRiIDEwMDY0NA0KPj4gLS0tIGEvQXJtUGxhdGZvcm1Q a2cvTWVtb3J5SW5pdFBlaS9NZW1vcnlJbml0UGVpTGliLmMNCj4+ICsrKyBiL0FybVBsYXRmb3Jt UGtnL01lbW9yeUluaXRQZWkvTWVtb3J5SW5pdFBlaUxpYi5jDQo+PiBAQCAtNzAsMTEgKzcwLDcg QEAgTWVtb3J5UGVpbSAoDQo+PiAgew0KPj4gICAgQVJNX01FTU9SWV9SRUdJT05fREVTQ1JJUFRP UiAqTWVtb3J5VGFibGU7DQo+PiAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1RZUEUgIFJlc291 cmNlQXR0cmlidXRlczsNCj4+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgUmVzb3Vy Y2VMZW5ndGg7DQo+PiAgICBFRklfUEVJX0hPQl9QT0lOVEVSUyAgICAgICAgIE5leHRIb2I7DQo+ PiAtICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgIEZkVG9wOw0KPj4gLSAgRUZJX1BIWVNJ Q0FMX0FERFJFU1MgICAgICAgICBTeXN0ZW1NZW1vcnlUb3A7DQo+PiAtICBFRklfUEhZU0lDQUxf QUREUkVTUyAgICAgICAgIFJlc291cmNlVG9wOw0KPj4gICAgQk9PTEVBTiAgICAgICAgICAgICAg ICAgICAgICBGb3VuZDsNCj4+DQo+PiAgICAvLyBHZXQgVmlydHVhbCBNZW1vcnkgTWFwIGZyb20g dGhlIFBsYXRmb3JtIExpYnJhcnkgQEAgLTEyMSw3MSArMTE3LDYgQEAgTWVtb3J5UGVpbSAoDQo+ PiAgICAgICk7DQo+PiAgICB9DQo+Pg0KPj4gLSAgLy8NCj4+IC0gIC8vIFJlc2VydmVkIHRoZSBt ZW1vcnkgc3BhY2Ugb2NjdXBpZWQgYnkgdGhlIGZpcm13YXJlIHZvbHVtZQ0KPj4gLSAgLy8NCj4+ IC0NCj4+IC0gIFN5c3RlbU1lbW9yeVRvcCA9IChFRklfUEhZU0lDQUxfQUREUkVTUylQY2RHZXQ2 NA0KPj4gKFBjZFN5c3RlbU1lbW9yeUJhc2UpICsgKEVGSV9QSFlTSUNBTF9BRERSRVNTKVBjZEdl dDY0DQo+PiAoUGNkU3lzdGVtTWVtb3J5U2l6ZSk7DQo+PiAtICBGZFRvcCA9IChFRklfUEhZU0lD QUxfQUREUkVTUylQY2RHZXQ2NCAoUGNkRmRCYXNlQWRkcmVzcykgKw0KPj4gKEVGSV9QSFlTSUNB TF9BRERSRVNTKVBjZEdldDMyIChQY2RGZFNpemUpOw0KPj4gLQ0KPj4gLSAgLy8gRURLMiBkb2Vz IG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGJvb3QgZmlybXdhcmUgY29waWVkIGludG8NCj4+IERS QU0uIFRvIGF2b2lkIHRoZSBEWEUNCj4+IC0gIC8vIGNvcmUgdG8gb3ZlcndyaXRlIHRoaXMgYXJl YSB3ZSBtdXN0IG1hcmsgdGhlIHJlZ2lvbiB3aXRoIHRoZQ0KPj4gYXR0cmlidXRlIG5vbi1wcmVz ZW50DQo+PiAtICBpZiAoKFBjZEdldDY0IChQY2RGZEJhc2VBZGRyZXNzKSA+PSBQY2RHZXQ2NCAo UGNkU3lzdGVtTWVtb3J5QmFzZSkpICYmIChGZFRvcCA8PSBTeXN0ZW1NZW1vcnlUb3ApKSB7DQo+ PiAtICAgIEZvdW5kID0gRkFMU0U7DQo+PiAtDQo+PiAtICAgIC8vIFNlYXJjaCBmb3IgU3lzdGVt IE1lbW9yeSBIb2IgdGhhdCBjb250YWlucyB0aGUgZmlybXdhcmUNCj4+IC0gICAgTmV4dEhvYi5S YXcgPSBHZXRIb2JMaXN0ICgpOw0KPj4gLSAgICB3aGlsZSAoKE5leHRIb2IuUmF3ID0gR2V0TmV4 dEhvYiAoRUZJX0hPQl9UWVBFX1JFU09VUkNFX0RFU0NSSVBUT1IsIE5leHRIb2IuUmF3KSkgIT0g TlVMTCkgew0KPj4gLSAgICAgIGlmICgoTmV4dEhvYi5SZXNvdXJjZURlc2NyaXB0b3ItPlJlc291 cmNlVHlwZSA9PSBFRklfUkVTT1VSQ0VfU1lTVEVNX01FTU9SWSkgJiYNCj4+IC0gICAgICAgICAg KFBjZEdldDY0IChQY2RGZEJhc2VBZGRyZXNzKSA+PSBOZXh0SG9iLlJlc291cmNlRGVzY3JpcHRv ci0+UGh5c2ljYWxTdGFydCkgJiYNCj4+IC0gICAgICAgICAgKEZkVG9wIDw9IE5leHRIb2IuUmVz b3VyY2VEZXNjcmlwdG9yLT5QaHlzaWNhbFN0YXJ0ICsgTmV4dEhvYi5SZXNvdXJjZURlc2NyaXB0 b3ItPlJlc291cmNlTGVuZ3RoKSkNCj4+IC0gICAgICB7DQo+PiAtICAgICAgICBSZXNvdXJjZUF0 dHJpYnV0ZXMgPSBOZXh0SG9iLlJlc291cmNlRGVzY3JpcHRvci0+UmVzb3VyY2VBdHRyaWJ1dGU7 DQo+PiAtICAgICAgICBSZXNvdXJjZUxlbmd0aCA9IE5leHRIb2IuUmVzb3VyY2VEZXNjcmlwdG9y LT5SZXNvdXJjZUxlbmd0aDsNCj4+IC0gICAgICAgIFJlc291cmNlVG9wID0gTmV4dEhvYi5SZXNv dXJjZURlc2NyaXB0b3ItPlBoeXNpY2FsU3RhcnQgKyBSZXNvdXJjZUxlbmd0aDsNCj4+IC0NCj4+ IC0gICAgICAgIGlmIChQY2RHZXQ2NCAoUGNkRmRCYXNlQWRkcmVzcykgPT0gTmV4dEhvYi5SZXNv dXJjZURlc2NyaXB0b3ItPlBoeXNpY2FsU3RhcnQpIHsNCj4+IC0gICAgICAgICAgaWYgKFN5c3Rl bU1lbW9yeVRvcCA9PSBGZFRvcCkgew0KPj4gLSAgICAgICAgICAgIE5leHRIb2IuUmVzb3VyY2VE ZXNjcmlwdG9yLT5SZXNvdXJjZUF0dHJpYnV0ZSA9IFJlc291cmNlQXR0cmlidXRlcyAmIH5FRklf UkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQ7DQo+PiAtICAgICAgICAgIH0gZWxzZSB7DQo+PiAt ICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBTeXN0ZW0gTWVtb3J5IEhPQiBmb3IgdGhlIGZpcm13 YXJlIHdpdGggdGhlIG5vbi1wcmVzZW50IGF0dHJpYnV0ZQ0KPj4gLSAgICAgICAgICAgIEJ1aWxk UmVzb3VyY2VEZXNjcmlwdG9ySG9iIChFRklfUkVTT1VSQ0VfU1lTVEVNX01FTU9SWSwNCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VBdHRyaWJ1dGVz ICYgfkVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfUFJFU0VOVCwNCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUGNkR2V0NjQgKFBjZEZkQmFzZUFkZHJlc3MpLA0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY2RHZXQzMiAoUGNkRmRT aXplKSk7DQo+PiAtDQo+PiAtICAgICAgICAgICAgLy8gVG9wIG9mIHRoZSBGRCBpcyBzeXN0ZW0g bWVtb3J5IGF2YWlsYWJsZSBmb3IgVUVGSQ0KPj4gLSAgICAgICAgICAgIE5leHRIb2IuUmVzb3Vy Y2VEZXNjcmlwdG9yLT5QaHlzaWNhbFN0YXJ0ICs9IFBjZEdldDMyKFBjZEZkU2l6ZSk7DQo+PiAt ICAgICAgICAgICAgTmV4dEhvYi5SZXNvdXJjZURlc2NyaXB0b3ItPlJlc291cmNlTGVuZ3RoIC09 IFBjZEdldDMyKFBjZEZkU2l6ZSk7DQo+PiAtICAgICAgICAgIH0NCj4+IC0gICAgICAgIH0gZWxz ZSB7DQo+PiAtICAgICAgICAgIC8vIENyZWF0ZSB0aGUgU3lzdGVtIE1lbW9yeSBIT0IgZm9yIHRo ZSBmaXJtd2FyZSB3aXRoIHRoZSBub24tcHJlc2VudCBhdHRyaWJ1dGUNCj4+IC0gICAgICAgICAg QnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKEVGSV9SRVNPVVJDRV9TWVNURU1fTUVNT1JZLA0K Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VBdHRyaWJ1 dGVzICYgfkVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfUFJFU0VOVCwNCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBjZEdldDY0IChQY2RGZEJhc2VBZGRyZXNzKSwNCj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjZEdldDMyIChQY2RGZFNp emUpKTsNCj4+IC0NCj4+IC0gICAgICAgICAgLy8gVXBkYXRlIHRoZSBIT0INCj4+IC0gICAgICAg ICAgTmV4dEhvYi5SZXNvdXJjZURlc2NyaXB0b3ItPlJlc291cmNlTGVuZ3RoID0gUGNkR2V0NjQg KFBjZEZkQmFzZUFkZHJlc3MpIC0gTmV4dEhvYi5SZXNvdXJjZURlc2NyaXB0b3ItPlBoeXNpY2Fs U3RhcnQ7DQo+PiAtDQo+PiAtICAgICAgICAgIC8vIElmIHRoZXJlIGlzIHNvbWUgbWVtb3J5IGF2 YWlsYWJsZSBvbiB0aGUgdG9wIG9mIHRoZSBGRCB0aGVuIGNyZWF0ZSBhIEhPQg0KPj4gLSAgICAg ICAgICBpZiAoRmRUb3AgPCBOZXh0SG9iLlJlc291cmNlRGVzY3JpcHRvci0+UGh5c2ljYWxTdGFy dCArIFJlc291cmNlTGVuZ3RoKSB7DQo+PiAtICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBTeXN0 ZW0gTWVtb3J5IEhPQiBmb3IgdGhlIHJlbWFpbmluZyByZWdpb24gKHRvcCBvZiB0aGUgRkQpDQo+ PiAtICAgICAgICAgICAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKEVGSV9SRVNPVVJDRV9T WVNURU1fTUVNT1JZLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZXNvdXJjZUF0dHJpYnV0ZXMsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZkVG9wLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZXNvdXJjZVRvcCAtIEZkVG9wKTsNCj4+IC0gICAgICAgICAgfQ0KPj4gLSAgICAgICAg fQ0KPj4gLSAgICAgICAgRm91bmQgPSBUUlVFOw0KPj4gLSAgICAgICAgYnJlYWs7DQo+PiAtICAg ICAgfQ0KPj4gLSAgICAgIE5leHRIb2IuUmF3ID0gR0VUX05FWFRfSE9CIChOZXh0SG9iKTsNCj4+ IC0gICAgfQ0KPj4gLQ0KPj4gLSAgICBBU1NFUlQoRm91bmQpOw0KPj4gLSAgfQ0KPj4gLQ0KPj4g ICAgLy8gQnVpbGQgTWVtb3J5IEFsbG9jYXRpb24gSG9iDQo+PiAgICBJbml0TW11IChNZW1vcnlU YWJsZSk7DQo+Pg0KPj4gLS0NCj4+IDEuOS4xDQo+Pg0KPj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ PiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1h bi9saXN0aW5mby9lZGsyLWRldmVsDQo+PiBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMg b2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1h eSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGll bnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Ns b3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJw b3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFu ayB5b3UuDQo+IElNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFu ZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmls ZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlm eSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRz IHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9y IGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCklNUE9SVEFO VCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMg YXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBu b3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVk aWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJz b24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0 aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCg==