From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: zhichao.gao@intel.com) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by groups.io with SMTP; Mon, 15 Apr 2019 18:46:27 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Apr 2019 18:46:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,355,1549958400"; d="scan'208";a="337932984" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 15 Apr 2019 18:46:26 -0700 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 15 Apr 2019 18:46:26 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx117.amr.corp.intel.com (10.18.116.17) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 15 Apr 2019 18:46:25 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.164]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.92]) with mapi id 14.03.0415.000; Tue, 16 Apr 2019 09:46:23 +0800 From: "Gao, Zhichao" To: Laszlo Ersek , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Wu, Hao A" , "Ni, Ray" , "Zeng, Star" , "Gao, Liming" , Sean Brogan , Michael Turner , Bret Barkelew Subject: Re: [edk2-devel] [PATCH 0/2] MdeModulePkg: Make the screen seamless Thread-Topic: [edk2-devel] [PATCH 0/2] MdeModulePkg: Make the screen seamless Thread-Index: AQHU8QaaPK//z2uOwUSJUKiru6AWY6Y4K3AwgASz8oCAAQ8qMA== Date: Tue, 16 Apr 2019 01:46:23 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B7C27D1@SHSMSX101.ccr.corp.intel.com> References: <20190412031436.19088-1-zhichao.gao@intel.com> <85e3937d-65d6-11f1-f786-4c169eed628b@redhat.com> <3CE959C139B4C44DBEA1810E3AA6F9000B7C1CCF@SHSMSX101.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: zhichao.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFtt YWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgQXByaWwgMTUsIDIwMTkg MTE6NTYgUE0NCj4gVG86IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50ZWwuY29tPjsgZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwu Y29tPjsgV3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+Ow0KPiBOaSwgUmF5IDxyYXkubmlA aW50ZWwuY29tPjsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT47IEdhbywgTGltaW5n DQo+IDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNy b3NvZnQuY29tPjsNCj4gTWljaGFlbCBUdXJuZXIgPE1pY2hhZWwuVHVybmVyQG1pY3Jvc29mdC5j b20+OyBCcmV0IEJhcmtlbGV3DQo+IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+DQo+IFN1 YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIDAvMl0gTWRlTW9kdWxlUGtnOiBNYWtlIHRo ZSBzY3JlZW4NCj4gc2VhbWxlc3MNCj4gDQo+IEhpIFpoaWNoYW8sDQo+IA0KPiBPbiAwNC8xMy8x OSAwOTo1MiwgR2FvLCBaaGljaGFvIHdyb3RlOg0KPiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJl ZGhhdC5jb21dDQo+ID4+IFNlbnQ6IEZyaWRheSwgQXByaWwgMTIsIDIwMTkgNDowNiBQTQ0KPiA+ PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50 ZWwuY29tPg0KPiA+PiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBX dSwgSGFvIEENCj4gPj4gPGhhby5hLnd1QGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRl bC5jb20+OyBaZW5nLCBTdGFyDQo+ID4+IDxzdGFyLnplbmdAaW50ZWwuY29tPjsgR2FvLCBMaW1p bmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgU2Vhbg0KPiA+PiBCcm9nYW4gPHNlYW4uYnJvZ2Fu QG1pY3Jvc29mdC5jb20+OyBNaWNoYWVsIFR1cm5lcg0KPiA+PiA8TWljaGFlbC5UdXJuZXJAbWlj cm9zb2Z0LmNvbT47IEJyZXQgQmFya2VsZXcNCj4gPj4gPEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0 LmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggMC8yXSBNZGVNb2R1 bGVQa2c6IE1ha2UgdGhlIHNjcmVlbg0KPiA+PiBzZWFtbGVzcw0KPiA+Pg0KPiA+PiBPbiAwNC8x Mi8xOSAwNToxNCwgR2FvLCBaaGljaGFvIHdyb3RlOg0KPiA+Pj4gRm9yIG5vdyBtb3N0IHBsYXRm b3JtcyBzdXBwb3J0IGRpc3BsYXkgZnVuY3Rpb24gYXQgUEVJIHBoYXNlLg0KPiA+Pj4gQnV0IHRo ZSBjb25zcGxpdGVyIGFuZCBncmFwaGljcyBjb25zb2xlIGRyaXZlciB3b3VsZCBjbGVhciB0aGUN Cj4gPj4+IHNjcmVlbiBhdCBCRFMgY29ubmVjdCBjb25zb2xlIHBoYXNlLiBNYXliZSBzb21lIHBs YXRmb3JtcyB3b3VsZA0KPiBzaG93DQo+ID4+PiBsb2dvIGluIHRoZSBuZXh0IG9yIG1heWJlIG5v dC4gRm9yIGNvbnN1bWVycywgaXQgbG9va3MgbGlrZSB0aGUNCj4gPj4+IHNjcmVlbiBmbGFzaGVk Lg0KPiA+Pj4gU28gY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBncmFwaGljcyBjb25zb2xlIGRldmlj ZXMgd2hpbGUgY29ubmVjdA0KPiA+Pj4gY29uc29sZSBkZXZpY2VzIHRvIG1haW50YWluIHNlYW1s ZXNzIHNjcmVlbiBmcm9tIFBFSS4NCj4gPj4+DQo+ID4+PiBUZXN0IGhhcyBkb25lIG9uIE1pblBs YXRmb3JtIEthYnlsYWtlLVJWUDMgd2hpY2ggc3VwcG9ydCBQRUkgZGlzcGxheS4NCj4gPj4+DQo+ ID4+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPj4+IENjOiBI YW8gV3UgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPj4+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRl bC5jb20+DQo+ID4+PiBDYzogU3RhciBaZW5nIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiA+Pj4g Q2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+Pj4gQ2M6IFNlYW4gQnJv Z2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPg0KPiA+Pj4gQ2M6IE1pY2hhZWwgVHVybmVy IDxNaWNoYWVsLlR1cm5lckBtaWNyb3NvZnQuY29tPg0KPiA+Pj4gQ2M6IEJyZXQgQmFya2VsZXcg PEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0LmNvbT4NCj4gPj4+DQo+ID4+PiBBYXJvbiBBbnRvbmUg KDIpOg0KPiA+Pj4gICBNZGVNb2R1bGVQa2cvQ29uU3BsaXR0ZXJEeGU6IE9wdGltaXplIHRoZQ0K PiA+PiBDb25TcGxpdHRlclRleHRPdXRTZXRNb2RlDQo+ID4+PiAgIE1kZU1vZHVsZVBrZy9HcmFw aGljc0NvbnNvbGVEeGU6IERvIG5vdCBjbGVhbiB0aGUgc2NyZWVuDQo+ID4+Pg0KPiA+Pj4gIC4u Li9Db25zb2xlL0NvblNwbGl0dGVyRHhlL0NvblNwbGl0dGVyLmMgICAgICB8IDM0ICsrKysrKysr Ky0tLS0tDQo+ID4+PiAgLi4uL0NvbnNvbGUvQ29uU3BsaXR0ZXJEeGUvQ29uU3BsaXR0ZXIuaCAg ICAgIHwgIDQgKy0NCj4gPj4+ICAuLi4vR3JhcGhpY3NDb25zb2xlRHhlL0dyYXBoaWNzQ29uc29s ZS5jICAgICAgfCA0NSArKysrKysrKystLS0tLS0tLS0tDQo+ID4+PiAgMyBmaWxlcyBjaGFuZ2Vk LCA0OCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkNCj4gPj4+DQo+ID4+DQo+ID4+IEVG SV9HUkFQSElDU19PVVRQVVRfUFJPVE9DT0wuU2V0TW9kZSgpIGlzIHNwZWNpZmllZCB0byBjbGVh ciB0aGUNCj4gPj4gc2NyZWVuIHRvIGJsYWNrLiBJcyB0aGlzIHNlcmllcyBjb21wYXRpYmxlIHdp dGggdGhhdD8NCj4gPg0KPiA+IE5vLiBXZSBvbmx5IGNvbnNpZGVyIHRoZSBjb25zb2xlIHNlY3Rp b24uDQo+IA0KPiBZb3UgYW5zd2VyZWQgbXkgcXVlc3Rpb24NCj4gDQo+ICAgImlzIHRoaXMgY29t cGF0aWJsZSB3aXRoLi4uPyINCj4gDQo+IHdpdGggIm5vIiwgc28gSSBmaXJzdCB0aG91Z2h0IHlv dSBtZWFudCwgIm5vLCB0aGlzIHNlcmllcyBpcyBpbmNvbXBhdGlibGUgd2l0aA0KPiB0aGUgRUZJ X0dSQVBISUNTX09VVFBVVF9QUk9UT0NPTC5TZXRNb2RlKCkNCj4gc3BlY2lmaWNhdGlvbiIuDQo+ IA0KPiBCdXQgcmVhZGluZyB0aGUgcmVzdCBvZiB5b3VyIHJlcGx5LCBJIHRoaW5rIHlvdXIgYW5z d2VyIGlzLA0KPiAiRUZJX0dSQVBISUNTX09VVFBVVF9QUk9UT0NPTC5TZXRNb2RlKCkgaXMgbm90 IGFmZmVjdGVkIGJ5IHRoaXMNCj4gc2VyaWVzIi4NCj4gDQo+IENhbiB5b3UgY29uZmlybSB0aGF0 Pw0KDQpZZXMuIFlvdSBhcmUgcmlnaHQuIE5vIGVmZmVjdCB3aXRoIHRoZSBFRklfR1JBUEhJQ1Nf T1VUUFVUX1BST1RPQ09MLlNldE1vZGUoKS4NCg0KPiANCj4gQmVjYXVzZSwgSSB0aGluayBJJ2Qg YWdyZWUgd2l0aCB0aGF0LiBUaGlzIHNlcmllcyBtb2RpZmllcyB0d28gZHJpdmVycywgYW5kDQo+ IGZyb20gdGhvc2UsIG9ubHkgQ29uU3BsaXR0ZXJEeGUgKnByb2R1Y2VzKiBhIEdPUC4gVGhlcmVm b3JlIG15IG9yaWdpbmFsDQo+IHF1ZXN0aW9uIGlzIHJlbGV2YW50IG9ubHkgZm9yIHBhdGNoIzEg KHdoaWNoIGlzIHRoZSBvbmUgbW9kaWZ5aW5nDQo+IENvblNwbGl0dGVyRHhlKS4NCj4gDQo+IEFu ZCBpbiBwYXRjaCAjMSwgaW5kZWVkIGl0IGxvb2tzIGxpa2Ugd2UgZG9uJ3QgdG91Y2ggdGhlIEdP UC4NCj4gDQo+IChJIGd1ZXNzIHRoaXMgaXMgYWxzbyB3aGF0IHlvdSBtZWFuIGJ5ICJjb25zb2xl IHNlY3Rpb24iIC0tIHRoYXQgaXMsIHRoZSB0ZXh0DQo+IGNvbnNvbGUgZnVuY3Rpb25hbGl0eS4p DQo+IA0KPiBUaGUgcmVzdCBvZiB0aGUgZGlzY3Vzc2lvbiByZWZlcnMgdG8gcGF0Y2ggIzIgLyBH cmFwaGljc0NvbnNvbGVEeGU6DQo+IA0KPiA+IFRoZXJlIGFyZSB0d28gcGNkcyB0byBjb250cm9s IHRoZSBncmFwaGljcyBvdXRwdXQgbW9kZQ0KPiA+IFBjZFZpZGVvSG9yaXpvbnRhbFJlc29sdXRp b24gYW5kIFBjZFZpZGVvVmVydGljYWxSZXNvbHV0aW9uLiBVc3VhbGx5DQo+ID4gd2Ugc2V0IHRo ZW0gYXMgemVybyB0byBtYWtlIHRoZSBtb2RlIHRvIGJlIHRoZSBtYXggbW9kZSB0aGUgZ3JhcGhp Y3MNCj4gPiBzdXBwb3J0ZWQgYW5kIHRoZSBncmFwaGljcyBvdXRwdXQgcHJvdG9jb2wgd291bGQg aW5pdGlhbGl6ZSB0aGUgbW9kZQ0KPiA+IHRvIGJlIHRoZSBtYXggbW9kZSBpbiBnZW5lcmFsLiBJ ZiBzbyB0aGUgU2V0TW9kZSB3b3VsZCBub3QgIGJlIHJ1bnQuDQo+ID4gQnV0IHRoYXQgaXMgZG9u ZSBpbiB0aGUgZ3JhcGhpY3Mgb3V0cHV0IGRyaXZlciBhbmQgdGhlIGRyaXZlciBpcw0KPiA+IHVz dWFsbHkgYSBiaW5hcnkgZmlsZS4gU28gd2UgY2FuJ3QgZGVzaXJlIHRoYXQgdGhlIGdyYXBoaWNz IGRyaXZlcg0KPiA+IHdvdWxkIHNldCB0aGUgbWF4IG1vZGUsIHRoYXQgaXMgdGhlIGdyYXBoaWNz IG91dHB1dCBkcml2ZXIncyB2ZW5kb3INCj4gPiBkZWNpZGVkLg0KPiA+IEluIHRoZSBvdGhlciBj b25kaXRpb24sIHRoZXNlIHR3byBwY2RzIHdvdWxkIHNldCBhIHZhbHVlIGFuZCB0aGVuDQo+ID4g Z3JhcGhpY3Mgb3V0cHV0IGRyaXZlciB3b3VsZCBmb2N1cyB0byBzZXQgdGhlIG1vZGUgYW5kIGNs ZWFyIHRoZQ0KPiA+IHNjcmVlbi4gVGhhdCBpcyBjb250cm9sbGVkIGJ5IHRoZSBjb25zdW1lci4g QnkgZGVmYXVsdCB0aGUgdHdvIHBjZHMgaXMNCj4gPiBpbml0aWFsaXplZCBhcyA4MDAgYW5kIDYw MC4gQmVjYXVzZSB0aGlzIHJlc29sdXRpb24gbWF5IGJlIHRoZSBtb3N0DQo+ID4gbm9ybWFsIHJl c29sdXRpb24gYW5kIHRoZSBzY3JlZW4gd291bGQgYWx3YXlzIGJlIGNsZWFyZWQuDQo+ID4NCj4g PiBJbiBteSBvcGluaW9uLCB0aGUgYmVoYXZpb3Igb2YgZ3JhcGhpY3Mgb3V0cHV0IHNlY3Rpb24g aW4gdGhpcyBkcml2ZXINCj4gPiBpcyBmaW5lIGFuZCBzaG91bGQgbm90IGJlIGNoYW5nZWQuIEFu ZCBhbHNvLCBpdCBpcyBoYXJkIGZvciB1cyB0bw0KPiA+IGNvbnRyb2wgaXQgYmVjYXVzZSB0aGUg ZHJpdmVyIGlzIHVzdWFsbHkgbm90IG9wZW4gc291cmNlLg0KPiA+IFRoZSB1cG9uIHJlc3VsdHMg YXJlIGJhc2VkIG9uIGthYnlsYWtlIFJ2cDMgcGxhdGZvcm0uIE1heWJlIEkgbWlzc2VkDQo+ID4g c29tZXRoaW5nLiBBbnkgaW5jb3JyZWN0LCBwbGVhc2UgZmVlbCBmcmVlIHRvIHBvaW50IG91dC4N Cj4gDQo+IFRoZSBhYm92ZSBpcyBhbGwgZmluZSwgdGhhbmsgeW91IGZvciB0aGUgYW5zd2VyLg0K PiANCj4gSG93ZXZlciwgbm93IGhhdmluZyBsb29rZWQgYXQgcGF0Y2gjMiBpbiBhIGJpdCBtb3Jl IGRldGFpbCwgSSBoYXZlIHRvIGFzayBteQ0KPiBxdWVzdGlvbiBhZ2FpbiwgYWx0aG91Z2ggYSBi aXQgZGlmZmVyZW50bHk6DQo+IA0KPiBJbiBwYXRjaCAjMiwgd2UgbW9kaWZ5IHRoZSBHcmFwaGlj c0NvbnNvbGVDb25PdXRTZXRNb2RlKCkgZnVuY3Rpb24sIHRvDQo+IG9taXQgY2xlYXJpbmcgdGhl IGRpc3BsYXkgdW5kZXIgc29tZSBjb25kaXRpb25zLg0KPiANCj4gVGhlIEdyYXBoaWNzQ29uc29s ZUNvbk91dFNldE1vZGUoKSBmdW5jdGlvbiBpbXBsZW1lbnRzDQo+IEVGSV9TSU1QTEVfVEVYVF9P VVRQVVRfUFJPVE9DT0wuU2V0TW9kZSgpLg0KPiANCj4gQWNjb3JkaW5nIHRvIHRoZSBVRUZJIHNw ZWMsDQo+IA0KPiAgICAgVGhlIFNldE1vZGUoKSBmdW5jdGlvbiBzZXRzIHRoZSBvdXRwdXQgZGV2 aWNlKHMpIHRvIHRoZSByZXF1ZXN0ZWQNCj4gICAgIG1vZGUuIE9uIHN1Y2Nlc3MgdGhlIGRldmlj ZSBpcyBpbiB0aGUgZ2VvbWV0cnkgZm9yIHRoZSByZXF1ZXN0ZWQNCj4gICAgIG1vZGUsIGFuZCB0 aGUgZGV2aWNlIGhhcyBiZWVuIGNsZWFyZWQgdG8gdGhlIGN1cnJlbnQgYmFja2dyb3VuZA0KPiAg ICAgY29sb3Igd2l0aCB0aGUgY3Vyc29yIGF0ICgwLDApLg0KPiANCj4gU28sIGlmIHBhdGNoICMy IGltcGxlbWVudHMgYQ0KPiBFRklfU0lNUExFX1RFWFRfT1VUUFVUX1BST1RPQ09MLlNldE1vZGUo KQ0KPiBtZW1iZXIgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBjbGVhciB0aGUgc2NyZWVuIG9uIGV2 ZXJ5IGNhbGwsIGRvZXMgaXQNCj4gY29uZm9ybSB0byB0aGUgc3BlYz8NCj4gDQo+IE5vdywgaWYg dGhlICJkbyBub3QgY2xlYXIgdGhlIHNjcmVlbiIgZXhjZXB0aW9uIGlzIG5vdCBvYnNlcnZhYmxl IC8NCj4gdHJpZ2dlcmFibGUgYnkgYW55IFVFRkkgZHJpdmVyIG9yIFVFRkkgYXBwbGljYXRpb24g dGhhdCBpcyB3cml0dGVuIGFnYWluc3QgdGhlDQo+IFVFRkkgc3BlYyAtLSBpbiBvdGhlciB3b3Jk cywgaWYgdGhlIGV4Y2VwdGlvbiBvbmx5IGFwcGxpZXMgdG8gcGxhdGZvcm0gLyBEWEUNCj4gbW9k dWxlcyAtLSwgdGhlbiBJIGd1ZXNzIHRoZSBleGNlcHRpb24gY291bGQgYmUgZmluZS4NCg0KVGhp cyBwYXRjaCBvbmx5IHdhbnRzIHRvIG1vZGlmeSB0aGUgY29ubmVjdGlvbiBiZWhhdmlvciBvZiB0 aGUgQkRTIHBoYXNlIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSByZXN1bHRzIG9mIG90aGVyIHBoYXNl cyBvciBvdGhlciBkcml2ZXJzIGNhbGxpbmcgdGhpcyBpbnRlcmZhY2UuIEluIHRoZSBiZWdpbm5p bmcsIEkgdGhpbmsgaWYgSSBvbmx5IGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGZpcnN0IHRp bWUgdGhlIGludGVyZmFjZSBydW5uaW5nLCBtYXliZSBJIHdvdWxkIG5vdCB2aW9sYXRlIHRoZSBz cGVjLiBJIGFsc28gd2FudCBtb3JlIGNvbW1lbnRzIGFib3V0IHdoZXRoZXIgIGl0IHZpb2xhdGUg dGhlIHNwZWMuDQoNCj4gDQo+IEJ1dCBJJ2QgbGlrZSB0byBoZWFyIG90aGVycycgY29tbWVudHMg dG9vLCBhbmQgaWYgdGhpcyBiZWhhdmlvciBpcyBjb25mb3JtYW50LA0KPiB0aGVuIHRoaXMgbnVh bmNlIHNob3VsZCBiZSBtZW50aW9uZWQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIGFuZC9vciBpbiBh DQo+IGNvbW1lbnQsIGluIHBhdGNoICMyLg0KPiANCj4gLi4uIEZpbmFsbHksIHdoYXQgYWJvdXQg Y29udHJvbGxlciBkaXNjb25uZWN0L3JlY29ubmVjdCBpbiB0aGUgVUVGSSBzaGVsbCAob3IgaW4N Cj4gb3RoZXIgVUVGSSBhcHBsaWNhdGlvbnMpPyBJIGFzc3VtZSB0aGF0IHRoZSAoVGhpcy0+TW9k ZS0+TW9kZSA9PSAtMSkNCj4gZXhjZXB0aW9uIHdvdWxkIGFwcGx5IGFnYWluLCBldmVuIHRob3Vn aCBhdCB0aGF0IHRpbWUgd2Ugd291bGRuJ3QgYmUNCj4gc3RhcnRpbmcgdXAganVzdCBhZnRlciB0 aGUgUEVJIHBoYXNlLg0KDQpZZXMsIHlvdSBhcmUgcmlnaHQuIFdlIHRyZWF0IC0gMSBhcyBhbiB1 bmluaXRpYWxpemVkIHN0YXRlLCBhbmQgdGhpcyBzdGF0ZSBpcyBzZXQgb25seSBhdCB0aGUgZHJp dmVyIGZpcnN0IHJ1bm5pbmcuIEFzIHlvdSBtZW50aW9uZWQgYWJvdmUsIGRpc2Nvbm5lY3QgYW5k IHJlY29ubmVjdCBpbiBhIHNoZWxsIGVudmlyb25tZW50IGNhbiBhbHNvIGxlYWQgdG8gdGhpcyBz aXR1YXRpb24sIHNvIHRoaXMgcGF0Y2ggc2hvdWxkIGJlIHJlamVjdGVkLiBJIHNob3VsZCB0aGlu ayBhbm90aGVyIHdheSB0byBmaWd1cmUgb3V0IHRoaXMgaXNzdWUuDQoNCj4gDQo+IFRoYW5rcywN Cj4gTGFzemxvDQo=