From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 16C9721D492C5 for ; Thu, 14 Sep 2017 23:02:46 -0700 (PDT) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Sep 2017 23:05:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,396,1500966000"; d="scan'208";a="128948045" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga004.jf.intel.com with ESMTP; 14 Sep 2017 23:05:44 -0700 Received: from fmsmsx122.amr.corp.intel.com (10.18.125.37) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 23:05:44 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx122.amr.corp.intel.com (10.18.125.37) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 23:05:44 -0700 Received: from shsmsx152.ccr.corp.intel.com ([169.254.6.93]) by shsmsx102.ccr.corp.intel.com ([169.254.2.26]) with mapi id 14.03.0319.002; Fri, 15 Sep 2017 14:05:42 +0800 From: "Wang, Jian J" To: "Wang, Jian J" , "Zeng, Star" , Laszlo Ersek , "Yao, Jiewen" CC: "Kinney, Michael D" , "Justen, Jordan L" , "edk2-devel@lists.01.org" , "Dong, Eric" , "Wolman, Ayellet" Thread-Topic: [edk2] [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. Thread-Index: AQHTLOjaGr4fA1D1skaggpFr6cHp6qKy8rOAgAAcvwCAACF6gIAAV2QAgACIDFCAAAExwP//fKIAgAAMsACAAARbAIAABgGAgAFv+gCAAF6UwA== Date: Fri, 15 Sep 2017 06:05:41 +0000 Message-ID: References: <20170913092507.12504-1-jian.j.wang@intel.com> <20170913092507.12504-5-jian.j.wang@intel.com> <848bc70b-b3f7-62fb-ef2d-df89ff8805a6@redhat.com> <4dd43619-552e-9d0e-3d2b-ca9c1f3b80a3@redhat.com> <74D8A39837DF1E4DA445A8C0B3885C503A9B264A@SHSMSX151.ccr.corp.intel.com> <0C09AFA07DD0434D9E2A0C6AEB0483103B958C07@SHSMSX151.ccr.corp.intel.com> <0C09AFA07DD0434D9E2A0C6AEB0483103B958C40@SHSMSX151.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. 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: Fri, 15 Sep 2017 06:02:46 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Rm9yIHJlY29yZCwgd2UnbGwgbWFrZSBmb2xsb3dpbmcgY2hhbmdlcyB0byBhZGRyZXNzIHRoZSBw YWdlIGF0dHJpYnV0ZXMgaXNzdWU6DQoNCigxKSBVcGRhdGUgZ0RTLT5TZXRNZW1vcnlTcGFjZUFk ZHJlc3MoKSB0byByZW1vdmUgdGhlIGZpbHRlciBzZXQgb24gcGFnZSBhdHRyaWJ1dGVzDQooMikg VXBkYXRlIENQVSBkcml2ZXIgdG8gc3luYyBhbGwgbWVtb3J5IGF0dHJpYnV0ZXMgaW5jbHVkaW5n IHBhZ2UgcmVsYXRlZC4gTm8gcGxhdGZvcm0gY29kZSBjaGFuZ2VzIG5lZWRlZC4NCg0KQWJvdmUg Y2hhbmdlcyB3aWxsIGJlIHN1Ym1pdHRlZCBpbiBhIHNlcGFyYXRlIHBhdGNoLiBBcyBhIHJlc3Vs dCAoYWZ0ZXIgaXQncyBkb25lKSwgdGhlIHJlbGF0ZWQgY2hhbmdlcyBmb3IgdGhpcyBwYXRjaCB3 aWxsIGJlIA0KKDMpIFJlcGxhY2UgbWFjcm9zIHdpdGggZnVuY3Rpb25zLCBpbiB3aGljaCBnRFMt PlNldE1lbW9yeVNwYWNlQXR0cmlidXRlcygpIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIENQVSBh cmNoIG1ldGhvZC4NCg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZWRrMi1k ZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBP ZiBXYW5nLCBKaWFuIEoNClNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDE1LCAyMDE3IDg6MTUgQU0N ClRvOiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPjsgTGFzemxvIEVyc2VrIDxsZXJz ZWtAcmVkaGF0LmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCkNjOiBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBKdXN0ZW4sIEpv cmRhbiBMIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmc7IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBXb2xtYW4sIEF5ZWxsZXQgPGF5 ZWxsZXQud29sbWFuQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDQvNF0g T3ZtZlBrZy9RZW11VmlkZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9EeGUgZHJpdmVyIHRvIGJ5cGFz cyBOVUxMIHBvaW50ZXIgZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQoNCmdEUy0+IFNldE1lbW9yeVNw YWNlQ2FwYWJpbGl0aWVzKCkgY2FuIGNoYW5nZSB0aGUgQ2FwYWJpbGl0eSBhdCBhbnkgdGltZS4g QnV0IEknbSBub3Qgc3VyZSBhYm91dCBhbnkgc2lkZS1lZmZlY3Qgb2YgaXQuDQoNCi0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBaZW5nLCBTdGFyIA0KU2VudDogVGh1cnNkYXksIFNl cHRlbWJlciAxNCwgMjAxNyA2OjE3IFBNDQpUbzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0 LmNvbT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4g PGppZXdlbi55YW9AaW50ZWwuY29tPg0KQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT47IEp1c3RlbiwgSm9yZGFuIEwgPGpvcmRhbi5sLmp1c3RlbkBpbnRl bC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGlu dGVsLmNvbT47IFdvbG1hbiwgQXllbGxldCA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPjsgWmVu ZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NClN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENI IDQvNF0gT3ZtZlBrZy9RZW11VmlkZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9EeGUgZHJpdmVyIHRv IGJ5cGFzcyBOVUxMIHBvaW50ZXIgZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQoNCk5vLCBJIHdhbnQg dG8gc2F5IGV2ZW4gdGhlIEdDRCBpcyB1cGRhdGVkIHRvIG5vdCBmaWx0ZXIgcGFnZSBhdHRyaWJ1 dGVzLCBpdCB3aWxsIHN0aWxsIG5vdCB3b3JrIGFzIGFsbCB0aGUgbWVtb3J5IGNvbnRyb2xsZXIg Y29kZSBmb3Igbm93IGFyZSBub3QgcmVwb3J0aW5nIHRoZSBDYXBhYmlsaXR5Lg0KDQoNClRoYW5r cywNClN0YXINCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBlZGsyLWRldmVsIFtt YWlsdG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmIE9mIExhc3ps byBFcnNlaw0KU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAxNCwgMjAxNyA1OjU1IFBNDQpUbzog WmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndh bmdAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KQ2M6IEtp bm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEp1c3RlbiwgSm9y ZGFuIEwgPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9y ZzsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IFdvbG1hbiwgQXllbGxldCA8YXll bGxldC53b2xtYW5AaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggNC80XSBP dm1mUGtnL1FlbXVWaWRlb0R4ZTogVXBkYXRlIFFlbXVWaWRlb0R4ZSBkcml2ZXIgdG8gYnlwYXNz IE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gaWYgZW5hYmxlZC4NCg0KT24gMDkvMTQvMTcgMTE6Mzks IFplbmcsIFN0YXIgd3JvdGU6DQo+IFRoZXJlIGlzIGEgcmVhbGlzdGljIHByb2JsZW0gSSBqdXN0 IGZvdW5kIGFuZCB3YW50IHRvIHNoYXJlLg0KPiANCj4gR0NEIGRhdGFiYXNlIGlzIGJ1aWx0IGJh c2VkIG9uIHJlc291cmNlIGhvYiByZXBvcnRlZCBmcm9tIFBFSSwgYW5kIEdDRCANCj4gY2hlY2tz IHRoZSBpbnB1dCBBdHRyaWJ1dGVzIGFnYWluc3QgQ2FwYWJpbGl0aWVzIHdoZW4gc2V0dGluZyAN Cj4gQXR0cmlidXRlcywgYnV0IHdlIChJIGp1c3Qgc2VhcmNoZWQgdGhlIHdob2xlIGNvZGViYXNl KSBjYW4gc2VlIHRoZXJlIA0KPiBpcyBubyBjb2RlIHJlcG9ydGluZyByZXNvdXJjZSBob2Igd2l0 aCANCj4gRUZJX1JFU09VUkNFX0FUVFJJQlVURV9SRUFEX1BST1RFQ1RBQkxFLA0KPiBFRklfUkVT T1VSQ0VfQVRUUklCVVRFX0VYRUNVVElPTl9QUk9URUNUQUJMRSBvciANCj4gRUZJX1JFU09VUkNF X0FUVFJJQlVURV9SRUFEX09OTFlfUFJPVEVDVEFCTEUgc2V0Lg0KLi4uIEFyZSB5b3Ugc2F5aW5n IHRoYXQsIGlmIHdlIG1vZGlmeSBBZGRNZW1vcnlCYXNlU2l6ZUhvYigpIGluIE92bWZQa2cvUGxh dGZvcm1QZWksIHRvIHJlcG9ydCBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1JFQURfT05MWV9QUk9U RUNUQUJMRSAoKiksIHRoZW4NCmdEUy0+U2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzKCkgd2lsbCBz dGFydCB0byB3b3JrPw0KDQooKCopICJNZGVQa2cvSW5jbHVkZS9QaS9QaUhvYi5oIjogIk5PVEU6 IFNpbmNlIFBJIHNwZWMgMS40LCBwbGVhc2UgdXNlIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfUkVB RF9PTkxZX1BST1RFQ1RBQkxFIGFzIE1lbW9yeSBjYXBhYmlsaXR5DQphdHRyaWJ1dGU6IFRoZSBt ZW1vcnkgc3VwcG9ydHMgYmVpbmcgcHJvdGVjdGVkIGZyb20gcHJvY2Vzc29yIHdyaXRlcyIpDQoN CklmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiBJIGhvcGUgSmlhbiBjYW4gaW5jbHVkZSBzdWNoIGFu IE92bWZQa2cgcGF0Y2ggaW4gaGlzIHNlcmllcy4gOikNCg0KVGhhbmtzIQ0KTGFzemxvDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86 bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMTQsIDIwMTcg NDo1NCBQTQ0KPiBUbzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBZYW8s IEppZXdlbiANCj4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiBDYzogRG9uZywgRXJpYyA8ZXJp Yy5kb25nQGludGVsLmNvbT47IEp1c3RlbiwgSm9yZGFuIEwgDQo+IDxqb3JkYW4ubC5qdXN0ZW5A aW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IFdvbG1hbiwgQXllbGxldCANCj4g PGF5ZWxsZXQud29sbWFuQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIA0KPiA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0K PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCA0LzRdIE92bWZQa2cvUWVtdVZpZGVvRHhlOiBV cGRhdGUgUWVtdVZpZGVvRHhlIGRyaXZlciB0byBieXBhc3MgTlVMTCBwb2ludGVyIGRldGVjdGlv biBpZiBlbmFibGVkLg0KPiANCj4gT24gMDkvMTQvMTcgMTA6NDYsIFdhbmcsIEppYW4gSiB3cm90 ZToNCj4+IEl04oCZcyBhbiBpbXBsZW1lbnRhdGlvbiBsaW1pdGF0aW9uLiBBbGwgcGFnZSBhdHRy aWJ1dGVzIHdpbGwgYmUgZmlsdGVyZWQgb3V0IGJlZm9yZSBjYWxsaW5nIENQVSBhcmNoIHByb3Rv Y29sIHRvIHVwZGF0ZSB0aGUgYXR0cmlidXRlcyAoR2NkLmMpLg0KPiANCj4gVGhhdCBjYW5ub3Qg YmUgYSByYW5kb20gb2NjdXJyZW5jZTsgSSdtIHN1cmUgdGhlcmUgd2FzIHNvbWUgc3BlY2lmaWMg aW50ZW50IGJlaGluZCBmaWx0ZXJpbmcgb3V0IHRoZSBwYWdlIGF0dHJpYnV0ZXMuDQo+IA0KPiBE b2VzICJnaXQgYmxhbWUiIHByb3ZpZGUgYSByZWFzb24sIGZyb20gdGhlIG1lc3NhZ2Ugb2YgdGhl IGNvbW1pdCB0aGF0IGFkZGVkIHRoZSBmaWx0ZXJpbmc/DQo+IA0KPiBUaGFua3MsDQo+IExhc3ps bw0KPiANCj4+IEZyb206IFlhbywgSmlld2VuDQo+PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVy IDE0LCAyMDE3IDQ6MzggUE0NCj4+IFRvOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29t PjsgV2FuZywgSmlhbiBKIA0KPj4gPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4+IENjOiBEb25n LCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTCANCj4+IDxqb3Jk YW4ubC5qdXN0ZW5AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IFdvbG1hbiwg QXllbGxldCANCj4+IDxheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwg RCANCj4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFplbmcsIFN0YXIgPHN0YXIuemVu Z0BpbnRlbC5jb20+DQo+PiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCA0LzRdIE92bWZQa2cv UWVtdVZpZGVvRHhlOiBVcGRhdGUgUWVtdVZpZGVvRHhlIGRyaXZlciB0byBieXBhc3MgTlVMTCBw b2ludGVyIGRldGVjdGlvbiBpZiBlbmFibGVkLg0KPj4NCj4+IEhJDQo+PiBJIHdvbmRlciBpZiBp dCBpcyBzcGVjIGxpbWl0YXRpb24gb3IgaW1wbGVtZW50YXRpb24gbGltaXRhdGlvbi4NCj4+DQo+ PiBJZiBpdCBpcyBpbXBsZW1lbnRhdGlvbiBsaW1pdGF0aW9uLCB3ZSBjYW4gZW5oYW5jZSB0aGUg RHhlQ29yZSB0byBhbGxvdyBpdC4NCj4+DQo+PiBUaGFuayB5b3UNCj4+IFlhbyBKaWV3ZW4NCj4+ DQo+PiBGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4+IFNl bnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMTQsIDIwMTcgNDozMCBQTQ0KPj4gVG86IFdhbmcsIEpp YW4gSiANCj4+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVs LmNvbT4+DQo+PiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJp Yy5kb25nQGludGVsLmNvbT4+Ow0KPj4gSnVzdGVuLCBKb3JkYW4gTA0KPj4gPGpvcmRhbi5sLmp1 c3RlbkBpbnRlbC5jb208bWFpbHRvOmpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+PjsNCj4+IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz47IFlh bywgSmlld2VuIA0KPj4gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGlu dGVsLmNvbT4+OyBXb2xtYW4sIEF5ZWxsZXQgDQo+PiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29t PG1haWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+PjsgS2lubmV5LCANCj4+IE1pY2hhZWwg RCANCj4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+PjsgDQo+PiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPG1haWx0 bzpzdGFyLnplbmdAaW50ZWwuY29tPj4NCj4+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDQv NF0gT3ZtZlBrZy9RZW11VmlkZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9EeGUgZHJpdmVyIHRvIGJ5 cGFzcyBOVUxMIHBvaW50ZXIgZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQo+Pg0KPj4gT24gMDkvMTQv MTcgMDU6MTcsIFdhbmcsIEppYW4gSiB3cm90ZToNCj4+PiBGb3IgdGhlIHVzZSBvZiBhcmNoIHBy b3RvY29sLCB0aGVyZSdzIG9uZSB0aGluZyBJIG1lbnRpb25lZCBpcyBub3QgDQo+Pj4gYWNjdXJh dGUuIEkgYWN0dWFsbHkgdHJpZWQgZ0RTLT5TZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMoKSBidXQg aXQgDQo+Pj4gY2Fubm90IGNoYW5nZSBwYWdlIGF0dHJpYnV0ZXMuIFRoYXQncyB3aHkgSSBoYXZl IHRvIHR1cm4gdG8gY3B1IGFyY2ggDQo+Pj4gcHJvdG9jb2wuDQo+PiBUaGFuayB5b3UgZm9yIHRo ZSBleHBsYW5hdGlvbi4NCj4+DQo+PiBJbiB0aGF0IGNhc2UsIHdlIGNhbm5vdCBhdm9pZCB2aW9s YXRpbmcgdGhlIFBJIHNwZWMuIEkgYWdyZWUgd2UgY2FuIA0KPj4gYnJlYWsgdGhlIHNwZWMgaWYg aXQgaGFwcGVucyBmb3Igc2VjdXJpdHkgcHVycG9zZXMsIGJ1dCBpbiB0aGF0IGNhc2UsIA0KPj4g SSBiZWxpZXZlIHRoYXQgaGlkaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWhpbmQgYSBsaWJyYXJ5 IGNsYXNzIGlzIA0KPj4gbWFuZGF0b3J5LiBWaWV3ZWQgZnJvbSB0aGUgc3BlYyBzaWRlLCBhY2Nl c3NpbmcgdGhlIENQVSBBcmNoIHByb3RvY29sIA0KPj4gaXMgYSBoYWNrLCBhbmQgc28gaXQgc2hv dWxkIG5vdCBiZSBzcHJlYWQgdG8gdGhlIHNvdXJjZSBjb2RlIG9mIA0KPj4gc2V2ZXJhbCBkcml2 ZXIgbW9kdWxlcy4NCj4+DQo+PiBUaGFuayB5b3UsDQo+PiBMYXN6bG8NCj4+DQo+Pg0KPj4+DQo+ Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+PiBGcm9tOiBlZGsyLWRldmVsIFttYWls dG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmIA0KPj4+IE9mIFdh bmcsIEppYW4gSg0KPj4+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMTQsIDIwMTcgOToxNyBB TQ0KPj4+IFRvOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPG1haWx0bzpsZXJzZWtA cmVkaGF0LmNvbT4+DQo+Pj4gQ2M6IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb208bWFp bHRvOmVyaWMuZG9uZ0BpbnRlbC5jb20+PjsNCj4+PiBKdXN0ZW4sIEpvcmRhbiBMDQo+Pj4gPGpv cmRhbi5sLmp1c3RlbkBpbnRlbC5jb208bWFpbHRvOmpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+ PjsNCj4+PiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmc+OyBZYW8sIEppZXdlbiANCj4+PiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmpp ZXdlbi55YW9AaW50ZWwuY29tPj47IFdvbG1hbiwgQXllbGxldCANCj4+PiA8YXllbGxldC53b2xt YW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+PjsgS2lubmV5LCAN Cj4+PiBNaWNoYWVsIEQgDQo+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzpt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+Ow0KPj4+IFplbmcsIFN0YXIgPHN0YXIuemVuZ0Bp bnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0KPj4+IFN1YmplY3Q6IFJlOiBb ZWRrMl0gW1BBVENIIDQvNF0gT3ZtZlBrZy9RZW11VmlkZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9E eGUgZHJpdmVyIHRvIGJ5cGFzcyBOVUxMIHBvaW50ZXIgZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQo+ Pj4NCj4+PiBUaGFua3MgZm9yIHRoZSBjb21tZW50cyBhbmQgZ29vZCBhZHZpY2VzLiBTb3JyeSB0 aGUgZm9ybWF0IGlzc3Vlcy4NCj4+PiBUaGlzIGlzIG15IGZpcnN0IHBhdGNoIGZvciB0aGlzIHBy b2plY3QuIFRvbyBtYW55IGRldGFpbHMgZm9yIG1lIHRvIA0KPj4+IGdldCBmYW1pbGlhciB3aXRo Lg0KPj4+DQo+Pj4gKDEpIFN1cmUuDQo+Pj4gKDIpIEknbGwgY2hhbmdlIHRoYXQuDQo+Pj4gKDMp IEknbGwgdXNlIHRoZSB0b29sIHRvIGVuc3VyZSB0aGUgcGF0Y2ggZm9ybWF0Lg0KPj4+ICg0KSBJ J2xsIHJlbW92ZSB0aGUgJywnIGluIG5hbWUNCj4+PiAoNSkgSSdsbCBhZGQgbW9yZSBkZXNjcmlw dGlvbiBhYm91dCBpdC4NCj4+PiAoNikgWW91J3JlIHJpZ2h0LiBJIHNob3VsZCB1c2UgU2V0TWVt b3J5U3BhY2VBdHRyaWJ1dGVzKCkgb2YgRFhFIHNlcnZpY2UNCj4+PiAgICAgIGluc3RlYWQuIFRo ZSBvbmx5IHJlYXNvbiBJIGRpZG4ndCBkbyBpdCBpcyB0aGF0IEkgZm91bmQNCj4+PiAgICAgICBH ZXRNZW1vcnlTcGFjZURlc2NyaXB0b3IoKSBkb2Vzbid0IHJldHVybiB0aGUgc2FtZSBpbmZvcm1h dGlvbg0KPj4+ICAgICAgd2hpY2ggU2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzKCkganVzdCBjaGFu Z2VkLiBTbyBJIGZlZWwgdXNpbmcgQ1BVDQo+Pj4gICAgIGFyY2ggcHJvdG9jb2wgaXMgYSBiaXQg c2FmZXIuIEFueXdheSwgSSdsbCBjaGFuZ2UgaXQuDQo+Pj4gKDcpIEkgZGlkIHB1dCB0aG9zZSBt YWNyb3MgaW4gdGhlIGluc3RhbGwgZnVuY3Rpb24gYmVmb3JlLiBUbyByZWR1Y2UgdGhlDQo+Pj4g ICAgICBudW1iZXIgb2YgY2hhbmdlZCBmaWxlcywgSSBtYWRlIGN1cnJlbnQgY2hhbmdlcy4gWW91 J3JlIHJpZ2h0IGl0J3MNCj4+PiAgICAgIG5vdCB3b3J0aHkuDQo+Pj4gKDgpIFVzaW5nIG1hY3Jv IGNhbiBoZWxwIHRoZSByZWFkYWJpbGl0eSwgd2hpY2ggaXMgbW9yZSBpbXBvcnRhbnQgdG8gbWUu DQo+Pj4gICAgIEkga25vdyBmdW5jdGlvbiBjYW4gZG8gdGhlIHNhbWUuIEJ1dCBpdCBsb29rcyBh IGJpdCBoZWF2eSBpbiB0aGlzIHNpdHVhdGlvbi4NCj4+PiAgICAgSSBoYXZlIHRvIGFkbWl0IHJl cGxhY2luZyAgdGhlIG1hY3JvcyB3aXRoIGEgbGlicmFyeSBpcyBhIHZlcnkgZ29vZCBpZGVhLA0K Pj4+ICAgICB3aGljaCBicmluZ3MgdGhlIHNhbWUgcmVhZGFiaWxpdHkuIEkgZGlkbid0IHRoaW5r IG9mIHRoYXQgYmVmb3JlLiBBbHRob3VnaA0KPj4+ICAgICBMaWJyYXJ5IGlzIHN0aWxsIGEgbGl0 dGxlIGJpdCBoZWF2eSB0byBtZSBidXQgaXQncyBpbiBhIGRpZmZlcmVudCB3YXksIEkgdGhpbmsg aXQNCj4+PiAgICAgd29ydGggYSB0cnlpbmcuDQo+Pj4gKDkpIFB1dHRpbmcgYSBzcGFjZSBiZWZv cmUgb3BlbiBwYXJlbnRoZXNpcyBpcyBmb3JjZWQgc3R5bGU/IElmIHNvLCBJJ2xsIGFkZCBpdC4N Cj4+PiAoMTApIFlvdSdyZSByaWdodC4gVXNpbmcgbGlicmFyeSBjYW4gcmVkdWNlIHRoZSBkaXN0 dXJicyB0byBhZmZlY3RlZCBkcml2ZXJzDQo+Pj4gICAgICAgIGJ5IHRoaXMgZmVhdHVyZSB0byB0 aGUgbWluaW11bS4NCj4+Pg0KPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4gRnJv bTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+Pj4gU2VudDogVGh1 cnNkYXksIFNlcHRlbWJlciAxNCwgMjAxNyA3OjM1IEFNDQo+Pj4gVG86IFdhbmcsIEppYW4gSg0K Pj4+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVsLmNvbT4+ DQo+Pj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3Rz LjAxLm9yZz47IEp1c3RlbiwgDQo+Pj4gSm9yZGFuIEwgDQo+Pj4gPGpvcmRhbi5sLmp1c3RlbkBp bnRlbC5jb208bWFpbHRvOmpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+PjsgRG9uZywgDQo+Pj4g RXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJpYy5kb25nQGludGVsLmNvbT4+OyBL aW5uZXksIA0KPj4+IE1pY2hhZWwgRCANCj4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208 bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj47DQo+Pj4gV29sbWFuLCBBeWVsbGV0 DQo+Pj4gPGF5ZWxsZXQud29sbWFuQGludGVsLmNvbTxtYWlsdG86YXllbGxldC53b2xtYW5AaW50 ZWwuY29tPj47IFlhbywgDQo+Pj4gSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86 amlld2VuLnlhb0BpbnRlbC5jb20+PjsgWmVuZywgDQo+Pj4gU3RhciA8c3Rhci56ZW5nQGludGVs LmNvbTxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4+DQo+Pj4gU3ViamVjdDogUmU6IFtlZGsy XSBbUEFUQ0ggNC80XSBPdm1mUGtnL1FlbXVWaWRlb0R4ZTogVXBkYXRlIFFlbXVWaWRlb0R4ZSBk cml2ZXIgdG8gYnlwYXNzIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gaWYgZW5hYmxlZC4NCj4+Pg0K Pj4+IEhpLA0KPj4+DQo+Pj4gc29tZSBvZiB0aGUgcG9pbnRzIEknbSBnb2luZyB0byBtYWtlIGhh dmUgYWxyZWFkeSBiZWVuIHBvaW50ZWQgb3V0IA0KPj4+IGJ5DQo+Pj4gSm9yZGFuOg0KPj4+DQo+ Pj4gKDEpIFdoZW4gcG9zdGluZyBhIHBhdGNoIHNlcmllcywgcGxlYXNlIGNvbGxlY3QgdGhlIENj OiB0YWdzIGZyb20gDQo+Pj4gYWxsIG9mIHRoZSBwYXRjaGVzLCBhbmQgYWRkIHRoZW0gKmFsbCog dG8gdGhlIGNvdmVyIGxldHRlci4gVGhpcyB3YXkgDQo+Pj4gZXZlcnlvbmUgd2lsbCBnZXQgYSBw ZXJzb25hbCBjb3B5IG9mIHRoZSBnZW5lcmFsIGRlc2NyaXB0aW9uLg0KPj4+DQo+Pj4NCj4+PiAo MikgVGhlIHN1YmplY3QgbGluZSBpcyB0b28gbG9uZy4gT25lIHBvc3NpYmxlIHNpbXBsaWZpY2F0 aW9uOg0KPj4+DQo+Pj4gT3ZtZlBrZy9RZW11VmlkZW9EeGU6IGJ5cGFzcyBOVUxMIHBvaW50ZXIg ZGV0ZWN0aW9uDQo+Pj4NCj4+Pg0KPj4+IE9uIDA5LzEzLzE3IDExOjI1LCBXYW5nLCBKaWFuIEog d3JvdGU6DQo+Pj4+IFFlbXVWaWRlb0R4ZSBkcml2ZXIgd2lsbCBpbnN0YWxsIFZCRSBTSElNIGlu dG8gcGFnZSAwLiBJZiBOVUxMIA0KPj4+PiBwb2ludGVyIGRldGVjdGlvbiBpcyBlbmFibGVkLCBw YWdlIDAgbXVzdCBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IA0KPj4+PiBiZWZvcmUgaW5zdGFsbGlu ZyBhbmQgZGlzYWJsZWQgYWdhaW4gYWZ0ZXJ3YXJkcy4gRm9yIFdpbmRvd3MgNyANCj4+Pj4gYm9v dCwNCj4+Pj4gQklUNyBvZiBQY2ROdWxsUG9pbnRlckRldGVjdGlvblByb3BlcnR5TWFzayBtdXN0 IHN0aWxsIGJlIHNldCB0byBhdm9pZCBoYW5nLg0KPj4+DQo+Pj4gKDMpIFN1YmplY3QgbGluZSBh bmQgY29tbWl0IG1lc3NhZ2UgYm90aCBzaG91bGQgbm90IGV4Y2VlZCA3NCANCj4+PiBjaGFyYWN0 ZXJzIGxpbmUgbGVuZ3RoLiAoTm90IHN1cmUgaG93IG1hbnkgY2hhcnMgUGF0Y2hDaGVjay5weSAN Cj4+PiBhY3R1YWxseSBlbmZvcmNlcywgSSBhbHdheXMgc3RpY2sgd2l0aCA3NCwgZm9sbG93aW5n IHRoZSBMaW51eCANCj4+PiBrZXJuZWwNCj4+PiB0cmFkaXRpb24uKQ0KPj4+DQo+Pj4gSSByZXdy YXBwZWQgdGhlIGNvbW1pdCBtZXNzYWdlIGhlcmUgZm9yIHJlYWRhYmlsaXR5Lg0KPj4+DQo+Pj4N Cj4+Pj4NCj4+Pj4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpq aWV3ZW4ueWFvQGludGVsLmNvbT4+DQo+Pj4+IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRl bC5jb208bWFpbHRvOmVyaWMuZG9uZ0BpbnRlbC5jb20+Pg0KPj4+PiBDYzogU3RhciBaZW5nIDxz dGFyLnplbmdAaW50ZWwuY29tPG1haWx0bzpzdGFyLnplbmdAaW50ZWwuY29tPj4NCj4+Pj4gQ2M6 IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb208bWFpbHRvOmxlcnNla0ByZWRoYXQuY29t Pj4NCj4+Pj4gQ2M6IEp1c3RlbiwgSm9yZGFuIEwNCj4+Pj4gPGpvcmRhbi5sLmp1c3RlbkBpbnRl bC5jb208bWFpbHRvOmpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+Pg0KPj4+PiBDYzogS2lubmV5 LCBNaWNoYWVsIEQNCj4+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4+DQo+Pj4+IENjOiBXb2xtYW4sIEF5ZWxsZXQNCj4+Pj4g PGF5ZWxsZXQud29sbWFuQGludGVsLmNvbTxtYWlsdG86YXllbGxldC53b2xtYW5AaW50ZWwuY29t Pj4NCj4+Pj4gU3VnZ2VzdGVkLWJ5OiBXb2xtYW4sIEF5ZWxsZXQNCj4+Pj4gPGF5ZWxsZXQud29s bWFuQGludGVsLmNvbTxtYWlsdG86YXllbGxldC53b2xtYW5AaW50ZWwuY29tPj4NCj4+Pj4gQ29u dHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPj4+ PiBTaWduZWQtb2ZmLWJ5OiBXYW5nLCBKaWFuIEoNCj4+Pj4gPGppYW4uai53YW5nQGludGVsLmNv bTxtYWlsdG86amlhbi5qLndhbmdAaW50ZWwuY29tPj4NCj4+Pg0KPj4+ICg0KSBJIHRoaW5rIHRo aXMgaXMgYWxzbyBzb21ldGhpbmcgdGhhdCBKb3JkYW4gaGFkIHBvaW50ZWQgb3V0IGEgDQo+Pj4g bG9uZyB0aW1lIGFnbyAoYXBvbG9naWVzIGlmIEkgbWlzLXJlbWVtYmVyKToNCj4+Pg0KPj4+IFRo ZSBzdHJpbmdzIGFmdGVyIHRoZSB0YWdzIHNob3VsZCBmb3JtIGNvcnJlY3QgZW1haWwgYWRkcmVz c2VzLCBhbmQgDQo+Pj4gaWYgdGhlcmUgYXJlIHZhcmlvdXMgZW1haWwgbWV0YS1jaGFyYWN0ZXJz IGluIHRoZW0sIGxpa2UgIi4iIChkb3QpIGFuZCAiLCINCj4+PiAoY29tbWEpLCB0aGVuIHRoZXkg c2hvdWxkIGJlIHF1b3RlZCwgbGlrZSB0aGlzOg0KPj4+DQo+Pj4gQ2M6ICJKdXN0ZW4sIEpvcmRh biBMIiANCj4+PiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVz dGVuQGludGVsLmNvbT4+DQo+Pj4gQ2M6ICJLaW5uZXksIE1pY2hhZWwgRCIgDQo+Pj4gPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+ DQo+Pj4gQ2M6ICJXb2xtYW4sIEF5ZWxsZXQiIA0KPj4+IDxheWVsbGV0LndvbG1hbkBpbnRlbC5j b208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+DQo+Pj4gU3VnZ2VzdGVkLWJ5OiAi V29sbWFuLCBBeWVsbGV0IiANCj4+PiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzph eWVsbGV0LndvbG1hbkBpbnRlbC5jb20+Pg0KPj4+IFNpZ25lZC1vZmYtYnk6ICJXYW5nLCBKaWFu IEoiIA0KPj4+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVs LmNvbT4+DQo+Pj4NCj4+PiBJZiB5b3UgbG9vayBhdCB0aGUgYWN0dWFsIGFkZHJlc3NlcyBvbiB0 aGUgZW1haWxzIHRoYXQgaGF2ZSBiZWVuIA0KPj4+IHNlbnQgb3V0LCB5b3UgY2FuIHNlZSB0aGV5 IGFyZSBhbGwgbWFsZm9ybWVkLiBGb3IgZXhhbXBsZSwgSSBoYXZlOg0KPj4+DQo+Pj4gIkpvcmRh biBMDQo+Pj4gPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb208bWFpbHRvOmpvcmRhbi5sLmp1c3Rl bkBpbnRlbC5jb20+PiIgZm9yIEpvcmRhbiAtLSB0aGUgcGFydCBiZWZvcmUgdGhlIGNvbW1hIHdh cyB0YWtlbiB0byBiZSBhIHNlcGFyYXRlIGVtYWlsIGFkZHJlc3MgKGEgbWFsZm9ybWVkIG9uZSku DQo+Pj4NCj4+PiBBdCBsZWFzdCBmb3IgbXkgcmVwbHksIEkgaGF2ZSBmaXhlZCB1cCB0aGUgZW1h aWwgYWRkcmVzc2VzLg0KPj4+DQo+Pj4NCj4+PiAoNSkgVGhlIGNvbW1pdCBtZXNzYWdlIG1lbnRp b25zIEJJVDcgb2YgdGhlIG5ldyBQQ0QuDQo+Pj4NCj4+PiBGaXJzdCwgdGhhbmtzIGZvciBjaGVj a2luZyBXaW5kb3dzIDcgYm9vdCAoYW5kIEknbSBoYXBweSB0aGF0IEkgZ290IA0KPj4+IHN1c3Bp Y2lvdXMgb2YgdGhlIGZlYXR1cmUgd2l0aCByZWdhcmQgdG8gV2luZG93cyA3KS4gSSB0aGluayBC SVQ3IGlzIA0KPj4+IGEgZ29vZCBmZWF0dXJlLg0KPj4+DQo+Pj4gSG93ZXZlciwgcGxlYXNlIGlu Y2x1ZGUgdGhlIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoYXQgZmVhdHVyZSBpbiB0aGUgDQo+Pj4g Y29tbWl0IG1lc3NhZ2UgLS0gaXQgaXMgb25lIHNlbnRlbmNlOyAiRGlzYWJsZSBOVUxMIHBvaW50 ZXIgDQo+Pj4gZGV0ZWN0aW9uIGp1c3QgYWZ0ZXIgRW5kT2ZEeGUuIg0KPj4+DQo+Pj4gKEkgdGhp bmsgQklUNyBpcyBhIHJlYWxseSBzbWFydCBmZWF0dXJlLCBhbmQgSSBsaWtlICpob3cqIGl0IGlz IHVzZWQgDQo+Pj4gaW4gIk5VTExfREVURUNUSU9OX0VOQUJMRUQiIGJlbG93LiBUaGUgY2hlY2sg bWVhbnMsICJpZiB0aGUgDQo+Pj4gcHJvdGVjdGlvbiBpcyBlbmFibGVkIGZvciBEWEUsIGFuZCAq bm90IGRpc2FibGVkKiAoPT0gYWxzbyBlbmFibGVkKSBhZnRlciBFbmQtb2YtRHhlIi4NCj4+Pg0K Pj4+IFRoaXMgZG9lc24ndCBtZWFuIHRoYXQgSSBsaWtlIHRoZSBOVUxMX0RFVEVDVElPTl9FTkFC TEVEIG1hY3JvIA0KPj4+IGl0c2VsZjsgbW9yZSBvbiB0aGF0IGJlbG93LikNCj4+Pg0KPj4+DQo+ Pj4+IC0tLQ0KPj4+PiAgT3ZtZlBrZy9RZW11VmlkZW9EeGUvRHJpdmVyLmMgICAgICAgICB8IDE1 ICsrKysrKysrKysrKysrLQ0KPj4+PiAgT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdS5oICAgICAg ICAgICB8IDE2ICsrKysrKysrKysrKysrKysNCj4+Pj4gIE92bWZQa2cvUWVtdVZpZGVvRHhlL1Fl bXVWaWRlb0R4ZS5pbmYgfCAgMiArKw0KPj4+PiAgMyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+Pj4+DQo+Pj4+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1Fl bXVWaWRlb0R4ZS9Ecml2ZXIuYyANCj4+Pj4gYi9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9Ecml2ZXIu YyBpbmRleCAwZGNlODBlNTliLi5lZTBlZWQ3MjE0IDEwMDY0NA0KPj4+PiAtLS0gYS9Pdm1mUGtn L1FlbXVWaWRlb0R4ZS9Ecml2ZXIuYw0KPj4+PiArKysgYi9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9E cml2ZXIuYw0KPj4+PiBAQCAtMTk0LDYgKzE5NCw3IEBAIFFlbXVWaWRlb0NvbnRyb2xsZXJEcml2 ZXJTdGFydCAoDQo+Pj4+ICAgIFBDSV9UWVBFMDAgICAgICAgICAgICAgICAgICAgICAgICBQY2k7 DQo+Pj4+ICAgIFFFTVVfVklERU9fQ0FSRCAgICAgICAgICAgICAgICAgICAqQ2FyZDsNCj4+Pj4g ICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgICAgICAgICpDaGlsZFBjaUlvOw0KPj4+PiAr ICBFRklfQ1BVX0FSQ0hfUFJPVE9DT0wgICAgICAgICAgICAgKkNwdTsNCj4+Pg0KPj4+ICg2KSBJ IGJlbGlldmUgSSBtZW50aW9uZWQgdGhpcyBpbiB0aGUgZWFybGllciBkaXNjdXNzaW9uLCBpbiBz b21lIA0KPj4+IGZvcm0sIGJ1dCBub3cgSSdsbCBzYXkgaXQgYWdhaW46DQo+Pj4NCj4+PiBBIFVF RkkgZHJpdmVyIGhhcyBubyBidXNpbmVzcyBwb2tpbmcgYXQgdGhlIENQVSBBcmNoIHByb3RvY29s LiBUaGUgDQo+Pj4gUEkgc3BlYyAoMS42KSBzdGF0ZXMsDQo+Pj4NCj4+PiAgIDEyLjMgQ1BVIEFy Y2hpdGVjdHVyYWwgUHJvdG9jb2wNCj4+PiAgIEVGSV9DUFVfQVJDSF9QUk9UT0NPTA0KPj4+DQo+ Pj4gICBTdW1tYXJ5DQo+Pj4NCj4+PiAgIEFic3RyYWN0cyB0aGUgcHJvY2Vzc29yIHNlcnZpY2Vz IHRoYXQgYXJlIHJlcXVpcmVkIHRvIGltcGxlbWVudCBzb21lDQo+Pj4gICBvZiB0aGUgRFhFIHNl cnZpY2VzLiBUaGlzIHByb3RvY29sIG11c3QgYmUgcHJvZHVjZWQgYnkgYSBib290IHNlcnZpY2UN Cj4+PiAgIG9yIHJ1bnRpbWUgRFhFIGRyaXZlciBhbmQgbWF5IG9ubHkgYmUgY29uc3VtZWQgYnkg dGhlIERYRSBGb3VuZGF0aW9uDQo+Pj4gICBhbmQgRFhFIGRyaXZlcnMgdGhhdCBwcm9kdWNlIGFy Y2hpdGVjdHVyYWwgcHJvdG9jb2xzLg0KPj4+DQo+Pj4gVGhlIERYRSBjb3JlIGlzIG9idmlvdXNs eSBmcmVlIHRvIHVzZSB0aGUgQ1BVIEFyY2ggcHJvdG9jb2wsIGJ1dCBhIA0KPj4+IFVFRkkgZHJp dmVyIGlzIGZvcmJpZGRlbiBmcm9tIGl0LCAqZXZlbiBpZiogd2Ugc2F5IHRoYXQsIGluIHRoaXMg DQo+Pj4gVUVGSSBkcml2ZXIsIHdlIGFyZSBnb2luZyB0byB1c2UgRFhFIHNlcnZpY2VzLiAoV2hp Y2ggY29tZSBmcm9tIHRoZSANCj4+PiBQSSBzcGVjLCBhbmQgbm90IHRoZSBVRUZJIHNwZWMuKQ0K Pj4+DQo+Pj4gVGhlcmVmb3JlLCBoZXJlIHdlIGhhdmUgdG8gdXNlIGdEUy0+U2V0TWVtb3J5U3Bh Y2VBdHRyaWJ1dGVzKCkuDQo+Pj4NCj4+PiBUaGUgZ0RTLT5TZXRNZW1vcnlTcGFjZUF0dHJpYnV0 ZXMoKSBzZXJ2aWNlIGRlcGVuZHMgb24gdGhlIENQVSBBcmNoIA0KPj4+IHByb3RvY29sLCBieSB0 aGUgUEkgc3BlYy4gSXQgaXMgbm90IGVhc3kgdG8gc2VlLCBiZWNhdXNlIHRoZSBQSSBzcGVjIA0K Pj4+IGhhcyBhIGZvcm1hdHRpbmcgZXJyb3IgaW4gdGhpcyBhcmVhLiBJZiB5b3UgbG9vayB1bmRl ciANCj4+PiBHZXRNZW1vcnlTcGFjZURlc2NyaXB0b3IoKSwgdGhlcmUgaXMgYW4gZXJyb3IgY29k ZQ0KPj4+DQo+Pj4gICBFRklfTk9UX0FWQUlMQUJMRV9ZRVQgIFRoZSBhdHRyaWJ1dGVzIGNhbm5v dCBiZSBzZXQgYmVjYXVzZSBDUFUNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0 ZWN0dXJhbCBwcm90b2NvbCBpcyBub3QgYXZhaWxhYmxlIHlldC4NCj4+Pg0KPj4+IE9idmlvdXNs eSB0aGlzIGVycm9yIGNvZGUgYmVsb25ncyB0byBTZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMoKSwg bm90IA0KPj4+IEdldE1lbW9yeVNwYWNlRGVzY3JpcHRvcigpLg0KPj4+DQo+Pj4gQW55d2F5LCBn RFMgc2hvdWxkIGJlIHVzZWQsIGFyY2hpdGVjdHVyYWwgcHJvdG9jb2xzIHNob3VsZG4ndCBiZS4N Cj4+Pg0KPj4+DQo+Pj4+DQo+Pj4+ICAgIE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9DQUxM QkFDSyk7DQo+Pj4+DQo+Pj4+IEBAIC00NzksNyArNDgwLDE5IEBAIFFlbXVWaWRlb0NvbnRyb2xs ZXJEcml2ZXJTdGFydCAoICAjaWYgZGVmaW5lZA0KPj4+PiBNREVfQ1BVX0lBMzIgfHwgZGVmaW5l ZCBNREVfQ1BVX1g2NA0KPj4+PiAgICBpZiAoUHJpdmF0ZS0+VmFyaWFudCA9PSBRRU1VX1ZJREVP X0JPQ0hTX01NSU8gfHwNCj4+Pj4gICAgICAgIFByaXZhdGUtPlZhcmlhbnQgPT0gUUVNVV9WSURF T19CT0NIUykgew0KPj4+PiAtICAgIEluc3RhbGxWYmVTaGltIChDYXJkLT5OYW1lLCBQcml2YXRl LT5HcmFwaGljc091dHB1dC5Nb2RlLT5GcmFtZUJ1ZmZlckJhc2UpOw0KPj4+PiArICAgIC8vDQo+ Pj4+ICsgICAgLy8gUHJlcGFyZSBDUFUgYXJjaCBwcm90b2NvbCBmb3IgTlVMTCBwb2ludGVyIGRl dGVjdGlvbg0KPj4+PiArICAgIC8vDQo+Pj4+ICsgICAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90 b2NvbCAoDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICZnRWZpQ3B1QXJjaFByb3RvY29sR3Vp ZCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgKFZPSUQgKiopICZDcHUNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgKTsNCj4+Pj4g KyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPj4+PiArDQo+Pj4+ICsgICAgRElTQUJM RV9OVUxMX0RFVEVDVElPTihDcHUpOw0KPj4+PiArICAgICAgSW5zdGFsbFZiZVNoaW0gKENhcmQt Pk5hbWUsIFByaXZhdGUtPkdyYXBoaWNzT3V0cHV0Lk1vZGUtPkZyYW1lQnVmZmVyQmFzZSk7DQo+ Pj4+ICsgICAgRU5BQkxFX05VTExfREVURUNUSU9OKENwdSk7DQo+Pj4NCj4+PiAoNykgVGhlIE5V TEwgZGV0ZWN0aW9uIGRpc2FibGluZyBhbmQgZW5hYmxpbmcgc2hvdWxkIGJyYWNrZXQgdGhlIA0K Pj4+IGFmZmVjdGVkIGNvZGUgYXMgdGlnaHRseSBhcyBwb3NzaWJsZS4NCj4+Pg0KPj4+IFNvIHBs ZWFzZSBtb3ZlIHRoaXMgaW50byBJbnN0YWxsVmJlU2hpbSgpIGFjY29yZGluZ2x5Lg0KPj4+DQo+ Pj4NCj4+Pj4gICAgfQ0KPj4+PiAgI2VuZGlmDQo+Pj4+DQo+Pj4+IGRpZmYgLS1naXQgYS9Pdm1m UGtnL1FlbXVWaWRlb0R4ZS9RZW11LmggDQo+Pj4+IGIvT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVt dS5oIGluZGV4IDdmYmIyNWIzZWYuLmJiM2JjNmViMGYgMTAwNjQ0DQo+Pj4+IC0tLSBhL092bWZQ a2cvUWVtdVZpZGVvRHhlL1FlbXUuaA0KPj4+PiArKysgYi9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9R ZW11LmgNCj4+Pj4gQEAgLTI1LDYgKzI1LDcgQEANCj4+Pj4gICNpbmNsdWRlIDxQcm90b2NvbC9Q Y2lJby5oPg0KPj4+PiAgI2luY2x1ZGUgPFByb3RvY29sL0RyaXZlclN1cHBvcnRlZEVmaVZlcnNp b24uaD4NCj4+Pj4gICNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRoLmg+DQo+Pj4+ICsjaW5j bHVkZSA8UHJvdG9jb2wvQ3B1Lmg+DQo+Pj4+DQo+Pj4+ICAjaW5jbHVkZSA8TGlicmFyeS9EZWJ1 Z0xpYi5oPg0KPj4+PiAgI2luY2x1ZGUgPExpYnJhcnkvVWVmaURyaXZlckVudHJ5UG9pbnQuaD4g QEAgLTgyLDYgKzgzLDIxIEBAIA0KPj4+PiB0eXBlZGVmIHN0cnVjdCB7DQo+Pj4+DQo+Pj4+ICAj ZGVmaW5lIEdSQVBISUNTX09VVFBVVF9JTlZBTElERV9NT0RFX05VTUJFUiAgMHhmZmZmDQo+Pj4+ DQo+Pj4+ICsvLw0KPj4+PiArLy8gVkJFIGNvZGUgd2lsbCBhY2Nlc3MgbWVtb3J5IGJldHdlZW4g MC00MDk1IHdoaWNoIHdpbGwgY2F1c2UgDQo+Pj4+ICtwYWdlIGZhdWx0IGV4Y2VwdGlvbiAvLyBp ZiBOVUxMIHBvaW50ZXIgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcyBlbmFibGVkLg0KPj4+PiArRm9s bG93aW5nIG1hY3JvcyBjYW4gYmUgdXNlZCB0byAvLyBkaXNhYmxlL2VuYWJsZSBOVUxMIHBvaW50 ZXIgZGV0ZWN0aW9uIGJlZm9yZS9hZnRlciBhY2Nlc3NpbmcgdGhvc2UgbWVtb3J5Lg0KPj4+PiAr Ly8NCj4+Pj4gKyNkZWZpbmUgTlVMTF9ERVRFQ1RJT05fRU5BQkxFRCAgKChQY2RHZXQ4KFBjZE51 bGxQb2ludGVyRGV0ZWN0aW9uUHJvcGVydHlNYXNrKSAmIChCSVQwfEJJVDcpKSA9PSBCSVQwKQ0K Pj4+PiArI2RlZmluZSBESVNBQkxFX05VTExfREVURUNUSU9OKENwdSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+Pj4+ICsgIGlmIChOVUxMX0RFVEVDVElP Tl9FTkFCTEVEKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4+Pj4gKyAgICAoQ3B1KS0+U2V0TWVtb3J5QXR0cmlidXRlcygoQ3B1KSwgMCwgRUZJ X1BBR0VfU0laRSwgMCk7ICAgICAgICAgICAgICAgICAgICAgXA0KPj4+PiArICB9DQo+Pj4+ICsj ZGVmaW5lIEVOQUJMRV9OVUxMX0RFVEVDVElPTihDcHUpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4+Pj4gKyAgaWYgKE5VTExfREVURUNUSU9OX0VOQUJM RUQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K Pj4+PiArICAgIChDcHUpLT5TZXRNZW1vcnlBdHRyaWJ1dGVzKChDcHUpLCAwLCBFRklfUEFHRV9T SVpFLCBFRklfTUVNT1JZX1JQKTsgICAgICAgICBcDQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+DQo+ Pj4gKDgpIEkgYmVsaWV2ZSBKb3JkYW4gdG9vIGNvbW1lbnRlZCBvbiB0aGVzZSBtYWNyb3MgZWxz ZXdoZXJlICh1bmRlciANCj4+PiBwYXRjaCAxLzQpLg0KPj4+DQo+Pj4gSW4gbXkgb3Bpbmlvbiwg dGhpcyBmdW5jdGlvbmFsaXR5IHNob3VsZCBiZSBleHRyYWN0ZWQgaW50byBhIGxpYnJhcnkgDQo+ Pj4gY2xhc3MsIHdpdGggYSBsaWJyYXJ5IGluc3RhbmNlIHRoYXQgaXMgc3VpdGFibGUgZm9yIGF0 IGxlYXN0IA0KPj4+IFVFRklfRFJJVkVSIG1vZHVsZXMuIChNYXliZSBldmVuIGZvciBEWEVfRFJJ VkVSIG1vZHVsZXMuKQ0KPj4+DQo+Pj4gWW91IGNvdWxkIGFkZCBhIHNlcGFyYXRlIGxpYnJhcnkg aW5zdGFuY2UgZm9yIFNNTSBkcml2ZXJzLCBpZiB0aGF0IA0KPj4+IHdlcmUgbmVjZXNzYXJ5Lg0K Pj4+DQo+Pj4NCj4+PiAoOSkgU3R5bGUgY29tbWVudDogcGxlYXNlIHB1dCBvbmUgc3BhY2UgY2hh cmFjdGVyIGJldHdlZW4gdGhlIA0KPj4+IGZ1bmN0aW9uIGRlc2lnbmF0b3IgYW5kIHRoZSBvcGVu aW5nIHBhcmVudGhlc2lzLg0KPj4+DQo+Pj4NCj4+Pj4gIC8vDQo+Pj4+ICAvLyBRRU1VIFZpZGVv IFByaXZhdGUgRGF0YSBTdHJ1Y3R1cmUgIC8vIGRpZmYgLS1naXQgDQo+Pj4+IGEvT3ZtZlBrZy9R ZW11VmlkZW9EeGUvUWVtdVZpZGVvRHhlLmluZg0KPj4+PiBiL092bWZQa2cvUWVtdVZpZGVvRHhl L1FlbXVWaWRlb0R4ZS5pbmYNCj4+Pj4gaW5kZXggN2M3ZDQyOWJjYS4uNWQxNjZlYjk5YyAxMDA2 NDQNCj4+Pj4gLS0tIGEvT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdVZpZGVvRHhlLmluZg0KPj4+ PiArKysgYi9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11VmlkZW9EeGUuaW5mDQo+Pj4+IEBAIC03 Miw3ICs3Miw5IEBADQo+Pj4+ICAgIGdFZmlHcmFwaGljc091dHB1dFByb3RvY29sR3VpZCAgICAg ICAgICAgICAgICAjIFBST1RPQ09MIEJZX1NUQVJUDQo+Pj4+ICAgIGdFZmlEZXZpY2VQYXRoUHJv dG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAjIFBST1RPQ09MIEJZX1NUQVJUDQo+Pj4+ICAg IGdFZmlQY2lJb1Byb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAjIFBST1RPQ09M IFRPX1NUQVJUDQo+Pj4+ICsgIGdFZmlDcHVBcmNoUHJvdG9jb2xHdWlkDQo+Pj4+DQo+Pj4+ICBb UGNkXQ0KPj4+PiAgICBnT3B0aW9uUm9tUGtnVG9rZW5TcGFjZUd1aWQuUGNkRHJpdmVyU3VwcG9y dGVkRWZpVmVyc2lvbg0KPj4+PiArICANCj4+Pj4gKyBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkTnVsbFBvaW50ZXJEZXRlY3Rpb25Qcm9wZXJ0eU1hcw0KPj4+PiArIGsNCj4+Pg0K Pj4+ICgxMCkgSW5zdGVhZCBvZiB0aGVzZSwgdGhlIGxpYnJhcnkgY2xhc3MgdGhhdCBJIGRlc2Ny aWJlZCB1bmRlciAoOCkgDQo+Pj4gc2hvdWxkIGJlIGFkZGVkIGhlcmUuDQo+Pj4NCj4+PiBBbnkg ZnVydGhlciBkZXBlbmRlbmNpZXMgbGlrZSBQQ0RzLCBwcm90b2NvbHMgZXRjIHNob3VsZCBiZSAN Cj4+PiBpbmhlcml0ZWQgYnkgdGhlIGRyaXZlciB0aHJvdWdoIHRoZSBsaWJyYXJ5IGluc3RhbmNl IHRoYXQgdGhlIA0KPj4+IHBsYXRmb3JtIERTQyBmaWxlIHJlc29sdmVzIHRoZSBsaWJyYXJ5IGNs YXNzIHRvLg0KPj4+DQo+Pj4gQm9udXM6IHNob3VsZCB5b3UgcmVhbGl6ZSB0aGF0IHRoZSBmZWF0 dXJlIGlzIGltcG9zc2libGUgdG8gDQo+Pj4gaW1wbGVtZW50IHdpdGhvdXQgYWNjZXNzaW5nIHRo ZSBDUFUgQXJjaCBwcm90b2NvbCBkaXJlY3RseSwgeW91IA0KPj4+IGNvdWxkIGhpZGUgdGhlIHBy b3RvY29sIEdVSUQgZGVwZW5kZW5jeSBpbiB0aGUgbGlicmFyeSBpbnN0YW5jZSBJTkYgDQo+Pj4g ZmlsZSwgYW5kIEknZCBiZSBub25lIHRoZSB3aXNlci4NCj4+Pg0KPj4+IC4uLiBXZWxsLCBJIGNv dWxkIGF0IGxlYXN0IHByZXRlbmQgdGhhdC4gOikNCj4+Pg0KPj4+IFRoYW5rcywNCj4+PiBMYXN6 bG8NCj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K Pj4+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+Pj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8 bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0KPj4+IGh0dHBzOi8vbGlzdHMuMDEub3Jn L21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0KPj4+DQo+IA0KDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QN CmVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQpodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2VkazItZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQplZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmcNCmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0K