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=star.zeng@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 70E9E2113DA1B for ; Tue, 12 Jun 2018 02:41:52 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Jun 2018 02:41:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,214,1526367600"; d="scan'208";a="56437067" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga002.fm.intel.com with ESMTP; 12 Jun 2018 02:41:51 -0700 Received: from fmsmsx112.amr.corp.intel.com (10.18.116.6) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Jun 2018 02:41:51 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX112.amr.corp.intel.com (10.18.116.6) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Jun 2018 02:41:50 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.223]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.51]) with mapi id 14.03.0319.002; Tue, 12 Jun 2018 17:41:49 +0800 From: "Zeng, Star" To: "Yao, Jiewen" , Ard Biesheuvel CC: "Kinney, Michael D" , "edk2-devel@lists.01.org" , "leif.lindholm@linaro.org" , "Zeng, Star" Thread-Topic: [edk2] [PATCH v2 2/5] MdeModulePkg/DxeCapsuleLibFmp: permit ProcessCapsules () to be called once Thread-Index: AQHT/vYcKkNssoAmi023fUFBh8KTpaRVxhmAgAAA2gCAAq9pAIAAARSAgACr9YCAADONgIAABW8AgADK1QCAAFaKAIAAAOUAgAAVEoCAAAMjgIAAElKAgAG7rbA= Date: Tue, 12 Jun 2018 09:41:47 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103BB55EA8@shsmsx102.ccr.corp.intel.com> References: <20180608065811.2065-1-ard.biesheuvel@linaro.org> <20180608065811.2065-3-ard.biesheuvel@linaro.org> <74D8A39837DF1E4DA445A8C0B3885C503AC3515B@shsmsx102.ccr.corp.intel.com> <6534F306-C3E7-40D2-84F4-D409BF1F7B68@linaro.org> <74D8A39837DF1E4DA445A8C0B3885C503AC3A387@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AC3ADC8@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AC3ADF5@shsmsx102.ccr.corp.intel.com> <87F9382F-EBA0-4715-B323-FB0C6F8DE5A2@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AC3CBE3@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AC3CF5F@shsmsx102.ccr.corp.intel.com> In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503AC3CF5F@shsmsx102.ccr.corp.intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v2 2/5] MdeModulePkg/DxeCapsuleLibFmp: permit ProcessCapsules () to be called once 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: Tue, 12 Jun 2018 09:41:53 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBhbSB0aGlua2luZyB0aGF0IGNvdWxkIHBsYXRmb3JtIEJEUyBwYXJzZSBDQVBTVUxFIEhPQiBh bmQgY2FsbCBQcm9jZXNzQ2Fwc3VsZUltYWdlIGJ5IGl0c2VsZiBpbiBpdHMgd2lsbGluZyBwaGFz ZSB3aXRoIGZsZXhpYmlsaXR5IGZvciB0aGUgY2FzZT8NCg0KDQpUaGFua3MsDQpTdGFyDQotLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogWWFvLCBKaWV3ZW4gDQpTZW50OiBNb25kYXks IEp1bmUgMTEsIDIwMTggMTE6MTIgUE0NClRvOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2 ZWxAbGluYXJvLm9yZz4NCkNjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgbGVpZi5saW5kaG9sbUBsaW5hcm8u b3JnOyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtlZGsy XSBbUEFUQ0ggdjIgMi81XSBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDogcGVybWl0IFBy b2Nlc3NDYXBzdWxlcyAoKSB0byBiZSBjYWxsZWQgb25jZQ0KDQpUaGUgZGlmZmVyZW5jZSBiZXR3 ZWVuIDFzdCBjYWxsIGFuZCAybmQgY2FsbCBpcyB0aGF0OiBUaGUgc3lzdGVtIHdpbGwgcmVzZXQg ZXZlbiB0aGVyZSBhcmUgY2Fwc3VsZXMgbm90IGRpc3BhdGNoZWQgaW4gMm5kIGNhbGwuDQoNCklm IGEgcGxhdGZvcm0ganVzdCBjYWxscyBvbmNlIGFuZCB0aGVyZSBpcyAxIGRldmljZSBGTVAgbm90 IGRpc3BhdGNoZWQgeWV0LCBob3cgdGhlIGNvcmUgbGliIGtub3dzIGl0IHNob3VsZCByZXNldCB0 aGUgc3lzdGVtIG9yIGl0IHNob3VsZCB3YWl0IGZvciB0aGUgc2Vjb25kIGNhbGwgYWZ0ZXIgY29u bmVjdCBhbGw/DQoNCklmIHlvdSBoYXZlIGFueSB0aG91Z2h0LCBwbGVhc2Ugc2hhcmUgd2l0aCB1 cy4NCg0KDQpTdW1tYXJpemUgc29tZSByZXF1aXJlbWVudDoNCjEpIEVtYmVkZGVkIGRyaXZlciBt dXN0IGJlIGRpc3BhdGNoZWQgYWZ0ZXIgRW5kT2ZEeGUuDQoyKSBTeXN0ZW0gQ2Fwc3VsZSBtdXN0 IGJlIGRpc3BhdGNoZWQgYmVmb3JlIHN5c3RlbSBmaXJtd2FyZSBsb2NrLiAoSWRlYWxseSBpdCBz aG91bGQgYmUgRW5kT2ZEeGUsIGEgcGxhdGZvcm0gbWF5IGNob29zZSBvdGhlcnMpDQozKSBXaGVu IHRoZSBzeXN0ZW0gY2Fwc3VsZSBpcyBkaXNwYXRjaGVkLCB0aGUgZHJpdmVyIEZNUCBtaWdodCBi ZSByZWFkeSBvciBtaWdodCBub3QgYmUgcmVhZHkgeWV0Lg0KNCkgVGhlIGNvcmUgY29kZSBuZWVk IG1ha2Ugc3VyZSB0aGUgcGxhdGZvcm0gY29kZSBkaXNwYXRjaCB0aGUgY2Fwc3VsZSBpbiBhIHJp Z2h0IHRpbWUuDQoNClRoYW5rIHlvdQ0KWWFvIEppZXdlbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNA bGlzdHMuMDEub3JnXSBPbiBCZWhhbGYgT2YgDQo+IEFyZCBCaWVzaGV1dmVsDQo+IFNlbnQ6IE1v bmRheSwgSnVuZSAxMSwgMjAxOCA3OjA3IEFNDQo+IFRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlh b0BpbnRlbC5jb20+DQo+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+OyANCj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IGxlaWYubGluZGhvbG1AbGlu YXJvLm9yZzsgWmVuZywgU3RhciANCj4gPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6 IFJlOiBbZWRrMl0gW1BBVENIIHYyIDIvNV0gTWRlTW9kdWxlUGtnL0R4ZUNhcHN1bGVMaWJGbXA6 IA0KPiBwZXJtaXQgUHJvY2Vzc0NhcHN1bGVzICgpIHRvIGJlIGNhbGxlZCBvbmNlDQo+IA0KPiBP biAxMSBKdW5lIDIwMTggYXQgMTU6NTUsIFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNv bT4gd3JvdGU6DQo+ID4gQWguIEdvb2QgcG9pbnQuDQo+ID4NCj4gPiBJIHRoaW5rIHRoZSBlbWJl ZGRlZCBkcml2ZXIgZGlzcGF0Y2ggY2FuIGJlIGNvbnRyb2xsZWQgYnkgRW5kT2ZEeGUsIA0KPiA+ IHdoaWNoIGlzDQo+IHNpbWlsYXIgdG8gTWRlTW9kdWxlUGtnXFVuaXZlcnNhbFxTZWN1cml0eVN0 dWJEeGUuDQo+ID4NCj4gPiBTbyB3ZSBjYW4gaGF2ZSBib3RoIEVuZE9mRHhlIGFuZCBQY2RTeXN0 ZW1GbXBMb2NrRXZlbnRHdWlkLg0KPiA+IEVuZE9mRHhlIGNvbnRyb2xzIGVtYmVkZGVkIGRyaXZl ciBkaXNwYXRjaC4NCj4gPiBQY2RTeXN0ZW1GbXBMb2NrRXZlbnRHdWlkIGNvbnRyb2xzIDFzdCBj YWxsIGFuZCAybmQgY2FsbC4NCj4gPg0KPiANCj4gQnV0IGluIG91ciBjYXNlLCB3ZSBkb24ndCBu ZWVkIGFuIGV2ZW50IGF0IGFsbC4gVGhlIEJEUyBqdXN0IGNhbGxzDQo+IFByb2Nlc3NDYXBzdWxl cygpIHdoZW5ldmVyIGl0IHdhbnRzIHRvLg0KPiANCj4gSSdtIHJhdGhlciByZWx1Y2FudCB0byBj b21wbGljYXRlIHRoZSBjb2RlIHdpdGggYW4gYWRkaXRpb25hbCBldmVudCANCj4gdGhhdCB3ZSBk b24ndCByZWFsbHkgbmVlZCwgd2hpbGUgcmV0YWluaW5nIHNvbWUgb2YgdGhlIEVuZE9mRHhlIA0K PiBoYW5kbGluZyBhcyB3ZWxsLiBDb3VsZCB5b3UgdGhpbmsgb2YgYW5vdGhlciB3YXkgdG8gaGFu ZGxlIHRoaXMgdXNlIA0KPiBjYXNlPw0KPiANCj4gVGhhbmtzLA0KPiBBcmQuDQo+IA0KPiA+PiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86 ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmIA0KPiA+PiBPZg0KPiBB cmQNCj4gPj4gQmllc2hldXZlbA0KPiA+PiBTZW50OiBNb25kYXksIEp1bmUgMTEsIDIwMTggNTo0 MCBBTQ0KPiA+PiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+PiBD YzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmc7DQo+ID4+IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5j b20+OyBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtlZGsyXSBb UEFUQ0ggdjIgMi81XSBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDoNCj4gcGVybWl0DQo+ ID4+IFByb2Nlc3NDYXBzdWxlcyAoKSB0byBiZSBjYWxsZWQgb25jZQ0KPiA+Pg0KPiA+PiBPbiAx MSBKdW5lIDIwMTggYXQgMTQ6MzcsIFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4g d3JvdGU6DQo+ID4+ID4gSWYgYWxsIGZtcCBjYW4gYmUgcHJvY2Vzc2VkIG9uZSB0aW1l77yMeW91 IGp1c3QgbmVlZCBjYWxsIG9uY2UuIA0KPiA+PiA+IFRoZW4gc3lzdGVtDQo+ID4+IHJlc2V0Lg0K PiA+PiA+DQo+ID4+DQo+ID4+IEkgdW5kZXJzdGFuZCB0aGF0LiBCdXQgaWYgdGhlIGNhcHN1bGUg aGFzIGVtYmVkZGVkIGRyaXZlcnMsIHRoZSANCj4gPj4gbGlicmFyeSB3aWxsIG9ubHkgZGlzcGF0 Y2ggdGhlbSBvbiB0aGUgc2Vjb25kIGNhbGwsIGV2ZW4gaWYgdGhlIA0KPiA+PiBwbGF0Zm9ybSBk b2VzIG5vdCByZXF1aXJlIG1ha2luZyB0aGF0IGRpc3RpbmN0aW9uLiBJdCBzZWVtcyB0byBtZSAN Cj4gPj4gdGhhdCB0aGUgcGhhc2luZyBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBj YWxsIGlzIGNsb3NlbHkgDQo+ID4+IHRpZWQgdG8gdGhlIHNlbWFudGljcyBvZiBFbmRPZkR4ZSBh bmQgdGhlIGFzc29jaWF0ZWQgcG9saWN5IG9uIFg4NiANCj4gPj4gbm90IHRvIGFsbG93IHRoaXJk IHBhcnR5IGNvZGUgYmVmb3JlIGl0IGhhcyBiZWVuIHNpZ25hbGxlZC4NCj4gPj4NCj4gPj4gQ291 bGQgd2Ugbm90IHBhcmFtZXRlcml6ZSB0aGlzIGluIHNvbWUgd2F5IGFzIHdlbGw/DQo+ID4+DQo+ ID4+DQo+ID4+ID4NCj4gPj4gPj4g5ZyoIDIwMTjlubQ25pyIMTHml6XvvIzkuIrljYgxMjoyN++8 jEFyZCBCaWVzaGV1dmVsDQo+ID4+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPiDlhpnpgZPv vJoNCj4gPj4gPj4NCj4gPj4gPj4+IE9uIDEwIEp1bmUgMjAxOCBhdCAyMToyMSwgWWFvLCBKaWV3 ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPiB3cm90ZToNCj4gPj4gPj4+IEp1c3QgZ290IHNvbWUg aWRlYSBzaW5jZSBJIGFtIGFsc28gcmV2aWV3aW5nIEZtcERldmljZVBrZyBwYXRjaC4NCj4gPj4g Pj4+DQo+ID4+ID4+Pg0KPiA+PiA+Pj4gVGhlIGtleSBwcm9ibGVtIHdlIGFyZSB0cnlpbmcgdG8g cmVzb2x2ZSB0aGF0IGlzOiBUaGUgY29yZSBjb2RlIA0KPiA+PiA+Pj4gdXNlcw0KPiA+PiBFbmRP ZkR4ZSBhcyB0aGUgbG9jayBldmVudCBmb3Igc3lzdGVtIGZpcm13YXJlLCBidXQgYW4gQVJNIHBs YXRmb3JtIA0KPiA+PiBtYXkNCj4gd2FudA0KPiA+PiB0byBsb2NrIHN5c3RlbSBmaXJtd2FyZSBs YXRlciwgbWF5YmUgaW4gb3RoZXIgbG9jayBldmVudC4NCj4gPj4gPj4+DQo+ID4+ID4+PiBBcyBz dWNoLCBob3cgYWJvdXQgd2UgZ2VuZXJhbGl6ZSB0aGUgbG9jayBldmVudCBhcw0KPiA+PiBQY2RT eXN0ZW1GbXBMb2NrRXZlbnRHdWlkPyBXZSBjYW4gdXNlIEVuZE9mRHhlR3VpZCBhcyBkZWZhdWx0 IG9uZSANCj4gPj4gdG8NCj4ga2VlcA0KPiA+PiB0aGUgY29tcGF0aWJpbGl0eS4gQXQgc2FtZSB0 aW1lIHRoaXMgYnJpbmdzIHRoZSBmbGV4aWJpbGl0eSBmb3IgDQo+ID4+IHBsYXRmb3JtDQo+IG92 ZXJyaWRpbmcuDQo+ID4+ID4+Pg0KPiA+PiA+Pj4NCj4gPj4gPj4+IFdlIG9ubHkgbmVlZCB1cGRh dGUgRHhlQ2Fwc3VsZUxpYkNvbnN0cnVjdG9yKCkgdG8gdXNlIHRoZSBuZXcNCj4gUGNkR3VpZCwN Cj4gPj4gaW5zdGVhZCBvZiBoYXJkY29kZSBFbmRPZkR4ZS4NCj4gPj4gPj4+IFdlIGRvbid0IG5l ZWQgdXBkYXRlIHRoZSBsb2dpYyBpbiBQcm9jZXNzQ2Fwc3VsZXMoKSBhbmQNCj4gPj4gUHJvY2Vz c1RoZXNlQ2Fwc3VsZXMoKS4NCj4gPj4gPj4+IFRoZSBwb2xpY3kgaW4gY3VycmVudCBwbGF0Zm9y bSBpcyBhbHJlYWR5IGVuZm9yY2VkLCBpZiB0aGUgDQo+ID4+ID4+PiBwbGF0Zm9ybSBoYXMgYQ0K PiA+PiB0cnVzdGVkIGNvbnNvbGUuDQo+ID4+ID4+PiBGb3IgQVJNIHBsYXRmb3JtLCB3aGljaCB3 YW50cyB0byBsb2NrIHN5c3RlbSBmaXJtd2FyZSBsYXRlci4gSXQgDQo+ID4+ID4+PiBjYW4NCj4g Pj4gY29uZmlndXJlIGFub3RoZXIgbG9jayBldmVudCBHVUlEIGV4cGxpY2l0bHkgaW4gcGxhdGZv cm0gRFNDLg0KPiA+PiA+Pj4NCj4gPj4gPj4NCj4gPj4gPj4gQnV0IHRoYXQgbWVhbnMgd2UgYXJl IHN0aWxsIHJlcXVpcmVkIHRvIGNhbGwgUHJvY2Vzc0NhcHN1bGVzICgpIHR3aWNlLCBubz8NCj4g Pj4gPj4NCj4gPj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiA+Pj4+IEZy b206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBP biANCj4gPj4gPj4+PiBCZWhhbGYNCj4gT2YNCj4gPj4gWWFvLA0KPiA+PiA+Pj4+IEppZXdlbg0K PiA+PiA+Pj4+IFNlbnQ6IFN1bmRheSwgSnVuZSAxMCwgMjAxOCAxMjowMiBQTQ0KPiA+PiA+Pj4+ IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBBcmQg DQo+ID4+ID4+Pj4gQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPj4g Pj4+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IGxlaWYubGluZGhvbG1AbGluYXJvLm9y ZzsgWmVuZywgDQo+ID4+ID4+Pj4gU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPj4gPj4+ PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCB2MiAyLzVdIE1kZU1vZHVsZVBrZy9EeGVDYXBz dWxlTGliRm1wOg0KPiA+PiBwZXJtaXQNCj4gPj4gPj4+PiBQcm9jZXNzQ2Fwc3VsZXMgKCkgdG8g YmUgY2FsbGVkIG9uY2UNCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+IE15IGNvbmNlcm4gaXMgdGhhdCAq YWx3YXlzIGFsbG93aW5nKiBwcm9jZXNzaW5nIFN5c3RlbUNhcHN1bGUgDQo+ID4+ID4+Pj4gYWZ0 ZXINCj4gPj4gRW5kT2ZEeGUNCj4gPj4gPj4+PiBoYXMgc2VjdXJpdHkgcmlzay4NCj4gPj4gPj4+ Pg0KPiA+PiA+Pj4+IElNSE8sIHRoZSByaXNrIGlzIG5vdCAqcHJvY2VzcyosIGlmIGl0IGlzIGEg cGxhdGZvcm0gY2hvaWNlLiANCj4gPj4gPj4+PiBJbnN0ZWFkLCB0aGUNCj4gcmlzayBpcw0KPiA+ PiA+Pj4+ICphbGxvdyosIGluIHRoZSBjb3JlIGxvZ2ljLg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4g SWYgd2UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdCwgSSBob3BlIHdlIG5lZWQgYSB3YXkgdG8gDQo+ ID4+ID4+Pj4gZGlzdGluZ3Vpc2ggdGhlDQo+ID4+IGRpZmZlcmVuY2UNCj4gPj4gPj4+PiBiZXR3 ZWVuIGEgcGxhdGZvcm0gZGlzcGF0Y2hpbmcgU3lzdGVtQ2Fwc3VsZSBhZnRlciBFbmRPZkR4ZQ0K PiA+PiAqcHVycG9zZWx5KiBhbmQNCj4gPj4gPj4+PiBhIHBsYXRmb3JtIGRpc3BhdGNoaW5nIFN5 c3RlbUNhcHN1bGUgYWZ0ZXIgRW5kT2ZEeGUgKmJ5IG1pc3Rha2UqLg0KPiA+PiA+Pj4+DQo+ID4+ ID4+Pj4gTWF5YmUgc29tZSBwb2xpY3kgZW5mb3JjZW1lbnQgaW4gdGhlIGNvcmUgbG9naWMuIFN0 YXRpYyANCj4gPj4gPj4+PiBwb2xpY3ksIGF0IGJ1aWxkDQo+ID4+IHRpbWUuDQo+ID4+ID4+Pj4N Cj4gPj4gPj4+PiBUaGFuayB5b3UNCj4gPj4gPj4+PiBZYW8gSmlld2VuDQo+ID4+ID4+Pj4NCj4g Pj4gPj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gPj4+Pj4gRnJvbTogS2lu bmV5LCBNaWNoYWVsIEQNCj4gPj4gPj4+Pj4gU2VudDogU3VuZGF5LCBKdW5lIDEwLCAyMDE4IDg6 NTcgQU0NCj4gPj4gPj4+Pj4gVG86IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnPjsgWWFvLCBKaWV3ZW4gDQo+ID4+ID4+Pj4+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47 IEtpbm5leSwgTWljaGFlbCBEDQo+ID4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4g Pj4gPj4+Pj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBaZW5nLCBTdGFyIA0KPiA+PiA+ Pj4+PiA8c3Rhci56ZW5nQGludGVsLmNvbT47IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZw0KPiA+ PiA+Pj4+PiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCB2MiAyLzVdDQo+IE1kZU1vZHVsZVBr Zy9EeGVDYXBzdWxlTGliRm1wOg0KPiA+PiBwZXJtaXQNCj4gPj4gPj4+Pj4gUHJvY2Vzc0NhcHN1 bGVzICgpIHRvIGJlIGNhbGxlZCBvbmNlDQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+IEFyZCwNCj4g Pj4gPj4+Pj4NCj4gPj4gPj4+Pj4gSSBhZ3JlZSBpdCBzaG91bGQgYmUgYSBwbGF0Zm9ybSBjaG9p Y2UgdG8gcHJvY2VzcyBjYXBzdWxlcyANCj4gPj4gPj4+Pj4gYmVmb3JlIG9yIGFmdGVyIEVuZCBv ZiBEWEUuICBJdCBpcyBldmVuIGFsbG93ZWQgaW4gdGhlIFVFRkkgDQo+ID4+ID4+Pj4+IFNwZWMg Zm9yIGNhcHN1bGVzIHRvIGJlIHByb2Nlc3NlZCBpbW1lZGlhdGVseSB3aGljaCB3b3VsZCANCj4g Pj4gPj4+Pj4gaW5jbHVkZSBhdCBPUyBydW50aW1lIGFmdGVyIEV4aXRCb290U2VydmljZXMuDQo+ ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+IFRoZXJlIGFyZSAyIGlucHV0cyB0byB0aGVzZSBjaG9pY2Vz Og0KPiA+PiA+Pj4+PiAqIFRoZSBmbGFncyBzZXQgaW4gdGhlIENhcHN1bGUgaXRzZWxmLiAgU2Vl IFVFRkkgMi43IFNwZWMgIA0KPiA+PiA+Pj4+PiBUYWJsZSAzOCBmb3IgdGhlIDUgYWxsb3dlZCBj b21iaW5hdGlvbnMuDQo+ID4+ID4+Pj4+ICogUGxhdGZvcm0gcG9saWN5IGZvciBlYWNoIG9mIHRo ZXNlIDUgY2Fwc3VsZSB0eXBlcyBhbmQgIHdoZW4gDQo+ID4+ID4+Pj4+IGVhY2ggb2YgdGhlc2Ug NSBjYXBzdWxlIHR5cGVzIGFyZSBhbGxvd2VkIHRvIGJlICBwcm9jZXNzZWQuDQo+ID4+ID4+Pj4+ DQo+ID4+ID4+Pj4+IEppZXdlbidzIGNvbW1lbnRzIHBvaW50IHRvIHNvbWUgYXNzdW1wdGlvbnMg dGhhdCBoYXZlIGJlZW4gDQo+ID4+ID4+Pj4+IG1hZGUgaW4gdGhlIGxvZ2ljLiAgVGhlc2UgYXNz dW1wdGlvbnMgbWF5IGJlIGNvbnNpZGVyZWQgYSANCj4gPj4gPj4+Pj4gc2FmZSBkZWZhdWx0IHBs YXRmb3JtIHBvbGljeSwgYnV0IHRoZSBjb2RlIGxvZ2ljIHNob3VsZCBhbGxvdyANCj4gPj4gPj4+ Pj4gdGhlIHBsYXRmb3JtIHRvIGVhc2lseSBzZWxlY3QgYWx0ZXJuYXRlIHBvbGljaWVzLg0KPiA+ PiA+Pj4+Pg0KPiA+PiA+Pj4+PiBJIHRoaW5rIHRoZSBwYXRjaCB5b3UgaGF2ZSBwcm92aWRlZCBh dHRlbXB0cyB0byBhZGQgb25lIA0KPiA+PiA+Pj4+PiBhZGRpdGlvbmFsIHBvbGljeS4gIFBlcmhh cHMgd2Ugc2hvdWxkIGxvb2sgYXQgdGhpcyBmcm9tIHRoZSANCj4gPj4gPj4+Pj4gVUVGSSBTcGVj IHBlcnNwZWN0aXZlIGFuZCBzZWUgaG93IGRpZmZpY3VsdCBpdCBpcyB0byBleHByZXNzIA0KPiA+ PiA+Pj4+PiBwb2xpY2llcyBmb3IgdGhlIHN1cHBvcnRlZCBjYXBzdWxlIHR5cGVzLg0KPiA+PiA+ Pj4+Pg0KPiA+PiA+Pj4+PiBJIHdpbGwgcmV2aWV3IHlvdXIgcGF0Y2ggaW4gbW9yZSBkZXRhaWwg dG9tb3Jyb3cuDQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+IFRoYW5rcywNCj4gPj4gPj4+Pj4NCj4g Pj4gPj4+Pj4gTWlrZQ0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4gPj4+Pj4+IEZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gPj4gPj4+Pj4+IFNlbnQ6IFNhdHVyZGF5LCBKdW5lIDks IDIwMTggMTA6NDIgUE0NCj4gPj4gPj4+Pj4+IFRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0Bp bnRlbC5jb20+DQo+ID4+ID4+Pj4+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IEtpbm5l eSwgTWljaGFlbCBEIA0KPiA+PiA+Pj4+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsg WmVuZywgU3RhciANCj4gPj4gPj4+Pj4+IDxzdGFyLnplbmdAaW50ZWwuY29tPjsgbGVpZi5saW5k aG9sbUBsaW5hcm8ub3JnDQo+ID4+ID4+Pj4+PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCB2 MiAyLzVdDQo+ID4+ID4+Pj4+PiBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDogcGVybWl0 IFByb2Nlc3NDYXBzdWxlcw0KPiA+PiA+Pj4+Pj4gKCkgdG8gYmUgY2FsbGVkIG9uY2UNCj4gPj4g Pj4+Pj4+DQo+ID4+ID4+Pj4+PiBPbiAxMCBKdW5lIDIwMTggYXQgMDc6MzgsIFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4gDQo+ID4+ID4+Pj4+PiB3cm90ZToNCj4gPj4gPj4+Pj4+ PiBIaSBBcmQNCj4gPj4gPj4+Pj4+PiBBY2NvcmRpbmcgdG8gUEkgc3BlYywgIlByaW9yIHRvIGlu dm9raW5nIGFueSBVRUZJDQo+ID4+ID4+Pj4+PiBkcml2ZXJzLCBvciBhcHBsaWNhdGlvbnMgdGhh dCBhcmUgbm90IGZyb20gdGhlIHBsYXRmb3JtIA0KPiA+PiA+Pj4+Pj4gbWFudWZhY3R1cmVyLCBv ciBjb25uZWN0aW5nIGNvbnNvbGVzLCB0aGUgcGxhdGZvcm0gc2hvdWxkIA0KPiA+PiA+Pj4+Pj4g c2lnbmFscyB0aGUgZXZlbnQgRUZJX0VORF9PRl9EWEVfRVZFTlRfR1VJRCINCj4gPj4gPj4+Pj4+ Pg0KPiA+PiA+Pj4+Pj4+IEluIGJyaWVmLCBFbmRPZkR4ZSBpcyBzaWduYWxlZCBiZWZvcmUgM3Jk IHBhcnQgY29kZQ0KPiA+PiA+Pj4+Pj4gcnVubmluZy4NCj4gPj4gPj4+Pj4+Pg0KPiA+PiA+Pj4+ Pj4+IEFzIHN1Y2gsIGl0IGlzIGxlZ2FsIHRoYXQgYSB0cnVzdGVkIGNvbnNvbGUgaXMNCj4gPj4g Pj4+Pj4+IGNvbm5lY3RlZCBiZWZvcmUgRW5kT2ZEeGUuDQo+ID4+ID4+Pj4+Pj4gWW91IGNhbiBy ZXBvcnQgcHJvZ3Jlc3MgdG8gdXNlciBiZWZvcmUgRW5kT2ZEeGUuDQo+ID4+ID4+Pj4+Pj4NCj4g Pj4gPj4+Pj4+DQo+ID4+ID4+Pj4+PiBTbyBob3cgZG8gSSBjb25uZWN0IGEgdHJ1c3RlZCBjb25z b2xlIG9uIGEgc3lzdGVtIHdpdGggYSANCj4gPj4gPj4+Pj4+IHBsdWdpbiBncmFwaGljcyBjYXJk Pw0KPiA+PiA+Pj4+Pj4gSG93IGNhbiBJIHJlcG9ydCBjYXBzdWxlIHVwZGF0ZSBwcm9ncmVzcyBv biBzdWNoIGEgc3lzdGVtPw0KPiA+PiA+Pj4+Pj4gT24gYSBzeXN0ZW0gc3VjaCBhcyBBUk0gd2hl cmUgdGhlIGFjdHVhbCBmbGFzaCB1cGRhdGUgDQo+ID4+ID4+Pj4+PiBpbnZvbHZlcyBjYWxscyBp bnRvIHRoZSBzdGFuZGFsb25lIE1NIGxheWVyLCB3aGljaCBtYWtlcyB0aGUgDQo+ID4+ID4+Pj4+ PiBkaXN0aW5jdGlvbiB1bm5lY2Vzc2FyeSwgaG93IGRvIHlvdSByZWNvbW1lbmQgdG8gaGFuZGxl IHRoaXMgDQo+ID4+ID4+Pj4+PiBpZiBpdCBpcyBtYW5kYXRvcnkgYWNjb3JkaW5nIHRvIHlvdSB0 byBwcm9jZXNzIHRoZSBjYXBzdWxlIA0KPiA+PiA+Pj4+Pj4gYmVmb3JlIEVuZE9mRHhlPw0KPiA+ PiA+Pj4+Pj4NCj4gPj4gPj4+Pj4+DQo+ID4+ID4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4+ID4+Pj4+Pj4+IEZyb206IEFyZCBCaWVzaGV1dmVsDQo+ID4+ID4+Pj4+PiBb bWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmddDQo+ID4+ID4+Pj4+Pj4+IFNlbnQ6IEZy aWRheSwgSnVuZSA4LCAyMDE4IDg6MzggQU0NCj4gPj4gPj4+Pj4+Pj4gVG86IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPj4gPj4+Pj4+Pj4gQ2M6IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnOyBLaW5uZXksIE1pY2hhZWwgRA0KPiA+PiA+Pj4+Pj4gPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPjsNCj4gPj4gPj4+Pj4+Pj4gWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVs LmNvbT47DQo+ID4+ID4+Pj4+PiBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmcNCj4gPj4gPj4+Pj4+ Pj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggdjIgMi81XQ0KPiA+PiA+Pj4+Pj4gTWRlTW9k dWxlUGtnL0R4ZUNhcHN1bGVMaWJGbXA6IHBlcm1pdA0KPiA+PiA+Pj4+Pj4+PiBQcm9jZXNzQ2Fw c3VsZXMgKCkgdG8gYmUgY2FsbGVkIG9uY2UNCj4gPj4gPj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4N Cj4gPj4gPj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+IE9uIDggSnVuIDIwMTgsIGF0IDE0OjM0LCBZ YW8sIEppZXdlbg0KPiA+PiA+Pj4+Pj4gPGppZXdlbi55YW9AaW50ZWwuY29tPiB3cm90ZToNCj4g Pj4gPj4+Pj4+Pj4+DQo+ID4+ID4+Pj4+Pj4+PiBIaSBBcmQNCj4gPj4gPj4+Pj4+Pj4+IFdlIGRv bid0IGFsbG93IHBsYXRmb3JtIHRvIHVwZGF0ZSBzeXN0ZW0gZmlybXdhcmUNCj4gPj4gPj4+Pj4+ ICphZnRlciogRW5kT2ZEeGUuDQo+ID4+ID4+Pj4+Pj4+Pg0KPiA+PiA+Pj4+Pj4+Pj4gQWNjb3Jk aW5nIHRvIFBJIHNwZWMsIGFmdGVyIEVuZE9mRHhlLCAzcmQgcGFydA0KPiA+PiA+Pj4+Pj4gY29k ZSBzdGFydCBydW5uaW5nLiBJdCBicmluZ3MNCj4gPj4gPj4+Pj4+Pj4gc2VjdXJpdHkgcmlzayBp ZiB3ZSBhbGxvdyBzeXN0ZW0gZmlybXdhcmUgYWZ0ZXINCj4gPj4gPj4+Pj4+IEVuZE9mRHhlLg0K PiA+PiA+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+IEluIG91ciBYODYgc3lzdGVtIGRlc2lnbiwg d2UgbG9jayBmbGFzaCBwYXJ0DQo+ID4+ID4+Pj4+PiAqYmVmb3JlKiBFbmRPZkR4ZSBpbiBhbnkg Ym9vdA0KPiA+PiA+Pj4+Pj4+PiBtb2RlLg0KPiA+PiA+Pj4+Pj4+Pj4gRXZlbiBpbiBDYXBzdWxl VXBkYXRlIGJvb3QgbW9kZSwgd2UgYWxzbyBsb2NrDQo+ID4+ID4+Pj4+PiBmbGFzaCBwYXJ0IGF0 IEVuZE9mRHhlLCBqdXN0IGluDQo+ID4+ID4+Pj4+Pj4+IGNhc2UgdGhlIGNhcHN1bGUgdXBkYXRl IGRvZXMgbm90IGluZGljYXRlIGEgcmVzZXQuDQo+ID4+ID4+Pj4+Pj4+Pg0KPiA+PiA+Pj4+Pj4+ Pj4gV291bGQgeW91IHBsZWFzZSBzaGFyZSB0aGUgaW5mbywgd2h5IHlvdXIgcGxhdGZvcm0NCj4g Pj4gPj4+Pj4+IG5lZWQgdXBkYXRlIHN5c3RlbQ0KPiA+PiA+Pj4+Pj4+PiBmaXJtd2FyZSBhZnRl ciBFbmRPZkR4ZT8NCj4gPj4gPj4+Pj4+Pj4+IElzIHRoYXQgcG9zc2libGUgdG8gbWFrZSBpdCBl YXJsaWVyPw0KPiA+PiA+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+DQo+ID4+ID4+Pj4+Pj4+DQo+ ID4+ID4+Pj4+Pj4+IEJlY2F1c2Ugd2UgbmVlZCBzb21lIGtpbmQgb2YgY29uc29sZSB0byByZXBv cnQNCj4gPj4gPj4+Pj4+IHByb2dyZXNzIHRvIHRoZSB1c2VyLg0KPiA+PiA+Pj4+Pj4+Pg0KPiA+ PiA+Pj4+Pj4+PiBUaGUgc2VjdXJlIHBsYXRmb3JtIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGNvbXBs ZXRlbHkNCj4gPj4gPj4+Pj4+IHNlcGFyYXRlIGZyb20gVUVGSSBvbiBBcm0sDQo+ID4+ID4+Pj4+ Pj4+IHNvIGZvciB1cyB0aGUgZGlzdGluY3Rpb24gZG9lcyBub3QgbWFrZSBzZW5zZS4NCj4gPj4g Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+IFRoYW5rIHlvdQ0KPiA+PiA+Pj4+Pj4+Pj4gWWFvIEpp ZXdlbg0KPiA+PiA+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+PiA+Pj4+Pj4+Pj4+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRl dmVsLQ0KPiA+PiA+Pj4+Pj4gYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZg0KPiA+ PiA+Pj4+Pj4+PiBBcmQNCj4gPj4gPj4+Pj4+Pj4+PiBCaWVzaGV1dmVsDQo+ID4+ID4+Pj4+Pj4+ Pj4gU2VudDogRnJpZGF5LCBKdW5lIDgsIDIwMTggMjo1OCBBTQ0KPiA+PiA+Pj4+Pj4+Pj4+IFRv OiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+PiA+Pj4+Pj4+Pj4+IENjOiBLaW5uZXksIE1p Y2hhZWwgRA0KPiA+PiA+Pj4+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgWWFvLCBK aWV3ZW4NCj4gPj4gPj4+Pj4+Pj4+PiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBaZW5nLCBTdGFy DQo+ID4+ID4+Pj4+PiA8c3Rhci56ZW5nQGludGVsLmNvbT47DQo+ID4+ID4+Pj4+Pj4+Pj4gbGVp Zi5saW5kaG9sbUBsaW5hcm8ub3JnOyBBcmQgQmllc2hldXZlbA0KPiA+PiA+Pj4+Pj4gPGFyZC5i aWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4+ID4+Pj4+Pj4+Pj4gU3ViamVjdDogW2VkazJdIFtQ QVRDSCB2MiAyLzVdDQo+ID4+ID4+Pj4+PiBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDog cGVybWl0DQo+ID4+ID4+Pj4+Pj4+Pj4gUHJvY2Vzc0NhcHN1bGVzICgpIHRvIGJlIGNhbGxlZCBv bmNlDQo+ID4+ID4+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+PiBQZXJtaXQgUHJvY2Vzc0NhcHN1 bGVzICgpIHRvIGJlIGNhbGxlZCBvbmx5IGENCj4gPj4gPj4+Pj4+IHNpbmdsZSB0aW1lLCBhZnRl cg0KPiA+PiA+Pj4+Pj4+Pj4+IEVuZE9mRHhlLiBUaGlzIGFsbG93cyBwbGF0Zm9ybXMgdGhhdCBh cmUgYWJsZSB0bw0KPiA+PiA+Pj4+Pj4gdXBkYXRlIHN5c3RlbQ0KPiA+PiA+Pj4+Pj4+Pj4+IGZp cm13YXJlIGFmdGVyIEVuZE9mRHhlIChlLmcuLCBiZWNhdXNlIHRoZSBmbGFzaA0KPiA+PiA+Pj4+ Pj4gUk9NIGlzIG5vdCBsb2NrZWQNCj4gPj4gPj4+Pj4+Pj4+PiBkb3duKSB0byBkbyBzbyBhdCBh IHRpbWUgd2hlbiBhIG5vbi10cnVzdGVkDQo+ID4+ID4+Pj4+PiBjb25zb2xlIGlzIHVwIGFuZCBy dW5uaW5nLA0KPiA+PiA+Pj4+Pj4+Pj4+IGFuZCBwcm9ncmVzcyBjYW4gYmUgcmVwb3J0ZWQgdG8g dGhlIHVzZXIuDQo+ID4+ID4+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+PiBDb250cmlidXRlZC11 bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbg0KPiA+PiA+Pj4+Pj4gQWdyZWVtZW50IDEuMQ0K PiA+PiA+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEFyZCBCaWVzaGV1dmVsDQo+ID4+ID4+Pj4+ PiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPj4gPj4+Pj4+Pj4+PiAtLS0NCj4gPj4g Pj4+Pj4+Pj4+Pg0KPiA+PiA+Pj4+Pj4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxp YkZtcC9EeGVDYXBzdWxlUHJvY2Vzcw0KPiA+PiA+Pj4+Pj4gTGliLmMgfCAxOA0KPiA+PiA+Pj4+ Pj4+Pj4+ICsrKysrKysrKysrKy0tLS0tLQ0KPiA+PiA+Pj4+Pj4+Pj4+IDEgZmlsZSBjaGFuZ2Vk LCAxMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiA+PiA+Pj4+Pj4+Pj4+DQo+ID4+ ID4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdA0KPiA+PiA+Pj4+Pj4+Pg0KPiA+PiA+Pj4+Pj4gYS9NZGVN b2R1bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZUNhcHN1bGVQcm9jZQ0KPiA+PiA+ Pj4+Pj4gc3NMaWIuYw0KPiA+PiA+Pj4+Pj4+Pj4+DQo+ID4+ID4+Pj4+PiBiL01kZU1vZHVsZVBr Zy9MaWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZVByb2NlDQo+ID4+ID4+Pj4+PiBz c0xpYi5jDQo+ID4+ID4+Pj4+Pj4+Pj4gaW5kZXggMjZjYTRlMjk1ZjIwLi5hZDgzNjYwZjE3Mzcg MTAwNjQ0DQo+ID4+ID4+Pj4+Pj4+Pj4gLS0tDQo+ID4+ID4+Pj4+PiBhL01kZU1vZHVsZVBrZy9M aWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZVByb2NlDQo+ID4+ID4+Pj4+PiBzc0xp Yi5jDQo+ID4+ID4+Pj4+Pj4+Pj4gKysrDQo+ID4+ID4+Pj4+PiBiL01kZU1vZHVsZVBrZy9MaWJy YXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZVByb2NlDQo+ID4+ID4+Pj4+PiBzc0xpYi5j DQo+ID4+ID4+Pj4+Pj4+Pj4gQEAgLTEwMCw2ICsxMDAsNyBAQCBJc1ZhbGlkQ2Fwc3VsZUhlYWRl ciAoDQo+ID4+ID4+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+PiBleHRlcm4gQk9PTEVBTg0KPiA+ PiA+Pj4+Pj4gbUR4ZUNhcHN1bGVMaWJFbmRPZkR4ZTsNCj4gPj4gPj4+Pj4+Pj4+PiBCT09MRUFO ICAgICAgICAgICAgICAgICAgICAgICAgICBtTmVlZFJlc2V0Ow0KPiA+PiA+Pj4+Pj4+Pj4+ICtC T09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICBtRmlyc3RSb3VuZCA9DQo+ID4+ID4+Pj4+ PiBUUlVFOw0KPiA+PiA+Pj4+Pj4+Pj4+DQo+ID4+ID4+Pj4+Pj4+Pj4gVk9JRCAgICAgICAgICAg ICAgICAgICAgICAgICoqbUNhcHN1bGVQdHI7DQo+ID4+ID4+Pj4+Pj4+Pj4gRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICptQ2Fwc3VsZVN0YXR1c0FycmF5Ow0KPiA+PiA+Pj4+Pj4+Pj4+IEBA IC0zNjQsOCArMzY1LDExIEBADQo+ID4+ID4+Pj4+PiBQb3B1bGF0ZUNhcHN1bGVJbkNvbmZpZ3Vy YXRpb25UYWJsZSAoDQo+ID4+ID4+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+PiAgRWFjaCBpbmRp dmlkdWFsIGNhcHN1bGUgcmVzdWx0IGlzIHJlY29yZGVkIGluDQo+ID4+ID4+Pj4+PiBjYXBzdWxl IHJlY29yZCB2YXJpYWJsZS4NCj4gPj4gPj4+Pj4+Pj4+Pg0KPiA+PiA+Pj4+Pj4+Pj4+IC0gIEBw YXJhbVtpbl0gIEZpcnN0Um91bmQgICAgICAgICBUUlVFOiAgRmlyc3QNCj4gPj4gPj4+Pj4+IHJv dW5kLiBOZWVkIHNraXAgdGhlDQo+ID4+ID4+Pj4+Pj4+IEZNUA0KPiA+PiA+Pj4+Pj4+Pj4+IGNh cHN1bGVzIHdpdGggbm9uIHplcm8gRW1iZWRkZWREcml2ZXJDb3VudC4NCj4gPj4gPj4+Pj4+Pj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0U6IFByb2Nlc3MNCj4gPj4g Pj4+Pj4+IHJlc3QgRk1QIGNhcHN1bGVzLg0KPiA+PiA+Pj4+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0g IEZpcnN0Um91bmQgICAgICAgICBXaGV0aGVyIHRoaXMgaXMNCj4gPj4gPj4+Pj4+IHRoZSBmaXJz dCBpbnZvY2F0aW9uDQo+ID4+ID4+Pj4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgTGFzdFJvdW5kICAg ICAgICAgIFdoZXRoZXIgdGhpcyBpcw0KPiA+PiA+Pj4+Pj4gdGhlIGxhc3QgaW52b2NhdGlvbg0K PiA+PiA+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRTog IEZpcnN0DQo+ID4+ID4+Pj4+PiBvZiAyIHJvdW5kcy4gTmVlZCBza2lwDQo+ID4+ID4+Pj4+Pj4+ IHRoZQ0KPiA+PiA+Pj4+Pj4+Pj4+IEZNUA0KPiA+PiA+Pj4+Pj4+Pj4+ICsNCj4gPj4gPj4+Pj4+ IGNhcHN1bGVzIHdpdGggbm9uIHplcm8NCj4gPj4gPj4+Pj4+Pj4+PiBFbWJlZGRlZERyaXZlckNv dW50Lg0KPiA+PiA+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU UlVFOiAgIFByb2Nlc3MNCj4gPj4gPj4+Pj4+IHJlc3QgRk1QIGNhcHN1bGVzLg0KPiA+PiA+Pj4+ Pj4+Pj4+DQo+ID4+ID4+Pj4+Pj4+Pj4gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAg VGhlcmUgaXMgbm8NCj4gPj4gPj4+Pj4+IGVycm9yIHdoZW4gcHJvY2Vzc2luZw0KPiA+PiA+Pj4+ Pj4+Pj4+IGNhcHN1bGVzLg0KPiA+PiA+Pj4+Pj4+Pj4+ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICAgIE5vIGVub3VnaA0KPiA+PiA+Pj4+Pj4gcmVzb3VyY2UgdG8gcHJvY2Vzcw0KPiA+ PiA+Pj4+Pj4+Pj4+IGNhcHN1bGVzLg0KPiA+PiA+Pj4+Pj4+Pj4+IEBAIC0zNzMsNyArMzc3LDgg QEANCj4gPj4gPj4+Pj4+IFBvcHVsYXRlQ2Fwc3VsZUluQ29uZmlndXJhdGlvblRhYmxlICgNCj4g Pj4gPj4+Pj4+Pj4+PiAqKi8NCj4gPj4gPj4+Pj4+Pj4+PiBFRklfU1RBVFVTDQo+ID4+ID4+Pj4+ Pj4+Pj4gUHJvY2Vzc1RoZXNlQ2Fwc3VsZXMgKA0KPiA+PiA+Pj4+Pj4+Pj4+IC0gIElOIEJPT0xF QU4gIEZpcnN0Um91bmQNCj4gPj4gPj4+Pj4+Pj4+PiArICBJTiBCT09MRUFOICBGaXJzdFJvdW5k LCAgSU4gQk9PTEVBTiAgTGFzdFJvdW5kDQo+ID4+ID4+Pj4+Pj4+Pj4gICkNCj4gPj4gPj4+Pj4+ Pj4+PiB7DQo+ID4+ID4+Pj4+Pj4+Pj4gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4+ID4+Pj4+Pj4+Pj4gQEAgLTQ1Myw3ICs0NTgsNyBAQCBQcm9jZXNzVGhlc2VDYXBz dWxlcyAoDQo+ID4+ID4+Pj4+Pj4+Pj4gICAgICAgIGNvbnRpbnVlOw0KPiA+PiA+Pj4+Pj4+Pj4+ ICAgICAgfQ0KPiA+PiA+Pj4+Pj4+Pj4+DQo+ID4+ID4+Pj4+Pj4+Pj4gLSAgICAgIGlmICgoIUZp cnN0Um91bmQpIHx8IChFbWJlZGRlZERyaXZlckNvdW50DQo+ID4+ID4+Pj4+PiA9PSAwKSkgew0K PiA+PiA+Pj4+Pj4+Pj4+ICsgICAgICBpZiAoTGFzdFJvdW5kIHx8IChFbWJlZGRlZERyaXZlckNv dW50ID09DQo+ID4+ID4+Pj4+PiAwKSkgew0KPiA+PiA+Pj4+Pj4+Pj4+ICAgICAgICBERUJVRygo REVCVUdfSU5GTywgIlByb2Nlc3NDYXBzdWxlSW1hZ2UgLQ0KPiA+PiA+Pj4+Pj4gMHgleFxuIiwN Cj4gPj4gPj4+Pj4+Pj4+PiBDYXBzdWxlSGVhZGVyKSk7DQo+ID4+ID4+Pj4+Pj4+Pj4gICAgICAg IFN0YXR1cyA9IFByb2Nlc3NDYXBzdWxlSW1hZ2UNCj4gPj4gPj4+Pj4+IChDYXBzdWxlSGVhZGVy KTsNCj4gPj4gPj4+Pj4+Pj4+PiAgICAgICAgbUNhcHN1bGVTdGF0dXNBcnJheSBbSW5kZXhdID0g U3RhdHVzOw0KPiA+PiA+Pj4+Pj4+Pj4+IEBAIC01NDYsNyArNTUxLDcgQEAgUHJvY2Vzc0NhcHN1 bGVzICgNCj4gPj4gPj4+Pj4+Pj4+PiAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+PiA+Pj4+Pj4+Pj4+DQo+ID4+ID4+Pj4+Pj4+Pj4gIGlmICghbUR4ZUNhcHN1bGVM aWJFbmRPZkR4ZSkgew0KPiA+PiA+Pj4+Pj4+Pj4+IC0gICAgU3RhdHVzID0gUHJvY2Vzc1RoZXNl Q2Fwc3VsZXMoVFJVRSk7DQo+ID4+ID4+Pj4+Pj4+Pj4gKyAgICBTdGF0dXMgPSBQcm9jZXNzVGhl c2VDYXBzdWxlcyhUUlVFLCBGQUxTRSk7DQo+ID4+ID4+Pj4+Pj4+Pj4NCj4gPj4gPj4+Pj4+Pj4+ PiAgICAvLw0KPiA+PiA+Pj4+Pj4+Pj4+ICAgIC8vIFJlYm9vdCBTeXN0ZW0gaWYgYW5kIG9ubHkg aWYgYWxsIGNhcHN1bGUNCj4gPj4gPj4+Pj4+IHByb2Nlc3NlZC4NCj4gPj4gPj4+Pj4+Pj4+PiBA QCAtNTU1LDggKzU2MCw5IEBAIFByb2Nlc3NDYXBzdWxlcyAoDQo+ID4+ID4+Pj4+Pj4+Pj4gICAg aWYgKG1OZWVkUmVzZXQgJiYgQXJlQWxsSW1hZ2VzUHJvY2Vzc2VkKCkpIHsNCj4gPj4gPj4+Pj4+ Pj4+PiAgICAgIERvUmVzZXRTeXN0ZW0oKTsNCj4gPj4gPj4+Pj4+Pj4+PiAgICB9DQo+ID4+ID4+ Pj4+Pj4+Pj4gKyAgICBtRmlyc3RSb3VuZCA9IEZBTFNFOw0KPiA+PiA+Pj4+Pj4+Pj4+ICB9IGVs c2Ugew0KPiA+PiA+Pj4+Pj4+Pj4+IC0gICAgU3RhdHVzID0gUHJvY2Vzc1RoZXNlQ2Fwc3VsZXMo RkFMU0UpOw0KPiA+PiA+Pj4+Pj4+Pj4+ICsgICAgU3RhdHVzID0gUHJvY2Vzc1RoZXNlQ2Fwc3Vs ZXMobUZpcnN0Um91bmQsDQo+ID4+ID4+Pj4+PiBUUlVFKTsNCj4gPj4gPj4+Pj4+Pj4+PiAgICAv Lw0KPiA+PiA+Pj4+Pj4+Pj4+ICAgIC8vIFJlYm9vdCBTeXN0ZW0gaWYgcmVxdWlyZWQgYWZ0ZXIg YWxsDQo+ID4+ID4+Pj4+PiBjYXBzdWxlIHByb2Nlc3NlZA0KPiA+PiA+Pj4+Pj4+Pj4+ICAgIC8v DQo+ID4+ID4+Pj4+Pj4+Pj4gLS0NCj4gPj4gPj4+Pj4+Pj4+PiAyLjE3LjANCj4gPj4gPj4+Pj4+ Pj4+Pg0KPiA+PiA+Pj4+Pj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQo+ID4+ID4+Pj4+Pj4+Pj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4g Pj4gPj4+Pj4+Pj4+PiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+PiA+Pj4+Pj4+Pj4+IGh0 dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0KPiA+PiA+Pj4+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4+ID4+ Pj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPj4gPj4+PiBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZw0KPiA+PiA+Pj4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRr Mi1kZXZlbA0KPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KPiA+PiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+PiBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZw0KPiA+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazIt ZGV2ZWwNCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N Cj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4g aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=