From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (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 ADE2321FCA26A for ; Wed, 1 Nov 2017 08:38:49 -0700 (PDT) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Nov 2017 08:42:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,329,1505804400"; d="scan'208";a="144705747" Received: from orsmsx101.amr.corp.intel.com ([10.22.225.128]) by orsmga004.jf.intel.com with ESMTP; 01 Nov 2017 08:42:41 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.80]) by ORSMSX101.amr.corp.intel.com ([169.254.8.215]) with mapi id 14.03.0319.002; Wed, 1 Nov 2017 08:42:41 -0700 From: "Kinney, Michael D" To: Fan Jeff , "Yao, Jiewen" , "Wang, Jian J" , "edk2-devel@lists.01.org" , "Kinney, Michael D" CC: "Dong, Eric" , "Zeng, Star" Thread-Topic: [PATCH 3/3] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support Thread-Index: AQHTUlQsK1NxDs2zukef9Qui0Aox1aL/OgeAgAAKKgCAAGcCQA== Date: Wed, 1 Nov 2017 15:42:40 +0000 Message-ID: References: <20171031142412.21680-1-jian.j.wang@intel.com> <20171031142412.21680-4-jian.j.wang@intel.com>, <74D8A39837DF1E4DA445A8C0B3885C503AA0AED6@shsmsx102.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.22.254.138] MIME-Version: 1.0 Subject: Re: [PATCH 3/3] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support 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: Wed, 01 Nov 2017 15:38:50 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SSBhZ3JlZSB0aGF0IGFkZGluZyBBc21Xcml0ZVRyLCBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCwg SUEzMl9UU1NfREVTQ1JJUFRPUiB0byBNZGVQa2cgQmFzZUxpYiBpcyBhIGdvb2QgaWRlYS4NCg0K TWlrZQ0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZWRrMi1kZXZlbCBbbWFp bHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZiBGYW4gSmVm Zg0KU2VudDogVHVlc2RheSwgT2N0b2JlciAzMSwgMjAxNyA3OjMzIFBNDQpUbzogWWFvLCBKaWV3 ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRl bC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5j b20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KU3ViamVjdDogW2VkazJdILTw uLQ6IFtQQVRDSCAzLzNdIFVlZmlDcHVQa2cvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYjogQWRkIHN0 YWNrIHN3aXRjaCBzdXBwb3J0DQoNClBlciBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTEwOSwgVFIgc2hvdWxkIGJlIHNldHVwIChTdWNoIGFzIGluIER4ZUlw bFBlaW0pIGV2ZW4gdGhvdWdoIE5VTEwgQ3B1IEV4Y2VwdGlvbiBIYW5kbGVyIGluc3RhbmNlIGlz IGNob3Nlbi4NCg0KRm9yIGxvbmcgdGVybSwgSSBhZ3JlZSB3ZSBuZWVkIHRvIG1vdmUgQXNtV3Jp dGVUciwgSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQsIElBMzJfVFNTX0RFU0NSSVBUT1IgdG8gTWRl UGtnKFN1Y2ggYXMgQmFzZUxpYikgRm9yIHRoaXMgcGF0Y2gsIEkgaGF2ZSBubyBzdHJvbmcgb3Bp bmlvbi4NCg0KDQq3orz+yMs6IFlhbywgSmlld2VuPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNv bT4NCreiy83KsbzkOiAyMDE3xOoxMdTCMcjVIDk6NTYNCsrVvP7IyzogV2FuZywgSmlhbiBKPG1h aWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWls dG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQqzrcvNOiBLaW5uZXksIE1pY2hhZWwgRDxtYWls dG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBEb25nLCBFcmljPG1haWx0bzplcmljLmRv bmdAaW50ZWwuY29tPjsgWmVuZywgU3RhcjxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4NCtb3 zOI6IFJlOiBbZWRrMl0gW1BBVENIIDMvM10gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVy TGliOiBBZGQgc3RhY2sgc3dpdGNoIHN1cHBvcnQNCg0KSGkgSmlhbg0KVGhhbmtzIGZvciB0aGUg cGF0Y2guDQoNCkNhbiB3ZSBtb3ZlIGFsbCBJQTMyIGRlZmluZWQgZGF0YSBzdHJ1Y3R1cmUgb3Ig ZnVuY3Rpb24gdG8gTWRlUGtnPw0KU3VjaCBhczogQXNtV3JpdGVUciwgSUEzMl9UQVNLX1NUQVRF X1NFR01FTlQsIElBMzJfVFNTX0RFU0NSSVBUT1INCg0KSSBhbSBhbHNvIGN1cmlvdXMgd2h5IHdl IHVzZSBkaWZmZXJlbnQgcG9saWN5IGZvciBvdGhlciBib290IG1vZGUuDQpDYW4gd2UgdXNlIGNv bnNpc3RlbnQgcG9saWN5Pw0KPiArICBpZiAoUGNkR2V0Qm9vbCAoUGNkQ3B1U3RhY2tHdWFyZCkp IHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFN0YWNrIEd1YXJkIHdvcmtzIHdpdGggdGhlIHN1cHBv cnQgb2YgcGFnZSB0YWJsZSBlc3RhYmxpc2hlZCBhbmQNCj4gKyAgICAvLyBtZW1vcnkgbWFuYWdl bWVudC4gU28gd2UgaGF2ZSB0byBleGNsdWRlIHRob3NlIGJvb3QgbW9kZXMNCj4gd2l0aG91dA0K PiArICAgIC8vIHRoZW0uDQo+ICsgICAgLy8NCj4gKyAgICBzd2l0Y2ggKEdldEJvb3RNb2RlSG9i KCkpIHsNCj4gKyAgICBjYXNlIEJPT1RfT05fRkxBU0hfVVBEQVRFOg0KPiArICAgIGNhc2UgQk9P VF9JTl9SRUNPVkVSWV9NT0RFOg0KPiArICAgIGNhc2UgQk9PVF9PTl9TM19SRVNVTUU6DQo+ICsg ICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBBcmNoU2V0dXBFeGNw ZXRpb25TdGFjayAoSWR0VGFibGUpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICB9 DQoNCg0KVGhhbmsgeW91DQpZYW8gSmlld2VuDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBXYW5nLCBKaWFuIEoNCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciAzMSwg MjAxNyAxMDoyNCBQTQ0KPiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IFplbmcs IFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBEb25nLCBFcmljIA0KPiA8ZXJpYy5kb25nQGlu dGVsLmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IEtpbm5leSwgDQo+ IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRD SCAzLzNdIFVlZmlDcHVQa2cvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYjogQWRkIHN0YWNrIA0KPiBz d2l0Y2ggc3VwcG9ydA0KPg0KPiBJZiBTdGFjayBHdWFyZCBpcyBlbmFibGVkIGFuZCB0aGVyZSdz IHJlYWxseSBhIHN0YWNrIG92ZXJmbG93IGhhcHBlbmVkIA0KPiBkdXJpbmcgYm9vdCwgYSBQYWdl IEZhdWx0IGV4Y2VwdGlvbiB3aWxsIGJlIHRyaWdnZXJlZC4gQmVjYXVzZSB0aGUgDQo+IHN0YWNr IGlzIG91dCBvZiB1c2FnZSwgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLCB3aGljaCBzaGFyZXMgdGhl IHN0YWNrIA0KPiB3aXRoIG5vcm1hbCBVRUZJIGRyaXZlciwgY2Fubm90IGJlIGV4ZWN1dGVkIGFu ZCBjYW5ub3QgZHVtcCB0aGUgcHJvY2Vzc29yIGluZm9ybWF0aW9uLg0KPg0KPiBXaXRob3V0IHRo b3NlIGluZm9ybWF0aW9uLCBpdCdzIHZlcnkgZGlmZmljdWx0IGZvciB0aGUgQklPUyBkZXZlbG9w ZXJzIA0KPiBsb2NhdGUgdGhlIHJvb3QgY2F1c2Ugb2Ygc3RhY2sgb3ZlcmZsb3cuIEFuZCB3aXRo b3V0IGEgd29ya2FibGUgc3RhY2ssIA0KPiB0aGUgZGV2ZWxvcGVyIGNhbm5vdCBldmVudCB1c2Ug c2luZ2xlIHN0ZXAgdG8gZGVidWcgdGhlIFVFRkkgZHJpdmVyIHdpdGggSlRBRyBkZWJ1Z2dlci4N Cj4NCj4gSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoZSBleGNlcHRpb24gaGFuZGxlciB0byBleGVj dXRlIG5vcm1hbGx5IGFmdGVyIA0KPiBzdGFjayBvdmVyZmxvdy4gV2UgbmVlZCBzZXBhcmF0ZSBz dGFja3MgZm9yIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiBjYXNlIA0KPiBvZiB1bnVzYWJsZSBzdGFj ay4NCj4NCj4gSUEgcHJvY2Vzc29yIGFsbG93cyB0byBzd2l0Y2ggdG8gYSBuZXcgc3RhY2sgZHVy aW5nIGhhbmRsaW5nIGludGVycnVwdCANCj4gYW5kIGV4Y2VwdGlvbi4gQnV0IFg2NCBhbmQgSUEz MiBwcm92aWRlcyBkaWZmZXJlbnQgd2F5cyB0byBtYWtlIGl0LiANCj4gWDY0IHByb3ZpZGVzIGlu dGVycnVwdCBzdGFjayB0YWJsZSAoSVNUKSB0byBhbGxvdyBtYXhpbXVtIDcgZGlmZmVyZW50IA0K PiBleGNlcHRpb25zIHRvIGhhdmUgbmV3IHN0YWNrIGZvciBpdHMgaGFuZGxlci4gSUEzMiBkb2Vz bid0IGhhdmUgSVNUIA0KPiBtZWNoYW5pc20gYW5kIGNhbiBvbmx5IHVzZSB0YXNrIGdhdGUgdG8g ZG8gaXQgc2luY2UgdGFzayBzd2l0Y2ggYWxsb3dzIA0KPiB0byBsb2FkIGEgbmV3IHN0YWNrIHRo cm91Z2ggaXRzIHRhc2stc3RhdGUgc2VnbWVudCAoVFNTKS4NCj4NCj4gTm90ZTogU3RhY2sgc3dp dGNoIG5lZWRzIHRvIGFsbG9jYXRlIG1lbW9yeSBwYWdlcyB0byBiZSBuZXcgc3RhY2tzLiBTbyB0 aGlzDQo+ICAgICAgIGZ1bmN0aW9uYWxpdHkgd29ya3Mgb25seSBpbiB0aGUgYm9vdCBwaGFzZXMg Y2FwYWJsZSBvZiBtZW1vcnkNCj4gICAgICAgYWxsb2NhdGlvbiAoYmVzaWRlcyB0aGUgcGFnaW5n LCBmb3IgdGhlIHNha2Ugb2YgU3RhY2sgR3VhcmQpLiBJbg0KPiAgICAgICBvdGhlciB3b3Jkcywg b25seSBEWEUgcGhhc2UgY2FuIHN1cHBvcnRzIFN0YWNrIEd1YXJkIHdpdGggc3RhY2sgc3dpdGNo Lg0KPg0KPiBDYzogU3RhciBaZW5nIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiBDYzogRXJpYyBE b25nIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0Bp bnRlbC5jb20+DQo+IENjOiBNaWNoYWVsIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQo+IFN1Z2dlc3RlZC1ieTogQXllbGxldCBXb2xtYW4gPGF5ZWxsZXQud29sbWFuQGludGVs LmNvbT4NCj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVt ZW50IDEuMQ0KPiBTaWduZWQtb2ZmLWJ5OiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwu Y29tPg0KPiAtLS0NCj4gIC4uLi9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNv bW1vbi5oICAgIHwgIDIyICsrDQo+ICAuLi4vRHhlQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYg ICAgICAgICAgICAgICAgICB8ICAgNSArDQo+ICAuLi4vTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL0R4ZUV4Y2VwdGlvbi5jICB8ICAxOSArDQo+ICAuLi4vSWEzMi9BcmNoRXhjZXB0aW9u SGFuZGxlci5jICAgICAgICAgICAgICAgICAgICB8IDEzNSArKysrKysrDQo+ICAuLi4vSWEzMi9B cmNoSW50ZXJydXB0RGVmcy5oICAgICAgICAgICAgICAgICAgICAgICB8IDEzNiArKysrKysrDQo+ ICAuLi4vSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNtICAgICAgICAgICAgICAgICB8IDM5 OA0KPiArKysrKysrKysrKysrKysrKysrKysNCj4gIC4uLi9QZWlDcHVFeGNlcHRpb25IYW5kbGVy TGliLmluZiAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gIC4uLi9TZWNQZWlDcHVFeGNlcHRp b25IYW5kbGVyTGliLmluZiAgICAgICAgICAgICAgIHwgICAzICsNCj4gIC4uLi9TbW1DcHVFeGNl cHRpb25IYW5kbGVyTGliLmluZiAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gIC4uLi9YNjQv QXJjaEV4Y2VwdGlvbkhhbmRsZXIuYyAgICAgICAgICAgICAgICAgICAgIHwgMTA4ICsrKysrKw0K PiAgLi4uL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hJbnRlcnJ1cHREZWZzLmggfCAg NDAgKysrDQo+ICAuLi4vWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uUyAgICAgICAgICAgICAgICAg ICAgICB8ICAxMiArDQo+ICAuLi4vWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtICAgICAgICAg ICAgICAgICAgICB8ICAxMiArDQo+ICAuLi4vWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbSAg ICAgICAgICAgICAgICAgICB8ICAxMiArDQo+ICAxNCBmaWxlcyBjaGFuZ2VkLCA5MDQgaW5zZXJ0 aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFVlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL0lhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmENCj4gc20NCj4N Cj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2Vw dGlvbkhhbmRsZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmgNCj4gaW5kZXggNzQwYTU4ODI4Yi4u ZmQ0YTI2YTQ1OCAxMDA2NDQNCj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlv bkhhbmRsZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmgNCj4gKysrIGIvVWVmaUNwdVBrZy9MaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmgNCj4gQEAgLTI1 LDYgKzI1LDcgQEANCj4gICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gICNp bmNsdWRlIDxMaWJyYXJ5L1N5bmNocm9uaXphdGlvbkxpYi5oPiAgI2luY2x1ZGUgDQo+IDxMaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9y eUFsbG9jYXRpb25MaWIuaD4NCj4NCj4gICNkZWZpbmUgIENQVV9FWENFUFRJT05fTlVNICAgICAg ICAgIDMyDQo+ICAjZGVmaW5lICBDUFVfSU5URVJSVVBUX05VTSAgICAgICAgIDI1Ng0KPiBAQCAt Mjg4LDUgKzI4OSwyNiBAQCBDb21tb25FeGNlcHRpb25IYW5kbGVyV29ya2VyICgNCj4gICAgSU4g RVhDRVBUSU9OX0hBTkRMRVJfREFUQSAgICAgICpFeGNlcHRpb25IYW5kbGVyRGF0YQ0KPiAgICAp Ow0KPg0KPiArLyoqDQo+ICsgIExvYWQgZ2l2ZW4gc2VsZWN0b3IgaW50byBUUiByZWdpc3Rlcg0K PiArDQo+ICsgIEBwYXJhbSBTZWxlY3RvciAgICAgICAgIFRhc2sgc2VnbWVudCBzZWxlY3Rvcg0K PiArKiovDQo+ICtWT0lEDQo+ICtBc21Xcml0ZVRyICgNCj4gKyAgVUlOVDE2IFNlbGVjdG9yDQo+ ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBTZXR1cCBzZXBhcmF0ZSBzdGFjayBmb3Igc3BlY2lm aWMgZXhjZXB0aW9ucy4NCj4gKw0KPiArICBAcGFyYW1baW5dIElkdFRhYmxlICAgICAgICBJRFQg dGFibGUgYmFzZS4NCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtBcmNoU2V0dXBFeGNw ZXRpb25TdGFjayAoDQo+ICsgIElOIElBMzJfSURUX0dBVEVfREVTQ1JJUFRPUiAgICAgICAgICAg KklkdFRhYmxlDQo+ICsgICk7DQo+ICsNCj4gICNlbmRpZg0KPg0KPiBkaWZmIC0tZ2l0DQo+IGEv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi4NCj4gaW5mIA0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL0R4ZUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuDQo+IGluZg0KPiBpbmRleCBmNGE4 ZDAxYzgwLi5iMDk5ZWY0ZGFkIDEwMDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkv Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLg0KPiBpbmYN Cj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhl Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi4NCj4gaW5mDQo+IEBAIC0zMCw2ICszMCw3IEBADQo+ICBb U291cmNlcy5JYTMyXQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+ICAgIElh MzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ICsgIElhMzIvRXhjZXB0aW9uVHNzRW50cnlB c20ubmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiAgICBJYTMyL0FyY2hF eGNlcHRpb25IYW5kbGVyLmMNCj4gICAgSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IEBAIC00 Nyw2ICs0OCw5IEBADQo+ICAgIFBlaUR4ZVNtbUNwdUV4Y2VwdGlvbi5jDQo+ICAgIER4ZUV4Y2Vw dGlvbi5jDQo+DQo+ICtbUGNkXQ0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQu UGNkQ3B1U3RhY2tHdWFyZA0KPiArDQo+ICBbUGFja2FnZXNdDQo+ICAgIE1kZVBrZy9NZGVQa2cu ZGVjDQo+ICAgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+IEBAIC02MSwzICs2NSw0 IEBADQo+ICAgIFBlQ29mZkdldEVudHJ5UG9pbnRMaWINCj4gICAgTWVtb3J5QWxsb2NhdGlvbkxp Yg0KPiAgICBEZWJ1Z0xpYg0KPiArICBIb2JMaWINCj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+IGIvVWVmaUNw dVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gaW5k ZXggMzFmZWJlYzk3Ni4uZTlkY2QwMGUwMiAxMDA2NDQNCj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gKysrIGIvVWVmaUNw dVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gQEAg LTE2LDYgKzE2LDcgQEANCj4gICNpbmNsdWRlICJDcHVFeGNlcHRpb25Db21tb24uaCINCj4gICNp bmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICAjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlB bGxvY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Ib2JMaWIuaD4NCj4NCj4gIENP TlNUIFVJTlROICAgIG1Eb0ZhclJldHVybkZsYWcgID0gMDsNCj4NCj4gQEAgLTE1NSw2ICsxNTYs MjQgQEAgSW5pdGlhbGl6ZUNwdUludGVycnVwdEhhbmRsZXJzICgNCj4NCj4gICAgVXBkYXRlSWR0 VGFibGUgKElkdFRhYmxlLCAmVGVtcGxhdGVNYXAsICZtRXhjZXB0aW9uSGFuZGxlckRhdGEpOw0K Pg0KPiArICBpZiAoUGNkR2V0Qm9vbCAoUGNkQ3B1U3RhY2tHdWFyZCkpIHsNCj4gKyAgICAvLw0K PiArICAgIC8vIFN0YWNrIEd1YXJkIHdvcmtzIHdpdGggdGhlIHN1cHBvcnQgb2YgcGFnZSB0YWJs ZSBlc3RhYmxpc2hlZCBhbmQNCj4gKyAgICAvLyBtZW1vcnkgbWFuYWdlbWVudC4gU28gd2UgaGF2 ZSB0byBleGNsdWRlIHRob3NlIGJvb3QgbW9kZXMNCj4gd2l0aG91dA0KPiArICAgIC8vIHRoZW0u DQo+ICsgICAgLy8NCj4gKyAgICBzd2l0Y2ggKEdldEJvb3RNb2RlSG9iKCkpIHsNCj4gKyAgICBj YXNlIEJPT1RfT05fRkxBU0hfVVBEQVRFOg0KPiArICAgIGNhc2UgQk9PVF9JTl9SRUNPVkVSWV9N T0RFOg0KPiArICAgIGNhc2UgQk9PVF9PTl9TM19SRVNVTUU6DQo+ICsgICAgICBicmVhazsNCj4g Kw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoSWR0 VGFibGUpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gICAgLy8N Cj4gICAgLy8gTG9hZCBJbnRlcnJ1cHQgRGVzY3JpcHRvciBUYWJsZQ0KPiAgICAvLw0KPiBkaWZm IC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEz Mi9BcmNoRXhjZXB0aW9uSGFuZGxlci4NCj4gYyANCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLg0KPiBjDQo+IGlu ZGV4IGYyYzM5ZWIxOTMuLjNkNDFkZjc1YTUgMTAwNjQ0DQo+IC0tLSANCj4gYS9VZWZpQ3B1UGtn L0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVy Lg0KPiBjDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL0lhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuDQo+IGMNCj4gQEAgLTE0LDYgKzE0LDE5IEBA DQo+DQo+ICAjaW5jbHVkZSAiQ3B1RXhjZXB0aW9uQ29tbW9uLmgiDQo+DQo+ICsvLw0KPiArLy8g TGlzdCBvZiBleGNlcHRpb25zIG5lZWRpbmcgc2VwYXJhdGUgc3RhY2sgLy8gU1RBVElDIA0KPiAr SUEzMl9FWENFUFRJT05fVFNfRU5UUlkgbUV4Y2VwdGlvbnNXaXRoU3RhY2tbXSA9IHsNCj4gKyAg ezYsICBFeGNlcHRpb25UYXNrU3d0aWNoRW50cnk2fSwgIC8vI1VEOiBJbnZhbGlkIE9wY29kZSBF eGNlcHRpb24NCj4gKyAgezgsICBFeGNlcHRpb25UYXNrU3d0aWNoRW50cnk4fSwgIC8vI0RGOiBE b3VibGUgRmF1bHQgRXhjZXB0aW9uDQo+ICsgIHsxMiwgRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5 MTJ9LCAvLyNTUzogU3RhY2sgRmF1bHQgRXhjZXB0aW9uDQo+ICsgIHsxMywgRXhjZXB0aW9uVGFz a1N3dGljaEVudHJ5MTN9LCAvLyNHUDogR2VuZXJhbCBQcm90ZWN0aW9uIA0KPiArRXhjZXB0aW9u DQo+ICsgIHsxNCwgRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTR9LCAvLyNQRjogUGFnZS1GYXVs dCBFeGNlcHRpb24NCj4gKyAgezE3LCBFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxN30sIC8vI0FD OiBBbGlnbm1lbnQgQ2hlY2sgRXhjZXB0aW9uDQo+ICsgIHsxOCwgRXhjZXB0aW9uVGFza1N3dGlj aEVudHJ5MTh9ICAvLyNNQzogTWFjaGluZS1DaGVjayBFeGNlcHRpb24gfTsNCj4gKw0KPiAgLyoq DQo+ICAgIFJldHVybiBhZGRyZXNzIG1hcCBvZiBleGNlcHRpb24gaGFuZGxlciB0ZW1wbGF0ZSBz byB0aGF0IEMgY29kZSBjYW4gDQo+IGdlbmVyYXRlDQo+ICAgIGV4Y2VwdGlvbiB0YWJsZXMuDQo+ IEBAIC0xMDcsNiArMTIwLDEyOCBAQCBBcmNoUmVzdG9yZUV4Y2VwdGlvbkNvbnRleHQgKA0KPiAg ICBTeXN0ZW1Db250ZXh0LlN5c3RlbUNvbnRleHRJYTMyLT5FeGNlcHRpb25EYXRhID0gDQo+IFJl c2VydmVkVmVjdG9yc1tFeGNlcHRpb25UeXBlXS5FeGNlcHRpb25EYXRhOw0KPiAgfQ0KPg0KPiAr LyoqDQo+ICsgIFNldHVwIHNlcGFyYXRlIHN0YWNrIGZvciBzcGVjaWZpYyBleGNlcHRpb25zLg0K PiArDQo+ICsgICBAcGFyYW1baW5dIElkdFRhYmxlICAgICAgICBJRFQgdGFibGUgYmFzZS4NCj4g KyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoDQo+ ICsgIElOIElBMzJfSURUX0dBVEVfREVTQ1JJUFRPUiAgICAgICAgICAgKklkdFRhYmxlDQo+ICsg ICkNCj4gK3sNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqTmV3R2R0Ow0KPiArICBJ QTMyX0RFU0NSSVBUT1IgICAgICAgICAgIEdkdERlc2M7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgT2xkR2R0U2l6ZTsNCj4gKyAgVFNTX0VOVFJJRVMgICAgICAgICAgICAgICAqVHNz RW50cnk7DQo+ICsgIElBMzJfVFNTX0RFU0NSSVBUT1IgICAgICAgKlRzc0Rlc2M7DQo+ICsgIElB MzJfVEFTS19TVEFURV9TRUdNRU5UICAgKlRzczsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBTdGFja0Jhc2U7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tUb3A7 DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tTaXplOw0KPiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IFZlY3RvcjsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBUc3NCYXNlOw0KPiArDQo+ ICsgIC8vDQo+ICsgIC8vIEFsbG9jYXRlIFJ1bnRpbWUgRGF0YSBmb3IgdGhlIEdEVCAgLy8gIEFz bVJlYWRHZHRyKCZHZHREZXNjKTsgIA0KPiArIE9sZEdkdFNpemUgPSBHZHREZXNjLkxpbWl0ICsg MTsgIE5ld0dkdCA9IA0KPiArIEFsbG9jYXRlUnVudGltZVplcm9Qb29sKE9sZEdkdFNpemUgKyBz aXplb2YoVFNTX0VOVFJJRVMpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsgSUEzMl9HRFRfQUxJR05NRU5UKTsgIGlmIChOZXdHZHQgDQo+ICsgPT0gTlVMTCkgew0KPiAr ICAgIHJldHVybjsNCj4gKyAgfQ0KPiArICBOZXdHZHQgPSBBTElHTl9QT0lOVEVSIChOZXdHZHQs IElBMzJfR0RUX0FMSUdOTUVOVCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSW5pdGlhbGl6ZSBu ZXcgR0RUIGVudHJpZXMNCj4gKyAgLy8NCj4gKyAgQ29weU1lbShOZXdHZHQsIChWT0lEICopR2R0 RGVzYy5CYXNlLCBPbGRHZHRTaXplKTsgIEdkdERlc2MuQmFzZSA9IA0KPiArIChVSU5UTikoVk9J RCopTmV3R2R0OyAgR2R0RGVzYy5MaW1pdCA9IChVSU5UMTYpKE9sZEdkdFNpemUgKyANCj4gKyBU U1NfT0ZGU0VUIC0gMSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUmVzZXJ2ZSBzdGF0Y2sgbWVt b3J5IGZvciBnaXZlbiBleGNlcHRpb25zICAvLyAgU3RhY2tTaXplID0gDQo+ICsgQVJSQVlfU0la RSAobUV4Y2VwdGlvbnNXaXRoU3RhY2spICogRVhDRVBUSU9OX1NUQUNLX1NJWkU7ICBTdGFja1Np emUgDQo+ICsgPSBFRklfUEFHRVNfVE9fU0laRSAoRUZJX1NJWkVfVE9fUEFHRVMgKFN0YWNrU2l6 ZSkpOyAgU3RhY2tCYXNlID0gDQo+ICsgKFVJTlQ2NCkoVUlOVE4pQWxsb2NhdGVQYWdlcyAoRUZJ X1NJWkVfVE9fUEFHRVMNCj4gKFN0YWNrU2l6ZSkpOw0KPiArICBpZiAoU3RhY2tCYXNlID09IDAp IHsNCj4gKyAgICBGcmVlUG9vbCAoTmV3R2R0KTsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4g Kw0KPiArICAvLw0KPiArICAvLyBGaXh1cCBUU1MgZGVzY3JpcHRvcnMgYW5kIHNlZ21lbnRzICAv LyAgVHNzRW50cnkgPSAoVk9JRCANCj4gKyAqKShHZHREZXNjLkJhc2UgKyBPbGRHZHRTaXplKTsN Cj4gKw0KPiArICBUc3NCYXNlID0gKFVJTlROKShWT0lEICopJlRzc0VudHJ5LT5Uc3M7DQo+ICsg IFRzc0VudHJ5LT5Uc3NTZWcuTGltaXQxNV8wICAgICAgICAgICAgPQ0KPiBzaXplb2YoSUEzMl9U QVNLX1NUQVRFX1NFR01FTlQpIC0gMTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMTVfMCAg ICAgICAgICAgICA9IChVSU5UMTYpVHNzQmFzZTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNl MjNfMTYgICAgICAgICAgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAxNik7DQo+ICsgIFRzc0VudHJ5 LT5Uc3NTZWcuVHlwZSAgICAgICAgICAgICAgICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAg VHNzRW50cnktPlRzc1NlZy5MaW1pdDE5XzE2X2FuZF9mbGFncyA9IDA7DQo+ICsgIFRzc0VudHJ5 LT5Uc3NTZWcuQmFzZTMxXzI0ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMjQpOw0K PiArDQo+ICsgIFN0YWNrVG9wICA9IFN0YWNrQmFzZSArIFN0YWNrU2l6ZSAtIENQVV9TVEFDS19B TElHTk1FTlQ7ICBTdGFja1RvcCAgDQo+ICsgPSAoVUlOVE4pQUxJR05fUE9JTlRFUiAoU3RhY2tU b3AsIENQVV9TVEFDS19BTElHTk1FTlQpOyAgZm9yIChJbmRleCANCj4gKyA9IDA7IEluZGV4IDwg QVJSQVlfU0laRSAobUV4Y2VwdGlvbnNXaXRoU3RhY2spOyArK0luZGV4KSB7DQo+ICsgICAgLy8N Cj4gKyAgICAvLyBGaXh1cCBUU1MgZGVzY3JpcHRvcg0KPiArICAgIC8vDQo+ICsgICAgVHNzQmFz ZSA9IChVSU5UTikoVk9JRCAqKSZUc3NFbnRyeS0+RXhjZXB0aW9uVHNzW0luZGV4XTsNCj4gKyAg ICBUc3NEZXNjID0gJlRzc0VudHJ5LT5FeGNlcHRpb25Uc3NTZWdbSW5kZXhdOw0KPiArDQo+ICsg ICAgVHNzRGVzYy0+TGltaXQxNV8wICAgICAgICAgICAgPSBzaXplb2YoSUEzMl9UQVNLX1NUQVRF X1NFR01FTlQpIC0gMTsNCj4gKyAgICBUc3NEZXNjLT5CYXNlMTVfMCAgICAgICAgICAgICA9IChV SU5UMTYpVHNzQmFzZTsNCj4gKyAgICBUc3NEZXNjLT5CYXNlMjNfMTYgICAgICAgICAgICA9IChV SU5UOCkoVHNzQmFzZSA+PiAxNik7DQo+ICsgICAgVHNzRGVzYy0+VHlwZSAgICAgICAgICAgICAg ICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAgICBUc3NEZXNjLT5MaW1pdDE5XzE2X2FuZF9m bGFncyA9IDA7DQo+ICsgICAgVHNzRGVzYy0+QmFzZTMxXzI0ICAgICAgICAgICAgPSAoVUlOVDgp KFRzc0Jhc2UgPj4gMjQpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBGaXh1cCBUU1MNCj4g KyAgICAvLw0KPiArICAgIFRzcyA9ICZUc3NFbnRyeS0+RXhjZXB0aW9uVHNzW0luZGV4XTsNCj4g KyAgICBUc3MtPkNSMyAgICA9IEFzbVJlYWRDcjMoKTsNCj4gKyAgICBUc3MtPkVJUCAgICA9IChV SU5UMzIpbUV4Y2VwdGlvbnNXaXRoU3RhY2tbSW5kZXhdLkVudHJ5UG9pbnQ7DQo+ICsgICAgVHNz LT5FRkxBR1MgPSAweDI7DQo+ICsgICAgVHNzLT5FU1AgICAgPSBTdGFja1RvcDsNCj4gKyAgICBU c3MtPkVTICAgICA9IEFzbVJlYWRFcygpOw0KPiArICAgIFRzcy0+Q1MgICAgID0gQXNtUmVhZENz KCk7DQo+ICsgICAgVHNzLT5TUyAgICAgPSBBc21SZWFkU3MoKTsNCj4gKyAgICBUc3MtPkRTICAg ICA9IEFzbVJlYWREcygpOw0KPiArICAgIFRzcy0+RlMgICAgID0gQXNtUmVhZEZzKCk7DQo+ICsg ICAgVHNzLT5HUyAgICAgPSBBc21SZWFkR3MoKTsNCj4gKyAgICBTdGFja1RvcCAgIC09IEVYQ0VQ VElPTl9TVEFDS19TSVpFOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBDaGFuZ2Ugc3BlY2lm aWVkIGV4Y2VwdGlvbnMgaW4gSURUIHRvIHVzZSBUU1MNCj4gKyAgICAvLw0KPiArICAgIFZlY3Rv ciA9IG1FeGNlcHRpb25zV2l0aFN0YWNrW0luZGV4XS5WZWN0b3I7DQo+ICsNCj4gKyAgICBJZHRU YWJsZVtWZWN0b3JdLkJpdHMuT2Zmc2V0TG93ICA9IDA7DQo+ICsgICAgSWR0VGFibGVbVmVjdG9y XS5CaXRzLlNlbGVjdG9yICAgPSBPbGRHZHRTaXplICsNCj4gRVhDRVBUSU9OX1RTU19TRUwoSW5k ZXgpOw0KPiArICAgIElkdFRhYmxlW1ZlY3Rvcl0uQml0cy5SZXNlcnZlZF8wID0gMDsNCj4gKyAg ICBJZHRUYWJsZVtWZWN0b3JdLkJpdHMuR2F0ZVR5cGUgICA9IElBMzJfSURUX0dBVEVfVFlQRV9U QVNLOw0KPiArICAgIElkdFRhYmxlW1ZlY3Rvcl0uQml0cy5PZmZzZXRIaWdoID0gMDsgIH0NCj4g Kw0KPiArICAvLw0KPiArICAvLyBQdWJsaXNoIHRoZSBjaGFuZ2VzDQo+ICsgIC8vDQo+ICsgIEFz bVdyaXRlR2R0cigmR2R0RGVzYyk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTG9hZCB0YXNrIHJl Z2lzdGVyDQo+ICsgIC8vDQo+ICsgIEFzbVdyaXRlVHIgKChVSU5UMTYpKE9sZEdkdFNpemUgKyBU U1NfU0VMKSk7IH0NCj4gKw0KPiAgLyoqDQo+ICAgIERpc3BsYXkgcHJvY2Vzc29yIGNvbnRleHQu DQo+DQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFu ZGxlckxpYi9JYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkv Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gaW5kZXgg YThkMzU1NmE4MC4uNzdjYzZmOTkxOSAxMDA2NDQNCj4gLS0tIA0KPiBhL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiAr KysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hJ bnRlcnJ1cHREZWZzDQo+ICsrKyAuaA0KPiBAQCAtNDEsNCArNDEsMTQwIEBAIHR5cGVkZWYgc3Ry dWN0IHsNCj4gICAgVUlOVDggICAgICAgSG9va0FmdGVyU3R1YkhlYWRlckNvZGVbSE9PS0FGVEVS X1NUVUJfU0laRV07DQo+ICB9IFJFU0VSVkVEX1ZFQ1RPUlNfREFUQTsNCj4NCj4gKyNwcmFnbWEg cGFjayAoMSkNCj4gKw0KPiArI2RlZmluZSBFWENFUFRJT05fTElTVF9NQVggICAgICAgICAgNw0K PiArI2RlZmluZSBFWENFUFRJT05fU1RBQ0tfU0laRSAgICAgICAgRUZJX1BBR0VfU0laRQ0KPiAr I2RlZmluZSBJQTMyX0dEVF9UWVBFX1RTUyAgICAgICAgICAgMHg4OQ0KPiArI2RlZmluZSBJQTMy X0dEVF9BTElHTk1FTlQgICAgICAgICAgOA0KPiArDQo+ICsvLw0KPiArLy8gSUEzMiBUU1MgRGVm aW5pdGlvbg0KPiArLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDE2ICAgIFByZXZp b3VzVGFza0xpbms7IC8vIDAwDQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF8yOw0KPiArICBVSU5U MzIgICAgRVNQMDsgICAgICAgICAgICAgLy8gMDQNCj4gKyAgVUlOVDE2ICAgIFNTMDsgICAgICAg ICAgICAgIC8vIDA4DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF8xMDsNCj4gKyAgVUlOVDMyICAg IEVTUDE7ICAgICAgICAgICAgIC8vIDBDDQo+ICsgIFVJTlQxNiAgICBTUzE7ICAgICAgICAgICAg ICAvLyAxMA0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfMTg7DQo+ICsgIFVJTlQzMiAgICBFU1Ay OyAgICAgICAgICAgICAvLyAxNA0KPiArICBVSU5UMTYgICAgU1MyOyAgICAgICAgICAgICAgLy8g MTgNCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVkXzI2Ow0KPiArICBVSU5UMzIgICAgQ1IzOyAgICAg ICAgICAgICAgLy8gMUMNCj4gKyAgVUlOVDMyICAgIEVJUDsgICAgICAgICAgICAgIC8vIDIwDQo+ ICsgIFVJTlQzMiAgICBFRkxBR1M7ICAgICAgICAgICAvLyAyNA0KPiArICBVSU5UMzIgICAgRUFY OyAgICAgICAgICAgICAgLy8gMjgNCj4gKyAgVUlOVDMyICAgIEVDWDsgICAgICAgICAgICAgIC8v IDJDDQo+ICsgIFVJTlQzMiAgICBFRFg7ICAgICAgICAgICAgICAvLyAzMA0KPiArICBVSU5UMzIg ICAgRUJYOyAgICAgICAgICAgICAgLy8gMzQNCj4gKyAgVUlOVDMyICAgIEVTUDsgICAgICAgICAg ICAgIC8vIDM4DQo+ICsgIFVJTlQzMiAgICBFQlA7DQo+ICsgIFVJTlQzMiAgICBFU0k7DQo+ICsg IFVJTlQzMiAgICBFREk7DQo+ICsgIFVJTlQxNiAgICBFUzsNCj4gKyAgVUlOVDE2ICAgIFJlc2Vy dmVkXzc0Ow0KPiArICBVSU5UMTYgICAgQ1M7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF83ODsN Cj4gKyAgVUlOVDE2ICAgIFNTOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfODI7DQo+ICsgIFVJ TlQxNiAgICBEUzsNCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVkXzg2Ow0KPiArICBVSU5UMTYgICAg RlM7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF85MDsNCj4gKyAgVUlOVDE2ICAgIEdTOw0KPiAr ICBVSU5UMTYgICAgUmVzZXJ2ZWRfOTQ7DQo+ICsgIFVJTlQxNiAgICBMRFRTZWdtZW50U2VsZWN0 b3I7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF85ODsNCj4gKyAgVUlOVDE2ICAgIFQ7DQo+ICsg IFVJTlQxNiAgICBJT01hcEJhc2VBZGRyZXNzOw0KPiArfSBJQTMyX1RBU0tfU1RBVEVfU0VHTUVO VDsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UMTYgICAgTGltaXQxNV8wOw0K PiArICBVSU5UMTYgICAgQmFzZTE1XzA7DQo+ICsgIFVJTlQ4ICAgICBCYXNlMjNfMTY7DQo+ICsg IFVJTlQ4ICAgICBUeXBlOw0KPiArICBVSU5UOCAgICAgTGltaXQxOV8xNl9hbmRfZmxhZ3M7DQo+ ICsgIFVJTlQ4ICAgICBCYXNlMzFfMjQ7DQo+ICt9IElBMzJfVFNTX0RFU0NSSVBUT1I7DQo+ICsN Cj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAgICAgICAgICAg VHNzU2VnOw0KPiArICBJQTMyX1RTU19ERVNDUklQVE9SICAgICAgICAgICBFeGNlcHRpb25Uc3NT ZWdbRVhDRVBUSU9OX0xJU1RfTUFYXTsNCj4gKyAgSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQgICAg ICAgVHNzOw0KPiArICBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCAgICAgICBFeGNlcHRpb25Uc3Nb RVhDRVBUSU9OX0xJU1RfTUFYXTsNCj4gK30gVFNTX0VOVFJJRVM7DQo+ICsNCj4gKyNwcmFnbWEg cGFjayAoKQ0KPiArDQo+ICsjZGVmaW5lIFRTU19TRUwgICAgICAgICAgICAgICBPRkZTRVRfT0Yg KFRTU19FTlRSSUVTLCBUc3NTZWcpDQo+ICsjZGVmaW5lIEVYQ0VQVElPTl9UU1NfU0VMKG4pICBP RkZTRVRfT0YgKFRTU19FTlRSSUVTLA0KPiBFeGNlcHRpb25Uc3NTZWdbbl0pDQo+ICsjZGVmaW5l IFRTU19PRkZTRVQgICAgICAgICAgICBPRkZTRVRfT0YgKFRTU19FTlRSSUVTLCBUc3MpDQo+ICsN Cj4gK3R5cGVkZWYgVk9JRCAoKkVYQ0VQVElPTl9FTlRSWSkgKFZPSUQpOw0KPiArDQo+ICt0eXBl ZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlROICAgICAgICAgICAgIFZlY3RvcjsNCj4gKyAgRVhDRVBU SU9OX0VOVFJZICAgRW50cnlQb2ludDsNCj4gK30gSUEzMl9FWENFUFRJT05fVFNfRU5UUlk7DQo+ ICsNCj4gKy8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0aHJvdWdoIHRhc2sgZ2F0 ZSBmb3IgZXhjZXB0aW9uICNVRC4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4gK0V4Y2VwdGlvblRhc2tT d3RpY2hFbnRyeTYgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArIEV4Y2Vw dGlvbiBoYW5kbGluZyBlbnRyeSB0aHJvdWdoIHRhc2sgZ2F0ZSBmb3IgZXhjZXB0aW9uICNERi4N Cj4gKyAqKi8NCj4gK1ZPSUQNCj4gK0V4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTggKA0KPiArICBW T0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0 aHJvdWdoIHRhc2sgZ2F0ZSBmb3IgZXhjZXB0aW9uICNTUy4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4g K0V4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTEyICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9y IGV4Y2VwdGlvbiAjR1AuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNo RW50cnkxMyAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgRXhjZXB0aW9u IGhhbmRsaW5nIGVudHJ5IHRocm91Z2ggdGFzayBnYXRlIGZvciBleGNlcHRpb24gI1BGLg0KPiAr ICoqLw0KPiArVk9JRA0KPiArRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTQgKA0KPiArICBWT0lE DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0aHJv dWdoIHRhc2sgZ2F0ZSBmb3IgZXhjZXB0aW9uICNBQy4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4gK0V4 Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTE3ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsv KioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4 Y2VwdGlvbiAjTUMuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50 cnkxOCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQN Cj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0V4Y2Vw dGlvblRzc0VudHJ5QXNtLg0KPiBuYXMNCj4gbQ0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL0lhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20uDQo+IG5hcw0KPiBt DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmRiZmJjZmNmNTEN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9JYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLg0KPiBuYXMNCj4gbQ0KPiBA QCAtMCwwICsxLDM5OCBAQA0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICstLS0tLS0tLS0tIDsgOyBDb3B5 cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiArcmVzZXJ2 ZWQuPEJSPiA7IFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgOyBh cmUgDQo+ICtsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArOyB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgDQo+ICttYXkg YmUgZm91bmQNCj4gYXQNCj4gKzsgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1s aWNlbnNlLnBocC4NCj4gKzsNCj4gKzsgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIg VEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgDQo+ICtCQVNJUywgOyBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgDQo+ICtFWFBSRVNT DQo+IE9SIElNUExJRUQuDQo+ICs7DQo+ICs7IE1vZHVsZSBOYW1lOg0KPiArOw0KPiArOyAgIEV4 Y2VwdGlvblRzc0VudHJ5QXNtLkFzbQ0KPiArOw0KPiArOyBBYnN0cmFjdDoNCj4gKzsNCj4gKzsg ICBJQTMyIENQVSBFeGNlcHRpb24gSGFuZGxlciB3aXRoIFNlcGFyYXRlIFN0YWNrDQo+ICs7DQo+ ICs7IE5vdGVzOg0KPiArOw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICstLS0tLS0tLS0tDQo+ICsNCj4g KzsNCj4gKzsgSUEzMiBUU1MgTWVtb3J5IExheW91dCBEZXNjcmlwdGlvbg0KPiArOw0KPiArc3Ry dWMgSUEzMl9UU1MNCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgICAgICAgICAg ICAgICAgICAgIHJlc3cgMQ0KPiArICAuRVNQMDogICAgcmVzZCAxDQo+ICsgIC5TUzA6ICAgICBy ZXN3IDENCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgIC5FU1AxOiAgICByZXNk IDENCj4gKyAgLlNTMTogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDEN Cj4gKyAgLkVTUDI6ICAgIHJlc2QgMQ0KPiArICAuU1MyOiAgICAgcmVzdyAxDQo+ICsgICAgICAg ICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuX0NSMzogICAgcmVzZCAxDQo+ICsgIC5FSVA6ICAg ICByZXNkIDENCj4gKyAgLkVGTEFHUzogIHJlc2QgMQ0KPiArICAuX0VBWDogICAgcmVzZCAxDQo+ ICsgIC5fRUNYOiAgICByZXNkIDENCj4gKyAgLl9FRFg6ICAgIHJlc2QgMQ0KPiArICAuX0VCWDog ICAgcmVzZCAxDQo+ICsgIC5fRVNQOiAgICByZXNkIDENCj4gKyAgLl9FQlA6ICAgIHJlc2QgMQ0K PiArICAuX0VTSTogICAgcmVzZCAxDQo+ICsgIC5fRURJOiAgICByZXNkIDENCj4gKyAgLl9FUzog ICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9DUzogICAg IHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9TUzogICAgIHJl c3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9EUzogICAgIHJlc3cg MQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9GUzogICAgIHJlc3cgMQ0K PiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9HUzogICAgIHJlc3cgMQ0KPiAr ICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLkxEVDogICAgIHJlc3cgMQ0KPiArICAg ICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArZW5kc3RydWMNCj4gKw0KPiArOw0KPiAr OyBDb21tb25FeGNlcHRpb25IYW5kbGVyKCkNCj4gKzsNCj4gK2V4dGVybiBBU01fUEZYKENvbW1v bkV4Y2VwdGlvbkhhbmRsZXIpDQo+ICsNCj4gK1NFQ1RJT04gLmRhdGENCj4gKw0KPiArU0VDVElP TiAudGV4dA0KPiArDQo+ICtBTElHTiAgIDgNCj4gKw0KPiArOw0KPiArOyBleGNlcHRpb24gaGFu ZGxlciBzdHViIHRhYmxlDQo+ICs7DQo+ICslbWFjcm8gRGVmRXhjZXB0aW9uVGFza1N3dGljaEVu dHJ5IDENCj4gKyUlRG9JcmV0Og0KPiArICAgIGlyZXRkDQo+ICsNCj4gK2dsb2JhbCBBU01fUEZY KEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSUxKQ0KPiArQVNNX1BGWChFeGNlcHRpb25UYXNrU3d0 aWNoRW50cnklMSk6DQo+ICsgICAgZGIgICAgICAweDZhICAgICAgICA7IHB1c2ggICNWZWN0b3JO dW0NCj4gKyAgICBkYiAgICAgICUxICAgICAgICAgIDsgVmVjdG9yTnVtDQo+ICsgICAgbW92ICAg ICBlYXgsIEFTTV9QRlgoQ29tbW9uVGFza1N3dGljaEVudHJ5UG9pbnQpDQo+ICsgICAgY2FsbCAg ICBlYXgNCj4gKyAgICBtb3YgICAgIGVzcCwgZWF4ICAgIDsgUmVzdG9yZSBzdGFjayB0b3ANCj4g KyAgICBqbXAgICAgICUlRG9JcmV0DQo+ICslZW5kbWFjcm8NCj4gKw0KPiArZ2xvYmFsIEFTTV9Q RlgoQ29tbW9uVGFza1N3dGljaEVudHJ5UG9pbnQpDQo+ICtBU01fUEZYKENvbW1vblRhc2tTd3Rp Y2hFbnRyeVBvaW50KToNCj4gKyAgICA7DQo+ICsgICAgOyBTdGFjazoNCj4gKyAgICA7ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0rIDwtLSBFQlAgLSA4DQo+ICsgICAgOyArICAgICAgIFRTUyBCYXNl ICAgICAgKw0KPiArICAgIDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCAtIDQNCj4g KyAgICA7ICsgICAgICBDUFVJRC5FRFggICAgICArDQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0t LS0tLS0tKyA8LS0gRUJQDQo+ICsgICAgOyArICAgICAgICAgRUlQICAgICAgICAgKw0KPiArICAg IDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCArIDQNCj4gKyAgICA7ICsgICAgVmVj dG9yIE51bWJlciAgICArDQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0gRUJQ ICsgOA0KPiArICAgIDsgKyAgICBFcnJvciBDb2RlICAgICAgICsNCj4gKyAgICA7ICstLS0tLS0t LS0tLS0tLS0tLS0tLS0rDQo+ICsgICAgOw0KPiArOw0KPiArOyBHZXQgVFNTIG9mIGludGVycnVw dGVkIHRhc2sNCj4gKzsNCj4gKyAgICBtb3YgICAgIGVicCwgZXNwICAgICAgICAgICAgICAgICAg ICA7IFN0YWNrIGZyYW1lDQo+ICsNCj4gKzsgVXNlIENQVUlEIHRvIGRldGVybWluZSBpZiBGWFNB VkUvRlhSRVNUT1IgYW5kIERFIGFyZSBzdXBwb3J0ZWQNCj4gKyAgICBtb3YgICAgIGVheCwgMQ0K PiArICAgIGNwdWlkDQo+ICsgICAgcHVzaCAgICBlZHgNCj4gKw0KPiArOyBHZXQgVFNTIGJhc2Ug b2YgaW50ZXJydXB0ZWQgdGFzayB0aHJvdWdoIFByZXZpb3VzVGFza0xpbmsgZmllbGQgaW4gDQo+ ICs7IGN1cnJlbnQgVFNTIGJhc2UNCj4gKyAgICBzdWIgICAgIGVzcCwgOA0KPiArICAgIHNnZHQg ICAgW2VzcCArIDJdDQo+ICsgICAgbW92ICAgICBlYXgsIFtlc3AgKyA0XSAgICAgICAgICAgICAg OyBHRFQgYmFzZQ0KPiArICAgIGFkZCAgICAgZXNwLCA4DQo+ICsNCj4gKyAgICB4b3IgICAgIGVi eCwgZWJ4DQo+ICsgICAgc3RyICAgICBieCAgICAgICAgICAgICAgICAgICAgICAgICAgOyBDdXJy ZW50IFRSDQo+ICsNCj4gKyAgICBtb3YgICAgIGVjeCwgW2VheCArIGVieCArIDJdDQo+ICsgICAg c2hsICAgICBlY3gsIDgNCj4gKyAgICBtb3YgICAgIGNsLCBbZWF4ICsgZWJ4ICsgN10NCj4gKyAg ICByb3IgICAgIGVjeCwgOCAgICAgICAgICAgICAgICAgICAgICA7IGVjeCA9IEN1cnJlbnQgVFNT IGJhc2UNCj4gKyAgICBwdXNoICAgIGVjeCAgICAgICAgICAgICAgICAgICAgICAgICA7IGtlZXAg aXQgaW4gc3RhY2sgZm9yIGxhdGVyIHVzZQ0KPiArDQo+ICsgICAgbW92enggICBlYngsIHdvcmQg W2VjeF0gICAgICAgICAgICAgOyBQcmV2aW91cyBUYXNrIExpbmsNCj4gKyAgICBtb3YgICAgIGVj eCwgW2VheCArIGVieCArIDJdDQo+ICsgICAgc2hsICAgICBlY3gsIDgNCj4gKyAgICBtb3YgICAg IGNsLCBbZWF4ICsgZWJ4ICsgN10NCj4gKyAgICByb3IgICAgIGVjeCwgOCAgICAgICAgICAgICAg ICAgICAgICA7IGVjeCA9IFByZXZpb3VzIFRTUyBiYXNlDQo+ICsNCj4gKzsNCj4gKzsgQWxpZ24g c3RhY2sgdG8gbWFrZSBzdXJlIHRoYXQgRUZJX0ZYX1NBVkVfU1RBVEVfSUEzMiBvZg0KPiBFRklf U1lTVEVNX0NPTlRFWFRfSUEzMg0KPiArOyBpcyAxNi1ieXRlIGFsaWduZWQNCj4gKzsNCj4gKyAg ICBhbmQgICAgIGVzcCwgMHhmZmZmZmZmMA0KPiArICAgIHN1YiAgICAgZXNwLCAxMg0KPiArDQo+ ICs7OyBVSU5UMzIgIEVkaSwgRXNpLCBFYnAsIEVzcCwgRWJ4LCBFZHgsIEVjeCwgRWF4Ow0KPiAr ICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQVhdDQo+ICsgICAgcHVzaCAgICBk d29yZCBbZWN4ICsgSUEzMl9UU1MuX0VDWF0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJ QTMyX1RTUy5fRURYXQ0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQlhd DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VTUF0NCj4gKyAgICBwdXNo ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUJQXQ0KPiArICAgIHB1c2ggICAgZHdvcmQgW2Vj eCArIElBMzJfVFNTLl9FU0ldDQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1Mu X0VESV0NCj4gKw0KPiArOzsgVUlOVDMyICBHcywgRnMsIEVzLCBEcywgQ3MsIFNzOw0KPiArICAg IG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fU1NdDQo+ICsgICAgcHVzaCAgICBl YXgNCj4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0NTXQ0KPiArICAg IHB1c2ggICAgZWF4DQo+ICsgICAgbW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9E U10NCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJ QTMyX1RTUy5fRVNdDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVheCwgd29y ZCBbZWN4ICsgSUEzMl9UU1MuX0ZTXQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92engg ICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9HU10NCj4gKyAgICBwdXNoICAgIGVheA0KPiAr DQo+ICs7OyBVSU5UMzIgIEVpcDsNCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RT Uy5FSVBdDQo+ICsNCj4gKzs7IFVJTlQzMiAgR2R0clsyXSwgSWR0clsyXTsNCj4gKyAgICBzdWIg ICAgIGVzcCwgOA0KPiArICAgIHNpZHQgICAgW2VzcF0NCj4gKyAgICBtb3YgICAgIGVheCwgW2Vz cCArIDJdDQo+ICsgICAgeGNoZyAgICBlYXgsIFtlc3BdDQo+ICsgICAgYW5kICAgICBlYXgsIDB4 RkZGRg0KPiArICAgIG1vdiAgICAgW2VzcCs0XSwgZWF4DQo+ICsNCj4gKyAgICBzdWIgICAgIGVz cCwgOA0KPiArICAgIHNnZHQgICAgW2VzcF0NCj4gKyAgICBtb3YgICAgIGVheCwgW2VzcCArIDJd DQo+ICsgICAgeGNoZyAgICBlYXgsIFtlc3BdDQo+ICsgICAgYW5kICAgICBlYXgsIDB4RkZGRg0K PiArICAgIG1vdiAgICAgW2VzcCs0XSwgZWF4DQo+ICsNCj4gKzs7IFVJTlQzMiAgTGR0ciwgVHI7 DQo+ICsgICAgbW92ICAgICBlYXgsIGVieCAgICA7IGVieCBzdGlsbCBrZWVwcyBzZWxlY3RvciBv ZiBpbnRlcnJ1cHRlZCB0YXNrDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVh eCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuTERUXQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsNCj4g Kzs7IFVJTlQzMiAgRUZsYWdzOw0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNT LkVGTEFHU10NCj4gKw0KPiArOzsgVUlOVDMyICBDcjAsIENyMSwgQ3IyLCBDcjMsIENyNDsNCj4g KyAgICBtb3YgICAgIGVheCwgY3I0DQo+ICsgICAgcHVzaCAgICBlYXggICAgICAgICAgICAgOyBw dXNoIGNyNCBmaXJzdGx5DQo+ICsNCj4gKyAgICBtb3YgICAgIGVkeCwgW2VicCAtIDRdICA7IGNw dWlkLmVkeA0KPiArICAgIHRlc3QgICAgZWR4LCBCSVQyNCAgICAgIDsgVGVzdCBmb3IgRlhTQVZF L0ZYUkVTVE9SIHN1cHBvcnQNCj4gKyAgICBqeiAgICAgIC4xDQo+ICsgICAgb3IgICAgICBlYXgs IEJJVDkgICAgICAgOyBTZXQgQ1I0Lk9TRlhTUg0KPiArLjE6DQo+ICsgICAgdGVzdCAgICBlZHgs IEJJVDIgICAgICAgOyBUZXN0IGZvciBEZWJ1Z2dpbmcgRXh0ZW5zaW9ucyBzdXBwb3J0DQo+ICsg ICAganogICAgICAuMg0KPiArICAgIG9yICAgICAgZWF4LCBCSVQzICAgICAgIDsgU2V0IENSNC5E RQ0KPiArLjI6DQo+ICsgICAgbW92ICAgICBjcjQsIGVheA0KPiArDQo+ICsgICAgbW92ICAgICBl YXgsIGNyMw0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92ICAgICBlYXgsIGNyMg0KPiAr ICAgIHB1c2ggICAgZWF4DQo+ICsgICAgeG9yICAgICBlYXgsIGVheA0KPiArICAgIHB1c2ggICAg ZWF4DQo+ICsgICAgbW92ICAgICBlYXgsIGNyMA0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsNCj4g Kzs7IFVJTlQzMiAgRHIwLCBEcjEsIERyMiwgRHIzLCBEcjYsIERyNzsNCj4gKyAgICBtb3YgICAg IGVheCwgZHI3DQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVheCwgZHI2DQo+ ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVheCwgZHIzDQo+ICsgICAgcHVzaCAg ICBlYXgNCj4gKyAgICBtb3YgICAgIGVheCwgZHIyDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAg ICBtb3YgICAgIGVheCwgZHIxDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVh eCwgZHIwDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKw0KPiArOzsgRlhfU0FWRV9TVEFURV9JQTMy IEZ4U2F2ZVN0YXRlOw0KPiArOzsgQ2xlYXIgVFMgYml0IGluIENSMCB0byBhdm9pZCBEZXZpY2Ug Tm90IEF2YWlsYWJsZSBFeGNlcHRpb24gKCNOTSkgDQo+ICs7OyB3aGVuIGV4ZWN1dGluZyBmeHNh dmUvZnhyc3RvciBpbnN0cnVjdGlvbg0KPiArICAgIHRlc3QgICAgZWR4LCBCSVQyNCAgOyBUZXN0 IGZvciBGWFNBVkUvRlhSRVNUT1Igc3VwcG9ydC4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IDsgZWR4IHN0aWxsIGNvbnRhaW5zIHJlc3VsdCBmcm9tIENQVUlEIGFib3ZlDQo+ICsgICAganog ICAgICAuMw0KPiArICAgIGNsdHMNCj4gKyAgICBzdWIgICAgIGVzcCwgNTEyDQo+ICsgICAgbW92 ICAgICBlZGksIGVzcA0KPiArICAgIGRiICAgICAgMHhmLCAweGFlLCAweDcgO2Z4c2F2ZSBbZWRp XQ0KPiArLjM6DQo+ICsNCj4gKzs7IFVJTlQzMiAgRXhjZXB0aW9uRGF0YTsNCj4gKyAgICBwdXNo ICAgIGR3b3JkIFtlYnAgKyA4XQ0KPiArDQo+ICs7OyBVRUZJIGNhbGxpbmcgY29udmVudGlvbiBm b3IgSUEzMiByZXF1aXJlcyB0aGF0IERpcmVjdGlvbiBmbGFnIGluIEVGTEFHcyBpcyBjbGVhcg0K PiArICAgIGNsZA0KPiArDQo+ICs7OyBjYWxsIGludG8gZXhjZXB0aW9uIGhhbmRsZXINCj4gKyAg ICBtb3YgICAgIGVzaSwgZWN4ICAgICAgICAgICAgOyBLZWVwIFRTUyBiYXNlIHRvIGF2b2lkIG92 ZXJ3cml0ZQ0KPiArICAgIG1vdiAgICAgZWF4LCBBU01fUEZYKENvbW1vbkV4Y2VwdGlvbkhhbmRs ZXIpDQo+ICsNCj4gKzs7IFByZXBhcmUgcGFyYW1ldGVyIGFuZCBjYWxsDQo+ICsgICAgbW92ICAg ICBlZHgsIGVzcA0KPiArICAgIHB1c2ggICAgZWR4ICAgICAgICAgICAgICAgICA7IEVGSV9TWVNU RU1fQ09OVEVYVA0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VicCArIDRdICAgICA7IEVGSV9FWENF UFRJT05fVFlQRSAodmVjdG9yIG51bWJlcikNCj4gKw0KPiArICAgIDsNCj4gKyAgICA7IENhbGwg RXh0ZXJuYWwgRXhjZXB0aW9uIEhhbmRsZXINCj4gKyAgICA7DQo+ICsgICAgY2FsbCAgICBlYXgN Cj4gKyAgICBhZGQgICAgIGVzcCwgOCAgICAgICAgICAgICAgOyBSZXN0b3JlIHN0YWNrIGJlZm9y ZSBjYWxsaW5nDQo+ICsgICAgbW92ICAgICBlY3gsIGVzaSAgICAgICAgICAgIDsgUmVzdG9yZSBU U1MgYmFzZQ0KPiArDQo+ICs7OyBVSU5UMzIgIEV4Y2VwdGlvbkRhdGE7DQo+ICsgICAgYWRkICAg ICBlc3AsIDQNCj4gKw0KPiArOzsgRlhfU0FWRV9TVEFURV9JQTMyIEZ4U2F2ZVN0YXRlOw0KPiAr ICAgIG1vdiAgICAgZWR4LCBbZWJwIC0gNF0gIDsgY3B1aWQuZWR4DQo+ICsgICAgdGVzdCAgICBl ZHgsIEJJVDI0ICAgICAgOyBUZXN0IGZvciBGWFNBVkUvRlhSRVNUT1Igc3VwcG9ydA0KPiArICAg IGp6ICAgICAgLjQNCj4gKyAgICBtb3YgICAgIGVzaSwgZXNwDQo+ICsgICAgZGIgICAgICAweGYs IDB4YWUsIDB4ZSAgOyBmeHJzdG9yIFtlc2ldDQo+ICsuNDoNCj4gKyAgICBhZGQgICAgIGVzcCwg NTEyDQo+ICsNCj4gKzs7IFVJTlQzMiAgRHIwLCBEcjEsIERyMiwgRHIzLCBEcjYsIERyNzsgOzsg U2tpcCByZXN0b3JhdGlvbiBvZiBEUnggDQo+ICtyZWdpc3RlcnMgdG8gc3VwcG9ydCBkZWJ1Z2dl cnMgOzsgdGhhdCBzZXQgYnJlYWtwb2ludHMgaW4gDQo+ICtpbnRlcnJ1cHQvZXhjZXB0aW9uIGNv bnRleHQNCj4gKyAgICBhZGQgICAgIGVzcCwgNCAqIDYNCj4gKw0KPiArOzsgVUlOVDMyICBDcjAs IENyMSwgQ3IyLCBDcjMsIENyNDsNCj4gKyAgICBwb3AgICAgIGVheA0KPiArICAgIG1vdiAgICAg Y3IwLCBlYXgNCj4gKyAgICBhZGQgICAgIGVzcCwgNCAgICA7IG5vdCBmb3IgQ3IxDQo+ICsgICAg cG9wICAgICBlYXgNCj4gKyAgICBtb3YgICAgIGNyMiwgZWF4DQo+ICsgICAgcG9wICAgICBlYXgN Cj4gKyAgICBtb3YgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fQ1IzXSwgZWF4DQo+ICsgICAg cG9wICAgICBlYXgNCj4gKyAgICBtb3YgICAgIGNyNCwgZWF4DQo+ICsNCj4gKzs7IFVJTlQzMiAg RUZsYWdzOw0KPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVGTEFHU10NCj4g KyAgICBtb3YgICAgIGVieCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVGTEFHU10NCj4gKyAgICBi dHIgICAgIGVieCwgOSAgICAgIDsgRG8gJ2NsaScNCj4gKyAgICBtb3YgICAgIGR3b3JkIFtlY3gg KyBJQTMyX1RTUy5FRkxBR1NdLCBlYngNCj4gKw0KPiArOzsgVUlOVDMyICBMZHRyLCBUcjsNCj4g Kzs7IFVJTlQzMiAgR2R0clsyXSwgSWR0clsyXTsNCj4gKzs7IEJlc3Qgbm90IGxldCBhbnlvbmUg bWVzcyB3aXRoIHRoZXNlIHBhcnRpY3VsYXIgcmVnaXN0ZXJzLi4uDQo+ICsgICAgYWRkICAgICBl c3AsIDI0DQo+ICsNCj4gKzs7IFVJTlQzMiAgRWlwOw0KPiArICAgIHBvcCAgICAgZHdvcmQgW2Vj eCArIElBMzJfVFNTLkVJUF0NCj4gKw0KPiArOzsgVUlOVDMyICBHcywgRnMsIEVzLCBEcywgQ3Ms IFNzOw0KPiArOzsgTk9URSAtIG1vZGlmaWVkIHNlZ21lbnQgcmVnaXN0ZXJzIGNvdWxkIGhhbmcg dGhlIGRlYnVnZ2VyLi4uICBXZQ0KPiArOzsgICAgICAgIGNvdWxkIGF0dGVtcHQgdG8gaW5zdWxh dGUgb3Vyc2VsdmVzIGFnYWluc3QgdGhpcyBwb3NzaWJpbGl0eSwNCj4gKzs7ICAgICAgICBidXQg dGhhdCBwb3NlcyByaXNrcyBhcyB3ZWxsLg0KPiArOzsNCj4gKyAgICBwb3AgICAgIGVheA0KPiAr bzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9HU10sIGF4DQo+ICsgICAgcG9wICAgICBlYXgN Cj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fRlNdLCBheA0KPiArICAgIHBvcCAgICAg ZWF4DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0VTXSwgYXgNCj4gKyAgICBwb3Ag ICAgIGVheA0KPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9EU10sIGF4DQo+ICsgICAg cG9wICAgICBlYXgNCj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fQ1NdLCBheA0KPiAr ICAgIHBvcCAgICAgZWF4DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX1NTXSwgYXgN Cj4gKw0KPiArOzsgVUlOVDMyICBFZGksIEVzaSwgRWJwLCBFc3AsIEVieCwgRWR4LCBFY3gsIEVh eDsNCj4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRURJXQ0KPiArICAgIHBv cCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FU0ldDQo+ICsgICAgYWRkICAgICBlc3AsIDQg ICA7IG5vdCBmb3IgZWJwDQo+ICsgICAgYWRkICAgICBlc3AsIDQgICA7IG5vdCBmb3IgZXNwDQo+ ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VCWF0NCj4gKyAgICBwb3AgICAg IGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRURYXQ0KPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCAr IElBMzJfVFNTLl9FQ1hdDQo+ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VB WF0NCj4gKw0KPiArOyBTZXQgc2luZ2xlIHN0ZXAgREIjIHRvIGFsbG93IGRlYnVnZ2VyIHRvIGFi bGUgdG8gZ28gYmFjayB0byB0aGUgRUlQIA0KPiArOyB3aGVyZSB0aGUgZXhjZXB0aW9uIGlzIHRy aWdnZXJlZC4NCj4gKw0KPiArOzsgQ3JlYXRlIHJldHVybiBjb250ZXh0IGZvciBpcmV0ZCBpbiBz dHViIGZ1bmN0aW9uDQo+ICsgICAgbW92ICAgIGVheCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9F U1BdICAgICAgOyBHZXQgb2xkIHN0YWNrIHBvaW50ZXINCj4gKyAgICBtb3YgICAgZWJ4LCBkd29y ZCBbZWN4ICsgSUEzMl9UU1MuRUlQXQ0KPiArICAgIG1vdiAgICBbZWF4IC0gMHhjXSwgZWJ4ICAg ICAgICAgICAgICAgICAgICAgIDsgY3JlYXRlIEVJUCBpbiBvbGQgc3RhY2sNCj4gKyAgICBtb3Z6 eCAgZWJ4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fQ1NdDQo+ICsgICAgbW92ICAgIFtlYXggLSAw eDhdLCBlYnggICAgICAgICAgICAgICAgICAgICAgOyBjcmVhdGUgQ1MgaW4gb2xkIHN0YWNrDQo+ ICsgICAgbW92ICAgIGVieCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVGTEFHU10NCj4gKyAgICBi dHMgICAgZWJ4LCA4DQo+ICsgICAgbW92ICAgIFtlYXggLSAweDRdLCBlYnggICAgICAgICAgICAg ICAgICAgICAgOyBjcmVhdGUgZWZsYWdzIGluIG9sZCBzdGFjaw0KPiArICAgIG1vdiAgICBkd29y ZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdTXSwgZWJ4ICAgIDsgdXBkYXRlIGVmbGFncyBpbiBvbGQg VFNTDQo+ICsgICAgbW92ICAgIGVheCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FU1BdICAgICAg OyBHZXQgb2xkIHN0YWNrIHBvaW50ZXINCj4gKyAgICBzdWIgICAgZWF4LCAweGMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7IG1pbnVzIDEyIGJ5dGUNCj4gKyAgICBtb3YgICAgZHdvcmQg W2VjeCArIElBMzJfVFNTLl9FU1BdLCBlYXggICAgICA7IFNldCBuZXcgc3RhY2sgcG9pbnRlcg0K PiArDQo+ICs7OyBSZXBsYWNlIHRoZSBFSVAgb2YgaW50ZXJydXB0ZWQgdGFzayB3aXRoIHN0dWIg ZnVuY3Rpb24NCj4gKyAgICBtb3YgICAgZWF4LCBBU01fUEZYKFNpbmdsZVN0ZXBTdHViRnVuY3Rp b24pDQo+ICsgICAgbW92ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FSVBdLCBlYXgNCj4gKw0K PiArICAgIG1vdiAgICAgZWN4LCBbZWJwIC0gOF0gICAgICAgICAgICAgICAgICAgICAgIDsgR2V0 IGN1cnJlbnQgVFNTIGJhc2UNCj4gKyAgICBtb3YgICAgIGVheCwgZHdvcmQgW2VjeCArIElBMzJf VFNTLl9FU1BdICAgICA7IFJldHVybiBjdXJyZW50IHN0YWNrIHRvcA0KPiArICAgIG1vdiAgICAg ZXNwLCBlYnANCj4gKw0KPiArICAgIHJldA0KPiArDQo+ICtnbG9iYWwgQVNNX1BGWChTaW5nbGVT dGVwU3R1YkZ1bmN0aW9uKQ0KPiArQVNNX1BGWChTaW5nbGVTdGVwU3R1YkZ1bmN0aW9uKToNCj4g KzsNCj4gKzsgd2UgbmVlZCBjbGVhbiBUUyBiaXQgaW4gQ1IwIHRvIGV4ZWN1dGUgOyB4ODcgDQo+ ICtGUFUvTU1YL1NTRS9TU0UyL1NTRTMvU1NTRTMvU1NFNCBpbnN0cnVjdGlvbnMuDQo+ICs7DQo+ ICsgICAgY2x0cw0KPiArICAgIGlyZXRkDQo+ICsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArLS0tLS0t LS0tLQ0KPiArOyBWT0lEDQo+ICs7IEFzbVdyaXRlVHIgKA0KPiArOyAgIFVJTlQxNiBTZWxlY3Rv cg0KPiArOyAgICk7DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKy0tLS0tLS0tLS0NCj4gK2dsb2JhbCBB U01fUEZYKEFzbVdyaXRlVHIpDQo+ICtBU01fUEZYKEFzbVdyaXRlVHIpOg0KPiArICAgIG1vdiAg ICAgZWF4LCBbZXNwKzRdDQo+ICsgICAgbHRyICAgICBheA0KPiArICAgIHJldA0KPiArDQo+ICtE ZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgNg0KPiArRGVmRXhjZXB0aW9uVGFza1N3dGljaEVu dHJ5IDgNCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSAxMg0KPiArRGVmRXhjZXB0aW9u VGFza1N3dGljaEVudHJ5IDEzDQo+ICtEZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgMTQNCj4g K0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSAxNw0KPiArRGVmRXhjZXB0aW9uVGFza1N3dGlj aEVudHJ5IDE4DQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuDQo+IGluZiANCj4g Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVFeGNlcHRp b25IYW5kbGVyTGliLg0KPiBpbmYNCj4gaW5kZXggNzU0NDMyODhhOS4uNGMwZDQzNTEzNiAxMDA2 NDQNCj4gLS0tDQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIv UGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi4NCj4gaW5mDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIu DQo+IGluZg0KPiBAQCAtMzAsNiArMzAsNyBAQA0KPiAgW1NvdXJjZXMuSWEzMl0NCj4gICAgSWEz Mi9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20u bmFzbQ0KPiArICBJYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20NCj4gICAgSWEzMi9FeGNl cHRpb25IYW5kbGVyQXNtLlMNCj4gICAgSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ICAg IElhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9M aWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckwN Cj4gaWIuaQ0KPiBuZg0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMDQo+IGliLmkNCj4gbmYNCj4gaW5kZXggZDcw YTk5YzEwMC4uYWRiNDE1YmE1YSAxMDA2NDQNCj4gLS0tDQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckwNCj4gaWIu aQ0KPiBuZg0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9TZWNQZWlDcHVFeGNlcHRpb25IYW5kbGVyTA0KPiBpYi5pDQo+IG5mDQo+IEBAIC0zMCw2 ICszMCw3IEBADQo+ICBbU291cmNlcy5JYTMyXQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJB c20uYXNtDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ICsgIElhMzIvRXhj ZXB0aW9uVHNzRW50cnlBc20ubmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0K PiAgICBJYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gICAgSWEzMi9BcmNoSW50ZXJydXB0 RGVmcy5oDQo+IEBAIC01NywzICs1OCw1IEBADQo+ICAgIFByaW50TGliDQo+ICAgIExvY2FsQXBp Y0xpYg0KPiAgICBQZUNvZmZHZXRFbnRyeVBvaW50TGliDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25M aWINCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlv bkhhbmRsZXJMaWIvU21tQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi4NCj4gaW5mIA0KPiBiL1VlZmlD cHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIuDQo+IGluZg0KPiBpbmRleCA2MzRmZmNiMjFkLi41NmI4NzViN2M4IDEwMDY0NA0KPiAt LS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9TbW1DcHVF eGNlcHRpb25IYW5kbGVyTGliLg0KPiBpbmYNCj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU21tQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi4NCj4gaW5m DQo+IEBAIC0zMCw2ICszMCw3IEBADQo+ICBbU291cmNlcy5JYTMyXQ0KPiAgICBJYTMyL0V4Y2Vw dGlvbkhhbmRsZXJBc20uYXNtDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ ICsgIElhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhh bmRsZXJBc20uUw0KPiAgICBJYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gICAgSWEzMi9B cmNoSW50ZXJydXB0RGVmcy5oDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkv Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBiL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9u SGFuZGxlci5jDQo+IGluZGV4IDY1ZjBjZmY2ODAuLjI0ZjJhODQ4NmEgMTAwNjQ0DQo+IC0tLSAN Cj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4 Y2VwdGlvbkhhbmRsZXIuYw0KPiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsDQo+ICsrKyBlci5jDQo+IEBAIC0xNCw2 ICsxNCwxOSBAQA0KPg0KPiAgI2luY2x1ZGUgIkNwdUV4Y2VwdGlvbkNvbW1vbi5oIg0KPg0KPiAr Ly8NCj4gKy8vIExpc3Qgb2YgZXhjZXB0aW9ucyBuZWVkaW5nIHNlcGFyYXRlIHN0YWNrIC8vIFNU QVRJQyBVSU5UTiAgDQo+ICttRXhjZXB0aW9uc1dpdGhTdGFja1tdID0gew0KPiArICA2LCAgLy8j VUQ6IEludmFsaWQgT3Bjb2RlIEV4Y2VwdGlvbg0KPiArICA4LCAgLy8jREY6IERvdWJsZSBGYXVs dCBFeGNlcHRpb24NCj4gKyAgMTIsIC8vI1NTOiBTdGFjayBGYXVsdCBFeGNlcHRpb24NCj4gKyAg MTMsIC8vI0dQOiBHZW5lcmFsIFByb3RlY3Rpb24gRXhjZXB0aW9uDQo+ICsgIDE0LCAvLyNQRjog UGFnZS1GYXVsdCBFeGNlcHRpb24NCj4gKyAgMTcsIC8vI0FDOiBBbGlnbm1lbnQgQ2hlY2sgRXhj ZXB0aW9uDQo+ICsgIDE4ICAvLyNNQzogTWFjaGluZS1DaGVjayBFeGNlcHRpb24NCj4gKyAgfTsN Cj4gKw0KPiAgLyoqDQo+ICAgIFJldHVybiBhZGRyZXNzIG1hcCBvZiBleGNlcHRpb24gaGFuZGxl ciB0ZW1wbGF0ZSBzbyB0aGF0IEMgY29kZSBjYW4gDQo+IGdlbmVyYXRlDQo+ICAgIGV4Y2VwdGlv biB0YWJsZXMuDQo+IEBAIC0xMTIsNiArMTI1LDEwMSBAQCBBcmNoUmVzdG9yZUV4Y2VwdGlvbkNv bnRleHQgKA0KPiAgICBTeXN0ZW1Db250ZXh0LlN5c3RlbUNvbnRleHRYNjQtPkV4Y2VwdGlvbkRh dGEgPSANCj4gUmVzZXJ2ZWRWZWN0b3JzW0V4Y2VwdGlvblR5cGVdLkV4Y2VwdGlvbkRhdGE7DQo+ ICB9DQo+DQo+ICsvKioNCj4gKyAgU2V0dXAgc2VwYXJhdGUgc3RhY2sgZm9yIHNwZWNpZmljIGV4 Y2VwdGlvbnMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBJZHRUYWJsZSAgICAgICAgSURUIHRhYmxl IGJhc2UuDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArQXJjaFNldHVwRXhjcGV0aW9u U3RhY2sgKA0KPiArICBJTiBJQTMyX0lEVF9HQVRFX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRU YWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKk5ld0dk dDsNCj4gKyAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICBHZHREZXNjOw0KPiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIE9sZEdkdFNpemU7DQo+ICsgIFRTU19FTlRSSUVTICAgICAgICAg ICAgICAgKlRzc0VudHJ5Ow0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFN0YWNrQmFz ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBTdGFja1RvcDsNCj4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICBTdGFja1NpemU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgVHNzQmFzZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBBbGxvY2F0ZSBSdW50aW1lIERhdGEgZm9yIHRoZSBHRFQgIC8v ICBBc21SZWFkR2R0cigmR2R0RGVzYyk7ICANCj4gKyBPbGRHZHRTaXplID0gR2R0RGVzYy5MaW1p dCArIDE7ICBOZXdHZHQgPSANCj4gKyBBbGxvY2F0ZVJ1bnRpbWVaZXJvUG9vbChPbGRHZHRTaXpl ICsgc2l6ZW9mKFRTU19FTlRSSUVTKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArIElBMzJfR0RUX0FMSUdOTUVOVCk7ICBpZiAoTmV3R2R0ID09IA0KPiArIE5VTEwpIHsNCj4g KyAgICByZXR1cm47DQo+ICsgIH0NCj4gKyAgTmV3R2R0ID0gQUxJR05fUE9JTlRFUiAoTmV3R2R0 LCBJQTMyX0dEVF9BTElHTk1FTlQpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEluaXRpYWxpemUg bmV3IEdEVCBlbnRyaWVzDQo+ICsgIC8vDQo+ICsgIENvcHlNZW0oTmV3R2R0LCAoVk9JRCAqKUdk dERlc2MuQmFzZSwgT2xkR2R0U2l6ZSk7ICBHZHREZXNjLkJhc2UgPSANCj4gKyAoVUlOVE4pKFZP SUQqKU5ld0dkdDsgIEdkdERlc2MuTGltaXQgPSAoVUlOVDE2KShPbGRHZHRTaXplICsgDQo+ICsg VFNTX09GRlNFVCAtIDEpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFJlc2VydmUgc3RhdGNrIG1l bW9yeSBmb3Igc3VwcG9ydGVkIGV4Y2VwdGlvbnMgIC8vICBTdGFja1NpemUgPSANCj4gKyBBUlJB WV9TSVpFIChtRXhjZXB0aW9uc1dpdGhTdGFjaykgKiBFWENFUFRJT05fU1RBQ0tfU0laRTsgIFN0 YWNrU2l6ZSANCj4gKyA9IEVGSV9QQUdFU19UT19TSVpFIChFRklfU0laRV9UT19QQUdFUyAoU3Rh Y2tTaXplKSk7ICBTdGFja0Jhc2UgPSANCj4gKyAoVUlOVDY0KUFsbG9jYXRlUGFnZXMgKEVGSV9T SVpFX1RPX1BBR0VTIChTdGFja1NpemUpKTsgIGlmIA0KPiArIChTdGFja0Jhc2UgPT0gMCkgew0K PiArICAgIEZyZWVQb29sIChOZXdHZHQpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ ICsgIC8vDQo+ICsgIC8vIEZpeHVwIFRTUyBkZXNjcmlwdG9ycw0KPiArICAvLw0KPiArICBUc3NF bnRyeSA9IChWT0lEICopKEdkdERlc2MuQmFzZSArIE9sZEdkdFNpemUpOyAgVHNzQmFzZSA9IA0K PiArIChVSU5UTikoVk9JRCAqKSZUc3NFbnRyeS0+VHNzOw0KPiArDQo+ICsgIFRzc0VudHJ5LT5U c3NTZWcuTGltaXQxNV8wICAgICAgICAgICAgPQ0KPiBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NF R01FTlQpIC0gMTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMTVfMCAgICAgICAgICAgICA9 IChVSU5UMTYpVHNzQmFzZTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMjNfMTYgICAgICAg ICAgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAxNik7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuVHlw ZSAgICAgICAgICAgICAgICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAgVHNzRW50cnktPlRz c1NlZy5MaW1pdDE5XzE2X2FuZF9mbGFncyA9IDA7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuQmFz ZTMxXzI0ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMjQpOw0KPiArICBUc3NFbnRy eS0+VHNzU2VnLkJhc2U2M18zMiAgICAgICAgICAgID0gKFVJTlQzMikoVHNzQmFzZSA+PiAzMik7 DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuUmVzZXJ2ZWQgICAgICAgICAgICAgPSAwOw0KPiArDQo+ ICsgIC8vDQo+ICsgIC8vIEVuYWJsZSBJbnRlcnJ1cHQgU3RhY2sgVGFibGUgKElTVCkgZm9yIGVh Y2ggcmVxdWlyZWQgZXhjZXB0aW9uICANCj4gKyAvLyAgU3RhY2tUb3AgID0gU3RhY2tCYXNlICsg U3RhY2tTaXplIC0gQ1BVX1NUQUNLX0FMSUdOTUVOVDsgIA0KPiArIFN0YWNrVG9wICA9IChVSU5U TilBTElHTl9QT0lOVEVSIChTdGFja1RvcCwgQ1BVX1NUQUNLX0FMSUdOTUVOVCk7ICANCj4gKyBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCBBUlJBWV9TSVpFIChtRXhjZXB0aW9uc1dpdGhTdGFjayk7 ICsrSW5kZXgpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIEZpeHVwIFRTUw0KPiArICAgIC8vDQo+ ICsgICAgVHNzRW50cnktPlRzcy5JU1RbSW5kZXhdID0gU3RhY2tUb3A7DQo+ICsgICAgU3RhY2tU b3AgLT0gRVhDRVBUSU9OX1NUQUNLX1NJWkU7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFNl dCB0aGUgSVNUIGZpZWxkIHRvIDEgdG8gZW5hYmxlIGNvcnJlc3BvbmRpbmcgSVNUDQo+ICsgICAg Ly8NCj4gKyAgICBJZHRUYWJsZVttRXhjZXB0aW9uc1dpdGhTdGFja1tJbmRleF1dLkJpdHMuUmVz ZXJ2ZWRfMCA9IA0KPiArIChVSU5UOCkoSW5kZXggKw0KPiAxKTsNCj4gKyAgfQ0KPiArDQo+ICsg IC8vDQo+ICsgIC8vIFB1Ymxpc2ggdGhlIGNoYW5nZXMNCj4gKyAgLy8NCj4gKyAgQXNtV3JpdGVH ZHRyKCZHZHREZXNjKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBMb2FkIHRhc2sgcmVnaXN0ZXIN Cj4gKyAgLy8NCj4gKyAgQXNtV3JpdGVUciAoKFVJTlQxNikoT2xkR2R0U2l6ZSArIFRTU19TRUwp KTsgfQ0KPiArDQo+ICAvKioNCj4gICAgRGlzcGxheSBDUFUgaW5mb3JtYXRpb24uDQo+DQo+IGRp ZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9Y NjQvQXJjaEludGVycnVwdERlZnMuaA0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGluZGV4IDkwNjQ4MDEzNGEu LjVhOTEzYmFlN2IgMTAwNjQ0DQo+IC0tLSANCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEludGVycnVwdERlZnMuaA0KPiArKysgYi9VZWZpQ3B1 UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEludGVycnVwdERlZnMu DQo+ICsrKyBoDQo+IEBAIC00Myw0ICs0Myw0NCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAgIFVJ TlQ4ICAgICAgIEhvb2tBZnRlclN0dWJIZWFkZXJDb2RlW0hPT0tBRlRFUl9TVFVCX1NJWkVdOw0K PiAgfSBSRVNFUlZFRF9WRUNUT1JTX0RBVEE7DQo+DQo+ICsjcHJhZ21hIHBhY2sgKDEpDQo+ICsN Cj4gKyNkZWZpbmUgRVhDRVBUSU9OX0xJU1RfTUFYICAgICAgICA3DQo+ICsjZGVmaW5lIEVYQ0VQ VElPTl9TVEFDS19TSVpFICAgICAgRUZJX1BBR0VfU0laRQ0KPiArI2RlZmluZSBJQTMyX0dEVF9U WVBFX1RTUyAgICAgICAgIDB4ODkNCj4gKyNkZWZpbmUgSUEzMl9HRFRfQUxJR05NRU5UICAgICAg ICA4DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDMyICAgIFJlc2VydmVkXzA7 DQo+ICsgIFVJTlQ2NCAgICBSU1AwOw0KPiArICBVSU5UNjQgICAgUlNQMTsNCj4gKyAgVUlOVDY0 ICAgIFJTUDI7DQo+ICsgIFVJTlQ2NCAgICBSZXNlcnZlZF8yODsNCj4gKyAgVUlOVDY0ICAgIElT VFs3XTsNCj4gKyAgVUlOVDY0ICAgIFJlc2VydmVkXzkyOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2 ZWRfMTAwOw0KPiArICBVSU5UMTYgICAgSU9NYXBCYXNlQWRkcmVzczsNCj4gK30gSUEzMl9UQVNL X1NUQVRFX1NFR01FTlQ7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDE2ICAg IExpbWl0MTVfMDsNCj4gKyAgVUlOVDE2ICAgIEJhc2UxNV8wOw0KPiArICBVSU5UOCAgICAgQmFz ZTIzXzE2Ow0KPiArICBVSU5UOCAgICAgVHlwZTsNCj4gKyAgVUlOVDggICAgIExpbWl0MTlfMTZf YW5kX2ZsYWdzOw0KPiArICBVSU5UOCAgICAgQmFzZTMxXzI0Ow0KPiArICBVSU5UMzIgICAgQmFz ZTYzXzMyOw0KPiArICBVSU5UMzIgICAgUmVzZXJ2ZWQ7DQo+ICt9IElBMzJfVFNTX0RFU0NSSVBU T1I7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAg ICAgICAgICAgVHNzU2VnOw0KPiArICBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCAgICAgICBUc3M7 DQo+ICt9IFRTU19FTlRSSUVTOw0KPiArDQo+ICsjcHJhZ21hIHBhY2sgKCkNCj4gKw0KPiArI2Rl ZmluZSBUU1NfU0VMICAgICAgICAgICBPRkZTRVRfT0YgKFRTU19FTlRSSUVTLCBUc3NTZWcpDQo+ ICsjZGVmaW5lIFRTU19PRkZTRVQgICAgICAgIE9GRlNFVF9PRiAoVFNTX0VOVFJJRVMsIFRzcykN Cj4gKw0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+IGIvVWVmaUNw dVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJB c20uUw0KPiBpbmRleCBlZGQzNjNjZGFhLi5iZGFmMTMyY2Y1IDEwMDY0NA0KPiAtLS0gDQo+IGEv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhh bmRsZXJBc20uUw0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFu ZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+IEBAIC00MjksNiArNDI5LDE4IEBA IEFTTV9QRlgoQXNtVmVjdG9yTnVtRml4dXApOg0KPiAgICAgIHBvcHEgICAgICAlcmJwDQo+ICAg ICAgcmV0DQo+DQo+ICsjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKy0tLS0tLS0tLS0NCj4gKyMgVk9JRA0KPiAr IyBBc21Xcml0ZVRyICgNCj4gKyMgICBVSU5UMTYgU2VsZWN0b3INCj4gKyMgICApOw0KPiArIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ICstLS0tLS0tLS0tDQo+ICtBU01fR0xPQkFMIEFTTV9QRlgoQXNtV3JpdGVU cikNCj4gK0FTTV9QRlgoQXNtV3JpdGVUcik6DQo+ICsgICAgbW92bCAgICAlZWN4LCAlZWF4DQo+ ICsgICAgbHRydyAgICAlYXgNCj4gKyAgICByZXQNCj4gKw0KPiAgI0VORA0KPg0KPg0KPiBkaWZm IC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0 L0V4Y2VwdGlvbkhhbmRsZXJBc20uYXMNCj4gbSANCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5hcw0KPiBtDQo+IGlu ZGV4IDcyNmM2NGExNDAuLmFlYzU2ZWY0YmYgMTAwNjQ0DQo+IC0tLQ0KPiBhL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLmFz DQo+IG0NCj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+IEBAIC0zODYsNCArMzg2LDE2IEBAIEFz bVZlY3Rvck51bUZpeHVwICAgUFJPQw0KPiAgICAgIHJldA0KPiAgQXNtVmVjdG9yTnVtRml4dXAg ICBFTkRQDQo+DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKy0tLS0tLS0tLS0NCj4gKzsgVk9JRA0KPiAr OyBBc21Xcml0ZVRyICgNCj4gKzsgICBVSU5UMTYgU2VsZWN0b3INCj4gKzsgICApOw0KPiArOy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ICstLS0tLS0tLS0tDQo+ICtBc21Xcml0ZVRyIFBST0MgUFVCTElDDQo+ICsg ICAgbW92ICAgICBlYXgsIGVjeA0KPiArICAgIGx0ciAgICAgYXgNCj4gKyAgICByZXQNCj4gK0Fz bVdyaXRlVHIgRU5EUA0KPiArDQo+ICBFTkQNCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLm5h DQo+IHNtIA0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2 NC9FeGNlcHRpb25IYW5kbGVyQXNtLm5hDQo+IHNtDQo+IGluZGV4IGJhODk5M2Q4NGIuLjFlMmFj NDExYjAgMTAwNjQ0DQo+IC0tLQ0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLm5hDQo+IHNtDQo+ICsrKw0KPiBiL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5k bGVyQXNtLm5hDQo+IHNtIEBAIC0zODUsMyArMzg1LDE1IEBAIEFTTV9QRlgoQXNtVmVjdG9yTnVt Rml4dXApOg0KPiAgICAgIG1vdiAgICAgW3JjeCArIChAVmVjdG9yTnVtIC0gSG9va0FmdGVyU3R1 YkhlYWRlckJlZ2luKV0sIGFsDQo+ICAgICAgcmV0DQo+DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKy0t LS0tLS0tLS0NCj4gKzsgVk9JRA0KPiArOyBBc21Xcml0ZVRyICgNCj4gKzsgICBVSU5UMTYgU2Vs ZWN0b3INCj4gKzsgICApOw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICstLS0tLS0tLS0tDQo+ICtnbG9i YWwgQVNNX1BGWChBc21Xcml0ZVRyKQ0KPiArQVNNX1BGWChBc21Xcml0ZVRyKToNCj4gKyAgICBt b3YgICAgIGVheCwgZWN4DQo+ICsgICAgbHRyICAgICBheA0KPiArICAgIHJldA0KPiArDQo+IC0t DQo+IDIuMTQuMS53aW5kb3dzLjENCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCmVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQplZGsyLWRldmVsQGxpc3Rz LjAxLm9yZw0KaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVs DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQplZGsy LWRldmVsIG1haWxpbmcgbGlzdA0KZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCmh0dHBzOi8vbGlz dHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0K