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.88; helo=mga01.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 6A7E321F2AF8B for ; Thu, 28 Sep 2017 04:05:14 -0700 (PDT) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Sep 2017 04:08:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,449,1500966000"; d="scan'208";a="133162093" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga004.jf.intel.com with ESMTP; 28 Sep 2017 04:08:27 -0700 Received: from fmsmsx125.amr.corp.intel.com (10.18.125.40) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 28 Sep 2017 04:08:26 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX125.amr.corp.intel.com (10.18.125.40) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 28 Sep 2017 04:08:26 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.175]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.159]) with mapi id 14.03.0319.002; Thu, 28 Sep 2017 19:08:24 +0800 From: "Yao, Jiewen" To: "Ni, Ruiyu" CC: "Zeng, Star" , "Dong, Eric" , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [Patch 2/2] UefiCpuPkg/PiSmmCpuDxeSmm: Refine code to avoid duplicated code. Thread-Index: AQHTODpR7vqHVdCvP0iIeu4w13pVkqLJglkAgAAJVQCAAJgSkw== Date: Thu, 28 Sep 2017 11:08:24 +0000 Message-ID: References: <1506590107-7324-1-git-send-email-eric.dong@intel.com> <1506590107-7324-3-git-send-email-eric.dong@intel.com> <0C09AFA07DD0434D9E2A0C6AEB0483103B97C4C7@shsmsx102.ccr.corp.intel.com>, <734D49CCEBEEF84792F5B80ED585239D5BA6EC87@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <734D49CCEBEEF84792F5B80ED585239D5BA6EC87@SHSMSX103.ccr.corp.intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: MIME-Version: 1.0 Subject: Re: [Patch 2/2] UefiCpuPkg/PiSmmCpuDxeSmm: Refine code to avoid duplicated code. 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: Thu, 28 Sep 2017 11:05:14 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 eWVzLCBpIGxpa2UgdGhlIGlkZWEgdG8gdXNlIHRhYmxlIGFzIHBhcmFtZXRlci4NCg0KdGhhbmsg eW91IQ0KWWFvLCBKaWV3ZW4NCg0KDQo+INTaIDIwMTfE6jnUwjI4yNWjrM/Czuc2OjA0o6xOaSwg UnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT4g0LS1wKO6DQo+IA0KPiAxLiBXZSBjb3VsZCBlaXRo ZXIgdXNlIEJPT0xFQU4gZmxhZyB0byB0ZWxsIFNldFByb2Nlc3NvclJlZ2lzdGVyKCkgd2hpY2gg cmVnaXN0ZXIgdGFibGUgdG8gdXNlLg0KPiBPciwgcGFzcyBib3RoIFJlZ2lzdGVyVGFibGVMaXN0 IGFuZCBDcHVOdW0gaW50byBTZXRQcm9jZXNzb3JSZWdpc3RlcigpLg0KPiBJIHByZWZlciB0aGUg bGF0dGVyIG9uZS4NCj4gVk9JRA0KPiBTZXRQcm9jZXNzb3JSZWdpc3RlciAoDQo+ICBJTiBDUFVf UkVHSVNURVJfVEFCTEUgICAgICAgICpSZWdpc3RlclRhYmxlc6OsDQo+ICBJTiBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlclRhYmxlQ291bnQNCj4gICk7 DQo+IA0KPiANCj4gMi4gSG93IGFib3V0IGNoYW5nZSBNUFJlbmRlenZvdXNQcm9jZWR1cmUgdG8g SW5pdGlhbGl6ZUFwPw0KPiANCj4gVGhhbmtzL1JheQ0KPiANCj4+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+PiBGcm9tOiBaZW5nLCBTdGFyDQo+PiBTZW50OiBUaHVyc2RheSwgU2VwdGVt YmVyIDI4LCAyMDE3IDU6MzEgUE0NCj4+IFRvOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwu Y29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4+IENjOiBOaSwgUnVpeXUgPHJ1aXl1Lm5p QGludGVsLmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFplbmcsDQo+ PiBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPj4gU3ViamVjdDogUkU6IFtlZGsyXSBbUGF0 Y2ggMi8yXSBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tOiBSZWZpbmUgY29kZSB0bw0KPj4gYXZv aWQgZHVwbGljYXRlZCBjb2RlLg0KPj4gDQo+PiBKdXN0IEZZSSwgYW5vdGhlciBpZGVhIGlzIHRv IGRlY2xhcmUgU2V0UHJvY2Vzc29yUmVnaXN0ZXIoKSBsaWtlIGJlbG93LCB0aGVuIHRoZQ0KPj4g Y2FsbGVyIG9mIFNldFByb2Nlc3NvclJlZ2lzdGVyKCkgaGFzIG5vIG5lZWQgdG8gdG91Y2ggbUFj cGlDcHVEYXRhLg0KPj4gDQo+PiBWT0lEDQo+PiBTZXRQcm9jZXNzb3JSZWdpc3RlciAoDQo+PiAg SU4gQk9PTEVBTiAgICAgICAgIFByZVNtbUZsYWcNCj4+ICApDQo+PiB7DQo+PiAgQ1BVX1JFR0lT VEVSX1RBQkxFICAgICAgICAqUmVnaXN0ZXJUYWJsZUxpc3Q7DQo+PiAuLi4NCj4+ICBpZiAoUHJl U21tRmxhZykgew0KPj4gICAgUmVnaXN0ZXJUYWJsZUxpc3QgPSAoQ1BVX1JFR0lTVEVSX1RBQkxF ICopIChVSU5UTikNCj4+IG1BY3BpQ3B1RGF0YS5QcmVTbW1Jbml0UmVnaXN0ZXJUYWJsZTsNCj4+ ICB9IGVsc2Ugew0KPj4gICAgUmVnaXN0ZXJUYWJsZUxpc3QgPSAoQ1BVX1JFR0lTVEVSX1RBQkxF ICopIChVSU5UTikNCj4+IG1BY3BpQ3B1RGF0YS5SZWdpc3RlclRhYmxlOw0KPj4gIH0NCj4+IC4u Lg0KPj4gDQo+PiBUaGFua3MsDQo+PiBTdGFyDQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPj4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4w MS5vcmddIE9uIEJlaGFsZiBPZiBFcmljDQo+PiBEb25nDQo+PiBTZW50OiBUaHVyc2RheSwgU2Vw dGVtYmVyIDI4LCAyMDE3IDU6MTUgUE0NCj4+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0K Pj4gQ2M6IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdl bi55YW9AaW50ZWwuY29tPg0KPj4gU3ViamVjdDogW2VkazJdIFtQYXRjaCAyLzJdIFVlZmlDcHVQ a2cvUGlTbW1DcHVEeGVTbW06IFJlZmluZSBjb2RlIHRvDQo+PiBhdm9pZCBkdXBsaWNhdGVkIGNv ZGUuDQo+PiANCj4+IFJlZmluZSBjb2RlIHRvIGF2b2lkIGR1cGxpY2F0ZSBjb2RlIHRvIHNldCBw cm9jZXNzb3IgcmVnaXN0ZXIuDQo+PiANCj4+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT4NCj4+IENjOiBSdWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0KPj4gQ29udHJp YnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPj4gU2ln bmVkLW9mZi1ieTogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPj4gLS0tDQo+PiBV ZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL0NwdVMzLmMgfCA3OCArKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4+IC0tLQ0KPj4gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlv bnMoKyksIDU4IGRlbGV0aW9ucygtKQ0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9Q aVNtbUNwdUR4ZVNtbS9DcHVTMy5jDQo+PiBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vQ3B1 UzMuYw0KPj4gaW5kZXggYWU0YjUxNi4uNTAwYTBlMiAxMDA2NDQNCj4+IC0tLSBhL1VlZmlDcHVQ a2cvUGlTbW1DcHVEeGVTbW0vQ3B1UzMuYw0KPj4gKysrIGIvVWVmaUNwdVBrZy9QaVNtbUNwdUR4 ZVNtbS9DcHVTMy5jDQo+PiBAQCAtMjA4LDE4ICsyMDgsMjggQEAgUmV0dXJuczoNCj4+IA0KPj4g ICBUaGlzIGZ1bmN0aW9uIHByb2dyYW1zIHJlZ2lzdGVycyBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vz c29yLg0KPj4gDQo+PiAtICBAcGFyYW0gIFJlZ2lzdGVyVGFibGUgUG9pbnRlciB0byByZWdpc3Rl ciB0YWJsZSBvZiB0aGUgcnVubmluZyBwcm9jZXNzb3IuDQo+PiArICBAcGFyYW0gIFJlZ2lzdGVy VGFibGVMaXN0ICAgICBQb2ludGVyIHRvIHJlZ2lzdGVyIHRhYmxlIG9mIHRoZSBydW5uaW5nDQo+ PiBwcm9jZXNzb3IuDQo+PiANCj4+ICoqLw0KPj4gVk9JRA0KPj4gU2V0UHJvY2Vzc29yUmVnaXN0 ZXIgKA0KPj4gLSAgSU4gQ1BVX1JFR0lTVEVSX1RBQkxFICAgICAgICAqUmVnaXN0ZXJUYWJsZQ0K Pj4gKyAgSU4gQ1BVX1JFR0lTVEVSX1RBQkxFICAgICAgICAqUmVnaXN0ZXJUYWJsZUxpc3QNCj4+ ICAgKQ0KPj4gew0KPj4gICBDUFVfUkVHSVNURVJfVEFCTEVfRU5UUlkgICpSZWdpc3RlclRhYmxl RW50cnk7DQo+PiAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+PiAgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgVmFsdWU7DQo+PiAgIFNQSU5fTE9DSyAgICAgICAgICAgICAg ICAgKk1zclNwaW5Mb2NrOw0KPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbml0QXBp Y0lkOw0KPj4gKyAgQ1BVX1JFR0lTVEVSX1RBQkxFICAgICAgICAqUmVnaXN0ZXJUYWJsZTsNCj4+ ICsNCj4+ICsgIEluaXRBcGljSWQgPSBHZXRJbml0aWFsQXBpY0lkICgpOw0KPj4gKyAgZm9yIChJ bmRleCA9IDA7IEluZGV4IDwgbUFjcGlDcHVEYXRhLk51bWJlck9mQ3B1czsgSW5kZXgrKykgew0K Pj4gKyAgICBpZiAoUmVnaXN0ZXJUYWJsZUxpc3RbSW5kZXhdLkluaXRpYWxBcGljSWQgPT0gSW5p dEFwaWNJZCkgew0KPj4gKyAgICAgIFJlZ2lzdGVyVGFibGUgPSAgJlJlZ2lzdGVyVGFibGVMaXN0 W0luZGV4XTsNCj4+ICsgICAgICBicmVhazsNCj4+ICsgICAgfQ0KPj4gKyAgfQ0KPj4gDQo+PiAg IC8vDQo+PiAgIC8vIFRyYXZlcnNlIFJlZ2lzdGVyIFRhYmxlIG9mIHRoaXMgbG9naWNhbCBwcm9j ZXNzb3IgQEAgLTM0Nyw4ICszNTcsNiBAQA0KPj4gU2V0UHJvY2Vzc29yUmVnaXN0ZXIgKA0KPj4g ICB9DQo+PiB9DQo+PiANCj4+IC0NCj4+IC0NCj4+IC8qKg0KPj4gICBBUCBpbml0aWFsaXphdGlv biBiZWZvcmUgdGhlbiBhZnRlciBTTUJBU0UgcmVsb2NhdGlvbiBpbiB0aGUgUzMgYm9vdCBwYXRo Lg0KPj4gKiovDQo+PiBAQCAtMzU3LDI2ICszNjUsMTIgQEAgTVBSZW5kZXp2b3VzUHJvY2VkdXJl ICgNCj4+ICAgVk9JRA0KPj4gICApDQo+PiB7DQo+PiAtICBDUFVfUkVHSVNURVJfVEFCTEUgICAg ICAgICAqUmVnaXN0ZXJUYWJsZUxpc3Q7DQo+PiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICBJbml0QXBpY0lkOw0KPj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ PiAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgIFRvcE9mU3RhY2s7DQo+PiAgIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICAgIFN0YWNrWzEyOF07DQo+PiANCj4+ICAgTG9hZE10cnJEYXRhICht QWNwaUNwdURhdGEuTXRyclRhYmxlKTsNCj4+IA0KPj4gLSAgLy8NCj4+IC0gIC8vIEZpbmQgcHJv Y2Vzc29yIG51bWJlciBmb3IgdGhpcyBDUFUuDQo+PiAtICAvLw0KPj4gLSAgUmVnaXN0ZXJUYWJs ZUxpc3QgPSAoQ1BVX1JFR0lTVEVSX1RBQkxFICopIChVSU5UTikNCj4+IG1BY3BpQ3B1RGF0YS5Q cmVTbW1Jbml0UmVnaXN0ZXJUYWJsZTsNCj4+IC0gIEluaXRBcGljSWQgPSBHZXRJbml0aWFsQXBp Y0lkICgpOw0KPj4gLSAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgbUFjcGlDcHVEYXRhLk51bWJl ck9mQ3B1czsgSW5kZXgrKykgew0KPj4gLSAgICBpZiAoUmVnaXN0ZXJUYWJsZUxpc3RbSW5kZXhd LkluaXRpYWxBcGljSWQgPT0gSW5pdEFwaWNJZCkgew0KPj4gLSAgICAgIFNldFByb2Nlc3NvclJl Z2lzdGVyICgmUmVnaXN0ZXJUYWJsZUxpc3RbSW5kZXhdKTsNCj4+IC0gICAgICBicmVhazsNCj4+ IC0gICAgfQ0KPj4gLSAgfQ0KPj4gLQ0KPj4gKyAgU2V0UHJvY2Vzc29yUmVnaXN0ZXIgKChDUFVf UkVHSVNURVJfVEFCTEUgKikgKFVJTlROKQ0KPj4gKyBtQWNwaUNwdURhdGEuUHJlU21tSW5pdFJl Z2lzdGVyVGFibGUpOw0KPj4gDQo+PiAgIC8vDQo+PiAgIC8vIENvdW50IGRvd24gdGhlIG51bWJl ciB3aXRoIGxvY2sgbWVjaGFuaXNtLg0KPj4gQEAgLTM5MywxNCArMzg3LDcgQEAgTVBSZW5kZXp2 b3VzUHJvY2VkdXJlICgNCj4+ICAgUHJvZ3JhbVZpcnR1YWxXaXJlTW9kZSAoKTsNCj4+ICAgRGlz YWJsZUx2dEludGVycnVwdHMgKCk7DQo+PiANCj4+IC0gIFJlZ2lzdGVyVGFibGVMaXN0ID0gKENQ VV9SRUdJU1RFUl9UQUJMRSAqKSAoVUlOVE4pDQo+PiBtQWNwaUNwdURhdGEuUmVnaXN0ZXJUYWJs ZTsNCj4+IC0gIEluaXRBcGljSWQgPSBHZXRJbml0aWFsQXBpY0lkICgpOw0KPj4gLSAgZm9yIChJ bmRleCA9IDA7IEluZGV4IDwgbUFjcGlDcHVEYXRhLk51bWJlck9mQ3B1czsgSW5kZXgrKykgew0K Pj4gLSAgICBpZiAoUmVnaXN0ZXJUYWJsZUxpc3RbSW5kZXhdLkluaXRpYWxBcGljSWQgPT0gSW5p dEFwaWNJZCkgew0KPj4gLSAgICAgIFNldFByb2Nlc3NvclJlZ2lzdGVyICgmUmVnaXN0ZXJUYWJs ZUxpc3RbSW5kZXhdKTsNCj4+IC0gICAgICBicmVhazsNCj4+IC0gICAgfQ0KPj4gLSAgfQ0KPj4g KyAgU2V0UHJvY2Vzc29yUmVnaXN0ZXIgKChDUFVfUkVHSVNURVJfVEFCTEUgKikgKFVJTlROKQ0K Pj4gKyBtQWNwaUNwdURhdGEuUmVnaXN0ZXJUYWJsZSk7DQo+PiANCj4+ICAgLy8NCj4+ICAgLy8g UGxhY2UgQVAgaW50byB0aGUgc2FmZSBjb2RlLCBjb3VudCBkb3duIHRoZSBudW1iZXIgd2l0aCBs b2NrIG1lY2hhbmlzbSBpbg0KPj4gdGhlIHNhZmUgY29kZS4NCj4+IEBAIC00NzUsMjcgKzQ2Miwx MyBAQCBQcmVwYXJlQXBTdGFydHVwVmVjdG9yICgNCj4+IA0KPj4gKiovDQo+PiBWT0lEDQo+PiAt RWFybHlJbml0aWFsaXplQ3B1ICgNCj4+ICtJbml0aWFsaXplQ3B1QmVmb3JlUmViYXNlICgNCj4+ ICAgVk9JRA0KPj4gICApDQo+PiB7DQo+PiAtICBDUFVfUkVHSVNURVJfVEFCTEUgICAgICAgICAq UmVnaXN0ZXJUYWJsZUxpc3Q7DQo+PiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICBJbml0 QXBpY0lkOw0KPj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+PiAtDQo+ PiAgIExvYWRNdHJyRGF0YSAobUFjcGlDcHVEYXRhLk10cnJUYWJsZSk7DQo+PiANCj4+IC0gIC8v DQo+PiAtICAvLyBGaW5kIHByb2Nlc3NvciBudW1iZXIgZm9yIHRoaXMgQ1BVLg0KPj4gLSAgLy8N Cj4+IC0gIFJlZ2lzdGVyVGFibGVMaXN0ID0gKENQVV9SRUdJU1RFUl9UQUJMRSAqKSAoVUlOVE4p DQo+PiBtQWNwaUNwdURhdGEuUHJlU21tSW5pdFJlZ2lzdGVyVGFibGU7DQo+PiAtICBJbml0QXBp Y0lkID0gR2V0SW5pdGlhbEFwaWNJZCAoKTsNCj4+IC0gIGZvciAoSW5kZXggPSAwOyBJbmRleCA8 IG1BY3BpQ3B1RGF0YS5OdW1iZXJPZkNwdXM7IEluZGV4KyspIHsNCj4+IC0gICAgaWYgKFJlZ2lz dGVyVGFibGVMaXN0W0luZGV4XS5Jbml0aWFsQXBpY0lkID09IEluaXRBcGljSWQpIHsNCj4+IC0g ICAgICBTZXRQcm9jZXNzb3JSZWdpc3RlciAoJlJlZ2lzdGVyVGFibGVMaXN0W0luZGV4XSk7DQo+ PiAtICAgICAgYnJlYWs7DQo+PiAtICAgIH0NCj4+IC0gIH0NCj4+ICsgIFNldFByb2Nlc3NvclJl Z2lzdGVyICgoQ1BVX1JFR0lTVEVSX1RBQkxFICopIChVSU5UTikNCj4+ICsgbUFjcGlDcHVEYXRh LlByZVNtbUluaXRSZWdpc3RlclRhYmxlKTsNCj4+IA0KPj4gICBQcm9ncmFtVmlydHVhbFdpcmVN b2RlICgpOw0KPj4gDQo+PiBAQCAtNTI3LDIyICs1MDAsMTEgQEAgRWFybHlJbml0aWFsaXplQ3B1 ICgNCj4+IA0KPj4gKiovDQo+PiBWT0lEDQo+PiAtSW5pdGlhbGl6ZUNwdSAoDQo+PiArSW5pdGlh bGl6ZUNwdUFmdGVyUmViYXNlICgNCj4+ICAgVk9JRA0KPj4gICApDQo+PiB7DQo+PiAtICBDUFVf UkVHSVNURVJfVEFCTEUgICAgICAgICAqUmVnaXN0ZXJUYWJsZUxpc3Q7DQo+PiAtICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICBJbml0QXBpY0lkOw0KPj4gLSAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgSW5kZXg7DQo+PiAtDQo+PiAtICBSZWdpc3RlclRhYmxlTGlzdCA9IChDUFVfUkVH SVNURVJfVEFCTEUgKikgKFVJTlROKQ0KPj4gbUFjcGlDcHVEYXRhLlJlZ2lzdGVyVGFibGU7DQo+ PiAtICBJbml0QXBpY0lkID0gR2V0SW5pdGlhbEFwaWNJZCAoKTsNCj4+IC0gIGZvciAoSW5kZXgg PSAwOyBJbmRleCA8IG1BY3BpQ3B1RGF0YS5OdW1iZXJPZkNwdXM7IEluZGV4KyspIHsNCj4+IC0g ICAgaWYgKFJlZ2lzdGVyVGFibGVMaXN0W0luZGV4XS5Jbml0aWFsQXBpY0lkID09IEluaXRBcGlj SWQpIHsNCj4+IC0gICAgICBTZXRQcm9jZXNzb3JSZWdpc3RlciAoJlJlZ2lzdGVyVGFibGVMaXN0 W0luZGV4XSk7DQo+PiAtICAgICAgYnJlYWs7DQo+PiAtICAgIH0NCj4+IC0gIH0NCj4+ICsgIFNl dFByb2Nlc3NvclJlZ2lzdGVyICgoQ1BVX1JFR0lTVEVSX1RBQkxFICopIChVSU5UTikNCj4+ICsg bUFjcGlDcHVEYXRhLlJlZ2lzdGVyVGFibGUpOw0KPj4gDQo+PiAgIG1OdW1iZXJUb0ZpbmlzaCA9 IG1BY3BpQ3B1RGF0YS5OdW1iZXJPZkNwdXMgLSAxOw0KPj4gDQo+PiBAQCAtNjYwLDcgKzYyMiw3 IEBAIFNtbVJlc3RvcmVDcHUgKA0KPj4gICAgIC8vDQo+PiAgICAgLy8gRmlyc3QgdGltZSBtaWNy b2NvZGUgbG9hZCBhbmQgcmVzdG9yZSBNVFJScw0KPj4gICAgIC8vDQo+PiAtICAgIEVhcmx5SW5p dGlhbGl6ZUNwdSAoKTsNCj4+ICsgICAgSW5pdGlhbGl6ZUNwdUJlZm9yZVJlYmFzZSAoKTsNCj4+ ICAgfQ0KPj4gDQo+PiAgIC8vDQo+PiBAQCAtNjc1LDcgKzYzNyw3IEBAIFNtbVJlc3RvcmVDcHUg KA0KPj4gICAgIC8vDQo+PiAgICAgLy8gUmVzdG9yZSBNU1JzIGZvciBCU1AgYW5kIGFsbCBBUHMN Cj4+ICAgICAvLw0KPj4gLSAgICBJbml0aWFsaXplQ3B1ICgpOw0KPj4gKyAgICBJbml0aWFsaXpl Q3B1QWZ0ZXJSZWJhc2UgKCk7DQo+PiAgIH0NCj4+IA0KPj4gICAvLw0KPj4gLS0NCj4+IDIuNy4w LndpbmRvd3MuMQ0KPj4gDQo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KPj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4+IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnDQo+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazIt ZGV2ZWwNCg==