From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.136; helo=mga12.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 97C70203369E1 for ; Fri, 29 Jun 2018 18:27:15 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Jun 2018 18:27:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,288,1526367600"; d="scan'208";a="61250172" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by FMSMGA003.fm.intel.com with ESMTP; 29 Jun 2018 18:27:08 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 29 Jun 2018 18:27:08 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 29 Jun 2018 18:27:07 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.87]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.51]) with mapi id 14.03.0319.002; Sat, 30 Jun 2018 09:27:06 +0800 From: "Ni, Ruiyu" To: Laszlo Ersek , "edk2-devel@lists.01.org" CC: Michael Turner Thread-Topic: [edk2] [PATCH v2 1/2] MdeModulePkg/UefiBootManagerLib: new APIs for ultimate boot failure Thread-Index: AQHUD273x04sijZcdkOVpKZH9CXlUqR2p9IAgAFbrUA= Date: Sat, 30 Jun 2018 01:27:05 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BD4FF6A@SHSMSX104.ccr.corp.intel.com> References: <20180629060344.105716-1-ruiyu.ni@intel.com> <20180629060344.105716-2-ruiyu.ni@intel.com> <0d0ca9c2-88fd-a69d-b22e-66a60cd37bee@redhat.com> In-Reply-To: <0d0ca9c2-88fd-a69d-b22e-66a60cd37bee@redhat.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjIyMzI1NzUtOWZjMC00MTUwLWI1MDEtNzMwMWI1OGQ4OTdjIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiOUE5SkY0NUMxVVBiOFkrRHFjT2xHa3o2Z1VQQzBRNzhnTTR0MnlzV0hHWjdYSjNcL2tERUNhWDVRa2dpZll5d2QifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v2 1/2] MdeModulePkg/UefiBootManagerLib: new APIs for ultimate boot failure X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jun 2018 01:27:15 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvLA0KSSB3aWxsIHBvc3QgYSBWMyB2ZXJzaW9uIHRoYXQgcmVtb3ZlcyB0aGUgcmVnaXN0 cmF0aW9uIG1lY2hhbmlzbSwgYmFjaw0KdG8gdGhlIHNvbHV0aW9uIGxldHRpbmcgcGxhdGZvcm0g cHJvdmlkZXMgUGxhdGZvcm1Cb290TWFuYWdlclVuYWJsZVRvQm9vdCgpLA0KYmFzZWQgb24gdGhl IGZlZWRiYWNrcyBJIHJlY2VpdmVkLg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6 IEZyaWRheSwgSnVuZSAyOSwgMjAxOCA4OjQxIFBNDQo+IFRvOiBOaSwgUnVpeXUgPHJ1aXl1Lm5p QGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENjOiBNaWNoYWVsIFR1cm5l ciA8TWljaGFlbC5UdXJuZXJAbWljcm9zb2Z0LmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBb UEFUQ0ggdjIgMS8yXSBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBuZXcNCj4gQVBJ cyBmb3IgdWx0aW1hdGUgYm9vdCBmYWlsdXJlDQo+IA0KPiBIaSBSYXksDQo+IA0KPiB0aGFua3Mg Zm9yIHRoaXMgcGF0Y2g7IEkgb25seSBoYXZlIGEgcmVxdWVzdCBmb3IgdXBkYXRpbmcgYSBjb21t ZW50Og0KPiANCj4gT24gMDYvMjkvMTggMDg6MDMsIFJ1aXl1IE5pIHdyb3RlOg0KPiA+IFJFRjog aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD05ODINCj4gPg0K PiA+IFdoZW4gbm8gYm9vdCBvcHRpb24gY291bGQgYmUgbGF1bmNoZWQgaW5jbHVkaW5nIHBsYXRm b3JtIHJlY292ZXJ5DQo+ID4gb3B0aW9ucyBhbmQgb3B0aW9ucyBwb2ludGluZyB0byBhcHBsaWNh dGlvbnMgYnVpbHQgaW50byBmaXJtd2FyZQ0KPiA+IHZvbHVtZXMsIGEgcGxhdGZvcm0gY2FsbGJh Y2sgcmVnaXN0ZXJlZCB0aHJvdWdoDQo+ID4gRWZpQm9vdE1hbmFnZXJSZWdpc3RlclVuYWJsZVRv Qm9vdEhhbmRsZXIoKSBpcyBjYWxsZWQuDQo+ID4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlh bm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ID4gU2lnbmVkLW9mZi1ieTogUnVp eXUgTmkgPHJ1aXl1Lm5pQGludGVsLmNvbT4NCj4gPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4uYnJv Z2FuQG1pY3Jvc29mdC5jb20+DQo+ID4gQ2M6IE1pY2hhZWwgVHVybmVyIDxNaWNoYWVsLlR1cm5l ckBtaWNyb3NvZnQuY29tPg0KPiA+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29t Pg0KPiA+IENjOiBTdW5ueSBXYW5nIDxzdW5ueXdhbmdAaHBlLmNvbT4NCj4gPiAtLS0NCj4gPiAg TWRlTW9kdWxlUGtnL0luY2x1ZGUvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIuaCB8IDQ4DQo+ ID4gKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiBNZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZp Qm9vdE1hbmFnZXJMaWIvQm1Cb290LmMgIHwgNDENCj4gPiArKysrKysrKysrKysrKysrKysrDQo+ ID4gIDIgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliLmgNCj4g PiBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliLmgNCj4g PiBpbmRleCBiZmMwY2I4NmY4Li40NTM4OTNlMDMwIDEwMDY0NA0KPiA+IC0tLSBhL01kZU1vZHVs ZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliLmgNCj4gPiArKysgYi9NZGVN b2R1bGVQa2cvSW5jbHVkZS9MaWJyYXJ5L1VlZmlCb290TWFuYWdlckxpYi5oDQo+ID4gQEAgLTgw MCw0ICs4MDAsNTIgQEAgRUZJQVBJDQo+ID4gIEVmaUJvb3RNYW5hZ2VyRGlzcGF0Y2hEZWZlcnJl ZEltYWdlcyAoDQo+ID4gICAgVk9JRA0KPiA+ICAgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gbm8gYm9vdCBvcHRpb24gY291bGQgYmUgbGF1 bmNoZWQsDQo+ID4gKyAgaW5jbHVkaW5nIHBsYXRmb3JtIHJlY292ZXJ5IG9wdGlvbnMgYW5kIG9w dGlvbnMgcG9pbnRpbmcgdG8NCj4gPiArYXBwbGljYXRpb25zDQo+ID4gKyAgYnVpbHQgaW50byBm aXJtd2FyZSB2b2x1bWVzLg0KPiA+ICsNCj4gPiArICBUaGUgcGxhdGZvcm0gbWF5IHJlZ2lzdGVy IHRoaXMgZnVuY3Rpb24gdG8gaW5mb3JtIHRoZSB1c2VyIGFib3V0IHRoZSBhYm92ZQ0KPiBmYWN0 Lg0KPiA+ICsgIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgQkRTIGNvcmUgYXR0ZW1wdHMgdG8g ZW50ZXIgYW4gaW5maW5pdGUNCj4gPiArbG9vcCBvZiBwdWxsaW5nDQo+ID4gKyAgdXAgdGhlIEJv b3QgTWFuYWdlciBNZW51IChpZiB0aGUgcGxhdGZvcm0gaW5jbHVkZXMgdGhlIEJvb3QgTWFuYWdl cg0KPiBNZW51KS4NCj4gPiArICBJZiB0aGUgQm9vdCBNYW5hZ2VyIE1lbnUgaXMgdW5hdmFpbGFi bGUsIEJEUyB3aWxsIGhhbmcuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1ZPSUQNCj4g PiArKEVGSUFQSSAqRUZJX0JPT1RfTUFOQUdFUl9VTkFCTEVfVE9fQk9PVCkgKA0KPiA+ICsgIFZP SUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVnaXN0ZXIgdGhlIGNhbGxi YWNrIGZ1bmN0aW9uIHdoZW4gbm8gYm9vdCBvcHRpb24gY291bGQgYmUNCj4gPiArbGF1bmNoZWQs DQo+ID4gKyAgaW5jbHVkaW5nIHBsYXRmb3JtIHJlY292ZXJ5IG9wdGlvbnMgYW5kIG9wdGlvbnMg cG9pbnRpbmcgdG8NCj4gPiArYXBwbGljYXRpb25zDQo+ID4gKyAgYnVpbHQgaW50byBmaXJtd2Fy ZSB2b2x1bWVzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gSGFuZGxlciAgVGhlIGNhbGxiYWNrIGZ1 bmN0aW9uLg0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRWZpQm9vdE1h bmFnZXJSZWdpc3RlclVuYWJsZVRvQm9vdEhhbmRsZXIgKA0KPiA+ICsgIEVGSV9CT09UX01BTkFH RVJfVU5BQkxFX1RPX0JPT1QgIEhhbmRsZXINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIG5vIGJvb3Qgb3B0aW9uIGNvdWxkIGJl IGxhdW5jaGVkLA0KPiA+ICsgIGluY2x1ZGluZyBwbGF0Zm9ybSByZWNvdmVyeSBvcHRpb25zIGFu ZCBvcHRpb25zIHBvaW50aW5nIHRvDQo+ID4gK2FwcGxpY2F0aW9ucw0KPiA+ICsgIGJ1aWx0IGlu dG8gZmlybXdhcmUgdm9sdW1lcy4NCj4gPiArDQo+ID4gKyAgSWYgdGhpcyBmdW5jdGlvbiByZXR1 cm5zLCBCRFMgY29yZSBhdHRlbXB0cyB0byBlbnRlciBhbiBpbmZpbml0ZQ0KPiA+ICsgbG9vcCBv ZiBwdWxsaW5nICB1cCB0aGUgQm9vdCBNYW5hZ2VyIE1lbnUgKGlmIHRoZSBwbGF0Zm9ybSBpbmNs dWRlcyB0aGUgQm9vdA0KPiBNYW5hZ2VyIE1lbnUpLg0KPiA+ICsgIElmIHRoZSBCb290IE1hbmFn ZXIgTWVudSBpcyB1bmF2YWlsYWJsZSwgQkRTIHdpbGwgaGFuZy4NCj4gDQo+IFRoaXMgY29tbWVu dCBwYXJhZ3JhcGggc2hvdWxkIHN0YXRlIHRoZSBmb2xsb3dpbmc6DQo+IA0KPiAgIElmIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyBFRklfVU5TVVBQT1JURUQsIEJEUyBjb3JlIGF0dGVtcHRzIHRvIGVu dGVyDQo+ICAgYW4gaW5maW5pdGUgbG9vcCBvZiBwdWxsaW5nIHVwIHRoZSBCb290IE1hbmFnZXIg TWVudSAoaWYgdGhlIHBsYXRmb3JtDQo+ICAgaW5jbHVkZXMgdGhlIEJvb3QgTWFuYWdlciBNZW51 KS4gSWYgdGhlIEJvb3QgTWFuYWdlciBNZW51IGlzDQo+ICAgdW5hdmFpbGFibGUsIEJEUyB3aWxs IGhhbmcuDQo+IA0KPiAgIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBFRklfU1VDQ0VTUywgQkRT IHdpbGwgaGFuZyBpbW1lZGlhdGVseS4NCj4gDQo+IA0KPiBUaGUgc2FtZSB1cGRhdGUgc2hvdWxk IGJlIGRvbmUgdG8gdGhlICJCbUJvb3QuYyIgZmlsZSwgYmVsb3cuDQo+IA0KPiBXaXRoIHRoaXMg dXBkYXRlOg0KPiANCj4gUmV2aWV3ZWQtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5j b20+DQo+IA0KPiBUaGFua3MhDQo+IExhc3psbw0KPiANCj4gPiArDQo+ID4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgVGhlIHVuYWJsZS10by1ib290IGNhbGxiYWNrIGlzIGNhbGxlZCBzdWNj ZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgVGhlcmUgaXMgbm8gdW5h YmxlLXRvLWJvb3QgY2FsbGJhY2sgcmVnaXN0ZXJlZC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRUZJQVBJDQo+ID4gK0VmaUJvb3RNYW5hZ2VyVW5hYmxlVG9Cb290ICgNCj4gPiAr ICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gICNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9N ZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Cb290LmMNCj4gPiBiL01k ZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlCb290TWFuYWdlckxpYi9CbUJvb3QuYw0KPiA+IGluZGV4 IDZhMjM0NzdlYjguLmU1OWQ3OTAxMjIgMTAwNjQ0DQo+ID4gLS0tIGEvTWRlTW9kdWxlUGtnL0xp YnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtQm9vdC5jDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtn L0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtQm9vdC5jDQo+ID4gQEAgLTE5LDYgKzE5LDcg QEAgRUZJX1JBTV9ESVNLX1BST1RPQ09MICAgICAgICAgICAgICAgICAgICAgICAgKm1SYW1EaXNr DQo+ID0gTlVMTDsNCj4gPg0KPiA+ICBFRklfQk9PVF9NQU5BR0VSX1JFRlJFU0hfTEVHQUNZX0JP T1RfT1BUSU9ODQo+IG1CbVJlZnJlc2hMZWdhY3lCb290T3B0aW9uID0gTlVMTDsNCj4gPiAgRUZJ X0JPT1RfTUFOQUdFUl9MRUdBQ1lfQk9PVCAgICAgICAgICAgICAgICAgbUJtTGVnYWN5Qm9vdCAg ICAgICAgICAgICAgPQ0KPiBOVUxMOw0KPiA+ICtFRklfQk9PVF9NQU5BR0VSX1VOQUJMRV9UT19C T09UICAgICAgICAgICAgICBtQm1VbmFibGVUb0Jvb3QNCj4gPSBOVUxMOw0KPiA+DQo+ID4gIC8v Lw0KPiA+ICAvLy8gVGhpcyBHVUlEIGlzIHVzZWQgZm9yIGFuIEVGSSBWYXJpYWJsZSB0aGF0IHN0 b3JlcyB0aGUgZnJvbnQNCj4gPiBkZXZpY2UgcGF0aGVzIEBAIC0yNDYxLDMgKzI0NjIsNDMgQEAN Cj4gRWZpQm9vdE1hbmFnZXJHZXRCb290TWFuYWdlck1lbnUgKA0KPiA+ICAgIH0NCj4gPiAgfQ0K PiA+DQo+ID4gKy8qKg0KPiA+ICsgIFJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGVu IG5vIGJvb3Qgb3B0aW9uIGNvdWxkIGJlDQo+ID4gK2xhdW5jaGVkLA0KPiA+ICsgIGluY2x1ZGlu ZyBwbGF0Zm9ybSByZWNvdmVyeSBvcHRpb25zIGFuZCBvcHRpb25zIHBvaW50aW5nIHRvDQo+ID4g K2FwcGxpY2F0aW9ucw0KPiA+ICsgIGJ1aWx0IGludG8gZmlybXdhcmUgdm9sdW1lcy4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtIEhhbmRsZXIgIFRoZSBjYWxsYmFjayBmdW5jdGlvbi4NCj4gPiArKiov DQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0VmaUJvb3RNYW5hZ2VyUmVnaXN0ZXJVbmFi bGVUb0Jvb3RIYW5kbGVyICgNCj4gPiArICBFRklfQk9PVF9NQU5BR0VSX1VOQUJMRV9UT19CT09U ICBIYW5kbGVyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgbUJtVW5hYmxlVG9Cb290ID0gSGFu ZGxlcjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhlIGZ1bmN0aW9uIGlzIGNh bGxlZCB3aGVuIG5vIGJvb3Qgb3B0aW9uIGNvdWxkIGJlIGxhdW5jaGVkLA0KPiA+ICsgIGluY2x1 ZGluZyBwbGF0Zm9ybSByZWNvdmVyeSBvcHRpb25zIGFuZCBvcHRpb25zIHBvaW50aW5nIHRvDQo+ ID4gK2FwcGxpY2F0aW9ucw0KPiA+ICsgIGJ1aWx0IGludG8gZmlybXdhcmUgdm9sdW1lcy4NCj4g PiArDQo+ID4gKyAgSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zLCBCRFMgY29yZSBhdHRlbXB0cyB0 byBlbnRlciBhbiBpbmZpbml0ZQ0KPiA+ICsgbG9vcCBvZiBwdWxsaW5nICB1cCB0aGUgQm9vdCBN YW5hZ2VyIE1lbnUgKGlmIHRoZSBwbGF0Zm9ybSBpbmNsdWRlcyB0aGUgQm9vdA0KPiBNYW5hZ2Vy IE1lbnUpLg0KPiA+ICsgIElmIHRoZSBCb290IE1hbmFnZXIgTWVudSBpcyB1bmF2YWlsYWJsZSwg QkRTIHdpbGwgaGFuZy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgVGhl IHVuYWJsZS10by1ib290IGNhbGxiYWNrIGlzIGNhbGxlZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAg QHJldHZhbCBFRklfVU5TVVBQT1JURUQgVGhlcmUgaXMgbm8gdW5hYmxlLXRvLWJvb3QgY2FsbGJh Y2sgcmVnaXN0ZXJlZC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK0VmaUJvb3RNYW5hZ2VyVW5hYmxlVG9Cb290ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgaWYgKG1CbVVuYWJsZVRvQm9vdCAhPSBOVUxMKSB7DQo+ID4gKyAgICBt Qm1VbmFibGVUb0Jvb3QgKCk7DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAg fQ0KPiA+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gK30NCj4gPg0KDQo=