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.31; helo=mga06.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 266CC22135D57 for ; Tue, 6 Mar 2018 20:19:23 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Mar 2018 20:25:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,434,1515484800"; d="scan'208";a="22620628" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga007.jf.intel.com with ESMTP; 06 Mar 2018 20:25:36 -0800 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 6 Mar 2018 20:25:36 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 6 Mar 2018 20:25:34 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.124]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.130]) with mapi id 14.03.0319.002; Wed, 7 Mar 2018 12:23:18 +0800 From: "Yao, Jiewen" To: "Ni, Ruiyu" , Sami Mujawar , "edk2-devel@lists.01.org" CC: Evan Lloyd , "leif.lindholm@linaro.org" , Matteo Carlini , Stephanie Hughes-Fitt , nd , "Carsey, Jaben" Thread-Topic: [PATCH v4] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTrMWy1WM2XPkDR0mgl/SrSgQ3J6OySwUAgARB4QCADRrmgIAAlkSw Date: Wed, 7 Mar 2018 04:23:16 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AADF486@shsmsx102.ccr.corp.intel.com> References: <20180223164457.44056-1-sami.mujawar@arm.com> <83c10b19-7965-419f-9e41-638986163044@Intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTAwNmM1ODYtMjNlNC00MjMzLWI3OTktNjI0ZjczZGRkNTVkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJYWjRnMStFNDNvMHUxSG56Mk1qYUFKcUUxWjhjSmZYcUdaTVwvT0g3N0JwTUc1QkZMcE0wc05lVWltbE5PWTh4ayJ9 x-ctpclassification: CTP_NT 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 v4] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Mar 2018 04:19:23 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RG8gd2Ugd2FudCB0byBzdXBwb3J0IHBhcnNpbmcgYSBub24tQUNQSSBzcGVjIGRlZmluZWQgQUNQ SSB0YWJsZT8NCg0KQXMgc3VjaCwgZXhwb3NpbmcgdGhlIEFQSSB0byBsZXQgdGhlIHRhYmxlIHBy b2R1Y2VyIGRlZmluZSBpdHMgb3duIHBhcnNpbmcgbG9naWMsIGluc3RlYWQgb2YgaW4gU2hlbGxQ a2cuDQoNClRoYW5rIHlvdQ0KWWFvIEppZXdlbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IE5pLCBSdWl5dQ0KPiBTZW50OiBXZWRuZXNkYXksIE1hcmNoIDcsIDIwMTgg MTE6MjQgQU0NCj4gVG86IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFybS5jb20+OyBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiBDYzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29t PjsgbGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnOyBNYXR0ZW8gQ2FybGluaQ0KPiA8TWF0dGVvLkNh cmxpbmlAYXJtLmNvbT47IFN0ZXBoYW5pZSBIdWdoZXMtRml0dA0KPiA8U3RlcGhhbmllLkh1Z2hl cy1GaXR0QGFybS5jb20+OyBuZCA8bmRAYXJtLmNvbT47IENhcnNleSwgSmFiZW4NCj4gPGphYmVu LmNhcnNleUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjRdIFNoZWxsUGtnOiBBZGQgYWNwaXZpZXcgdG9vbCB0byBk dW1wIEFDUEkgdGFibGVzDQo+IA0KPiBPbiAyLzI3LzIwMTggMzoxNiBBTSwgU2FtaSBNdWphd2Fy IHdyb3RlOg0KPiA+IEhpIFJheSwNCj4gPg0KPiA+IFBsZWFzZSBzZWUgbXkgcmVzcG9uc2UgYmVs b3cgbWFya2VkIFtTQU1JXS4NCj4gPg0KPiA+Pj4gICAgU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5 L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiB8IDQ0OSArKysrKysrKysrKysNCj4gPj4+ICAgIFNo ZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaA0KPiB8IDEy NiArKysrDQo+ID4NCj4gPj4gU2FtaSwgc2hvdWxkIHRoZSBhYm92ZSB0d28gbmV3IGZpbGVzIGJl IHJlbW92ZWQ/DQo+ID4NCj4gPiBbU0FNSV0gVGhlIGluZGl2aWR1YWwgdGFibGUgcGFyc2VycyBh cmUgaW1wbGVtZW50ZWQgYXMgTlVMTCBsaWJyYXJpZXMgdGhhdA0KPiByZWdpc3RlciB0aGUgcGFy c2VyIHdpdGggVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLiBUaGVzZSBwYXJzZXIgbGlicmFy aWVzDQo+IGFyZSBwcmVzZW50IGluIHN1YiBmb2xkZXJzIGUuZy4NCj4gU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0OyBhIGNoYW5nZSB0aGF0 DQo+IHdhcyBpbnRyb2R1Y2VkIGluIHRoZSB2MyBwYXRjaCBpbiByZXNwb25zZSB0byByZXZpZXcg Y29tbWVudHMuIEZvciBidWlsZGluZyB0aGUNCj4gcGFyc2VyIGxpYnJhcmllcywgSSBuZWVkIGEg bWVjaGFuaXNtIHRvIGdldCB0aGUgaW5jbHVkZSBwYXRoIHRvIHRoZSBoZWFkZXIgZmlsZXMNCj4g YWJvdmUgKHdoaWNoIGV4cG9zZSB0aGUgcGFyc2VyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYW5k IHRoZSBjb21tb24NCj4gZnVuY3Rpb25hbGl0eSBpbXBsZW1lbnRlZCBpbiBVZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIpLiBUaGVyZWZvcmUsIEkgaGF2ZQ0KPiBrZXB0IHRoZW0gdW5kZXIgU2hl bGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3Lg0KPiANCj4gSSBwcmVmZXIgdG8ga2VlcCB0 aGUgd2hvbGUgcGFyc2VyIGFzIGEgc3RhbmRhbG9uZSBsaWJyYXJ5LiBJIGxpa2UgdGhlDQo+IGlk ZWEgdG8gaGF2ZSBhIHBhcnNlciByZWdpc3RyYXRpb24gbWVjaGFuaXNtLiBCdXQgSSBkb24ndCB0 aGluayB3ZSBuZWVkDQo+IHRvIGV4cG9zZSB0aGUgcmVnaXN0cmF0aW9uIEFQSSBvdXRzaWRlIG9m IHRoZSBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQo+IFRoYXQncyB0byBzYXksIGFueW9u ZSB3aG8gd2FudHMgdG8gYWRkIHBhcnNlciBmb3IgbmV3IHRhYmxlcyBjYW4gYWRkIGENCj4gbmV3 IGZ1bmN0aW9uL2ZpbGUgaW5zaWRlIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi4gSW4gb3Jk ZXIgZm9yIHRoZQ0KPiBtYWluIHBhcnNlciB0byBjYWxsIHRoZSBuZXcgc3ViLXBhcnNlciwgaGUg Y2FuIGVpdGhlciBkaXJlY3RseSBtb2RpZnkNCj4gdGhlIGZ1bmN0aW9uIHRhYmxlIHRvIGFkZCBh IG5ldyBlbnRyeSwgb3IgY2FsbCBhIGludGVybmFsIHJlZ2lzdHJhdGlvbg0KPiBmdW5jdGlvbiB3 aGljaCBpbmRpcmVjdGx5IG1vZGlmaWVzIHRoZSBmdW5jdGlvbiB0YWJsZS4NCj4gDQo+ID4NCj4g Pj4gU2luY2UgcGVyIHlvdXIgY29tbWVudHMsIHRoZSBpbnRlcmZhY2VzIGFyZSBrZXB0IGluc2lk ZQ0KPiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQo+ID4NCj4gPiBbU0FNSV0gSXQgbG9v a3MgbGlrZSBJIGhhZCBub3QgZnVsbHkgdW5kZXJzdG9vZCB5b3VyICMyIGNvbW1lbnQuIEkgaGFk IGEgaGVscGVyDQo+IGxpYnJhcnkgZm9yIGV4cG9zaW5nIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rp b25zIGFuZCBjb21tb24gZnVuY3Rpb25hbGl0eS4gSQ0KPiBtb3ZlZCB0aGlzIGZ1bmN0aW9uYWxp dHkgdG8ga2VlcCB0aGVzZSBpbnRlcmZhY2VzIGluc2lkZQ0KPiBVZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIuDQo+ID4gSG93ZXZlciBhcyBleHBsYWluZWQgYWJvdmUgSSBoYXZlIHRoZSBjb21t b24gZnVuY3Rpb25hbGl0eSBpbXBsZW1lbnRlZCBhcw0KPiBwYXJ0IG9mIHRoZSBVZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIgd2hpY2ggaXMgdXRpbGl6ZWQgYnkgaW5kaXZpZHVhbCBwYXJzZXJz Lg0KPiA+DQo+ID4gQ29uc2lkZXJpbmcgdGhlIGFib3ZlIEkgaG9wZSB0aGUgcGF0Y2ggT0suIEFs dGVybmF0aXZlbHksIGlmIHlvdSBjYW4gYWR2aXNlIG1lDQo+IG9uIGEgYmV0dGVyIHdheSBvZiBh Y2hpZXZpbmcgdGhpcywgSSB3aWxsIGJlIGhhcHB5IHRvIGluY29ycG9yYXRlIHRoZSBjaGFuZ2Vz Lg0KPiA+DQo+ID4gUmVnYXJkcywNCj4gPg0KPiA+IFNhbWkgTXVqYXdhcg0KPiA+DQo+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBOaSwgUnVpeXUgW21haWx0bzpydWl5 dS5uaUBJbnRlbC5jb21dDQo+ID4gU2VudDogMjQgRmVicnVhcnkgMjAxOCAwMjoxNSBBTQ0KPiA+ IFRvOiBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmcNCj4gPiBDYzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPjsgbGVpZi5s aW5kaG9sbUBsaW5hcm8ub3JnOyBNYXR0ZW8NCj4gQ2FybGluaSA8TWF0dGVvLkNhcmxpbmlAYXJt LmNvbT47IFN0ZXBoYW5pZSBIdWdoZXMtRml0dA0KPiA8U3RlcGhhbmllLkh1Z2hlcy1GaXR0QGFy bS5jb20+OyBuZCA8bmRAYXJtLmNvbT47DQo+IGphYmVuLmNhcnNleUBpbnRlbC5jb207IGppZXdl bi55YW9AaW50ZWwuY29tDQo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2NF0gU2hlbGxQa2c6IEFk ZCBhY3BpdmlldyB0b29sIHRvIGR1bXAgQUNQSSB0YWJsZXMNCj4gPg0KPiA+IE9uIDIvMjQvMjAx OCAxMjo0NCBBTSwgU2FtaSBNdWphd2FyIHdyb3RlOg0KPiA+PiBUaGlzIHByb2dyYW0gaXMgcHJv dmlkZWQgdG8gYWxsb3cgZXhhbWluYXRpb24gb2YgQUNQSSB0YWJsZSBjb250ZW50cw0KPiA+PiBm cm9tIHRoZSBVRUZJIFNoZWxsLiAgVGhpcyBjYW4gaGVscCB3aXRoIGludmVzdGlnYXRpb25zLCBl c3BlY2lhbGx5IGF0DQo+ID4+IHRoYXQgc3RhZ2Ugd2hlcmUgdGhlIHRhYmxlcyBhcmUgbm90IGVu YWJsaW5nIGFuIE9TIHRvIGJvb3QuDQo+ID4+IFRoZSBwcm9ncmFtIGlzIG5vdCBleGhhdXN0aXZl LCBhbmQgb25seSBlbmNhcHN1bGF0ZXMgZGV0YWlsZWQga25vd2xlZGdlDQo+ID4+IG9mIGEgbGlt aXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMuDQo+ID4+DQo+ID4+IERlZmF1bHQgYmVoYXZpb3Vy IGlzIHRvIGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgYWxsIHRhYmxlcyBpbnN0YWxsZWQuDQo+ID4+ ICdLbm93bicgdGFibGUgdHlwZXMgd2lsbCBiZSBwYXJzZWQgYW5kIGRpc3BsYXllZCB3aXRoIGRl c2NyaXB0aW9ucyBhbmQNCj4gPj4gZmllbGQgdmFsdWVzLiAgV2hlcmUgYXBwcm9wcmlhdGUgYSBk ZWdyZWUgb2YgY29uc2lzdGVuY3kgY2hlY2tpbmcgaXMNCj4gPj4gZG9uZSBhbmQgZXJyb3JzIG1h eSBiZSByZXBvcnRlZCBpbiB0aGUgb3V0cHV0Lg0KPiA+PiBPdGhlciB0YWJsZSB0eXBlcyB3aWxs IGJlIGRpc3BsYXllZCBhcyBhbiBhcnJheSBvZiBIZXhhZGVjaW1hbCBieXRlcy4NCj4gPj4NCj4g Pj4gVG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcsIHRoZSAtcyBhbmQgLWQgb3B0aW9ucyBjYW4gYmUg dXNlZCB0byBnZW5lcmF0ZSBhDQo+ID4+IGJpbmFyeSBmaWxlIGltYWdlIG9mIGEgdGFibGUgdGhh dCBjYW4gYmUgY29waWVkIGVsc2V3aGVyZSBmb3INCj4gPj4gaW52ZXN0aWdhdGlvbiB1c2luZyB0 b29scyBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcuICBUaGlzIGlzDQo+ID4+ IGVzcGVjaWFsbHkgcmVsZXZhbnQgZm9yIEFNTCB0eXBlIHRhYmxlcyBsaWtlIERTRFQgYW5kIFNT RFQuDQo+ID4+DQo+ID4+IFRoZSBpbnNwaXJhdGlvbiBmb3IgdGhpcyBpcyB0aGUgZXhpc3Rpbmcg c21iaW9zdmlldyBEZWJ1ZzEgU2hlbGwNCj4gPj4gY29tbWFuZC4NCj4gPj4NCj4gPj4gTWFueSB0 YWJsZXMgYXJlIG5vdCBleHBsaWNpdGx5IGhhbmRsZWQsIGluIHBhcnQgYmVjYXVzZSBubyBleGFt cGxlcyBhcmUNCj4gPj4gYXZhaWxhYmxlIGZvciBvdXIgdGVzdGluZy4NCj4gPj4NCj4gPj4gVGhl IHByb2dyYW0gaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5kZWQgdG8gbmV3IHRhYmxlcyB3aXRoIG1p bmltYWwNCj4gPj4gZWZmb3J0LCBhbmQgY29udHJpYnV0aW9ucyBhcmUgaW52aXRlZC4NCj4gPj4N Cj4gPj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50 IDEuMQ0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0u Y29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBFdmFuIExsb3lkIDxldmFuLmxsb3lkQGFybS5jb20+ DQo+ID4+IFJldmlld2VkLWJ5OiBKYWJlbiBDYXJzZXkgPGphYmVuLmNhcnNleUBpbnRlbC5jb20+ DQo+ID4+IC0tLQ0KPiA+Pg0KPiA+PiBUaGUgdXBkYXRlZCBjaGFuZ2VzIGNhbiBiZSB2aWV3ZWQg YXQ6DQo+ID4+IAlodHRwczovL2dpdGh1Yi5jb20vc2FtaW11amF3YXIvZWRrMi90cmVlLzE4OF9h Y3Bpdmlld192NA0KPiA+Pg0KPiA+PiBOb3RlczoNCj4gPj4gICAgICAgdjQ6DQo+ID4+ICAgICAg IC0gRmlyc3RseSwgcHVibGljIGxpYnJhcnkgQVBJcyBzaG91bGQgaGF2ZSAiRUZJQVBJIiBkZWNv cmF0b3IuDQo+IFtSQVldDQo+ID4+ICAgICAgIC0gUmVzdWJtaXR0aW5nIHVwZGF0ZWQgcGF0Y2gg d2l0aCAiRUZJQVBJIiBkZWNvcmF0b3IuDQo+IFtTQU1JXQ0KPiA+Pg0KPiA+PiAgICAgICAtIFNl Y29uZGx5LCBJIGFtIHdvbmRlcmluZyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5vdCBleHBvc2UgYW55 DQo+ID4+ICAgICAgICAgbGlicmFyeSBjbGFzc2VzIGZvciBoYW5kbGluZyBvZiBtb3JlIEFDUEkg dGFibGVzLg0KPiA+PiAgICAgICAgIEkgYWdyZWUgdG8gaW1wbGVtZW50IFVlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYiBpbiBhIHdheSBmb3INCj4gZWFzeQ0KPiA+PiAgICAgICAgIGV4dGVuc2lv biBmb3IgaGFuZGxpbmcgb2YgbW9yZSBBQ1BJIHRhYmxlcywgYnV0IEkgcHJlZmVyIHRvIGtlZXAg dGhlDQo+ID4+ICAgICAgICAgaW50ZXJmYWNlcyBpbnRlcm5hbGx5IGluc2lkZSB0aGUgVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliLg0KPiBbUkFZXQ0KPiA+PiAgICAgICAtIFVwZGF0ZWQgYXMg c3VnZ2VzdGVkLg0KPiBbU0FNSV0NCj4gPj4NCj4gPj4gICAgICAgdjM6DQo+ID4+ICAgICAgIC0g Q2FuIHRoZSBpbmRpdmlkdWFsICJjaGlsZCIgbGlicmFyaWVzIGJlIHBsYWNlZCBpbnRvDQo+ID4+ ICAgICAgICAgc3ViZGlyZWN0b3JpZXMgdW5kZXIgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli IGRpcmVjdG9yeQ0KPiA+PiAgICAgICAgIGZvciBjbGVhciBzZXBhcmF0aW9uPw0KPiBbSkFCRU5d DQo+ID4+ICAgICAgIC0gUGF0Y2ggdXBkYXRlZCB0byBtb3ZlIGluZGl2aWR1YWwgImNoaWxkIiBs aWJyYXJpZXMgaW50bw0KPiA+PiAgICAgICAgIHN1YmRpcmVjdG9yaWVzLg0KPiBbU0FNSV0NCj4g Pj4NCj4gPj4gICAgICAgLSBJbiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIsYyB3aGF0J3Mg dGhlIG1vdGl2YXRpb24gZm9yIGFsbA0KPiA+PiAgICAgICAgIHRoZSB3cmFwcGVycyBhcm91bmQg cHJpbnQ/IEkgc2VlIHRoYXQgc29tZSBhcmUgZm9yIG1lbW9yeSBhY2Nlc3MNCj4gPj4gICAgICAg ICByZXN0cmljdGlvbnMsIGJ1dCB0aGUgcmVzdD8gIFByaW50R3VpZCwgbG9va3MgdGhlIHNhbWUg YXMgdXNpbmcNCj4gPj4gICAgICAgICAlZyB3aXRoIFByaW50KCkuLi4NCj4gW0pBQkVOXQ0KPiA+ PiAgICAgICAtIFRoZSBwcmludCB3cmFwcGVycyBlbmFibGUgYSBjb21tb24gc3R5bGVkIGZvcm1h dHRlZCBwcmludGluZyBmb3INCj4gPj4gICAgICAgICB0aGUgQUNQSSBmaWVsZHMuIFRoZSBBQ1BJ dmlldyB0YWJsZSBwYXJzaW5nIGZyYW1ld29yayB1dGlsaXplcyBhDQo+ID4+ICAgICAgICAgdGFi bGUtZHJpdmVuIGFwcHJvYWNoIGZvciBwYXJzaW5nIHRoZSB0YWJsZXMgYW5kIHRoZXNlIGZ1bmN0 aW9ucw0KPiA+PiAgICAgICAgIGFyZSBpbnZva2VkIGJ5IHRoZSBmcmFtZXdvcmsgYmFzZWQgb24g dGhlIGZpZWxkIHNpemUgYW5kIHR5cGUuDQo+ID4+ICAgICAgICAgSG93ZXZlciB5b3UgYXJlIHJp Z2h0LCBpdCBpcyBzdXBlcmZsdW91cyBpbiB0aGUgY2FzZSBvZiBQcmludEd1aWQNCj4gPj4gICAg ICAgICAoV2hpY2ggaGFzIG5vdyBiZWVuIHJlbW92ZWQgaW4gdGhlIHVwZGF0ZWQgcGF0Y2gpLg0K PiBbU0FNSV0NCj4gPj4NCj4gPj4gICAgICAgLSBEbyB3ZSB3YW50IHRvIGNoYW5nZSB0aGUgbWFp biBlbnRyeXBvaW50IHRvIGEgRHluYW1pY0NvbW1hbmQNCj4gPj4gICAgICAgICBzaW5jZSB0aGlz IGNvbW1hbmQgaXMgbm90IGluIHRoZSBzaGVsbCBzcGVjPyBJZiB5ZXMsIGRvIHdlIHdhbnQNCj4g Pj4gICAgICAgICB0byBkbyB0aGF0IGZpcnN0IG9yIGFmdGVyPw0KPiBbSkFCRU5dDQo+ID4+ICAg ICAgIC0gVGhlIEVDUiAxNzg0IGZvciBBQ1BJdmlldyBhcHBlYXJzIHRvIGJlICdBcHByb3ZlZCBh cyBuZXcgY29udGVudA0KPiA+PiAgICAgICAgIGZvciB0aGUgU2hlbGwgU3BlYy4nIGluIE1hbnRp cywNCj4gPj4gICAgICAgICBzZWUgaHR0cHM6Ly9tYW50aXMudWVmaS5vcmcvbWFudGlzL3ZpZXcu cGhwP2lkPTE3ODQuDQo+ID4+ICAgICAgICAgQXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgRUNSIGNo YW5nZSBuZWVkcyB0byBiZSBwcm9wYWdhdGVkIHRvIHRoZQ0KPiA+PiAgICAgICAgIFNoZWxsIHNw ZWNpZmljYXRpb24gYW5kIGlzIHBlbmRpbmcuIEluIGxpZ2h0IG9mIHRoZSBhYm92ZSwgSSB0aGlu aw0KPiA+PiAgICAgICAgIHRoYXQgYWRkaW5nIER5bmFtaWNDb21tYW5kIHN1cHBvcnQgaXMgbm90 IG5lY2Vzc2FyeS4gUGxlYXNlIGxldA0KPiBtZQ0KPiA+PiAgICAgICAgIGtub3cgaWYgeW91IGZl ZWwgb3RoZXJ3aXNlLg0KPiBbU0FNSV0NCj4gPj4NCj4gPj4gICAgU2hlbGxQa2cvSW5jbHVkZS9M aWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiB8IDQ0OSArKysrKysrKysrKysNCj4gPj4g ICAgU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oDQo+ IHwgMTI2ICsrKysNCj4gPg0KPiA+IFNhbWksIHNob3VsZCB0aGUgYWJvdmUgdHdvIG5ldyBmaWxl cyBiZSByZW1vdmVkPw0KPiA+IFNpbmNlIHBlciB5b3VyIGNvbW1lbnRzLCB0aGUgaW50ZXJmYWNl cyBhcmUga2VwdCBpbnNpZGUNCj4gPiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQo+ID4N Cj4gPj4gICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNw aVBhcnNlci5jDQo+IHwgNjYyICsrKysrKysrKysrKysrKysrDQo+ID4+ICAgIFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jDQo+IHwg MjE1ICsrKysrKw0KPiA+PiAgICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9BY3BpVmlldy5jDQo+IHwgNjAxICsrKysrKysrKysrKysrKysNCj4gPj4gICAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuaA0KPiB8 IDEwMyArKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXIuYw0KPiB8IDExNyArKysNCj4gPj4NCj4gU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0Jn cnRQYXJzZXJMaWIuaW5mDQo+IHwgIDMzICsNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXIuYw0KPiB8IDI4 NyArKysrKysrKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlckxpYi5pDQo+IG5mICB8ICAzMyArDQo+ID4+ DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv RHNkdC9Ec2R0UGFyc2VyLmMNCj4gfCAgOTIgKysrDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyTGliLmlu Zg0KPiB8ICAzMyArDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLmMNCj4gfCAzMDkgKysrKysrKysNCj4g Pj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9GYWR0L0ZhZHRQYXJzZXJMaWIuaW5mDQo+IHwgIDMzICsNCj4gPj4NCj4gU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIu Yw0KPiB8IDMzOCArKysrKysrKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXJMaWIuaW5mDQo+IHwgIDMz ICsNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiB8IDc0NSArKysrKysrKysrKysrKysrKysrKw0K PiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL0lvcnQvSW9ydFBhcnNlckxpYi5pbmYNCj4gfCAgMzMgKw0KPiA+Pg0KPiBTaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnNl ci5jDQo+IHwgMzU4ICsrKysrKysrKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXJMaWIuaQ0KPiBuZiAg fCAgMzMgKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlci5jDQo+IHwgMTM5ICsrKysNCj4gPj4NCj4gU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01j ZmdQYXJzZXJMaWIuaW4NCj4gZiAgfCAgMzMgKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlci5jDQo+IHwg MjE0ICsrKysrKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlckxpYi5pbg0KPiBmICB8ICAzMyArDQo+ID4+ ICAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv U2xpdC9TbGl0UGFyc2VyLmMNCj4gfCAxODcgKysrKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXJMaWIu aW5mDQo+IHwgIDMzICsNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIuYw0KPiB8IDIxMyArKysrKysNCj4g Pj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9TcGNyL1NwY3JQYXJzZXJMaWIuaW5mDQo+IHwgIDMzICsNCj4gPj4NCj4gU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIu Yw0KPiB8IDM3NSArKysrKysrKysrDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyTGliLmluZg0KPiB8ICAz MyArDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLmMNCj4gfCAgOTIgKysrDQo+ID4+DQo+IFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFy c2VyTGliLmluZg0KPiB8ICAzMyArDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLmMNCj4gfCAxOTggKysr KysrDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyTGliLmluZg0KPiB8ICAzMyArDQo+ID4+DQo+IFNoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpDQo+IGIuYyAgIHwgMTA2ICsrKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaQ0KPiBi LmggICB8ICAzMiArDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpDQo+IGIuaW5mIHwgIDYwICsrDQo+ ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpDQo+IGIudW5pIHwgMTI3ICsrKysNCj4gPj4gICAgU2hlbGxQ a2cvU2hlbGxQa2cuZGVjDQo+IHwgICAzICstDQo+ID4+ICAgIDM5IGZpbGVzIGNoYW5nZWQsIDY2 MDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEv U2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiBiL1NoZWxs UGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmgNCj4gPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uMTRkNzVlZWI5MjgyYTc2NDkyNDMzDQo+IGU0NjBhMTgwZGNjNGNkMTRjNGUN Cj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkv QWNwaVZpZXcvQWNwaVBhcnNlci5oDQo+ID4+IEBAIC0wLDAgKzEsNDQ5IEBADQo+ID4+ICsvKioN Cj4gPj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4g Pj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIN Cj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpZm5kZWYg QUNQSVBBUlNFUl9IXw0KPiA+PiArI2RlZmluZSBBQ1BJUEFSU0VSX0hfDQo+ID4+ICsNCj4gPj4g KyNkZWZpbmUgT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAgMzYNCj4gPj4gKw0KPiA+PiArLy8v IFRoZSBSU0RQIHRhYmxlIHNpZ25hdHVyZSBpcyAiUlNEIFBUUiAiICg4IGJ5dGVzKQ0KPiA+PiAr Ly8vIEhvd2V2ZXIgVGhlIHNpZ25hdHVyZSBmb3IgQUNQSSB0YWJsZXMgaXMgNCBieXRlcy4NCj4g Pj4gKy8vLyBUbyB3b3JrIGFyb3VuZCB0aGlzIG9kZGl0eSBkZWZpbmUgYSBzaWduYXR1cmUgdHlw ZQ0KPiA+PiArLy8vIHRoYXQgYWxsb3dzIHVzIHRvIHByb2Nlc3MgdGhlIGxvZyBvcHRpb25zLg0K PiA+PiArI2RlZmluZSBSU0RQX1RBQkxFX0lORk8gIFNJR05BVFVSRV8zMignUicsICdTJywgJ0Qn LCAnUCcpDQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFD UEkgdGFibGUgZXJyb3IgY291bnRlci4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklB UEkNCj4gPj4gK0luY3JlbWVudEVycm9yQ291bnQgKA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICk7 DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFi bGUgd2FybmluZyBjb3VudGVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0K PiA+PiArSW5jcmVtZW50V2FybmluZ0NvdW50ICgNCj4gPj4gKyAgVk9JRA0KPiA+PiArICApOw0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBj aGVja3N1bS4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBjaGVj a3N1bSBmb3IgdGhlIEFDUEkgdGFibGUgYW5kIG9wdGlvbmFsbHkNCj4gPj4gKyAgcHJpbnRzIHRo ZSBzdGF0dXMuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxv ZyB0aGUgc3RhdHVzIG9mIHRoZSBjaGVja3N1bS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiA+PiArICBAcGFy YW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKw0KPiA+PiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICBUaGUgY2hlY2tzdW0gaXMgT0suDQo+ID4+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgIFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ID4+ICsqLw0KPiA+PiArQk9P TEVBTg0KPiA+PiArRUZJQVBJDQo+ID4+ICtWZXJpZnlDaGVja3N1bSAoDQo+ID4+ICsgIElOIEJP T0xFQU4gTG9nLA0KPiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyICBM ZW5ndGgNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGVyZm9y bXMgYSByYXcgZGF0YSBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZl ci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIu DQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wUmF3ICgNCj4g Pj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyIExlbmd0aA0KPiA+PiArICAp Ow0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMSBieXRlIG9mIGRhdHVt IGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gPj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+PiArDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcg dGhlIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4g Pj4gK0R1bXBVaW50OCAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiA+PiAr ICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhp cyBmdW5jdGlvbiB0cmFjZXMgMiBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4g Pj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1h dCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4g KyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXBVaW50MTYgKA0KPiA+PiAr ICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIN Cj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgYnl0 ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlDQo+ID4+ICsgICAgZm9ybWF0IHN0cmluZy4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZv ciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiAr RUZJQVBJDQo+ID4+ICtEdW1wVWludDMyICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3Jt YXQsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4g Pj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVk IGJ5IHRoZQ0KPiA+PiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFt IFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4g Pj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm ZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcFVpbnQ2 NCAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiA+PiArICBJTiBVSU5UOCog ICAgICAgIFB0cg0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0 cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBmb3Jt YXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4gPj4g KyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5V TEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQg c3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9J RA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wM0NoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hB UjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGNoYXJhY3Rl cnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gPj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBm b3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gPj4gKw0KPiA+PiArICBJZiBubyBmb3JtYXQg c3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPj4gKw0KPiA+ PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNp bmcgdGhlIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkN Cj4gPj4gK0R1bXA0Q2hhcnMgKA0KPiA+PiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJ T05BTCwNCj4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPj4gKyAgKTsNCj4gPj4gKw0K PiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDYgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUg b3B0aW9uYWxseQ0KPiA+PiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYg c3BlY2lmaWVkLg0KPiA+PiArDQo+ID4+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lm aWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5d IEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4g Pj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm ZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcDZDaGFy cyAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+PiArICBJ TiBVSU5UOCogICAgICAgIFB0cg0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBm dW5jdGlvbiB0cmFjZXMgOCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ ICsNCj4gPj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBt dXN0IGJlIE5VTEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25h bCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0K PiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wOENoYXJzICgNCj4gPj4gKyAgSU4g Q09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAg UHRyDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMg YW5kIHByaW50cyB0aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dIEluZGVudCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9i YWwgdGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LiBUaGUgZ2xv YmFsIHRhYmxlIGluZGVudCBpcyAwIGJ5IGRlZmF1bHQ7DQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgIGhvd2V2ZXIgdGhpcyB2YWx1ZSBpcyB1cGRhdGVkIG9uIGVudHJ5IHRvIHRoZQ0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUFjcGkoKSBieSBhZGRpbmcgdGhl IGluZGVudCB2YWx1ZQ0KPiBwcm92aWRlZCB0bw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICBQYXJzZUFjcGkoKSBhbmQgcmVzdG9yZWQgYmFjayBvbiBleGl0Lg0KPiBUaGVyZWZvcmUN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRvdGFsIGluZGVudCBpbiB0aGUg b3V0cHV0IGlzIGRlcGVuZGVudCBvbg0KPiBmcm9tDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLg0KPiA+PiArICBAcGFyYW0gW2lu XSBGaWVsZE5hbWUgICBQb2ludGVyIHRvIHRoZSBGaWVsZCBOYW1lLg0KPiA+PiArKi8NCj4gPj4g K1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUHJpbnRGaWVsZE5hbWUgKA0KPiA+PiArICBJTiBV SU5UMzIgICAgICAgICBJbmRlbnQsDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogIEZpZWxkTmFt ZQ0KPiA+PiArKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyB0 aGUgdGVtcGxhdGUgZm9yIGN1c3RvbWl6aW5nIHRoZSB0cmFjZSBvdXRwdXQNCj4gPj4gKw0KPiA+ PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRh dGEgYXMgc3BlY2lmaWVkIGJ5DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlICdGb3Jt YXQnIG1lbWJlciBvZiBBQ1BJX1BBUlNFUi4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK3R5cGVk ZWYgVk9JRCAoRUZJQVBJICpGTlBUUl9QUklOVF9GT1JNQVRURVIpKENPTlNUIENIQVIxNioNCj4g Rm9ybWF0LCBVSU5UOCogUHRyKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcG9p bnRlciBpcyB0aGUgdGVtcGxhdGUgZm9yIHZhbGlkYXRpbmcgYW4gQUNQSSB0YWJsZSBmaWVsZC4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIg dG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhcyBzcGVjaWZpZWQNCj4gYnkNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICB0aGUgJ0NvbnRleHQnIG1lbWJlciBvZiB0aGUgQUNQSV9Q QVJTRVIuDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgZS5nLiB0aGlzIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZQ0KPiBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArdHlw ZWRlZiBWT0lEIChFRklBUEkgKkZOUFRSX0ZJRUxEX1ZBTElEQVRPUikoVUlOVDgqIFB0ciwgVk9J RCoNCj4gQ29udGV4dCk7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGUgQUNQSV9QQVJTRVIgc3RydWN0 dXJlIGRlc2NyaWJlcyB0aGUgZmllbGRzIG9mIGFuIEFDUEkgdGFibGUgYW5kDQo+ID4+ICsgICAg cHJvdmlkZXMgbWVhbnMgZm9yIHRoZSBwYXJzZXIgdG8gaW50ZXJwcmV0IGFuZCB0cmFjZSBhcHBy b3ByaWF0ZWx5Lg0KPiA+PiArDQo+ID4+ICsgIFRoZSBmaXJzdCB0aHJlZSBtZW1iZXJzIGFyZSBw b3B1bGF0ZWQgYmFzZWQgb24gaW5mb3JtYXRpb24gcHJlc2VudCBpbg0KPiA+PiArICBpbiB0aGUg QUNQSSB0YWJsZSBzcGVjaWZpY2F0aW9ucy4gVGhlIHJlbWFpbmluZyBtZW1iZXJzIGRlc2NyaWJl IGhvdw0KPiA+PiArICB0aGUgcGFyc2VyIHNob3VsZCByZXBvcnQgdGhlIGZpZWxkIGluZm9ybWF0 aW9uLCB2YWxpZGF0ZSB0aGUgZmllbGQgZGF0YQ0KPiA+PiArICBhbmQvb3IgdXBkYXRlIGFuIGV4 dGVybmFsIHBvaW50ZXIgdG8gdGhlIGZpZWxkIChJdGVtUHRyKS4NCj4gPj4gKw0KPiA+PiArICBQ YXJzZUFjcGkoKSB1c2VzIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZCBieSAnRm9ybWF0JyBm b3IgdHJhY2luZw0KPiA+PiArICB0aGUgZmllbGQgZGF0YS4gSWYgdGhlIGZpZWxkIGlzIG1vcmUg Y29tcGxleCBhbmQgcmVxdWlyZXMgYWRkaXRpb25hbA0KPiA+PiArICBwcm9jZXNzaW5nIGZvciBm b3JtYXR0aW5nIGFuZCByZXByZXNlbnRhdGlvbiBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbg0K PiA+PiArICBjYW4gYmUgc3BlY2lmaWVkIGluICdQcmludEZvcm1hdHRlcicuDQo+ID4+ICsgIFRo ZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbiBtYXkgY2hvb3NlIHRvIHVzZSB0aGUgZm9ybWF0IHN0 cmluZw0KPiA+PiArICBzcGVjaWZpZWQgYnkgJ0Zvcm1hdCcgb3IgdXNlIGl0cyBvd24gaW50ZXJu YWwgZm9ybWF0IHN0cmluZy4NCj4gPj4gKw0KPiA+PiArICBUaGUgJ0Zvcm1hdCcgYW5kICdQcmlu dEZvcm1hdHRlcicgbWVtYmVycyBhbGxvdyBmbGV4aWJpbGl0eSBmb3INCj4gPj4gKyAgcmVwcmVz ZW50aW5nIHRoZSBmaWVsZCBkYXRhLg0KPiA+PiArKi8NCj4gPj4gK3R5cGVkZWYgc3RydWN0IEFj cGlQYXJzZXIgew0KPiA+PiArDQo+ID4+ICsgIC8vLyBTdHJpbmcgZGVzY3JpYmluZyB0aGUgQUNQ SSB0YWJsZSBmaWVsZA0KPiA+PiArICAvLy8gKEZpZWxkIGNvbHVtbiBmcm9tIEFDUEkgdGFibGUg c3BlYykNCj4gPj4gKyAgQ09OU1QgQ0hBUjE2KiAgICAgICAgIE5hbWVTdHI7DQo+ID4+ICsNCj4g Pj4gKyAgLy8vIFRoZSBsZW5ndGggb2YgdGhlIGZpZWxkLg0KPiA+PiArICAvLy8gKEJ5dGUgTGVu Z3RoIGNvbHVtbiBmcm9tIEFDUEkgdGFibGUgc3BlYykNCj4gPj4gKyAgVUlOVDMyICAgICAgICAg ICAgICAgIExlbmd0aDsNCj4gPj4gKw0KPiA+PiArICAvLy8gVGhlIG9mZnNldCBvZiB0aGUgZmll bGQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlLg0KPiA+PiArICAvLy8gKEJ5dGUgT2Zmc2V0 IGNvbHVtbiBmcm9tIEFDUEkgdGFibGUgc3BlYykNCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgIE9mZnNldDsNCj4gPj4gKw0KPiA+PiArICAvLy8gT3B0aW9uYWwgUHJpbnQoKSBzdHlsZSBm b3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLiBJZiBub3QNCj4gPj4gKyAgLy8vIHVz ZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiA+PiArICBDT05TVCBDSEFSMTYqICAgICAg ICAgRm9ybWF0Ow0KPiA+PiArDQo+ID4+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGEgcHJp bnQgZm9ybWF0dGVyIGZ1bmN0aW9uIHdoaWNoDQo+ID4+ICsgIC8vLyBpcyB0eXBpY2FsbHkgdXNl ZCB0byB0cmFjZSBjb21wbGV4IGZpZWxkIGluZm9ybWF0aW9uLg0KPiA+PiArICAvLy8gSWYgbm90 IHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiA+PiArICAvLy8gVGhlIEZvcm1hdCBz dHJpbmcgaXMgcGFzc2VkIHRvIHRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbg0KPiA+PiArICAv Ly8gYnV0IG1heSBiZSBpZ25vcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBjb2RlLg0KPiA+PiAr ICBGTlBUUl9QUklOVF9GT1JNQVRURVIgUHJpbnRGb3JtYXR0ZXI7DQo+ID4+ICsNCj4gPj4gKyAg Ly8vIE9wdGlvbmFsIHBvaW50ZXIgd2hpY2ggbWF5IGJlIHNldCB0byByZXF1ZXN0IHRoZSBwYXJz ZXIgdG8gdXBkYXRlDQo+ID4+ICsgIC8vLyBhIHBvaW50ZXIgdG8gdGhlIGZpZWxkIGRhdGEuIElm IHVudXNlZCB0aGlzIG11c3QgYmUgc2V0IHRvIE5VTEwuDQo+ID4+ICsgIFZPSUQqKiAgICAgICAg ICAgICAgICBJdGVtUHRyOw0KPiA+PiArDQo+ID4+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRv IGEgZmllbGQgdmFsaWRhdG9yIGZ1bmN0aW9uLg0KPiA+PiArICAvLy8gVGhlIGZ1bmN0aW9uIHNo b3VsZCBkaXJlY3RseSByZXBvcnQgYW55IGFwcHJvcHJpYXRlIGVycm9yIG9yIHdhcm5pbmcNCj4g Pj4gKyAgLy8vIGFuZCBpbnZva2UgdGhlIGFwcHJvcHJpYXRlIGNvdW50ZXIgdXBkYXRlIGZ1bmN0 aW9uLg0KPiA+PiArICAvLy8gSWYgbm90IHVzZWQgdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQg dG8gTlVMTC4NCj4gPj4gKyAgRk5QVFJfRklFTERfVkFMSURBVE9SIEZpZWxkVmFsaWRhdG9yOw0K PiA+PiArDQo+ID4+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMg aW5mb3JtYXRpb24sDQo+ID4+ICsgIC8vLyB3aGljaCB0aGUgRmllbGQgVmFsaWRhdG9yIGZ1bmN0 aW9uIGNhbiB1c2UgdG8gZGV0ZXJtaW5lDQo+ID4+ICsgIC8vLyBhZGRpdGlvbmFsIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBBQ1BJIHRhYmxlIGFuZCBtYWtlDQo+ID4+ICsgIC8vLyBkZWNpc2lvbnMg YWJvdXQgdGhlIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC4NCj4gPj4gKyAgLy8vIGUuZy4gdGhpcyBj b3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyDQo+ID4+ICsgIFZPSUQq ICAgICAgICAgICAgICAgICBDb250ZXh0Ow0KPiA+PiArfSBBQ1BJX1BBUlNFUjsNCj4gPj4gKw0K PiA+PiArLyoqIEEgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgdGhlIHBvaW50ZXJzIHRvIHRoZSBt ZW1iZXJzIG9mIHRoZQ0KPiA+PiArICAgIEFDUEkgZGVzY3JpcHRpb24gaGVhZGVyIHN0cnVjdHVy ZSB0aGF0IHdhcyBwYXJzZWQuDQo+ID4+ICsqLw0KPiA+PiArdHlwZWRlZiBzdHJ1Y3QgQWNwaURl c2NyaXB0aW9uSGVhZGVySW5mbyB7DQo+ID4+ICsgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0K PiA+PiArICBVSU5UMzIqIFNpZ25hdHVyZTsNCj4gPj4gKyAgLy8vIExlbmd0aCBvZiB0aGUgQUNQ SSB0YWJsZQ0KPiA+PiArICBVSU5UMzIqIExlbmd0aDsNCj4gPj4gKyAgLy8vIFJldmlzaW9uDQo+ ID4+ICsgIFVJTlQ4KiAgUmV2aXNpb247DQo+ID4+ICsgIC8vLyBDaGVja3N1bQ0KPiA+PiArICBV SU5UOCogIENoZWNrc3VtOw0KPiA+PiArICAvLy8gT0VNIElkIC0gbGVuZ3RoIGlzIDYgYnl0ZXMN Cj4gPj4gKyAgVUlOVDgqICBPZW1JZDsNCj4gPj4gKyAgLy8vIE9FTSB0YWJsZSBJZA0KPiA+PiAr ICBVSU5UNjQqIE9lbVRhYmxlSWQ7DQo+ID4+ICsgIC8vLyBPRU0gcmV2aXNpb24gSWQNCj4gPj4g KyAgVUlOVDMyKiBPZW1SZXZpc2lvbjsNCj4gPj4gKyAgLy8vIENyZWF0b3IgSWQNCj4gPj4gKyAg VUlOVDMyKiBDcmVhdG9ySWQ7DQo+ID4+ICsgIC8vLyBDcmVhdG9yIHJldmlzaW9uDQo+ID4+ICsg IFVJTlQzMiogQ3JlYXRvclJldmlzaW9uOw0KPiA+PiArfSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURF Ul9JTkZPOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNl IGFuIEFDUEkgdGFibGUgYnVmZmVyLg0KPiA+PiArDQo+ID4+ICsgIFRoZSBBQ1BJIHRhYmxlIGJ1 ZmZlciBpcyBwYXJzZWQgdXNpbmcgdGhlIEFDUEkgdGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ ID4+ICsgIHNwZWNpZmllZCBieSBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIg ZWxlbWVudHMuIFRoaXMgcGFyc2VyDQo+ID4+ICsgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2gg ZWFjaCBpdGVtIG9uIHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBhbmQgbG9ncw0KPiB0aGUNCj4gPj4g KyAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBjYW4g b3B0aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVzIGFuZCBmZXRjaCBzcGVjaWZp Yw0KPiA+PiArICBmaWVsZCB2YWx1ZXMuIFRoZSBJdGVtUHRyIG1lbWJlciBvZiB0aGUgQUNQSV9Q QVJTRVIgc3RydWN0dXJlICh3aGVyZQ0KPiB1c2VkKQ0KPiA+PiArICBpcyB1cGRhdGVkIGJ5IHRo aXMgcGFyc2VyIGZ1bmN0aW9uIHRvIHBvaW50IHRvIHRoZSBzZWxlY3RlZCBmaWVsZCBkYXRhDQo+ ID4+ICsgIChlLmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBmaWVsZHMpLg0K PiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICBUcmFjZSB0aGUgQUNQSSBm aWVsZHMgVFJVRSBlbHNlIG9ubHkgcGFyc2UgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgIE51bWJlciBv ZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEFzY2lp TmFtZSAgICBPcHRpb25hbCBwb2ludGVyIHRvIGFuIEFTQ0lJIHN0cmluZyB0aGF0DQo+IGRlc2Ny aWJlcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBh cnNlZC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICBMZW5n dGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIGJ5IFB0ci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUGFy c2VyICAgICAgIFBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgc3RydWN0dXJlDQo+ IHRoYXQNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyB0aGUgdGFi bGUgYmVpbmcgcGFyc2VkLg0KPiA+PiArICBAcGFyYW0gW2luXSBQYXJzZXJJdGVtcyAgTnVtYmVy IG9mIGl0ZW1zIGluIHRoZSBBQ1BJX1BBUlNFUiBhcnJheS4NCj4gPj4gKw0KPiA+PiArICBAcmV0 dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ID4+ICsqLw0KPiA+PiArVUlOVDMyDQo+ID4+ ICtFRklBUEkNCj4gPj4gK1BhcnNlQWNwaSAoDQo+ID4+ICsgIElOIEJPT0xFQU4gICAgICAgICAg ICBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIEluZGVudCwNCj4gPj4gKyAg SU4gQ09OU1QgQ0hBUjgqICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4gPj4gKyAgSU4gVUlO VDgqICAgICAgICAgICAgIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIExlbmd0 aCwNCj4gPj4gKyAgSU4gQ09OU1QgQUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gPj4gKyAgSU4gVUlO VDMyICAgICAgICAgICAgIFBhcnNlckl0ZW1zDQo+ID4+ICspOw0KPiA+PiArDQo+ID4+ICsvKiog VGhpcyBpcyBhIGhlbHBlciBtYWNybyB0byBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIFBhcnNlciBm dW5jdGlvbnMuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyIFRoZSBuYW1lIG9m IHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZQ0KPiA+PiArICAgICAgICAgICAg ICBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKyovDQo+ID4+ICsjZGVmaW5lIFBBUlNFUl9QQVJB TVMoUGFyc2VyKSBQYXJzZXIsIHNpemVvZiAoUGFyc2VyKSAvIHNpemVvZiAoUGFyc2VyWzBdKQ0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBpcyBhIGhlbHBlciBtYWNybyBmb3IgZGVzY3JpYmluZyB0 aGUgQUNQSSBoZWFkZXIgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBJbmZv ICBQb2ludGVyIHRvIHJldHJpZXZlIHRoZSBBQ1BJIHRhYmxlIGhlYWRlcg0KPiBpbmZvcm1hdGlv bi4NCj4gPj4gKyovDQo+ID4+ICsjZGVmaW5lIFBBUlNFX0FDUElfSEVBREVSKEluZm8pICAgICAg ICAgICAgICAgICAgIFwNCj4gPj4gKyAgeyBMIlNpZ25hdHVyZSIsIDQsIDAsIE5VTEwsIER1bXA0 Q2hhcnMsICAgICAgICAgXA0KPiA+PiArICAgIChWT0lEKiopJihJbmZvKS0+U2lnbmF0dXJlICwg TlVMTCwgTlVMTCB9LCAgICBcDQo+ID4+ICsgIHsgTCJMZW5ndGgiLCA0LCA0LCBMIiVkIiwgTlVM TCwgICAgICAgICAgICAgICAgIFwNCj4gPj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkxlbmd0aCwg TlVMTCwgTlVMTCB9LCAgICAgICAgXA0KPiA+PiArICB7IEwiUmV2aXNpb24iLCAxLCA4LCBMIiVk IiwgTlVMTCwgICAgICAgICAgICAgICBcDQo+ID4+ICsgICAgKFZPSUQqKikmKEluZm8pLT5SZXZp c2lvbiwgTlVMTCwgTlVMTCB9LCAgICAgIFwNCj4gPj4gKyAgeyBMIkNoZWNrc3VtIiwgMSwgOSwg TCIweCVYIiwgTlVMTCwgICAgICAgICAgICAgXA0KPiA+PiArICAgIChWT0lEKiopJihJbmZvKS0+ Q2hlY2tzdW0sIE5VTEwsIE5VTEwgfSwgICAgICBcDQo+ID4+ICsgIHsgTCJPZW0gSUQiLCA2LCAx MCwgTlVMTCwgRHVtcDZDaGFycywgICAgICAgICAgIFwNCj4gPj4gKyAgICAoVk9JRCoqKSYoSW5m byktPk9lbUlkLCBOVUxMLCBOVUxMIH0sICAgICAgICAgXA0KPiA+PiArICB7IEwiT2VtIFRhYmxl IElEIiwgOCwgMTYsIE5VTEwsIER1bXA4Q2hhcnMsICAgICBcDQo+ID4+ICsgICAgKFZPSUQqKikm KEluZm8pLT5PZW1UYWJsZUlkLCBOVUxMLCBOVUxMIH0sICAgIFwNCj4gPj4gKyAgeyBMIk9lbSBS ZXZpc2lvbiIsIDQsIDI0LCBMIjB4JVgiLCBOVUxMLCAgICAgICAgXA0KPiA+PiArICAgIChWT0lE KiopJihJbmZvKS0+T2VtUmV2aXNpb24sIE5VTEwsIE5VTEwgfSwgICBcDQo+ID4+ICsgIHsgTCJD cmVhdG9yIElEIiwgNCwgMjgsIE5VTEwsIER1bXA0Q2hhcnMsICAgICAgIFwNCj4gPj4gKyAgICAo Vk9JRCoqKSYoSW5mbyktPkNyZWF0b3JJZCwgTlVMTCwgTlVMTCB9LCAgICAgXA0KPiA+PiArICB7 IEwiQ3JlYXRvciBSZXZpc2lvbiIsIDQsIDMyLCBMIjB4JVgiLCBOVUxMLCAgICBcDQo+ID4+ICsg ICAgKFZPSUQqKikmKEluZm8pLT5DcmVhdG9yUmV2aXNpb24sIE5VTEwsIE5VTEwgfQ0KPiA+PiAr DQo+ID4+ICsvKiogTGVuZ3RoIG9mIHRoZSBBQ1BJIEdBUyBzdHJ1Y3R1cmUuDQo+ID4+ICsNCj4g Pj4gKyAgTk9URTogVGhpcyBtaWdodCBub3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ID4+ICsgICAg ICAgIHNpemVvZiAoRUZJX0FDUElfNl8yX0dFTkVSSUNfQUREUkVTU19TVFJVQ1RVUkUpLg0KPiA+ PiArICAgICAgICBIb3dldmVyLCB3ZSBkZWxpYmVyYXRlbHkgbWluaW1pc2UgYW55IHJlZmVyZW5j ZSB0byB0aGUgRURLMiBBQ1BJDQo+ID4+ICsgICAgICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0 byBwcm92aWRlIGNyb3NzIGNoZWNraW5nLg0KPiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgR0FTX0xF TkdUSCAgICAgICAgICAgICAgICAgICAgIDEyDQo+ID4+ICsNCj4gPj4gKy8qKiBMZW5ndGggb2Yg dGhlIEFDUEkgSGVhZGVyIHN0cnVjdHVyZS4NCj4gPj4gKw0KPiA+PiArICBOT1RFOiBUaGlzIG1p Z2h0IG5vcm1hbGx5IGJlIGRlZmluZWQgYXMNCj4gPj4gKyAgICAgICAgc2l6ZW9mIChFRklfQUNQ SV9ERVNDUklQVElPTl9IRUFERVIpLg0KPiA+PiArICAgICAgICBIb3dldmVyLCB3ZSBkZWxpYmVy YXRlbHkgbWluaW1pc2UgYW55IHJlZmVyZW5jZSB0byB0aGUgRURLMiBBQ1BJDQo+ID4+ICsgICAg ICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0byBwcm92aWRlIGNyb3NzIGNoZWNraW5nLg0KPiA+ PiArKi8NCj4gPj4gKyNkZWZpbmUgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RIICAzNg0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCB0cmFjZXMgdGhlIEdB UyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkDQo+ID4+ICsgICAgYnkgdGhlIEdhc1BhcnNlci4NCj4g Pj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgTnVtYmVyIG9mIHNwYWNl cyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklB UEkNCj4gPj4gK0R1bXBHYXNTdHJ1Y3QgKA0KPiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0ciwN Cj4gPj4gKyAgSU4gVUlOVDMyICAgICAgICBJbmRlbnQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+ PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJl ZCBieSB0aGUgR2FzUGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAg T3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcEdhcyAoDQo+ID4+ICsg IElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+PiArICBJTiBVSU5UOCogICAg ICAgIFB0cg0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFj ZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNl ci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIE51bWJlciBv ZiBieXRlcyBwYXJzZWQuDQo+ID4+ICsqLw0KPiA+PiArVUlOVDMyDQo+ID4+ICtFRklBUEkNCj4g Pj4gK0R1bXBBY3BpSGVhZGVyICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0cg0KPiA+PiArICApOw0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGFz IGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBU aGlzIGZ1bmN0aW9uIG9wdGlvbmFsbHkgcmV0dXJucyB0aGUgU2lnbmF0dXJlLCBMZW5ndGggYW5k IHJldmlzaW9uIG9mIHRoZQ0KPiA+PiArICBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dICBQdHIgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhlIEFD UEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW291dF0gTGVuZ3RoICAgICBHZXRz IGxvY2F0aW9uIG9mIHRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsgIEBwYXJh bSBbb3V0XSBSZXZpc2lvbiAgIEdldHMgbG9jYXRpb24gb2YgdGhlIHJldmlzaW9uIG9mIHRoZSBB Q1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNl ZC4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzINCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3Bp SGVhZGVyICgNCj4gPj4gKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gPj4gKyAgT1VUIENP TlNUIFVJTlQzMioqIFNpZ25hdHVyZSwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIExlbmd0 aCwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ID4+ICsgICk7DQo+ID4+ ICsNCj4gPj4gKyNlbmRpZiAvLyBBQ1BJUEFSU0VSX0hfDQo+ID4+IGRpZmYgLS1naXQgYS9TaGVs bFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmgNCj4gYi9TaGVs bFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmgNCj4gPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uYTY5ZDU2ZGE2Y2Y3MjhiYjk4ZGYyDQo+IDY1ZGUzYWUwMzBkODUx MjA0OTQNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xp YnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmgNCj4gPj4gQEAgLTAsMCArMSwxMjYgQEAN Cj4gPj4gKy8qKg0KPiA+PiArICBIZWFkZXIgZmlsZSBmb3IgQUNQSSB0YWJsZSBwYXJzZXINCj4g Pj4gKw0KPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4g KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dS QU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4g QkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0Yg QU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsqKi8NCj4gPj4g Kw0KPiA+PiArI2lmbmRlZiBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gPj4gKyNkZWZpbmUgQUNQSVRB QkxFUEFSU0VSX0hfDQo+ID4+ICsNCj4gPj4gKy8qKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgQUNQ SSB0YWJsZSBwYXJzZXJzLg0KPiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgTUFYX0FDUElfVEFCTEVf UEFSU0VSUyAgICAgICAgICAxNg0KPiA+PiArDQo+ID4+ICsvKiogQW4gaW52YWxpZC9OVUxMIHNp Z25hdHVyZSB2YWx1ZS4NCj4gPj4gKyovDQo+ID4+ICsjZGVmaW5lIEFDUElfUEFSU0VSX1NJR05B VFVSRV9OVUxMICAgICAgMA0KPiA+PiArDQo+ID4+ICsvKiogQSBmdW5jdGlvbiB0aGF0IHBhcnNl cyB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAg ICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0g W2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlz aW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK3R5cGVkZWYNCj4gPj4gK1ZP SUQNCj4gPj4gKyhFRklBUEkgKiBQQVJTRV9BQ1BJX1RBQkxFX1BST0MpICgNCj4gPj4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ICsgIElOIFVJTlQz MiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9u DQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5m b3JtYXRpb24NCj4gPj4gKyovDQo+ID4+ICt0eXBlZGVmIHN0cnVjdCBBY3BpVGFibGVQYXJzZXIg ew0KPiA+PiArICAvLy8gQUNQSSB0YWJsZSBzaWduYXR1cmUNCj4gPj4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+PiArDQo+ID4+ICsgIC8vLyBUaGUgQUNQSSB0YWJs ZSBwYXJzZXIgZnVuY3Rpb24uDQo+ID4+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNl cjsNCj4gPj4gK30gQUNQSV9UQUJMRV9QQVJTRVI7DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3Rl ciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHJl Z2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtp bl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0g W2luXSBQYXJzZXJQcm9jICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0K PiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZh bGlkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZv ciB0aGUgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFs cmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAg Tm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkN Cj4gPj4gK1JlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAg ICAgIFNpZ25hdHVyZSwNCj4gPj4gKyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNl clByb2MNCj4gPj4gKyk7DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBBQ1BJIHRh YmxlIFBhcnNlcg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gZGVyZWdpc3RlcnMgdGhl IEFDUEkgdGFibGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVy ZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIHdhcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIg d2FzIG5vdCBmb3VuZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkN Cj4gPj4gK0RlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArICBJTiAgVUlOVDMyICAgICAgICAgICAg ICAgICAgU2lnbmF0dXJlDQo+ID4+ICspOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlv biBwcm9jZXNzZXMgdGhlIEFDUEkgdGFibGVzLg0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIGNhbGxz IFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSB0byBsaXN0IHRoZSBBQ1BJDQo+ID4+ICsgIHRh YmxlcywgcGVyZm9ybSBiaW5hcnkgZHVtcCBvZiB0aGUgdGFibGVzIGFuZCBkZXRlcm1pbmUgaWYg dGhlDQo+ID4+ICsgIEFDUEkgZmllbGRzIHNob3VsZCBiZSB0cmFjZWQuDQo+ID4+ICsNCj4gPj4g KyAgVGhpcyBmdW5jdGlvbiBhbHNvIGludm9rZXMgdGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgdGFi bGVzLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJBVyBk dW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGluY2x1ZGluZw0KPiA+PiArICB0aGUgdW5rbm93bi91bnBh cnNlZCBBQ1BJIHRhYmxlcyBhbmQgdmFsaWRhdGVzIHRoZSBjaGVja3N1bS4NCj4gPj4gKw0KPiA+ PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIEFDUEkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxl IGRhdGEgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiAr UHJvY2Vzc0FjcGlUYWJsZSAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHINCj4gPj4gKyAgKTsNCj4g Pj4gKw0KPiA+PiArLyoqIEdldCB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gPj4gKw0KPiA+PiAr ICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyIHByb2MgZnJvbSB0 aGUgbGlzdCBvZg0KPiA+PiArICByZWdpc3RlcmVkIHBhcnNlcnMuDQo+ID4+ICsNCj4gPj4gKyAg QHBhcmFtIFtpbl0gIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPj4g KyAgQHBhcmFtIFtvdXRdIFBhcnNlclByb2MgIFBvaW50ZXIgdG8gYSBBQ1BJIHRhYmxlIHBhcnNl ciBwcm9jLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgd2FzIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4gPj4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gPj4gKyAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5k Lg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArR2V0UGFy c2VyICgNCj4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUsDQo+ ID4+ICsgIE9VVCBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgKiAgUGFyc2VyUHJvYw0KPiA+PiArICAp Ow0KPiA+PiArDQo+ID4+ICsjZW5kaWYgLy8gQUNQSVRBQkxFUEFSU0VSX0hfDQo+ID4+IGRpZmYg LS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3Bp UGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9BY3BpUGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk3MTIwNjZlNjMyYjQz YzUwMjNhDQo+IGNkOWM4YjViZWMxNTBlMDJkOWYNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiAr KysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFy c2VyLmMNCj4gPj4gQEAgLTAsMCArMSw2NjIgQEANCj4gPj4gKy8qKg0KPiA+PiArICBBQ1BJIHBh cnNlcg0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5z ZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKw0KPiA+PiArICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyoq Lw0KPiA+PiArDQo+ID4+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJh cnkvVWVmaUxpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+ DQo+ID4+ICsjaW5jbHVkZSAiQWNwaVZpZXcuaCINCj4gPj4gKw0KPiA+PiArU1RBVElDIFVJTlQz MiAgIGdJbmRlbnQ7DQo+ID4+ICtTVEFUSUMgVUlOVDMyICAgbVRhYmxlRXJyb3JDb3VudDsNCj4g Pj4gK1NUQVRJQyBVSU5UMzIgICBtVGFibGVXYXJuaW5nQ291bnQ7DQo+ID4+ICsNCj4gPj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyIHRvIFpl cm8uDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArUmVzZXRFcnJvckNvdW50ICgNCj4gPj4g KyAgVk9JRA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIG1UYWJsZUVycm9yQ291bnQgPSAw Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBB Q1BJIHRhYmxlIGVycm9yIGNvdW50Lg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgUmV0dXJucyB0 aGUgY291bnQgb2YgZXJyb3JzIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPj4gKyov DQo+ID4+ICtVSU5UMzINCj4gPj4gK0dldEVycm9yQ291bnQgKA0KPiA+PiArICBWT0lEDQo+ID4+ ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIG1UYWJsZUVycm9yQ291bnQ7DQo+ID4+ICt9 DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSB3 YXJuaW5nIGNvdW50ZXIgdG8gWmVyby4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtSZXNl dFdhcm5pbmdDb3VudCAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiAr ICBtVGFibGVXYXJuaW5nQ291bnQgPSAwOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnQuDQo+ID4+ICsN Cj4gPj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGlu IHRoZSBBQ1BJIHRhYmxlcy4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzINCj4gPj4gK0dldFdhcm5p bmdDb3VudCAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1 cm4gbVRhYmxlV2FybmluZ0NvdW50Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBm dW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIuDQo+ID4+ICsq Lw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtJbmNyZW1lbnRFcnJvckNvdW50ICgN Cj4gPj4gKyAgVk9JRA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIG1UYWJsZUVycm9yQ291 bnQrKzsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50 cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0K PiA+PiArRUZJQVBJDQo+ID4+ICtJbmNyZW1lbnRXYXJuaW5nQ291bnQgKA0KPiA+PiArICBWT0lE DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgbVRhYmxlV2FybmluZ0NvdW50Kys7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBBQ1BJIHRh YmxlIGNoZWNrc3VtLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhl IGNoZWNrc3VtIGZvciB0aGUgQUNQSSB0YWJsZSBhbmQgb3B0aW9uYWxseQ0KPiA+PiArICBwcmlu dHMgdGhlIHN0YXR1cy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBMb2cgICAgIElmIFRS VUUgbG9nIHRoZSBzdGF0dXMgb2YgdGhlIGNoZWNrc3VtLg0KPiA+PiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ID4+ICsg IEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArDQo+ ID4+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgVGhlIGNoZWNrc3VtIGlzIE9LLg0KPiA+PiArICBA cmV0dmFsIEZBTFNFICAgICAgIFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ID4+ICsqLw0KPiA+PiAr Qk9PTEVBTg0KPiA+PiArRUZJQVBJDQo+ID4+ICtWZXJpZnlDaGVja3N1bSAoDQo+ID4+ICsgIElO IEJPT0xFQU4gTG9nLA0KPiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMy ICBMZW5ndGgNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBVSU5UTiBCeXRlQ291bnQgPSAw Ow0KPiA+PiArICBVSU5UOCBDaGVja3N1bSA9IDA7DQo+ID4+ICsgIFVJTlROIE9yaWdpbmFsQXR0 cmlidXRlOw0KPiA+PiArDQo+ID4+ICsgIHdoaWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsNCj4g Pj4gKyAgICBDaGVja3N1bSArPSAqKFB0cisrKTsNCj4gPj4gKyAgICBCeXRlQ291bnQrKzsNCj4g Pj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIGlmIChMb2cpIHsNCj4gPj4gKyAgICBPcmlnaW5hbEF0 dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ID4+ICsgICAgaWYgKENo ZWNrc3VtID09IDApIHsNCj4gPj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkp IHsNCj4gPj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICBFRklfVEVYVF9BVFRSIChFRklfR1JFRU4sDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgICBQcmlu dCAoTCJcblxuVGFibGUgQ2hlY2tzdW0gOiBPS1xuXG4iKTsNCj4gPj4gKyAgICB9IGVsc2Ugew0K PiA+PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgIGlmIChHZXRD b2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gPj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0 dHJpYnV0ZSAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSIChFRklfUkVELA0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxC SVQ2KSk+PjQpKQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+PiArICAgICAg fQ0KPiA+PiArICAgICAgUHJpbnQgKEwiXG5cblRhYmxlIENoZWNrc3VtIDogRkFJTEVEICgweCVY KVxuXG4iLCBDaGVja3N1bSk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICAgIGlmIChHZXRDb2xvdXJI aWdobGlnaHRpbmcgKCkpIHsNCj4gPj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUg KGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9 DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIChDaGVja3N1bSA9PSAwKTsNCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBkdW1wIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0g TGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0K PiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wUmF3ICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4g Pj4gKyAgSU4gVUlOVDMyIExlbmd0aA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFVJTlRO IEJ5dGVDb3VudCA9IDA7DQo+ID4+ICsgIFVJTlROIFBhcnRMaW5lQ2hhcnM7DQo+ID4+ICsgIFVJ TlROIEFzY2lpQnVmZmVySW5kZXggPSAwOw0KPiA+PiArICBDSEFSOCBBc2NpaUJ1ZmZlclsxN107 DQo+ID4+ICsNCj4gPj4gKyAgUHJpbnQgKEwiQWRkcmVzcyAgOiAweCVwXG4iLCBQdHIpOw0KPiA+ PiArICBQcmludCAoTCJMZW5ndGggICA6ICVkXG4iLCBMZW5ndGgpOw0KPiA+PiArDQo+ID4+ICsg IHdoaWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsNCj4gPj4gKyAgICBpZiAoKEJ5dGVDb3VudCAm IDB4MEYpID09IDApIHsNCj4gPj4gKyAgICAgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXhd ID0gJ1wwJzsNCj4gPj4gKyAgICAgIFByaW50IChMIiAgJWFcbiUwOFggOiAiLCBBc2NpaUJ1ZmZl ciwgQnl0ZUNvdW50KTsNCj4gPj4gKyAgICAgIEFzY2lpQnVmZmVySW5kZXggPSAwOw0KPiA+PiAr ICAgIH0gZWxzZSBpZiAoKEJ5dGVDb3VudCAmIDB4MDcpID09IDApIHsNCj4gPj4gKyAgICAgIFBy aW50IChMIi0gIik7DQo+ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgaWYgKCgqUHRyID49 ICcgJykgJiYgKCpQdHIgPCAweDdGKSkgew0KPiA+PiArICAgICAgQXNjaWlCdWZmZXJbQXNjaWlC dWZmZXJJbmRleCsrXSA9ICpQdHI7DQo+ID4+ICsgICAgfSBlbHNlIHsNCj4gPj4gKyAgICAgIEFz Y2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXgrK10gPSAnLic7DQo+ID4+ICsgICAgfQ0KPiA+PiAr DQo+ID4+ICsgICAgUHJpbnQgKEwiJTAyWCAiLCAqUHRyKyspOw0KPiA+PiArDQo+ID4+ICsgICAg Qnl0ZUNvdW50Kys7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICAvLyBKdXN0aWZ5IHRoZSBm aW5hbCBsaW5lIHVzaW5nIHNwYWNlcyBiZWZvcmUgcHJpbnRpbmcNCj4gPj4gKyAgLy8gdGhlIEFT Q0lJIGRhdGEuDQo+ID4+ICsgIFBhcnRMaW5lQ2hhcnMgPSAoTGVuZ3RoICYgMHgwRik7DQo+ID4+ ICsgIGlmIChQYXJ0TGluZUNoYXJzICE9IDApIHsNCj4gPj4gKyAgICBQYXJ0TGluZUNoYXJzID0g NDggLSAoUGFydExpbmVDaGFycyAqIDMpOw0KPiA+PiArICAgIGlmICgoTGVuZ3RoICYgMHgwRikg PD0gOCkgew0KPiA+PiArICAgICAgUGFydExpbmVDaGFycyArPSAyOw0KPiA+PiArICAgIH0NCj4g Pj4gKyAgICB3aGlsZSAoUGFydExpbmVDaGFycyA+IDApIHsNCj4gPj4gKyAgICAgIFByaW50IChM IiAiKTsNCj4gPj4gKyAgICAgIFBhcnRMaW5lQ2hhcnMtLTsNCj4gPj4gKyAgICB9DQo+ID4+ICsg IH0NCj4gPj4gKw0KPiA+PiArICAvLyBQcmludCBBU0NJSSBkYXRhIGZvciB0aGUgZmluYWwgbGlu ZS4NCj4gPj4gKyAgQXNjaWlCdWZmZXJbQXNjaWlCdWZmZXJJbmRleF0gPSAnXDAnOw0KPiA+PiAr ICBQcmludCAoTCIgICVhIiwgQXNjaWlCdWZmZXIpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMSBieXRlIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRo ZQ0KPiA+PiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0g Rm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0K PiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcFVpbnQ4ICgNCj4g Pj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAg UHRyDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQgKEZvcm1hdCwgKlB0cik7DQo+ ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAyIGJ5dGVzIG9m IGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiA+PiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJh Y2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQ SQ0KPiA+PiArRHVtcFVpbnQxNiAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0K PiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsg IFByaW50IChGb3JtYXQsICooVUlOVDE2KilQdHIpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0 aGUNCj4gPj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5d IEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXBVaW50MzIgKA0K PiA+PiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gPj4gKyAgSU4gVUlOVDgqICAgICAg ICBQdHINCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBQcmludCAoRm9ybWF0LCAqKFVJTlQz MiopUHRyKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2Vz IDggYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ID4+ICsgICAgZm9ybWF0IHN0 cmluZy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3Ry aW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0K PiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wVWludDY0ICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2 KiBGb3JtYXQsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4g K3sNCj4gPj4gKyAgLy8gU29tZSBmaWVsZHMgYXJlIG5vdCBhbGlnbmVkIGFuZCB0aGlzIGNhdXNl cyBhbGlnbm1lbnQgZmF1bHRzDQo+ID4+ICsgIC8vIG9uIEFSTSBwbGF0Zm9ybXMgaWYgdGhlIGNv bXBpbGVyIGdlbmVyYXRlcyBMRFJEIGluc3RydWN0aW9ucy4NCj4gPj4gKyAgLy8gUGVyZm9ybSB3 b3JkIGFjY2VzcyBzbyB0aGF0IExEUkQgaW5zdHJ1Y3Rpb25zIGFyZSBub3QgZ2VuZXJhdGVkLg0K PiA+PiArICBVSU5UNjQgVmFsID0gKihVSU5UMzIqKShQdHIgKyBzaXplb2YgKFVJTlQzMikpOw0K PiA+PiArICBWYWwgPDw9IDMyOw0KPiA+PiArICBWYWwgfD0gKihVSU5UMzIqKVB0cjsNCj4gPj4g Kw0KPiA+PiArICBQcmludCAoRm9ybWF0LCBWYWwpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25h bGx5DQo+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZp ZWQuDQo+ID4+ICsNCj4gPj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhl IEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0 ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wM0NoYXJzICgNCj4g Pj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4 KiAgICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQgKA0KPiA+PiAr ICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyIsDQo+ID4+ICsgICAgUHRy WzBdLA0KPiA+PiArICAgIFB0clsxXSwNCj4gPj4gKyAgICBQdHJbMl0NCj4gPj4gKyAgICApOw0K PiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBjaGFyYWN0 ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUg Zm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4gPj4gKyAgSWYgbm8gZm9ybWF0 IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4+ICsNCj4g Pj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFj aW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJ DQo+ID4+ICtEdW1wNENoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BU SU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4gK3sN Cj4gPj4gKyAgUHJpbnQgKA0KPiA+PiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBM IiVjJWMlYyVjIiwNCj4gPj4gKyAgICBQdHJbMF0sDQo+ID4+ICsgICAgUHRyWzFdLA0KPiA+PiAr ICAgIFB0clsyXSwNCj4gPj4gKyAgICBQdHJbM10NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+ PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNiBjaGFyYWN0ZXJzIHdoaWNoIGNh biBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmlu ZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4gPj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBz cGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFt IFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRh Lg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1w NkNoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgUHJp bnQgKA0KPiA+PiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyVjJWMl YyIsDQo+ID4+ICsgICAgUHRyWzBdLA0KPiA+PiArICAgIFB0clsxXSwNCj4gPj4gKyAgICBQdHJb Ml0sDQo+ID4+ICsgICAgUHRyWzNdLA0KPiA+PiArICAgIFB0cls0XSwNCj4gPj4gKyAgICBQdHJb NV0NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgOCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBm b3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4g Pj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJl IE5VTEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3Jt YXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiAr Vk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wOENoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1Qg Q0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQgKA0KPiA+PiArICAgIChGb3JtYXQgIT0g TlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyVjJWMlYyVjJWMiLA0KPiA+PiArICAgIFB0clswXSwN Cj4gPj4gKyAgICBQdHJbMV0sDQo+ID4+ICsgICAgUHRyWzJdLA0KPiA+PiArICAgIFB0clszXSwN Cj4gPj4gKyAgICBQdHJbNF0sDQo+ID4+ICsgICAgUHRyWzVdLA0KPiA+PiArICAgIFB0cls2XSwN Cj4gPj4gKyAgICBQdHJbN10NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCBwcmludHMgdGhlIEFDUEkgdGFibGUgRmllbGQg TmFtZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICBOdW1iZXIgb2Yg c3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+IGluZGVudC4NCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieSBkZWZh dWx0Ow0KPiBob3dldmVyDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgdmFs dWUgaXMgdXBkYXRlZCBvbiBlbnRyeSB0byB0aGUNCj4gUGFyc2VBY3BpKCkNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgYnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJvdmlkZWQg dG8NCj4gUGFyc2VBY3BpKCkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJl c3RvcmVkIGJhY2sgb24gZXhpdC4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhl cmVmb3JlIHRoZSB0b3RhbCBpbmRlbnQgaW4gdGhlIG91dHB1dCBpcw0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICBkZXBlbmRlbnQgb24gZnJvbSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlz DQo+IGNhbGxlZC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0 aGUgRmllbGQgTmFtZS4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4g K1ByaW50RmllbGROYW1lICgNCj4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgSW5kZW50LA0KPiA+ PiArICBJTiBDT05TVCBDSEFSMTYqICBGaWVsZE5hbWUNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4g KyAgUHJpbnQgKA0KPiA+PiArICAgIEwiJSphJS0qcyA6ICIsDQo+ID4+ICsgICAgZ0luZGVudCAr IEluZGVudCwNCj4gPj4gKyAgICAiIiwNCj4gPj4gKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9X SURUSCAtIGdJbmRlbnQgLSBJbmRlbnQpLA0KPiA+PiArICAgIEZpZWxkTmFtZQ0KPiA+PiArICAg ICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8g cGFyc2UgYW4gQUNQSSB0YWJsZSBidWZmZXIuDQo+ID4+ICsNCj4gPj4gKyAgVGhlIEFDUEkgdGFi bGUgYnVmZmVyIGlzIHBhcnNlZCB1c2luZyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRp b24NCj4gPj4gKyAgc3BlY2lmaWVkIGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BB UlNFUiBlbGVtZW50cy4gVGhpcyBwYXJzZXINCj4gPj4gKyAgZnVuY3Rpb24gaXRlcmF0ZXMgdGhy b3VnaCBlYWNoIGl0ZW0gb24gdGhlIEFDUElfUEFSU0VSIGFycmF5IGFuZCBsb2dzDQo+IHRoZQ0K PiA+PiArICBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9u IGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgdG8gcGFyc2UgQUNQSSB0YWJsZXMgYW5kIGZldGNoIHNw ZWNpZmljDQo+ID4+ICsgIGZpZWxkIHZhbHVlcy4gVGhlIEl0ZW1QdHIgbWVtYmVyIG9mIHRoZSBB Q1BJX1BBUlNFUiBzdHJ1Y3R1cmUgKHdoZXJlDQo+IHVzZWQpDQo+ID4+ICsgIGlzIHVwZGF0ZWQg YnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhlIHNlbGVjdGVkIGZpZWxkIGRh dGENCj4gPj4gKyAgKGUuZy4gdXNlZnVsIGZvciB2YXJpYWJsZSBsZW5ndGggbmVzdGVkIGZpZWxk cykuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgIFRyYWNlIHRoZSBB Q1BJIGZpZWxkcyBUUlVFIGVsc2Ugb25seSBwYXJzZSB0aGUNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhYmxlLg0KPiA+PiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAgTnVt YmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0g QXNjaWlOYW1lICAgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYW4gQVNDSUkgc3RyaW5nIHRoYXQNCj4g ZGVzY3JpYmVzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFibGUgYmVp bmcgcGFyc2VkLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAg IExlbmd0aCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYnkgUHRyLg0KPiA+PiArICBAcGFyYW0gW2lu XSBQYXJzZXIgICAgICAgUG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBzdHJ1Y3R1 cmUNCj4gdGhhdA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRo ZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFBhcnNlckl0ZW1zICBO dW1iZXIgb2YgaXRlbXMgaW4gdGhlIEFDUElfUEFSU0VSIGFycmF5Lg0KPiA+PiArDQo+ID4+ICsg IEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzIN Cj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpICgNCj4gPj4gKyAgSU4gQk9PTEVBTiAgICAg ICAgICAgIFRyYWNlLA0KPiA+PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgSW5kZW50LA0KPiA+ PiArICBJTiBDT05TVCBDSEFSOCogICAgICAgQXNjaWlOYW1lIE9QVElPTkFMLA0KPiA+PiArICBJ TiBVSU5UOCogICAgICAgICAgICAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgICAgICAgICAgICAg TGVuZ3RoLA0KPiA+PiArICBJTiBDT05TVCBBQ1BJX1BBUlNFUiogUGFyc2VyLA0KPiA+PiArICBJ TiBVSU5UMzIgICAgICAgICAgICAgUGFyc2VySXRlbXMNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4g KyAgVUlOVDMyICBJbmRleDsNCj4gPj4gKyAgVUlOVDMyICBPZmZzZXQgPSAwOw0KPiA+PiArDQo+ ID4+ICsgIC8vIEluY3JlbWVudCB0aGUgSW5kZW50DQo+ID4+ICsgIGdJbmRlbnQgKz0gSW5kZW50 Ow0KPiA+PiArDQo+ID4+ICsgIGlmIChUcmFjZSAmJiAoQXNjaWlOYW1lICE9IE5VTEwpKXsNCj4g Pj4gKyAgICBCT09MRUFOIEhpZ2hMaWdodCA9IEdldENvbG91ckhpZ2hsaWdodGluZyAoKTsNCj4g Pj4gKyAgICBVSU5UTiAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+PiArDQo+ID4+ICsgICAgaWYg KEhpZ2hMaWdodCkgew0KPiA+PiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91 dC0+TW9kZS0+QXR0cmlidXRlOw0KPiA+PiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0 ZSAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIoRUZJX1lFTExPVywNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkp DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICBQ cmludCAoDQo+ID4+ICsgICAgICBMIiUqYSUtKmEgOlxuIiwNCj4gPj4gKyAgICAgIGdJbmRlbnQs DQo+ID4+ICsgICAgICAiIiwNCj4gPj4gKyAgICAgIChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRI IC0gZ0luZGVudCksDQo+ID4+ICsgICAgICBBc2NpaU5hbWUNCj4gPj4gKyAgICAgICk7DQo+ID4+ ICsgICAgaWYgKEhpZ2hMaWdodCkgew0KPiA+PiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJp YnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4gPj4gKyAgICB9DQo+ID4+ ICsgIH0NCj4gPj4gKw0KPiA+PiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBQYXJzZXJJdGVt czsgSW5kZXgrKykgew0KPiA+PiArICAgIGlmICgoT2Zmc2V0ICsgUGFyc2VyW0luZGV4XS5MZW5n dGgpID4gTGVuZ3RoKSB7DQo+ID4+ICsgICAgICAvLyBXZSBkb24ndCBwYXJzZSBwYXN0IHRoZSBl bmQgb2YgdGhlIG1heCBsZW5ndGggc3BlY2lmaWVkDQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4g KyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICBpZiAoT2Zmc2V0ICE9IFBhcnNlcltJbmRleF0uT2Zm c2V0KSB7DQo+ID4+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAg UHJpbnQgKA0KPiA+PiArICAgICAgICBMIlxuRVJST1I6ICVhOiBPZmZzZXQgTWlzbWF0Y2ggZm9y ICVzXG4iDQo+ID4+ICsgICAgICAgICAgIkN1cnJlbnRPZmZzZXQgPSAlZCBGaWVsZE9mZnNldCA9 ICVkXG4iLA0KPiA+PiArICAgICAgICBBc2NpaU5hbWUsDQo+ID4+ICsgICAgICAgIFBhcnNlcltJ bmRleF0uTmFtZVN0ciwNCj4gPj4gKyAgICAgICAgT2Zmc2V0LA0KPiA+PiArICAgICAgICBQYXJz ZXJbSW5kZXhdLk9mZnNldA0KPiA+PiArICAgICAgICApOw0KPiA+PiArICAgIH0NCj4gPj4gKw0K PiA+PiArICAgIGlmIChUcmFjZSkgew0KPiA+PiArICAgICAgLy8gaWYgdGhlcmUgaXMgYSBGb3Jt YXR0ZXIgZnVuY3Rpb24gbGV0IHRoZSBmdW5jdGlvbiBoYW5kbGUNCj4gPj4gKyAgICAgIC8vIHRo ZSBwcmludGluZyBlbHNlIGlmIGEgRm9ybWF0IGlzIHNwZWNpZmllZCBpbiB0aGUgdGFibGUgdXNl DQo+ID4+ICsgICAgICAvLyB0aGUgRm9ybWF0IGZvciBwcmludGluZw0KPiA+PiArICAgICAgUHJp bnRGaWVsZE5hbWUgKDIsIFBhcnNlcltJbmRleF0uTmFtZVN0cik7DQo+ID4+ICsgICAgICBpZiAo UGFyc2VyW0luZGV4XS5QcmludEZvcm1hdHRlciAhPSBOVUxMKSB7DQo+ID4+ICsgICAgICAgIFBh cnNlcltJbmRleF0uUHJpbnRGb3JtYXR0ZXIgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0K PiA+PiArICAgICAgfSBlbHNlIGlmIChQYXJzZXJbSW5kZXhdLkZvcm1hdCAhPSBOVUxMKSB7DQo+ ID4+ICsgICAgICAgIHN3aXRjaCAoUGFyc2VyW0luZGV4XS5MZW5ndGgpIHsNCj4gPj4gKyAgICAg ICAgICBjYXNlIDE6DQo+ID4+ICsgICAgICAgICAgICBEdW1wVWludDggKFBhcnNlcltJbmRleF0u Rm9ybWF0LCBQdHIpOw0KPiA+PiArICAgICAgICAgICAgYnJlYWs7DQo+ID4+ICsgICAgICAgICAg Y2FzZSAyOg0KPiA+PiArICAgICAgICAgICAgRHVtcFVpbnQxNiAoUGFyc2VyW0luZGV4XS5Gb3Jt YXQsIFB0cik7DQo+ID4+ICsgICAgICAgICAgICBicmVhazsNCj4gPj4gKyAgICAgICAgICBjYXNl IDQ6DQo+ID4+ICsgICAgICAgICAgICBEdW1wVWludDMyIChQYXJzZXJbSW5kZXhdLkZvcm1hdCwg UHRyKTsNCj4gPj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAgICAgIGNhc2UgODoN Cj4gPj4gKyAgICAgICAgICAgIER1bXBVaW50NjQgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIp Ow0KPiA+PiArICAgICAgICAgICAgYnJlYWs7DQo+ID4+ICsgICAgICAgICAgZGVmYXVsdDoNCj4g Pj4gKyAgICAgICAgICAgIFByaW50ICgNCj4gPj4gKyAgICAgICAgICAgICAgTCJcbkVSUk9SOiAl YTogQ0FOTk9UIFBBUlNFIFRISVMgRklFTEQsIEZpZWxkIExlbmd0aA0KPiA9ICVkXG4iLA0KPiA+ PiArICAgICAgICAgICAgICBBc2NpaU5hbWUsDQo+ID4+ICsgICAgICAgICAgICAgIFBhcnNlcltJ bmRleF0uTGVuZ3RoDQo+ID4+ICsgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIH0gLy8g c3dpdGNoDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgLy8gVmFsaWRhdGluZyBvbmx5IG1ha2VzIHNl bnNlIGlmIHdlIGFyZSB0cmFjaW5nDQo+ID4+ICsgICAgICAgIC8vIHRoZSBwYXJzZWQgdGFibGUg ZW50cmllcywgdG8gcmVwb3J0IGJ5IHRhYmxlIG5hbWUuDQo+ID4+ICsgICAgICAgIGlmIChQYXJz ZXJbSW5kZXhdLkZpZWxkVmFsaWRhdG9yICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgICBQYXJz ZXJbSW5kZXhdLkZpZWxkVmFsaWRhdG9yIChQdHIsIFBhcnNlcltJbmRleF0uQ29udGV4dCk7DQo+ ID4+ICsgICAgICAgIH0NCj4gPj4gKyAgICAgIH0NCj4gPj4gKyAgICAgIFByaW50IChMIlxuIik7 DQo+ID4+ICsgICAgfSAvLyBpZiAoVHJhY2UpDQo+ID4+ICsNCj4gPj4gKyAgICBpZiAoUGFyc2Vy W0luZGV4XS5JdGVtUHRyICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICpQYXJzZXJbSW5kZXhdLkl0 ZW1QdHIgPSAoVk9JRCopUHRyOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIFB0ciAr PSBQYXJzZXJbSW5kZXhdLkxlbmd0aDsNCj4gPj4gKyAgICBPZmZzZXQgKz0gUGFyc2VyW0luZGV4 XS5MZW5ndGg7DQo+ID4+ICsgIH0gLy8gZm9yDQo+ID4+ICsNCj4gPj4gKyAgLy8gRGVjcmVtZW50 IHRoZSBJbmRlbnQNCj4gPj4gKyAgZ0luZGVudCAtPSBJbmRlbnQ7DQo+ID4+ICsgIHJldHVybiBP ZmZzZXQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRo ZSBBQ1BJIEdlbmVyaWMgQWRkcmVzcyBTdHJ1Y3R1cmUuDQo+ID4+ICsgIFRoZSBHYXNQYXJzZXIg YXJyYXkgaXMgdXNlZCBieSB0aGUgUGFyc2VBY3BpIGZ1bmN0aW9uIHRvIHBhcnNlIGFuZC9vcg0K PiB0cmFjZQ0KPiA+PiArICB0aGUgR0FTIHN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFU SUMgQ09OU1QgQUNQSV9QQVJTRVIgR2FzUGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIkFkZHJlc3Mg U3BhY2UgSUQiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g KyAge0wiUmVnaXN0ZXIgQml0IFdpZHRoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlZ2lzdGVyIEJpdCBPZmZzZXQiLCAxLCAyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQWRkcmVzcyBTaXplIiwgMSwg MywgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkFkZHJlc3Mi LCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMgYW5kIHRyYWNlcyB0aGUgR0FTIHN0 cnVjdHVyZSBhcyBkZXNjcmliZWQNCj4gPj4gKyAgICBieSB0aGUgR2FzUGFyc2VyLg0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICBOdW1iZXIgb2Ygc3BhY2VzIHRv IGluZGVudCB0aGUgb3V0cHV0Lg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0K PiA+PiArRHVtcEdhc1N0cnVjdCAoDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyLA0KPiA+ PiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsg IFByaW50IChMIlxuIik7DQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVFJVRSwNCj4g Pj4gKyAgICBJbmRlbnQsDQo+ID4+ICsgICAgTlVMTCwNCj4gPj4gKyAgICBQdHIsDQo+ID4+ICsg ICAgR0FTX0xFTkdUSCwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChHYXNQYXJzZXIpDQo+ID4+ ICsgICAgKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2Vz IHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZCBieSB0aGUgR2FzUGFyc2VyLg0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3Ig dHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VG SUFQSQ0KPiA+PiArRHVtcEdhcyAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9Q VElPTkFMLA0KPiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIER1bXBHYXNTdHJ1Y3QgKFB0ciwgMik7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5 IHRoZQ0KPiBBY3BpSGVhZGVyUGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArDQo+ ID4+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPj4gKyovDQo+ID4+ICtV SU5UMzINCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcEFjcGlIZWFkZXIgKA0KPiA+PiArICBJTiBV SU5UOCogUHRyDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgQUNQSV9ERVNDUklQVElPTl9I RUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gPj4gKyAgQUNQSV9QQVJTRVIgQWNwaUhlYWRlclBh cnNlcltdID0gew0KPiA+PiArICAgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pDQo+ ID4+ICsgIH07DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAg ICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgIDAsDQo+ID4+ICsgICAgICAgICAgICJBQ1BJ IFRhYmxlIEhlYWRlciIsDQo+ID4+ICsgICAgICAgICAgIFB0ciwNCj4gPj4gKyAgICAgICAgICAg QUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0KPiA+PiArICAgICAgICAgICBQQVJTRVJf UEFSQU1TIChBY3BpSGVhZGVyUGFyc2VyKQ0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGFz IGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBU aGlzIGZ1bmN0aW9uIG9wdGlvbmFsbHkgcmV0dXJucyB0aGUgc2lnbmF0dXJlLCBsZW5ndGggYW5k IHJldmlzaW9uIG9mIHRoZQ0KPiA+PiArICBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dICBQdHIgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhlIEFD UEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW291dF0gTGVuZ3RoICAgICBHZXRz IGxvY2F0aW9uIG9mIHRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsgIEBwYXJh bSBbb3V0XSBSZXZpc2lvbiAgIEdldHMgbG9jYXRpb24gb2YgdGhlIHJldmlzaW9uIG9mIHRoZSBB Q1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNl ZC4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzINCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3Bp SGVhZGVyICgNCj4gPj4gKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gPj4gKyAgT1VUIENP TlNUIFVJTlQzMioqIFNpZ25hdHVyZSwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIExlbmd0 aCwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4g K3sNCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZXNQYXJzZWQ7DQo+ ID4+ICsgIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiA+PiAr ICBBQ1BJX1BBUlNFUiBBY3BpSGVhZGVyUGFyc2VyW10gPSB7DQo+ID4+ICsgICAgUEFSU0VfQUNQ SV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gPj4gKyAgfTsNCj4gPj4gKw0KPiA+PiArICBCeXRl c1BhcnNlZCA9IFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICBGQUxTRSwNCj4g Pj4gKyAgICAgICAgICAgICAgICAgIDAsDQo+ID4+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0K PiA+PiArICAgICAgICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgICAgICAgQUNQ SV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0KPiA+PiArICAgICAgICAgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICAgICAgICk7 DQo+ID4+ICsNCj4gPj4gKyAgKlNpZ25hdHVyZSA9IEFjcGlIZHJJbmZvLlNpZ25hdHVyZTsNCj4g Pj4gKyAgKkxlbmd0aCA9IEFjcGlIZHJJbmZvLkxlbmd0aDsNCj4gPj4gKyAgKlJldmlzaW9uID0g QWNwaUhkckluZm8uUmV2aXNpb247DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIEJ5dGVzUGFyc2Vk Ow0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuYw0KPiA+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi41OTgzZWUyMTEyOWIwYzQwZTE5ZDcNCj4gNDFmYjYxMzU5YTIzZWU2 MjJkMA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jDQo+ID4+IEBAIC0wLDAg KzEsMjE1IEBADQo+ID4+ICsvKioNCj4gPj4gKyAgQUNQSSB0YWJsZSBwYXJzZXINCj4gPj4gKw0K PiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMs DQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJ TkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+ PiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0Fj cGkuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArI2luY2x1ZGUgIkFjcGlWaWV3Lmgi DQo+ID4+ICsNCj4gPj4gKy8qKiBBIGxpc3Qgb2YgcmVnaXN0ZXJlZCBBQ1BJIHRhYmxlIHBhcnNl cnMuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIEFDUElfVEFCTEVfUEFSU0VSIG1UYWJsZVBhcnNl ckxpc3RbTUFYX0FDUElfVEFCTEVfUEFSU0VSU107DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3Rl ciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHJl Z2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtp bl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0g W2luXSBQYXJzZXJQcm9jICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0K PiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZh bGlkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZv ciB0aGUgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFs cmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAg Tm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkN Cj4gPj4gK1JlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAg ICAgIFNpZ25hdHVyZSwNCj4gPj4gKyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNl clByb2MNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBVSU5UMzIgaW5kZXg7DQo+ID4+ICsN Cj4gPj4gKyAgaWYgKChQYXJzZXJQcm9jID09IE5VTEwpIHx8IChTaWduYXR1cmUgPT0NCj4gQUNQ SV9QQVJTRVJfU0lHTkFUVVJFX05VTEwpKSB7DQo+ID4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vIFNlYXJjaCBpZiBhIHBh cnNlciBpcyBhbHJlYWR5IGluc3RhbGxlZA0KPiA+PiArICBmb3IgKGluZGV4ID0gMDsNCj4gPj4g KyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFi bGVQYXJzZXJMaXN0WzBdKSk7DQo+ID4+ICsgICAgICAgaW5kZXgrKykNCj4gPj4gKyAgew0KPiA+ PiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJl KSB7DQo+ID4+ICsgICAgICBpZiAobVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uUGFyc2VyICE9IE5V TEwpIHsNCj4gPj4gKyAgICAgICAgcmV0dXJuIEVGSV9BTFJFQURZX1NUQVJURUQ7DQo+ID4+ICsg ICAgICB9DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgLy8gRmluZCB0 aGUgZmlyc3QgZnJlZSBzbG90IGFuZCByZWdpc3RlciB0aGUgcGFyc2VyDQo+ID4+ICsgIGZvciAo aW5kZXggPSAwOw0KPiA+PiArICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0 KSAvIHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdFswXSkpOw0KPiA+PiArICAgICAgaW5kZXgrKykN Cj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1 cmUgPT0NCj4gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwpIHsNCj4gPj4gKyAgICAgIG1UYWJs ZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9IFNpZ25hdHVyZTsNCj4gPj4gKyAgICAgIG1U YWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciA9IFBhcnNlclByb2M7DQo+ID4+ICsgICAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g KyAgLy8gTm8gZnJlZSBzbG90IGZvdW5kDQo+ID4+ICsgIHJldHVybiBFRklfT1VUX09GX1JFU09V UkNFUzsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIERlcmVnaXN0ZXIgdGhlIEFDUEkgdGFi bGUgUGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBkZXJlZ2lzdGVycyB0aGUg QUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJl ICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gPj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4g Pj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3 YXMgbm90IGZvdW5kLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0K PiA+PiArRGVyZWdpc3RlclBhcnNlciAoDQo+ID4+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAg ICAgICBTaWduYXR1cmUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBVSU5UMzIgaW5kZXg7 DQo+ID4+ICsNCj4gPj4gKyAgaWYgKFNpZ25hdHVyZSA9PSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVf TlVMTCkgew0KPiA+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsg IH0NCj4gPj4gKw0KPiA+PiArICBmb3IgKGluZGV4ID0gMDsNCj4gPj4gKyAgICAgICBpbmRleCA8 IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBd KSk7DQo+ID4+ICsgICAgICAgaW5kZXgrKykNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChTaWdu YXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ID4+ICsgICAg ICBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUgPQ0KPiBBQ1BJX1BBUlNFUl9TSUdO QVRVUkVfTlVMTDsNCj4gPj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciA9 IE5VTEw7DQo+ID4+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ICsgICAgfQ0KPiA+ PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgLy8gTm8gbWF0Y2hpbmcgcmVnaXN0ZXJlZCBwYXJzZXIg Zm91bmQuDQo+ID4+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+PiArfQ0KPiA+PiArDQo+ ID4+ICsvKiogR2V0IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiA+PiArDQo+ID4+ICsgIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYyBmcm9tIHRoZSBsaXN0 IG9mDQo+ID4+ICsgIHJlZ2lzdGVyZWQgcGFyc2Vycy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0g W2luXSAgU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFy YW0gW291dF0gUGFyc2VyUHJvYyAgUG9pbnRlciB0byBhIEFDUEkgdGFibGUgcGFyc2VyIHByb2Mu DQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNl ciB3YXMgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ID4+ ICsqLw0KPiA+PiArRUZJX1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtHZXRQYXJzZXIgKA0K PiA+PiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gPj4gKyAg T1VUIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAqICBQYXJzZXJQcm9jDQo+ID4+ICsgICkNCj4gPj4g K3sNCj4gPj4gKyAgVUlOVDMyIGluZGV4Ow0KPiA+PiArDQo+ID4+ICsgIGlmICgoUGFyc2VyUHJv YyA9PSBOVUxMKSB8fCAoU2lnbmF0dXJlID09DQo+IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxM KSkgew0KPiA+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgIH0N Cj4gPj4gKw0KPiA+PiArICBmb3IgKGluZGV4ID0gMDsNCj4gPj4gKyAgICAgICBpbmRleCA8IChz aXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7 DQo+ID4+ICsgICAgICAgaW5kZXgrKykNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChTaWduYXR1 cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ID4+ICsgICAgICAq UGFyc2VyUHJvYyA9IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlcjsNCj4gPj4gKyAgICAg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4gKyAgICB9DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+ PiArICAvLyBObyBtYXRjaGluZyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZC4NCj4gPj4gKyAgcmV0 dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHByb2Nlc3NlcyB0aGUgQUNQSSB0YWJsZXMuDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gY2Fs bHMgUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucygpIHRvIGxpc3QgdGhlIEFDUEkNCj4gPj4gKyAg dGFibGVzLCBwZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRldGVybWluZSBp ZiB0aGUNCj4gPj4gKyAgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCj4gPj4gKw0KPiA+ PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0 YWJsZXMuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFX IGR1bXAgb2YgdGhlIEFDUEkgdGFibGUgaW5jbHVkaW5nDQo+ID4+ICsgIHRoZSB1bmtub3duL3Vu cGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiA+PiArDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgQUNQSQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFi bGUgZGF0YSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ ICtQcm9jZXNzQWNwaVRhYmxlICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0cg0KPiA+PiArICApDQo+ ID4+ICt7DQo+ID4+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+PiArICBCT09MRUFOICAg ICAgIFRyYWNlOw0KPiA+PiArICBDT05TVCBVSU5UMzIqIEFjcGlUYWJsZVNpZ25hdHVyZTsNCj4g Pj4gKyAgQ09OU1QgVUlOVDMyKiBBY3BpVGFibGVMZW5ndGg7DQo+ID4+ICsgIENPTlNUIFVJTlQ4 KiAgQWNwaVRhYmxlUmV2aXNpb247DQo+ID4+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyBQYXJz ZXJQcm9jOw0KPiA+PiArDQo+ID4+ICsgIFBhcnNlQWNwaUhlYWRlciAoDQo+ID4+ICsgICAgUHRy LA0KPiA+PiArICAgICZBY3BpVGFibGVTaWduYXR1cmUsDQo+ID4+ICsgICAgJkFjcGlUYWJsZUxl bmd0aCwNCj4gPj4gKyAgICAmQWNwaVRhYmxlUmV2aXNpb24NCj4gPj4gKyAgICApOw0KPiA+PiAr DQo+ID4+ICsgIFRyYWNlID0gUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoDQo+ID4+ICsgICAg ICAgICAgICAqQWNwaVRhYmxlU2lnbmF0dXJlLA0KPiA+PiArICAgICAgICAgICAgUHRyLA0KPiA+ PiArICAgICAgICAgICAgKkFjcGlUYWJsZUxlbmd0aA0KPiA+PiArICAgICAgICAgICAgKTsNCj4g Pj4gKw0KPiA+PiArICBpZiAoVHJhY2UpIHsNCj4gPj4gKyAgICBEdW1wUmF3IChQdHIsICpBY3Bp VGFibGVMZW5ndGgpOw0KPiA+PiArICAgIFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsICpBY3Bp VGFibGVMZW5ndGgpOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgU3RhdHVzID0gR2V0UGFy c2VyICgqQWNwaVRhYmxlU2lnbmF0dXJlLCAmUGFyc2VyUHJvYyk7DQo+ID4+ICsgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICAvLyBObyByZWdpc3RlcmVkIHBhcnNlciBmb3Vu ZCwgZG8gZGVmYXVsdCBoYW5kbGluZy4NCj4gPj4gKyAgICBpZiAoVHJhY2UpIHsNCj4gPj4gKyAg ICAgIER1bXBBY3BpSGVhZGVyIChQdHIpOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICByZXR1cm47 DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBQYXJzZXJQcm9jICgNCj4gPj4gKyAgICBUcmFj ZSwNCj4gPj4gKyAgICBQdHIsDQo+ID4+ICsgICAgKkFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAg ICAqQWNwaVRhYmxlUmV2aXNpb24NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiBkaWZmIC0t Z2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZp ZXcuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0Fj cGlWaWV3LmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2ZTA1YWJiNzE2YjM2ZDM0YTlj DQo+IDRlNTE1NjhkYzYzZmVjYjEwODUNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jDQo+ ID4+IEBAIC0wLDAgKzEsNjAxIEBADQo+ID4+ICsvKioNCj4gPj4gKw0KPiA+PiArICBDb3B5cmln aHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g Pj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0K PiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPExp YnJhcnkvUHJpbnRMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4g Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jh c2VNZW1vcnlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4+ ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ID4+ICsjaW5jbHVk ZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFy eS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlICJBY3BpVmlldy5o Ig0KPiA+PiArI2luY2x1ZGUgIlVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0KPiA+PiAr DQo+ID4+ICtFRklfSElJX0hBTkRMRSBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ ID4+ICsNCj4gPj4gKy8vIFJlcG9ydCB2YXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBVSU5UMzIgICAg ICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlOw0KPiA+PiArU1RBVElDIENPTlNUIENIQVIxNiog ICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lOw0KPiA+PiArU1RBVElDIEJPT0xFQU4gICAgICAg ICAgICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZDsNCj4gPj4gK1NUQVRJQyBFUkVQT1JUX09QVElP TiAgICAgbVJlcG9ydFR5cGU7DQo+ID4+ICtTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1UYWJs ZUNvdW50Ow0KPiA+PiArU1RBVElDIFVJTlQzMiAgICAgICAgICAgICBtQmluVGFibGVDb3VudDsN Cj4gPj4gK1NUQVRJQyBCT09MRUFOICAgICAgICAgICAgbVZlcmJvc2U7DQo+ID4+ICtTVEFUSUMg Qk9PTEVBTiAgICAgICAgICAgIG1Db25zaXN0ZW5jeUNoZWNrOw0KPiA+PiArU1RBVElDIEJPT0xF QU4gICAgICAgICAgICBtQ29sb3VySGlnaGxpZ2h0aW5nOw0KPiA+PiArDQo+ID4+ICsvKiogQW4g YXJyYXkgb2YgYWNwaXZpZXcgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuDQo+ID4+ICsqLw0KPiA+ PiArU1RBVElDIENPTlNUIFNIRUxMX1BBUkFNX0lURU0gUGFyYW1MaXN0W10gPSB7DQo+ID4+ICsg IHtMIi8/IiwgVHlwZUZsYWd9LA0KPiA+PiArICB7TCItYyIsIFR5cGVGbGFnfSwNCj4gPj4gKyAg e0wiLWQiLCBUeXBlRmxhZ30sDQo+ID4+ICsgIHtMIi1oIiwgVHlwZVZhbHVlfSwNCj4gPj4gKyAg e0wiLWwiLCBUeXBlRmxhZ30sDQo+ID4+ICsgIHtMIi1zIiwgVHlwZVZhbHVlfSwNCj4gPj4gKyAg e0wiLXYiLCBUeXBlRmxhZ30sDQo+ID4+ICsgIHtOVUxMLCBUeXBlTWF4fQ0KPiA+PiArfTsNCj4g Pj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29sb3VyIGhpZ2hsaWdo dGluZyBzdGF0dXMuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBUUlVFIGlmIGNvbG91ciBoaWdo bGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gPj4gKyovDQo+ID4+ICtCT09MRUFODQo+ID4+ICtHZXRD b2xvdXJIaWdobGlnaHRpbmcgKA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4g Pj4gKyAgcmV0dXJuIG1Db2xvdXJIaWdobGlnaHRpbmc7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0K PiA+PiArDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArU2V0Q29sb3VySGlnaGxpZ2h0aW5n ICgNCj4gPj4gKyAgQk9PTEVBTiBIaWdobGlnaHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiAr ICBtQ29sb3VySGlnaGxpZ2h0aW5nID0gSGlnaGxpZ2h0Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9ucy4NCj4gPj4gKw0K PiA+PiArICBAcmV0dmFsIFJldHVybnMgdGhlIHJlcG9ydCBvcHRpb24uDQo+ID4+ICsqLw0KPiA+ PiArU1RBVElDDQo+ID4+ICtFUkVQT1JUX09QVElPTg0KPiA+PiArR2V0UmVwb3J0T3B0aW9uICgN Cj4gPj4gKyAgVk9JRA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBtUmVwb3J0 VHlwZTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0 aGUgc2VsZWN0ZWQgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFJldHVybnMg c2lnbmF0dXJlIG9mIHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1NU QVRJQw0KPiA+PiArVUlOVDMyDQo+ID4+ICtHZXRTZWxlY3RlZEFjcGlUYWJsZSAoDQo+ID4+ICsg IFZPSUQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gbVNlbGVjdGVkQWNwaVRh YmxlOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBkdW1wcyB0aGUg QUNQSSB0YWJsZSB0byBhIGZpbGUuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICBQb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAg ICBUaGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwg VFJVRSAgICAgICAgICBTdWNjZXNzLg0KPiA+PiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgRmFp bHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK0JPT0xFQU4NCj4gPj4gK0R1bXBB Y3BpVGFibGVUb0ZpbGUgKA0KPiA+PiArICBJTiBDT05TVCBVSU5UOCogIFB0ciwNCj4gPj4gKyAg SU4gQ09OU1QgVUlOVE4gICBMZW5ndGgNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBFRklf U1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiA+PiArICBDSEFSMTYgICAgICAgICAgICAgRmlsZU5h bWVCdWZmZXJbTUFYX0ZJTEVfTkFNRV9MRU5dOw0KPiA+PiArICBTSEVMTF9GSUxFX0hBTkRMRSAg RHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAgVHJhbnNm ZXJCeXRlcyA9IExlbmd0aDsNCj4gPj4gKw0KPiA+PiArICBVbmljb2RlU1ByaW50ICgNCj4gPj4g KyAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gPj4gKyAgICBzaXplb2YgKEZpbGVOYW1lQnVmZmVyKSwN Cj4gPj4gKyAgICBMIi5cXCVzJTA0ZC5iaW4iLA0KPiA+PiArICAgIG1TZWxlY3RlZEFjcGlUYWJs ZU5hbWUsDQo+ID4+ICsgICAgbUJpblRhYmxlQ291bnQrKw0KPiA+PiArICAgICk7DQo+ID4+ICsN Cj4gPj4gKyAgU3RhdHVzID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ID4+ICsgICAgICAgICAg ICAgRmlsZU5hbWVCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgICAgJkR1bXBGaWxlSGFuZGxlLA0K PiA+PiArICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfUkVBRCB8IEVGSV9GSUxFX01PREVfV1JJ VEUgfA0KPiBFRklfRklMRV9NT0RFX0NSRUFURSwNCj4gPj4gKyAgICAgICAgICAgICAwDQo+ID4+ ICsgICAgICAgICAgICAgKTsNCj4gPj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ PiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4+ICsgICAgICAtMSwNCj4gPj4gKyAgICAgIC0x LA0KPiA+PiArICAgICAgTlVMTCwNCj4gPj4gKyAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9S RUFET05MWV9NRURJQSksDQo+ID4+ICsgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4g Pj4gKyAgICAgIEwiYWNwaXZpZXciDQo+ID4+ICsgICAgICApOw0KPiA+PiArICAgIHJldHVybiBG QUxTRTsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIFByaW50IChMIkR1bXBpbmcgQUNQSSB0 YWJsZSB0byA6ICVzIC4uLiAiLCBGaWxlTmFtZUJ1ZmZlcik7DQo+ID4+ICsNCj4gPj4gKyAgU3Rh dHVzID0gU2hlbGxXcml0ZUZpbGUgKA0KPiA+PiArICAgICAgICAgICAgIER1bXBGaWxlSGFuZGxl LA0KPiA+PiArICAgICAgICAgICAgICZUcmFuc2ZlckJ5dGVzLA0KPiA+PiArICAgICAgICAgICAg IChWT0lEKilQdHINCj4gPj4gKyAgICAgICAgICAgICApOw0KPiA+PiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4+ICsgICAgUHJpbnQgKEwiRVJST1I6IEZhaWxlZCB0byBkdW1wIHRh YmxlIHRvIGJpbmFyeSBmaWxlLlxuIik7DQo+ID4+ICsgICAgVHJhbnNmZXJCeXRlcyA9IDA7DQo+ ID4+ICsgIH0gZWxzZSB7DQo+ID4+ICsgICAgUHJpbnQgKEwiRE9ORS5cbiIpOw0KPiA+PiArICB9 DQo+ID4+ICsNCj4gPj4gKyAgU2hlbGxDbG9zZUZpbGUgKCZEdW1wRmlsZUhhbmRsZSk7DQo+ID4+ ICsgIHJldHVybiAoTGVuZ3RoID09IFRyYW5zZmVyQnl0ZXMpOw0KPiA+PiArfQ0KPiA+PiArDQo+ ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHRhYmxlIHJlcG9ydGluZyBvcHRp b25zIGZvciB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBTaWdu YXR1cmUgVGhlIEFDUEkgdGFibGUgU2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW2luXSBUYWJs ZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2lu XSBMZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiAr ICBAcmV0dmFsIFJldHVybnMgVFJVRSBpZiB0aGUgQUNQSSB0YWJsZSBzaG91bGQgYmUgdHJhY2Vk Lg0KPiA+PiArKi8NCj4gPj4gK0JPT0xFQU4NCj4gPj4gK1Byb2Nlc3NUYWJsZVJlcG9ydE9wdGlv bnMgKA0KPiA+PiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4gPj4gKyAgSU4gQ09O U1QgVUlOVDgqICBUYWJsZVB0ciwNCj4gPj4gKyAgSU4gQ09OU1QgVUlOVDMyICBMZW5ndGgNCj4g Pj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBVSU5UTiAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+ PiArICBVSU5UOCogIFNpZ25hdHVyZVB0ciA9IChVSU5UOCopKFVJTlROKSZTaWduYXR1cmU7DQo+ ID4+ICsgIEJPT0xFQU4gTG9nID0gRkFMU0U7DQo+ID4+ICsgIEJPT0xFQU4gSGlnaExpZ2h0ID0g R2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpOw0KPiA+PiArICBzd2l0Y2ggKEdldFJlcG9ydE9wdGlv biAoKSkgew0KPiA+PiArICAgIGNhc2UgRVJFUE9SVF9BTEw6DQo+ID4+ICsgICAgICBMb2cgPSBU UlVFOw0KPiA+PiArICAgICAgYnJlYWs7DQo+ID4+ICsgICAgY2FzZSBFUkVQT1JUX1NFTEVDVEVE Og0KPiA+PiArICAgICAgaWYgKFNpZ25hdHVyZSA9PSBHZXRTZWxlY3RlZEFjcGlUYWJsZSAoKSkg ew0KPiA+PiArICAgICAgICBMb2cgPSBUUlVFOw0KPiA+PiArICAgICAgICBtU2VsZWN0ZWRBY3Bp VGFibGVGb3VuZCA9IFRSVUU7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgICBicmVhazsNCj4g Pj4gKyAgICBjYXNlIEVSRVBPUlRfVEFCTEVfTElTVDoNCj4gPj4gKyAgICAgIGlmIChtVGFibGVD b3VudCA9PSAwKSB7DQo+ID4+ICsgICAgICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gPj4gKyAgICAg ICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ ID4+ICsgICAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1RFWFRfQVRUUihFRklfQ1lBTiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIH0NCj4gPj4gKyAgICAg ICAgUHJpbnQgKEwiXG5JbnN0YWxsZWQgVGFibGUocyk6XG4iKTsNCj4gPj4gKyAgICAgICAgaWYg KEhpZ2hMaWdodCkgew0KPiA+PiArICAgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUg KGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ID4+ICsgICAgICAgIH0NCj4gPj4g KyAgICAgIH0NCj4gPj4gKyAgICAgIFByaW50ICgNCj4gPj4gKyAgICAgICAgTCJcdCU0ZC4gJWMl YyVjJWNcbiIsDQo+ID4+ICsgICAgICAgICsrbVRhYmxlQ291bnQsDQo+ID4+ICsgICAgICAgIFNp Z25hdHVyZVB0clswXSwNCj4gPj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzFdLA0KPiA+PiArICAg ICAgICBTaWduYXR1cmVQdHJbMl0sDQo+ID4+ICsgICAgICAgIFNpZ25hdHVyZVB0clszXQ0KPiA+ PiArICAgICAgICApOw0KPiA+PiArICAgICAgYnJlYWs7DQo+ID4+ICsgICAgY2FzZSBFUkVQT1JU X0RVTVBfQklOX0ZJTEU6DQo+ID4+ICsgICAgICBpZiAoU2lnbmF0dXJlID09IEdldFNlbGVjdGVk QWNwaVRhYmxlICgpKSB7DQo+ID4+ICsgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0g VFJVRTsNCj4gPj4gKyAgICAgICAgRHVtcEFjcGlUYWJsZVRvRmlsZSAoVGFibGVQdHIsIExlbmd0 aCk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKyAgICBjYXNlIEVS RVBPUlRfTUFYOg0KPiA+PiArICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGhlcmUuDQo+ID4+ ICsgICAgICAvLyBUaGlzIGNhc2UgaXMgb25seSBwcmVzZW50IHRvIHByZXZlbnQgY29tcGlsZXIg d2FybmluZy4NCj4gPj4gKyAgICAgIGJyZWFrOw0KPiA+PiArICB9IC8vIHN3aXRjaA0KPiA+PiAr DQo+ID4+ICsgIGlmIChMb2cpIHsNCj4gPj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ID4+ICsg ICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ ID4+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgRUZJX1RF WFRfQVRUUihFRklfTElHSFRCTFVFLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAoKE9y aWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICAgIFByaW50ICgNCj4gPj4gKyAgICAg IEwiXG5cbiAtLS0tLS0tLS0tLS0tLS0gJWMlYyVjJWMgVGFibGUgLS0tLS0tLS0tLS0tLS0tIFxu XG4iLA0KPiA+PiArICAgICAgU2lnbmF0dXJlUHRyWzBdLA0KPiA+PiArICAgICAgU2lnbmF0dXJl UHRyWzFdLA0KPiA+PiArICAgICAgU2lnbmF0dXJlUHRyWzJdLA0KPiA+PiArICAgICAgU2lnbmF0 dXJlUHRyWzNdDQo+ID4+ICsgICAgICApOw0KPiA+PiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4g Pj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5h bEF0dHJpYnV0ZSk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgcmV0 dXJuIExvZzsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gY29udmVy dHMgYSBzdHJpbmcgdG8gQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ID4+ICsNCj4gPj4gKyAgQHBh cmFtIFtpbl0gU3RyICAgUG9pbnRlciB0byB0aGUgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZCB0byB0 aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ID4+ ICsNCj4gPj4gKyAgQHJldHZhbCBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ID4+ICsqLw0K PiA+PiArU1RBVElDDQo+ID4+ICtVSU5UMzINCj4gPj4gK0NvbnZlcnRTdHJUb0FjcGlTaWduYXR1 cmUgKA0KPiA+PiArICBJTiAgQ09OU1QgQ0hBUjE2KiBTdHINCj4gPj4gKyAgKQ0KPiA+PiArew0K PiA+PiArICBVSU5UOCBJbmRleCA9IDA7DQo+ID4+ICsgIENIQVI4IFB0cls0XTsNCj4gPj4gKw0K PiA+PiArICAvLyBDb252ZXJ0IHRvIFVwcGVyIGNhc2UgYW5kIGNvbnZlcnQgdG8gQVNDSUkNCj4g Pj4gKyAgd2hpbGUgKChJbmRleCA8IDQpICYmIChTdHJbSW5kZXhdICE9IDApKSB7DQo+ID4+ICsg ICAgaWYgKFN0cltJbmRleF0gPj0gTCdhJyAmJiBTdHJbSW5kZXhdIDw9IEwneicpIHsNCj4gPj4g KyAgICAgIFB0cltJbmRleF0gPSAoQ0hBUjgpKFN0cltJbmRleF0gLSAoTCdhJyAtIEwnQScpKTsN Cj4gPj4gKyAgICB9IGVsc2Ugew0KPiA+PiArICAgICAgUHRyW0luZGV4XSA9IChDSEFSOClTdHJb SW5kZXhdOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICBJbmRleCsrOw0KPiA+Pg0KPiA+PiArICB9 DQo+ID4+ICsgIHJldHVybiAqKFVJTlQzMiopUHRyOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyB0aGUgY29uZmlndXJhdGlvbiB0YWJsZSBlbnRyaWVz IGluIHRoZQ0KPiA+PiArICAgIHN5c3RlbSB0YWJsZSwgcmV0cmlldmVzIHRoZSBSU0RQIHBvaW50 ZXIgYW5kIHN0YXJ0cyBwYXJzaW5nDQo+ID4+ICsgICAgdGhlIEFDUEkgdGFibGVzLg0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dIFN5c3RlbVRhYmxlIFBvaW50ZXIgdG8gdGhlIEVGSSBzeXN0 ZW0gdGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBSZXR1cm5zIEVGSV9OT1RfRk9VTkQg ICBpZiB0aGUgUlNEUCBwb2ludGVyIGlzIG5vdCBmb3VuZC4NCj4gPj4gKyAgICAgICAgICBSZXR1 cm5zIEVGSV9VTlNVUFBPUlRFRCBpZiB0aGUgUlNEUCB2ZXJzaW9uIGlzIGxlc3MgdGhhbiAyLg0K PiA+PiArICAgICAgICAgIFJldHVybnMgRUZJX1NVQ0NFU1MgICAgIGlmIHN1Y2Nlc3NmdWwuDQo+ ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4g Pj4gK0FjcGlWaWV3ICgNCj4gPj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUN Cj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4+ICsgIEVG SV9DT05GSUdVUkFUSU9OX1RBQkxFKiBFZmlDb25maWd1cmF0aW9uVGFibGU7DQo+ID4+ICsgIEJP T0xFQU4gICAgICAgICAgICAgICAgICBGb3VuZEFjcGlUYWJsZTsNCj4gPj4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+PiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgUHJpbnRBdHRyaWJ1dGU7DQo+ID4+ICsgIEVSRVBPUlRfT1BUSU9OICAgICAg ICAgICBSZXBvcnRPcHRpb247DQo+ID4+ICsgIFVJTlQ4KiAgICAgICAgICAgICAgICAgICBSc2Rw UHRyOw0KPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgUnNkcExlbmd0aDsNCj4gPj4g KyAgVUlOVDggICAgICAgICAgICAgICAgICAgIFJzZHBSZXZpc2lvbjsNCj4gPj4gKyAgUEFSU0Vf QUNQSV9UQUJMRV9QUk9DICAgIFJzZHBQYXJzZXJQcm9jOw0KPiA+PiArICBCT09MRUFOICAgICAg ICAgICAgICAgICAgVHJhY2U7DQo+ID4+ICsNCj4gPj4gKyAgLy8gU2VhcmNoIHRoZSB0YWJsZSBm b3IgYW4gZW50cnkgdGhhdCBtYXRjaGVzIHRoZSBBQ1BJIFRhYmxlIEd1aWQNCj4gPj4gKyAgRm91 bmRBY3BpVGFibGUgPSBGQUxTRTsNCj4gPj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgU3lz dGVtVGFibGUtPk51bWJlck9mVGFibGVFbnRyaWVzOyBJbmRleCsrKSB7DQo+ID4+ICsgICAgaWYg KENvbXBhcmVHdWlkICgmZ0VmaUFjcGlUYWJsZUd1aWQsDQo+ID4+ICsgICAgICAgICAgJihTeXN0 ZW1UYWJsZS0+Q29uZmlndXJhdGlvblRhYmxlW0luZGV4XS5WZW5kb3JHdWlkKSkpIHsNCj4gPj4g KyAgICAgIEVmaUNvbmZpZ3VyYXRpb25UYWJsZSA9ICZTeXN0ZW1UYWJsZS0+Q29uZmlndXJhdGlv blRhYmxlW0luZGV4XTsNCj4gPj4gKyAgICAgIEZvdW5kQWNwaVRhYmxlID0gVFJVRTsNCj4gPj4g KyAgICAgIGJyZWFrOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIGlm IChGb3VuZEFjcGlUYWJsZSkgew0KPiA+PiArICAgIFJzZHBQdHIgPSAoVUlOVDgqKUVmaUNvbmZp Z3VyYXRpb25UYWJsZS0+VmVuZG9yVGFibGU7DQo+ID4+ICsNCj4gPj4gKyAgICAvLyBUaGUgUlNE UCByZXZpc2lvbiBpcyAxIGJ5dGUgc3RhcnRpbmcgYXQgb2Zmc2V0IDE1DQo+ID4+ICsgICAgUnNk cFJldmlzaW9uID0gKihSc2RwUHRyICsgUlNEUF9SRVZJU0lPTl9PRkZTRVQpOw0KPiA+PiArDQo+ ID4+ICsgICAgaWYgKFJzZHBSZXZpc2lvbiA8IDIpIHsNCj4gPj4gKyAgICAgIFByaW50ICgNCj4g Pj4gKyAgICAgICAgTCJFUlJPUjogUlNEUCB2ZXJzaW9uIGxlc3MgdGhhbiAyIGlzIG5vdCBzdXBw b3J0ZWQuXG4iDQo+ID4+ICsgICAgICAgICk7DQo+ID4+ICsgICAgICByZXR1cm4gRUZJX1VOU1VQ UE9SVEVEOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIC8vIFRoZSBSU0RQIGxlbmd0 aCBpcyA0IGJ5dGVzIHN0YXJ0aW5nIGF0IG9mZnNldCAyMA0KPiA+PiArICAgIFJzZHBMZW5ndGgg PSAqKFVJTlQzMiopKFJzZHBQdHIgKyBSU0RQX0xFTkdUSF9PRkZTRVQpOw0KPiA+PiArDQo+ID4+ ICsgICAgVHJhY2UgPSBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zIChSU0RQX1RBQkxFX0lORk8s IFJzZHBQdHIsDQo+IFJzZHBMZW5ndGgpOw0KPiA+PiArDQo+ID4+ICsgICAgU3RhdHVzID0gR2V0 UGFyc2VyIChSU0RQX1RBQkxFX0lORk8sICZSc2RwUGFyc2VyUHJvYyk7DQo+ID4+ICsgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+PiArICAgICAgUHJpbnQgKA0KPiA+PiArICAgICAg ICBMIkVSUk9SOiBObyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZCBmb3IgUlNEUC5cbiINCj4gPj4g KyAgICAgICAgKTsNCj4gPj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICsgICAgfQ0KPiA+ PiArDQo+ID4+ICsgICAgUnNkcFBhcnNlclByb2MgKA0KPiA+PiArICAgICAgVHJhY2UsDQo+ID4+ ICsgICAgICBSc2RwUHRyLA0KPiA+PiArICAgICAgUnNkcExlbmd0aCwNCj4gPj4gKyAgICAgIFJz ZHBSZXZpc2lvbg0KPiA+PiArICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICB9IGVsc2Ugew0KPiA+ PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgUHJpbnQgKA0KPiA+PiAr ICAgICAgTCJFUlJPUjogRmFpbGVkIHRvIGZpbmQgQUNQSSBUYWJsZSBHdWlkIGluIFN5c3RlbSBD b25maWd1cmF0aW9uDQo+IFRhYmxlLlxuIg0KPiA+PiArICAgICAgKTsNCj4gPj4gKyAgICByZXR1 cm4gRUZJX05PVF9GT1VORDsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIFJlcG9ydE9wdGlv biA9IEdldFJlcG9ydE9wdGlvbiAoKTsNCj4gPj4gKyAgaWYgKEVSRVBPUlRfVEFCTEVfTElTVCAh PSBSZXBvcnRPcHRpb24pIHsNCj4gPj4gKyAgICBpZiAoKChFUkVQT1JUX1NFTEVDVEVEID09IFJl cG9ydE9wdGlvbikgIHx8DQo+ID4+ICsgICAgICAgICAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFID09 IFJlcG9ydE9wdGlvbikpICYmDQo+ID4+ICsgICAgICAgICghbVNlbGVjdGVkQWNwaVRhYmxlRm91 bmQpKSB7DQo+ID4+ICsgICAgICBQcmludCAoTCJcblJlcXVlc3RlZCBBQ1BJIFRhYmxlIG5vdCBm b3VuZC5cbiIpOw0KPiA+PiArICAgIH0gZWxzZSBpZiAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFICE9 IFJlcG9ydE9wdGlvbikgew0KPiA+PiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNv bk91dC0+TW9kZS0+QXR0cmlidXRlOw0KPiA+PiArDQo+ID4+ICsgICAgICBQcmludCAoTCJcblRh YmxlIFN0YXRpc3RpY3M6XG4iKTsNCj4gPj4gKw0KPiA+PiArICAgICAgaWYgKEdldENvbG91ckhp Z2hsaWdodGluZyAoKSkgew0KPiA+PiArICAgICAgICBQcmludEF0dHJpYnV0ZSA9IChHZXRFcnJv ckNvdW50ICgpID4gMCkgPw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9U RVhUX0FUVFIgKA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1JFRCwN Cj4gPj4gKw0KPiAoKE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KQ0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6DQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ID4+ICsgICAgICAgIGdTVC0+Q29u T3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBQcmludEF0dHJpYnV0ZSk7DQo+ID4+ICsg ICAgICB9DQo+ID4+ICsgICAgICBQcmludCAoTCJcdCVkIEVycm9yKHMpXG4iLCBHZXRFcnJvckNv dW50ICgpKTsNCj4gPj4gKw0KPiA+PiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAo KSkgew0KPiA+PiArICAgICAgICBQcmludEF0dHJpYnV0ZSA9IChHZXRXYXJuaW5nQ291bnQgKCkg PiAwKSA/DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUiAo DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfUkVELA0KPiA+PiArDQo+ ICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApIDoNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gPj4gKw0KPiA+PiArICAgICAgICBnU1QtPkNvbk91 dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgUHJpbnRBdHRyaWJ1dGUpOw0KPiA+PiArICAg ICAgfQ0KPiA+PiArICAgICAgUHJpbnQgKEwiXHQlZCBXYXJuaW5nKHMpXG4iLCBHZXRXYXJuaW5n Q291bnQgKCkpOw0KPiA+PiArDQo+ID4+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5n ICgpKSB7DQo+ID4+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29u T3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgfQ0KPiA+ PiArICB9DQo+ID4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4gK30NCj4gPj4gKw0KPiA+ PiArLyoqDQo+ID4+ICsgIEZ1bmN0aW9uIGZvciAnYWNwaXZpZXcnIGNvbW1hbmQuDQo+ID4+ICsN Cj4gPj4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFnZSAoTlVM TCBpZiBJbnRlcm5hbCkuDQo+ID4+ICsgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgIFBvaW50ZXIg dG8gdGhlIFN5c3RlbSBUYWJsZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ID4+ICsqLw0KPiA+PiAr U0hFTExfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1NoZWxsQ29tbWFuZFJ1bkFjcGlWaWV3 ICgNCj4gPj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElO IEVGSV9TWVNURU1fVEFCTEUqIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4g KyAgRUZJX1NUQVRVUyAgICAgICAgIFN0YXR1czsNCj4gPj4gKyAgU0hFTExfU1RBVFVTICAgICAg IFNoZWxsU3RhdHVzID0gU0hFTExfU1VDQ0VTUzsNCj4gPj4gKyAgTElTVF9FTlRSWSogICAgICAg IFBhY2thZ2UgPSBOVUxMOw0KPiA+PiArICBDSEFSMTYqICAgICAgICAgICAgUHJvYmxlbVBhcmFt Ow0KPiA+PiArICBDT05TVCBDSEFSMTYqICAgICAgVGVtcDsNCj4gPj4gKyAgQ0hBUjggICAgICAg ICAgICAgIENvbG91ck9wdGlvbls4XTsNCj4gPj4gKyAgU0hFTExfRklMRV9IQU5ETEUgIFRtcER1 bXBGaWxlSGFuZGxlID0gTlVMTDsNCj4gPj4gKw0KPiA+PiArICAvLyBTZXQgRGVmYXVsdHMNCj4g Pj4gKyAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX0FMTDsNCj4gPj4gKyAgbVRhYmxlQ291bnQgPSAw Ow0KPiA+PiArICBtQmluVGFibGVDb3VudCA9IDA7DQo+ID4+ICsgIG1TZWxlY3RlZEFjcGlUYWJs ZSA9IDA7DQo+ID4+ICsgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgPSBOVUxMOw0KPiA+PiArICBt U2VsZWN0ZWRBY3BpVGFibGVGb3VuZCA9IEZBTFNFOw0KPiA+PiArICBtVmVyYm9zZSA9IFRSVUU7 DQo+ID4+ICsgIG1Db25zaXN0ZW5jeUNoZWNrID0gVFJVRTsNCj4gPj4gKw0KPiA+PiArICAvLyBS ZXNldCBUaGUgZXJyb3Ivd2FybmluZyBjb3VudGVycw0KPiA+PiArICBSZXNldEVycm9yQ291bnQg KCk7DQo+ID4+ICsgIFJlc2V0V2FybmluZ0NvdW50ICgpOw0KPiA+PiArDQo+ID4+ICsgIFN0YXR1 cyA9IFNoZWxsQ29tbWFuZExpbmVQYXJzZSAoUGFyYW1MaXN0LCAmUGFja2FnZSwgJlByb2JsZW1Q YXJhbSwNCj4gVFJVRSk7DQo+ID4+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4g KyAgICBpZiAoU3RhdHVzID09IEVGSV9WT0xVTUVfQ09SUlVQVEVEICYmIFByb2JsZW1QYXJhbSAh PSBOVUxMKSB7DQo+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+PiArICAgICAgICAt MSwNCj4gPj4gKyAgICAgICAgLTEsDQo+ID4+ICsgICAgICAgIE5VTEwsDQo+ID4+ICsgICAgICAg IFNUUklOR19UT0tFTiAoU1RSX0dFTl9QUk9CTEVNKSwNCj4gPj4gKyAgICAgICAgZ1NoZWxsQWNw aVZpZXdIaWlIYW5kbGUsDQo+ID4+ICsgICAgICAgIEwiYWNwaXZpZXciLA0KPiA+PiArICAgICAg ICBQcm9ibGVtUGFyYW0NCj4gPj4gKyAgICAgICAgKTsNCj4gPj4gKyAgICAgIEZyZWVQb29sIChQ cm9ibGVtUGFyYW0pOw0KPiA+PiArICAgIH0gZWxzZSB7DQo+ID4+ICsgICAgICBQcmludCAoTCJh Y3BpdmlldzogRXJyb3IgcHJvY2Vzc2luZyBpbnB1dCBwYXJhbWV0ZXIocylcbiIpOw0KPiA+PiAr ICAgIH0NCj4gPj4gKyAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+PiArICB9IGVsc2Ugew0KPiA+PiArICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0Q291bnQg KFBhY2thZ2UpID4gMSkgew0KPiA+PiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPj4gKyAg ICAgICAgLTEsDQo+ID4+ICsgICAgICAgIC0xLA0KPiA+PiArICAgICAgICBOVUxMLA0KPiA+PiAr ICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fVE9PX01BTlkpLA0KPiA+PiArICAgICAgICBn U2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPj4gKyAgICAgICAgTCJhY3BpdmlldyINCj4gPj4g KyAgICAgICAgKTsNCj4gPj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJB TUVURVI7DQo+ID4+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFj a2FnZSwgTCItPyIpKSB7DQo+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+PiArICAg ICAgICAtMSwNCj4gPj4gKyAgICAgICAgLTEsDQo+ID4+ICsgICAgICAgIE5VTEwsDQo+ID4+ICsg ICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9IRUxQX0FDUElWSUVXKSwNCj4gPj4gKyAgICAg ICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ID4+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ ID4+ICsgICAgICAgICk7DQo+ID4+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0 RmxhZyAoUGFja2FnZSwgTCItcyIpICYmDQo+ID4+ICsgICAgICAgICAgICAgICBTaGVsbENvbW1h bmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLXMiKSA9PSBOVUxMKSB7DQo+ID4+ICsgICAgICBT aGVsbFByaW50SGlpRXggKA0KPiA+PiArICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgLTEsDQo+ ID4+ICsgICAgICAgIE5VTEwsDQo+ID4+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9O T19WQUxVRSksDQo+ID4+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+PiAr ICAgICAgICBMImFjcGl2aWV3IiwNCj4gPj4gKyAgICAgICAgTCItcyINCj4gPj4gKyAgICAgICAg KTsNCj4gPj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4+ICsgICAgfSBlbHNlIGlmICgoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwi LXMiKSAmJg0KPiA+PiArICAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQ YWNrYWdlLCBMIi1sIikpKSB7DQo+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+PiAr ICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgLTEsDQo+ID4+ICsgICAgICAgIE5VTEwsDQo+ID4+ ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9UT09fTUFOWSksDQo+ID4+ICsgICAgICAg IGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+PiArICAgICAgICBMImFjcGl2aWV3Ig0KPiA+ PiArICAgICAgICApOw0KPiA+PiArICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPj4gKyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQ YWNrYWdlLCBMIi1oIikgJiYNCj4gPj4gKyAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVH ZXRWYWx1ZSAoUGFja2FnZSwgTCItaCIpID09IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgU2hlbGxQ cmludEhpaUV4ICgNCj4gPj4gKyAgICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgICAtMSwNCj4g Pj4gKyAgICAgICAgICBOVUxMLA0KPiA+PiArICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dF Tl9OT19WQUxVRSksDQo+ID4+ICsgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ ID4+ICsgICAgICAgICAgTCJhY3BpdmlldyIsDQo+ID4+ICsgICAgICAgICAgTCItaCINCj4gPj4g KyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURf UEFSQU1FVEVSOw0KPiA+PiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcg KFBhY2thZ2UsIEwiLWQiKSAmJg0KPiA+PiArICAgICAgICAgICAgICAgIVNoZWxsQ29tbWFuZExp bmVHZXRGbGFnIChQYWNrYWdlLCBMIi1zIikpIHsNCj4gPj4gKyAgICAgICAgU2hlbGxQcmludEhp aUV4ICgNCj4gPj4gKyAgICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgICAtMSwNCj4gPj4gKyAg ICAgICAgICBOVUxMLA0KPiA+PiArICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9NSVNT SU5HX09QVElPTiksDQo+ID4+ICsgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ ID4+ICsgICAgICAgICAgTCJhY3BpdmlldyIsDQo+ID4+ICsgICAgICAgICAgTCItcyIsDQo+ID4+ ICsgICAgICAgICAgTCItZCINCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBTaGVs bFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+PiArICAgIH0gZWxzZSB7DQo+ ID4+ICsgICAgICAvLyBDaGVjayBpZiB0aGUgY29sb3VyIG9wdGlvbiBpcyBzZXQNCj4gPj4gKyAg ICAgIFRlbXAgPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLWgiKTsNCj4g Pj4gKyAgICAgIGlmIChUZW1wICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgVW5pY29kZVN0clRv QXNjaWlTdHJTIChUZW1wLCBDb2xvdXJPcHRpb24sIHNpemVvZg0KPiAoQ29sb3VyT3B0aW9uKSk7 DQo+ID4+ICsgICAgICAgIGlmICgoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJPTiIpID09 IDApIHx8DQo+ID4+ICsgICAgICAgICAgICAoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJU UlVFIikgPT0gMCkpIHsNCj4gPj4gKyAgICAgICAgICBTZXRDb2xvdXJIaWdobGlnaHRpbmcgKFRS VUUpOw0KPiA+PiArICAgICAgICB9IGVsc2UgaWYgKChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlv biwgIk9GRiIpID09IDApIHx8DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgKEFzY2lpU3RyaUNt cCAoQ29sb3VyT3B0aW9uLCAiRkFMU0UiKSA9PSAwKSkgew0KPiA+PiArICAgICAgICAgIFNldENv bG91ckhpZ2hsaWdodGluZyAoRkFMU0UpOw0KPiA+PiArICAgICAgICB9DQo+ID4+ICsgICAgICB9 DQo+ID4+ICsNCj4gPj4gKyAgICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2Fn ZSwgTCItbCIpKSB7DQo+ID4+ICsgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9UQUJMRV9M SVNUOw0KPiA+PiArICAgICAgfSBlbHNlIHsNCj4gPj4gKyAgICAgICAgbVNlbGVjdGVkQWNwaVRh YmxlTmFtZSA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwNCj4gTCItcyIpOw0K PiA+PiArICAgICAgICBpZiAobVNlbGVjdGVkQWNwaVRhYmxlTmFtZSAhPSBOVUxMKSB7DQo+ID4+ ICsgICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlID0gKFVJTlQzMilDb252ZXJ0U3RyVG9BY3Bp U2lnbmF0dXJlICgNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiA+PiArICAgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9S VF9TRUxFQ1RFRDsNCj4gPj4gKw0KPiA+PiArICAgICAgICAgIGlmIChTaGVsbENvbW1hbmRMaW5l R2V0RmxhZyAoUGFja2FnZSwgTCItZCIpKSAgew0KPiA+PiArICAgICAgICAgICAgLy8gQ3JlYXRl IGEgdGVtcG9yYXJ5IGZpbGUgdG8gY2hlY2sgaWYgdGhlIG1lZGlhIGlzIHdyaXRhYmxlLg0KPiA+ PiArICAgICAgICAgICAgQ0hBUjE2IEZpbGVOYW1lQnVmZmVyW01BWF9GSUxFX05BTUVfTEVOXTsN Cj4gPj4gKyAgICAgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9EVU1QX0JJTl9GSUxFOw0K PiA+PiArDQo+ID4+ICsgICAgICAgICAgICBVbmljb2RlU1ByaW50ICgNCj4gPj4gKyAgICAgICAg ICAgICAgRmlsZU5hbWVCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgICAgIHNpemVvZiAoRmlsZU5h bWVCdWZmZXIpLA0KPiA+PiArICAgICAgICAgICAgICBMIi5cXCVzJTA0ZC50bXAiLA0KPiA+PiAr ICAgICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lLA0KPiA+PiArICAgICAgICAgICAg ICBtQmluVGFibGVDb3VudA0KPiA+PiArICAgICAgICAgICAgICApOw0KPiA+PiArDQo+ID4+ICsg ICAgICAgICAgICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICZUbXBEdW1wRmlsZUhhbmRsZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJ X0ZJTEVfTU9ERV9SRUFEIHwNCj4gRUZJX0ZJTEVfTU9ERV9XUklURSB8DQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAwDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4+ICsNCj4g Pj4gKyAgICAgICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICAgICAg ICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4gKyAgICAg ICAgICAgICAgVG1wRHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0KPiA+PiArICAgICAgICAgICAgICBT aGVsbFByaW50SGlpRXggKA0KPiA+PiArICAgICAgICAgICAgICAgIC0xLA0KPiA+PiArICAgICAg ICAgICAgICAgIC0xLA0KPiA+PiArICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4+ICsgICAgICAg ICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1JFQURPTkxZX01FRElBKSwNCj4gPj4gKyAg ICAgICAgICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPj4gKyAgICAgICAgICAg ICAgICBMImFjcGl2aWV3Ig0KPiA+PiArICAgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgICAg ICAgICAgIGdvdG8gRG9uZTsNCj4gPj4gKyAgICAgICAgICAgIH0NCj4gPj4gKyAgICAgICAgICAg IC8vIERlbGV0ZSBUZW1wb3JhcnkgZmlsZS4NCj4gPj4gKyAgICAgICAgICAgIFNoZWxsRGVsZXRl RmlsZSAoJlRtcER1bXBGaWxlSGFuZGxlKTsNCj4gPj4gKyAgICAgICAgICB9IC8vIC1kDQo+ID4+ ICsgICAgICAgIH0gLy8gLXMNCj4gPj4gKyAgICAgIH0NCj4gPj4gKw0KPiA+PiArICAgICAgLy8g UGFyc2UgQUNQSSBUYWJsZSBpbmZvcm1hdGlvbg0KPiA+PiArICAgICAgU3RhdHVzID0gQWNwaVZp ZXcgKFN5c3RlbVRhYmxlKTsNCj4gPj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPj4gKyAgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9OT1RfRk9VTkQ7DQo+ID4+ICsgICAg ICB9DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gK0RvbmU6DQo+ID4+ICsg IGlmIChQYWNrYWdlICE9IE5VTEwpIHsNCj4gPj4gKyAgICBTaGVsbENvbW1hbmRMaW5lRnJlZVZh ckxpc3QgKFBhY2thZ2UpOw0KPiA+PiArICB9DQo+ID4+ICsgIHJldHVybiBTaGVsbFN0YXR1czsN Cj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmgNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5oDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjAzNTYxZWE4MTY4NjgyMWUzN2MwNQ0KPiBkOTBmMDUzNzMxZmRlNjNmYmI1DQo+ID4+IC0tLSAv ZGV2L251bGwNCj4gPj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvQWNwaVZpZXcuaA0KPiA+PiBAQCAtMCwwICsxLDEwMyBAQA0KPiA+PiArLyoqDQo+ ID4+ICsgIEhlYWRlciBmaWxlIGZvciBBY3BpVmlldw0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdo dCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ IGZvdW5kIGF0DQo+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gPj4gKw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVY UFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyoqLw0KPiA+PiArDQo+ID4+ICsjaWZuZGVmIEFDUElW SUVXX0hfDQo+ID4+ICsjZGVmaW5lIEFDUElWSUVXX0hfDQo+ID4+ICsNCj4gPj4gKy8qKiBBIG1h Y3JvIHRvIGRlZmluZSB0aGUgbWF4IGZpbGUgbmFtZSBsZW5ndGgNCj4gPj4gKyovDQo+ID4+ICsj ZGVmaW5lIE1BWF9GSUxFX05BTUVfTEVOICAgIDEyOA0KPiA+PiArDQo+ID4+ICsvKiogT2Zmc2V0 IHRvIHRoZSBSU0RQIHJldmlzaW9uIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBSU0RQDQo+ID4+ICsq Lw0KPiA+PiArI2RlZmluZSBSU0RQX1JFVklTSU9OX09GRlNFVCAxNQ0KPiA+PiArDQo+ID4+ICsv KiogT2Zmc2V0IHRvIHRoZSBSU0RQIGxlbmd0aCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgUlNEUA0K PiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgUlNEUF9MRU5HVEhfT0ZGU0VUICAgMjANCj4gPj4gKw0K PiA+PiArLyoqIFRoZSBFUkVQT1JUX09QVElPTiBlbnVtIGRlc2NyaWJlcyBBQ1BJIHRhYmxlIFJl cG9ydGluZyBvcHRpb25zLg0KPiA+PiArKi8NCj4gPj4gK3R5cGVkZWYgZW51bSBSZXBvcnRPcHRp b24gew0KPiA+PiArICBFUkVQT1JUX0FMTCwgICAgICAgICAgICAvLy88IFJlcG9ydCBBbGwgdGFi bGVzLg0KPiA+PiArICBFUkVQT1JUX1NFTEVDVEVELCAgICAgICAvLy88IFJlcG9ydCBTZWxlY3Rl ZCB0YWJsZS4NCj4gPj4gKyAgRVJFUE9SVF9UQUJMRV9MSVNULCAgICAgLy8vPCBSZXBvcnQgTGlz dCBvZiB0YWJsZXMuDQo+ID4+ICsgIEVSRVBPUlRfRFVNUF9CSU5fRklMRSwgIC8vLzwgRHVtcCBz ZWxlY3RlZCB0YWJsZSB0byBhIGZpbGUuDQo+ID4+ICsgIEVSRVBPUlRfTUFYDQo+ID4+ICt9IEVS RVBPUlRfT1BUSU9OOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhl IEFDUEkgdGFibGUgZXJyb3IgY291bnRlciB0byBaZXJvLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQN Cj4gPj4gK1Jlc2V0RXJyb3JDb3VudCAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAgKTsNCj4gPj4g Kw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBlcnJvciBj b3VudC4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIGVycm9y cyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ID4+ICsqLw0KPiA+PiArVUlOVDMyDQo+ ID4+ICtHZXRFcnJvckNvdW50ICgNCj4gPj4gKyAgVk9JRA0KPiA+PiArICApOw0KPiA+PiArDQo+ ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3Vu dGVyIHRvIFplcm8uDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArUmVzZXRXYXJuaW5nQ291 bnQgKA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudC4NCj4gPj4gKw0KPiA+ PiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIHdhcm5pbmcgZGV0ZWN0ZWQgaW4gdGhl IEFDUEkgdGFibGVzLg0KPiA+PiArKi8NCj4gPj4gK1VJTlQzMg0KPiA+PiArR2V0V2FybmluZ0Nv dW50ICgNCj4gPj4gKyAgVk9JRA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBm dW5jdGlvbiByZXR1cm5zIHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gPj4gKw0K PiA+PiArICBAcmV0dmFsIFRSVUUgaWYgY29sb3VyIGhpZ2hsaWdodGluZyBpcyBlbmFibGVkLg0K PiA+PiArKi8NCj4gPj4gK0JPT0xFQU4NCj4gPj4gK0dldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ ID4+ICsgIFZPSUQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g c2V0cyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ID4+ICsNCj4gPj4gKyovDQo+ ID4+ICtWT0lEDQo+ID4+ICtTZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiA+PiArICBCT09MRUFO IEhpZ2hsaWdodA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBw cm9jZXNzZXMgdGhlIHRhYmxlIHJlcG9ydGluZyBvcHRpb25zIGZvciB0aGUgQUNQSSB0YWJsZS4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgVGhlIEFDUEkgdGFibGUgU2ln bmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW2luXSBUYWJsZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQ SSB0YWJsZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBm byB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFJldHVybnMgVFJVRSBp ZiB0aGUgQUNQSSB0YWJsZSBzaG91bGQgYmUgdHJhY2VkLg0KPiA+PiArKi8NCj4gPj4gK0JPT0xF QU4NCj4gPj4gK1Byb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiA+PiArICBJTiBDT05TVCBV SU5UMzIgIFNpZ25hdHVyZSwNCj4gPj4gKyAgSU4gQ09OU1QgVUlOVDgqICBUYWJsZVB0ciwNCj4g Pj4gKyAgSU4gQ09OU1QgVUlOVDMyICBMZW5ndGgNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiAr I2VuZGlmIC8vIEFDUElWSUVXX0hfDQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlci5j DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9CZ3J0L0JncnRQYXJzZXIuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjZlODIwYmE3 ODhhMGZiNzgxMDYNCj4gMWRiYWQxZjU3ZjkwYWNlZjc4Yw0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLmMNCj4gPj4gQEAgLTAsMCArMSwxMTcgQEANCj4gPj4g Ky8qKg0KPiA+PiArICBCR1JUIHRhYmxlIHBhcnNlcg0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdo dCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ IGZvdW5kIGF0DQo+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gPj4gKw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVY UFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKw0KPiA+PiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4g Pj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIw MTcNCj4gPj4gKyoqLw0KPiA+PiArDQo+ID4+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9B Y3BpLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+ICsjaW5jbHVk ZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFy eS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPj4gKw0KPiA+PiArLy8gTG9jYWwgdmFy aWFibGVzDQo+ID4+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRy SW5mbzsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIEFDUEkgQkRSVCBUYWJsZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgQmdydFBhcnNlcltdID0gew0KPiA+PiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlI ZHJJbmZvKSwNCj4gPj4gKyAge0wiVmVyc2lvbiIsIDIsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU3RhdHVzIiwgMSwgMzgsIEwiMHgleCIsIE5VTEws ICBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiSW1hZ2UgVHlwZSIsIDEsIDM5LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiSW1hZ2UgQWRkcmVzcyIs IDgsIDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIklt YWdlIE9mZnNldCBYIiwgNCwgNDgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiSW1hZ2UgT2Zmc2V0IFkiLCA0LCA1MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgQkdSVCB0YWJsZS4NCj4gPj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBCR1JUIHRhYmxlIGFuZA0KPiA+PiArICB0cmFjZXMgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJz ZXMgdGhlIEFDUEkgaGVhZGVyIGZvciB0aGUgRFNEVCB0YWJsZSBhbmQNCj4gPj4gKyAgaW52b2tl cyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSBEU0RUIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIFRo aXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZp ZWxkcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYg VFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAg ICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBB Q1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFy c2VBY3BpQmdydCAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJTlQ4 KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgSU4g VUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIGlm ICghVHJhY2UpIHsNCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiAr ICBQYXJzZUFjcGkgKA0KPiA+PiArICAgIFRyYWNlLA0KPiA+PiArICAgIDAsDQo+ID4+ICsgICAg IkJHUlQiLA0KPiA+PiArICAgIFB0ciwNCj4gPj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ ICsgICAgUEFSU0VSX1BBUkFNUyAoQmdydFBhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiArfQ0K PiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBA cGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+PiAr ICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4N Cj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2Vy IGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRo ZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPj4gKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklf U1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0JncnRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4g Pj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiAr DQo+IEVGSV9BQ1BJXzZfMl9CT09UX0dSQVBISUNTX1JFU09VUkNFX1RBQkxFX1NJR05BVFVSRSwN Cj4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpQmdydA0KPiA+PiArICAgICAgICAgICApOw0KPiA+ PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2Uu DQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVt IFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQg ICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtF RklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0JncnRQYXJzZXJMaWJEZXN0cnVjdG9yICgN Cj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4g Pj4gKw0KPiBFRklfQUNQSV82XzJfQk9PVF9HUkFQSElDU19SRVNPVVJDRV9UQUJMRV9TSUdOQVRV UkUNCj4gPj4gKyAgICAgICAgICAgKTsNCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9C Z3J0UGFyc2VyTGliLmkNCj4gbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjBhNGQ0MGYwMGRhMWEyMGU0OGM4NA0KPiBlNGEzZDI1ZGQ3YTRk Yjc0NzYxDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJMaWIu aQ0KPiBuZg0KPiA+PiBAQCAtMCwwICsxLDMzIEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+PiArIw0K PiA+PiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UN Cj4gPj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4gKyMg IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4g KyMjDQo+ID4+ICsNCj4gPj4gK1tEZWZpbmVzXQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4 MDAwMTAwMTkNCj4gPj4gKyAgQkFTRV9OQU1FICAgICAgPSBCZ3J0UGFyc2VyTGliDQo+ID4+ICsg IEZJTEVfR1VJRCAgICAgID0gQzRDQ0Q5QjYtRjYyRi00QjA2LUEyNUQtRjgxNTUwN0I0OUUwDQo+ ID4+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhF X0RSSVZFUg0KPiA+PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+PiAr ICBDT05TVFJVQ1RPUiAgICA9IEJncnRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNU UlVDVE9SICAgICA9IEJncnRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tTb3Vy Y2VzXQ0KPiA+PiArICBCZ3J0UGFyc2VyLmMNCj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+ PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4g Pj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xpYnJh cnlDbGFzc2VzXQ0KPiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZmIC0t Z2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9EYmcyL0RiZzJQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uOTRkZTlhMzY1Y2MxZjk2MWQzNTFlZg0KPiAyMjkxN2QzMDA5YTNlOWRjNTMN Cj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+ID4+IEBA IC0wLDAgKzEsMjg3IEBADQo+ID4+ICsvKioNCj4gPj4gKyAgREJHMiB0YWJsZSBwYXJzZXINCj4g Pj4gKw0KPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4g KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dS QU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4g QkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0Yg QU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAg QHBhciBSZWZlcmVuY2Uocyk6DQo+ID4+ICsgICAgLSBNaWNyb3NvZnQgRGVidWcgUG9ydCBUYWJs ZSAyIChEQkcyKSBTcGVjaWZpY2F0aW9uIC0gRGVjZW1iZXIgMTAsDQo+IDIwMTUuDQo+ID4+ICsq Ki8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvRGVidWdQb3J0MlRh YmxlLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+ICsjaW5jbHVk ZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFy eS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPj4gKw0KPiA+PiArLy8gTG9jYWwgdmFy aWFibGVzIHBvaW50aW5nIHRvIHRoZSB0YWJsZSBmaWVsZHMNCj4gPj4gK1NUQVRJQyBDT05TVCBV SU5UMzIqIE9mZnNldERiZ0RldmljZUluZm87DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBO dW1iZXJEYmdEZXZpY2VJbmZvOw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiogRGJnRGV2SW5m b0xlbjsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UOCogIEdhc0NvdW50Ow0KPiA+PiArU1RBVElD IENPTlNUIFVJTlQxNiogTmFtZVNwYWNlU3RyaW5nTGVuZ3RoOw0KPiA+PiArU1RBVElDIENPTlNU IFVJTlQxNiogTmFtZVNwYWNlU3RyaW5nT2Zmc2V0Ow0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQx NiogT0VNRGF0YUxlbmd0aDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIE9FTURhdGFPZmZz ZXQ7DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBCYXNlQWRkclJlZ09mZnNldDsNCj4gPj4g K1NUQVRJQyBDT05TVCBVSU5UMTYqIEFkZHJTaXplT2Zmc2V0Ow0KPiA+PiArU1RBVElDIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4+ICsNCj4gPj4gKy8qKiBU aGlzIGZ1bmN0aW9uIFZhbGlkYXRlcyB0aGUgTmFtZVNwYWNlIHN0cmluZyBsZW5ndGguDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiAr Ki8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0 ZU5hbWVTcGFjZVN0ckxlbiAoDQo+ID4+ICsgIElOICBVSU5UOCogUHRyLA0KPiA+PiArICBJTiAg Vk9JRCogIENvbnRleHQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rp b24gcGFyc2VzIHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLg0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dICBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggIFBvaW50ZXIgaW4gd2hpY2gg dGhlIGxlbmd0aCBvZiB0aGUgZGVidWcNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2 aWNlIGluZm9ybWF0aW9uIGlzIHJldHVybmVkLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+ PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wRGJnRGV2aWNlSW5mbyAoDQo+ID4+ICsg IElOICBVSU5UOCogIFB0ciwNCj4gPj4gKyAgT1VUIFVJTlQzMiogTGVuZ3RoDQo+ID4+ICsgICk7 DQo+ID4+ICsNCj4gPj4gKy8vLyBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIERCRzIgdGFibGUuDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRGJnMlBhcnNl cltdID0gew0KPiA+PiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPj4g KyAge0wiT2Zmc2V0RGJnRGV2aWNlSW5mbyIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLA0KPiA+PiAr ICAgKFZPSUQqKikmT2Zmc2V0RGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtM Ik51bWJlckRiZ0RldmljZUluZm8iLCA0LCA0MCwgTCIlZCIsIE5VTEwsDQo+ID4+ICsgICAoVk9J RCoqKSZOdW1iZXJEYmdEZXZpY2VJbmZvLCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0K PiA+PiArLy8vIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIGRlYnVnIGRldmlj ZSBpbmZvcm1hdGlvbi4NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBEYmdEZXZJbmZv UGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIlJldmlzaW9uIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDIsIDEsIEwiJWQiLCBOVUxM LCAoVk9JRCoqKSZEYmdEZXZJbmZvTGVuLCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7 TCJHZW5lcmljIEFkZHJlc3MgUmVnaXN0ZXJzIENvdW50IiwgMSwgMywgTCIweCV4IiwgTlVMTCwN Cj4gPj4gKyAgIChWT0lEKiopJkdhc0NvdW50LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTmFt ZVNwYWNlIFN0cmluZyBMZW5ndGgiLCAyLCA0LCBMIiVkIiwgTlVMTCwNCj4gPj4gKyAgIChWT0lE KiopJk5hbWVTcGFjZVN0cmluZ0xlbmd0aCwgVmFsaWRhdGVOYW1lU3BhY2VTdHJMZW4sIE5VTEx9 LA0KPiA+PiArICB7TCJOYW1lU3BhY2UgU3RyaW5nIE9mZnNldCIsIDIsIDYsIEwiMHgleCIsIE5V TEwsDQo+ID4+ICsgICAoVk9JRCoqKSZOYW1lU3BhY2VTdHJpbmdPZmZzZXQsIE5VTEwsIE5VTEx9 LA0KPiA+PiArICB7TCJPRU0gRGF0YSBMZW5ndGgiLCAyLCA4LCBMIiVkIiwgTlVMTCwgKFZPSUQq KikmT0VNRGF0YUxlbmd0aCwNCj4gPj4gKyAgIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJPRU0g RGF0YSBPZmZzZXQiLCAyLCAxMCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmT0VNRGF0YU9mZnNl dCwNCj4gPj4gKyAgIE5VTEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIlBvcnQgVHlwZSIs IDIsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUG9y dCBTdWJUeXBlIiwgMiwgMTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJSZXNlcnZlZCIsIDIsIDE2LCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsNCj4gPj4gKyAge0wiQmFzZSBBZGRyZXNzIFJlZ2lzdGVyIE9mZnNldCIsIDIsIDE4 LCBMIjB4JXgiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmQmFzZUFkZHJSZWdPZmZzZXQsIE5V TEwsIE5VTEx9LA0KPiA+PiArICB7TCJBZGRyZXNzIFNpemUgT2Zmc2V0IiwgMiwgMjAsIEwiMHgl eCIsIE5VTEwsDQo+ID4+ICsgICAoVk9JRCoqKSZBZGRyU2l6ZU9mZnNldCwgTlVMTCwgTlVMTH0N Cj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUg TmFtZVNwYWNlIHN0cmluZyBsZW5ndGguDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0g W2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcu IHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8g dGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9J RA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiAoDQo+ID4+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICsgICkNCj4g Pj4gK3sNCj4gPj4gKyAgVUlOVDE2IE5hbWVTcGFjZVN0ckxlbiA9ICooVUlOVDE2KilQdHI7DQo+ ID4+ICsgIGlmIChOYW1lU3BhY2VTdHJMZW4gPCAyKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJy b3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IE5h bWVzcGFjZVN0cmluZyBMZW5ndGggPSAlZC4gSWYgbm8gTmFtZXNwYWNlIGRldmljZQ0KPiBleGlz dHMsXG4iDQo+ID4+ICsgICAgICAgIiAgICB0aGVuIE5hbWVzcGFjZVN0cmluZ1tdIG11c3QgY29u dGFpbiBhIHBlcmlvZCAnLiciLA0KPiA+PiArICAgICAgTmFtZVNwYWNlU3RyTGVuDQo+ID4+ICsg ICAgICApOw0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHBhcnNlcyB0aGUgZGVidWcgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4NCj4gPj4g Kw0KPiA+PiArICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW291dF0gUHRyICAgICBQb2ludGVyIGluIHdoaWNo IHRoZSBsZW5ndGggb2YgdGhlIGRlYnVnDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRl dmljZSBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZC4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4g Pj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcERiZ0RldmljZUluZm8gKA0KPiA+PiAr ICBJTiAgVUlOVDgqICBQdHIsDQo+ID4+ICsgIE9VVCBVSU5UMzIqIExlbmd0aA0KPiA+PiArICAp DQo+ID4+ICt7DQo+ID4+ICsgIFVJTlQxNiAgSW5kZXg7DQo+ID4+ICsgIFVJTlQ4KiAgRGF0YVB0 cjsNCj4gPj4gKyAgVUlOVDMyKiBBZGRyU2l6ZTsNCj4gPj4gKw0KPiA+PiArICAvLyBQYXJzZSB0 aGUgZGVidWcgZGV2aWNlIGluZm8gdG8gZ2V0IHRoZSBMZW5ndGgNCj4gPj4gKyAgUGFyc2VBY3Bp ICgNCj4gPj4gKyAgICBGQUxTRSwNCj4gPj4gKyAgICAwLA0KPiA+PiArICAgICJEZWJ1ZyBEZXZp Y2UgSW5mbyIsDQo+ID4+ICsgICAgUHRyLA0KPiA+PiArICAgIDMsICAvLyBMZW5ndGggaXMgMiBi eXRlcyBzdGFydGluZyBhdCBvZmZzZXQgMQ0KPiA+PiArICAgIFBBUlNFUl9QQVJBTVMgKERiZ0Rl dkluZm9QYXJzZXIpDQo+ID4+ICsgICAgKTsNCj4gPj4gKw0KPiA+PiArICBQYXJzZUFjcGkgKA0K PiA+PiArICAgIFRSVUUsDQo+ID4+ICsgICAgMiwNCj4gPj4gKyAgICAiRGVidWcgRGV2aWNlIElu Zm8iLA0KPiA+PiArICAgIFB0ciwNCj4gPj4gKyAgICAqRGJnRGV2SW5mb0xlbiwNCj4gPj4gKyAg ICBQQVJTRVJfUEFSQU1TIChEYmdEZXZJbmZvUGFyc2VyKQ0KPiA+PiArICAgICk7DQo+ID4+ICsN Cj4gPj4gKyAgLy8gR0FTIGFuZCBBZGRyZXNzIFNpemUNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+ PiArICBEYXRhUHRyID0gUHRyICsgKCpCYXNlQWRkclJlZ09mZnNldCk7DQo+ID4+ICsgIEFkZHJT aXplID0gKFVJTlQzMiopKFB0ciArICgqQWRkclNpemVPZmZzZXQpKTsNCj4gPj4gKyAgd2hpbGUg KEluZGV4IDwgKCpHYXNDb3VudCkpIHsNCj4gPj4gKyAgICBQcmludEZpZWxkTmFtZSAoNCwgTCJC YXNlQWRkcmVzc1JlZ2lzdGVyIik7DQo+ID4+ICsgICAgRHVtcEdhc1N0cnVjdCAoRGF0YVB0ciwg NCk7DQo+ID4+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQWRkcmVzcyBTaXplIik7DQo+ID4+ ICsgICAgUHJpbnQgKEwiMHgleFxuIiwgQWRkclNpemVbSW5kZXhdKTsNCj4gPj4gKyAgICBEYXRh UHRyICs9IEdBU19MRU5HVEg7DQo+ID4+ICsgICAgSW5kZXgrKzsNCj4gPj4gKyAgfQ0KPiA+PiAr DQo+ID4+ICsgIC8vIE5hbWVTcGFjZSBTdHJpbmcNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiAr ICBEYXRhUHRyID0gUHRyICsgKCpOYW1lU3BhY2VTdHJpbmdPZmZzZXQpOw0KPiA+PiArICBQcmlu dEZpZWxkTmFtZSAoNCwgTCJOYW1lU3BhY2UgU3RyaW5nIik7DQo+ID4+ICsgIHdoaWxlIChJbmRl eCA8ICgqTmFtZVNwYWNlU3RyaW5nTGVuZ3RoKSkgew0KPiA+PiArICAgIFByaW50IChMIiVjIiwg RGF0YVB0cltJbmRleCsrXSk7DQo+ID4+ICsgIH0NCj4gPj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4g Pj4gKw0KPiA+PiArICAvLyBPRU0gRGF0YQ0KPiA+PiArICBJbmRleCA9IDA7DQo+ID4+ICsgIERh dGFQdHIgPSBQdHIgKyAoKk9FTURhdGFPZmZzZXQpOw0KPiA+PiArICBQcmludEZpZWxkTmFtZSAo NCwgTCJPRU0gRGF0YSIpOw0KPiA+PiArICB3aGlsZSAoSW5kZXggPCAoKk9FTURhdGFMZW5ndGgp KSB7DQo+ID4+ICsgICAgUHJpbnQgKEwiJXggIiwgRGF0YVB0cltJbmRleCsrXSk7DQo+ID4+ICsg ICAgaWYgKChJbmRleCAmIDcpID09IDApIHsNCj4gPj4gKyAgICAgIFByaW50IChMIlxuJS0qcyAg ICIsIE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEgsIEwiIik7DQo+ID4+ICsgICAgfQ0KPiA+PiAr ICB9DQo+ID4+ICsNCj4gPj4gKyAgKkxlbmd0aCA9ICpEYmdEZXZJbmZvTGVuOw0KPiA+PiArfQ0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgREJHMiB0YWJs ZS4NCj4gPj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBEQkcyIHRhYmxlIGFuZA0KPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0K PiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9m IHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFj ZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBv ZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24g IFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4g K0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpRGJnMiAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxl bmd0aCwNCj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ ID4+ICt7DQo+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQzMiBEYmdEZXZpY2VJ bmZvTGVuZ3RoOw0KPiA+PiArICBVSU5UOCogRGV2SW5mb1B0cjsNCj4gPj4gKw0KPiA+PiArICBp ZiAoIVRyYWNlKSB7DQo+ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g KyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+PiAr ICAgICAgICAgICAgIDAsDQo+ID4+ICsgICAgICAgICAgICAgIkRCRzIiLA0KPiA+PiArICAgICAg ICAgICAgIFB0ciwNCj4gPj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ICsg ICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoRGJnMlBhcnNlcikNCj4gPj4gKyAgICAgICAgICAg ICApOw0KPiA+PiArICBEZXZJbmZvUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArDQo+ID4+ICsg IHdoaWxlIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gPj4gKyAgICBEdW1wRGJnRGV2 aWNlSW5mbyAoDQo+ID4+ICsgICAgICBEZXZJbmZvUHRyLA0KPiA+PiArICAgICAgJkRiZ0Rldmlj ZUluZm9MZW5ndGgNCj4gPj4gKyAgICAgICk7DQo+ID4+ICsgICAgT2Zmc2V0ICs9IERiZ0Rldmlj ZUluZm9MZW5ndGg7DQo+ID4+ICsgICAgRGV2SW5mb1B0ciArPSBEYmdEZXZpY2VJbmZvTGVuZ3Ro Ow0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFy c2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRs ZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRl ciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBF RklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4N Cj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52 YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byBy ZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vy Lg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRGJnMlBh cnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAg KiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBS ZWdpc3RlclBhcnNlciAoDQo+ID4+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9ERUJVR19QT1JU XzJfVEFCTEVfU0lHTkFUVVJFLA0KPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlEYmcyDQo+ID4+ ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUg aGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQ b2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEBy ZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVk Lg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRGJnMlBh cnNlckxpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAq IENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERl cmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArICAgICAgICAgICBFRklfQUNQSV82XzJfREVCVUdfUE9S VF8yX1RBQkxFX1NJR05BVFVSRQ0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiBk aWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXJMaQ0KPiBiLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyTGkN Cj4gYi5pbmYNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTczYzBkZjkyY2ZmODcwYzgxMzRj MA0KPiAxNDhmODhkMjRjZGVjNmYwYmENCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4g Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0Ri ZzIvRGJnMlBhcnNlckxpDQo+IGIuaW5mDQo+ID4+IEBAIC0wLDAgKzEsMzMgQEANCj4gPj4gKyMj IEBmaWxlDQo+ID4+ICsjDQo+ID4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyMNCj4gPj4gKyMgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyMgIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiA+PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiA+PiArIw0KPiA+PiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsjICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBP UiBJTVBMSUVELg0KPiA+PiArIyMNCj4gPj4gKw0KPiA+PiArW0RlZmluZXNdDQo+ID4+ICsgIElO Rl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiA+PiArICBCQVNFX05BTUUgICAgICA9IERiZzJQ YXJzZXJMaWINCj4gPj4gKyAgRklMRV9HVUlEICAgICAgPSBGQjFGMTFBQS1GMkYwLTRENTgtOEQw Ni0zNjVEQ0I2M0E2MTQNCj4gPj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gPj4gKyAgTU9E VUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ID4+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxE WEVfRFJJVkVSDQo+ID4+ICsgIENPTlNUUlVDVE9SICAgID0gRGJnMlBhcnNlckxpYkNvbnN0cnVj dG9yDQo+ID4+ICsgIERFU1RSVUNUT1IgICAgID0gRGJnMlBhcnNlckxpYkRlc3RydWN0b3INCj4g Pj4gKw0KPiA+PiArW1NvdXJjZXNdDQo+ID4+ICsgIERiZzJQYXJzZXIuYw0KPiA+PiArDQo+ID4+ ICtbUGFja2FnZXNdDQo+ID4+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4+ICsgIFNoZWxsUGtn L1NoZWxsUGtnLmRlYw0KPiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ PiArDQo+ID4+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5k TGliDQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXIu Yw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzZjYzdlODc3N2U3NWYzOTgzY2EzDQo+IDEw Y2IzYzBkNDNmZWQwM2JmNQ0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0 UGFyc2VyLmMNCj4gPj4gQEAgLTAsMCArMSw5MiBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIERTRFQg dGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJT RCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0K PiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gQUNQSSA2LjIg U3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+PiArKiovDQo+ID4+ ICsNCj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJs ZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFD UEkgRFNEVCB0YWJsZS4NCj4gPj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rp b24gcGFyc2VzIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiA+PiArICBGb3IgdGhlIERTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFk ZXIgZmllbGRzIGFyZSBwYXJzZWQgYW5kDQo+ID4+ICsgIHRyYWNlZC4NCj4gPj4gKw0KPiA+PiAr ICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkg ZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl TGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0g QWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8N Cj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpRHNkdCAoDQo+ID4+ICsg IElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBV SU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZp c2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIGlmICghVHJhY2UpIHsNCj4gPj4gKyAg ICByZXR1cm47DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBEdW1wQWNwaUhlYWRlciAoUHRy KTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBp bWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZ X1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiA+PiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ID4+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRo ZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4+ICsq Lw0KPiA+PiArRUZJX1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtEc2R0UGFyc2VyTGliQ29u c3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5 c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFy c2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJfRElGRkVSRU5USUFURURfU1lTVEVNX0RFU0NS SVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpRHNkdA0K PiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogRGVyZWdpc3Rl ciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAg VGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+PiAr ICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0 ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0Rz ZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJM RSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVy biBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJfRElGRkVSRU5USUFU RURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KPiA+PiArICAgICAgICAgICAp Ow0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXJMaWIuaQ0KPiBuZg0K PiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv RHNkdC9Ec2R0UGFyc2VyTGliLmkNCj4gbmYNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g Pj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZi ZjIzOGUxY2IzODNjNjIzM2U3DQo+IDI4ZDI5N2NkNDI5MjkxOWVlZDMNCj4gPj4gLS0tIC9kZXYv bnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IEBAIC0wLDAg KzEsMzMgQEANCj4gPj4gKyMjIEBmaWxlDQo+ID4+ICsjDQo+ID4+ICsjICBDb3B5cmlnaHQgKGMp IDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiAr IyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ IGZvdW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0K PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10N Cj4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAg ICAgID0gRHNkdFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDMwNDc4NDJCLTlG QTYtNENBMi05NTEzLUQ3RkQ2QUQwOTU3NA0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0K PiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFT UyAgPSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBEc2R0UGFyc2Vy TGliQ29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBEc2R0UGFyc2VyTGliRGVz dHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgRHNkdFBhcnNlci5jDQo+ ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4g KyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQ a2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLmMNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQv RmFkdFBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMTNhZjQwYmQ3ZjljNmY1 NTAyOTQNCj4gMDI1MjM2MGQwOTVkYmQ1OWQ0DQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysr DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9GYWR0L0ZhZHRQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDMwOSBAQA0KPiA+PiArLyoqDQo+ ID4+ICsgIEZBRFQgdGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAy MDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQg YXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBP UiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAg IC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+ PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4N Cj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlW aWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCB2YXJpYWJsZXMN Cj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIERzZHRBZGRyZXNzOw0KPiA+PiArU1RBVElDIENP TlNUIFVJTlQ2NCogWF9Ec2R0QWRkcmVzczsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UOCogIEZh ZHRNaW5vclJldmlzaW9uOw0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lO Rk8gQWNwaUhkckluZm87DQo+ID4+ICsNCj4gPj4gKy8qKiBBIG1hY3JvIGRlZmluaW5nIHRoZSBI YXJkd2FyZSByZWR1Y2VkIEFDUEkgZmxhZw0KPiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgSFdfUkVE VUNFRF9BQ1BJICAgQklUMjANCj4gPj4gKw0KPiA+PiArLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMN Cj4gPj4gK0NPTlNUIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8qIENPTlNUDQo+ID4+ICtF RklBUEkNCj4gPj4gK0dldEFjcGlYc2R0SGVhZGVySW5mbyAoDQo+ID4+ICsgIFZPSUQNCj4gPj4g Kyk7DQo+ID4+ICsNCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ ICtWYWxpZGF0ZUZpcm13YXJlQ3RybCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsg IElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICspOw0KPiA+PiArDQo+ID4+ICtTVEFUSUMNCj4gPj4g K1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVYRmlybXdhcmVDdHJsICgNCj4gPj4g KyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyk7DQo+ ID4+ICsNCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxp ZGF0ZUZsYWdzICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENv bnRleHQNCj4gPj4gKyk7DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBBQ1BJIEZBRFQgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIEZhZHRQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFE RVIgKCZBY3BpSGRySW5mbyksDQo+ID4+ICsgIHtMIkZJUk1XQVJFX0NUUkwiLCA0LCAzNiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVGaXJtd2FyZUN0cmwsDQo+IE5VTEx9LA0KPiA+PiAr ICB7TCJEU0RUIiwgNCwgNDAsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJkRzZHRBZGRyZXNzLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCA0NCwgTCIleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQcmVmZXJyZWRfUE1fUHJvZmlsZSIsIDEsIDQ1 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU0NJX0lOVCIs IDIsIDQ2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU01J X0NNRCIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAg e0wiQUNQSV9FTkFCTEUiLCAxLCA1MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIkFDUElfRElTQUJMRSIsIDEsIDUzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUzRCSU9TX1JFUSIsIDEsIDU0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUFNUQVRFX0NOVCIsIDEsIDU1LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUE0xYV9FVlRfQkxLIiwg NCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQTTFi X0VWVF9CTEsiLCA0LCA2MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ ICsgIHtMIlBNMWFfQ05UX0JMSyIsIDQsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiUE0xYl9DTlRfQkxLIiwgNCwgNjgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQTTJfQ05UX0JMSyIsIDQsIDcyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUE1fVE1SX0JMSyIsIDQsIDc2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiR1BFMF9CTEsi LCA0LCA4MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkdQ RTFfQkxLIiwgNCwgODQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJQTTFfRVZUX0xFTiIsIDEsIDg4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiUE0xX0NOVF9MRU4iLCAxLCA4OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBNMl9DTlRfTEVOIiwgMSwgOTAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQTV9UTVJfTEVOIiwgMSwgOTEsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJHUEUwX0JMS19MRU4i LCAxLCA5MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkdQ RTFfQkxLX0xFTiIsIDEsIDkzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiR1BFMV9CQVNFIiwgMSwgOTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJDU1RfQ05UIiwgMSwgOTUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+PiArICB7TCJQX0xWTDJfTEFUIiwgMiwgOTYsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQX0xWTDNfTEFUIiwgMiwgOTgsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJGTFVTSF9TSVpFIiwgMiwg MTAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRkxVU0hf U1RSSURFIiwgMiwgMTAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g KyAge0wiRFVUWV9PRkZTRVQiLCAxLCAxMDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJEVVRZX1dJRFRIIiwgMSwgMTA1LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiREFZX0FMUk0iLCAxLCAxMDYsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJNT05fQUxSTSIsIDEsIDEwNywgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkNFTlRVUlkiLCAxLCAx MDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJJQVBDX0JP T1RfQVJDSCIsIDIsIDEwOSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ ICsgIHtMIlJlc2VydmVkIiwgMSwgMTExLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiRmxhZ3MiLCA0LCAxMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlk YXRlRmxhZ3MsIE5VTEx9LA0KPiA+PiArICB7TCJSRVNFVF9SRUciLCAxMiwgMTE2LCBOVUxMLCBE dW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUkVTRVRfVkFMVUUiLCAxLCAx MjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJBUk1fQk9P VF9BUkNIIiwgMiwgMTI5LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g KyAge0wiRkFEVCBNaW5vciBWZXJzaW9uIiwgMSwgMTMxLCBMIjB4JXgiLCBOVUxMLA0KPiAoVk9J RCoqKSZGYWR0TWlub3JSZXZpc2lvbiwNCj4gPj4gKyAgICBOVUxMLCBOVUxMfSwNCj4gPj4gKyAg e0wiWF9GSVJNV0FSRV9DVFJMIiwgOCwgMTMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwNCj4gPj4g KyAgICBWYWxpZGF0ZVhGaXJtd2FyZUN0cmwsIE5VTEx9LA0KPiA+PiArICB7TCJYX0RTRFQiLCA4 LCAxNDAsIEwiMHglbHgiLCBOVUxMLCAoVk9JRCoqKSZYX0RzZHRBZGRyZXNzLCBOVUxMLA0KPiBO VUxMfSwNCj4gPj4gKyAge0wiWF9QTTFhX0VWVF9CTEsiLCAxMiwgMTQ4LCBOVUxMLCBEdW1wR2Fz LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWF9QTTFiX0VWVF9CTEsiLCAxMiwgMTYw LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWF9QTTFhX0NO VF9CTEsiLCAxMiwgMTcyLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g KyAge0wiWF9QTTFiX0NOVF9CTEsiLCAxMiwgMTg0LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPj4gKyAge0wiWF9QTTJfQ05UX0JMSyIsIDEyLCAxOTYsIE5VTEwsIER1bXBH YXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJYX1BNX1RNUl9CTEsiLCAxMiwgMjA4 LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWF9HUEUwX0JM SyIsIDEyLCAyMjAsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJYX0dQRTFfQkxLIiwgMTIsIDIzMiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIlNMRUVQX0NPTlRST0xfUkVHIiwgMTIsIDI0NCwgTlVMTCwgRHVtcEdhcywg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlNMRUVQX1NUQVRVU19SRUciLCAxMiwgMjU2 LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiSHlwZXJ2aXNv ciBWZW5kb3JJZGVudGl0eSIsIDgsIDI2OCwgTCIlbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRo ZSBGaXJtd2FyZSBDb250cm9sIEZpZWxkLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBw YXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9u IGUuZy4gdGhpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRl ciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlRmlybXdhcmVDdHJsICgNCj4gPj4g KyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKykNCj4g Pj4gK3sNCj4gPj4gKyNpZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQ VV9BQVJDSDY0KQ0KPiA+PiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4+ICsgICAg SW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBM IlxuRVJST1I6IEZpcm13YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZvciBBUk0gcGxhdGZvcm1z LiINCj4gPj4gKyAgICApOw0KPiA+PiArICB9DQo+ID4+ICsjZW5kaWYNCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYX0Zpcm13YXJlIENvbnRy b2wgRmllbGQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4 dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRh YmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VG SUFQSQ0KPiA+PiArVmFsaWRhdGVYRmlybXdhcmVDdHJsICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4gKyNp ZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+ PiArICBpZiAoKihVSU5UNjQqKVB0ciAhPSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IFggRmly bXdhcmUgQ29udHJvbCBtdXN0IGJlIHplcm8gZm9yIEFSTSBwbGF0Zm9ybXMuIg0KPiA+PiArICAg ICk7DQo+ID4+ICsgIH0NCj4gPj4gKyNlbmRpZg0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiog VGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIGZsYWdzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGlu Zm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJl IGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RB VElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlRmxhZ3MgKA0KPiA+ PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiArKQ0K PiA+PiArew0KPiA+PiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVf Q1BVX0FBUkNINjQpDQo+ID4+ICsgIGlmICgoKCooVUlOVDMyKilQdHIpICYgSFdfUkVEVUNFRF9B Q1BJKSA9PSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAg ICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IEhXX1JFRFVDRURfQUNQSSBmbGFnIG11 c3QgYmUgc2V0IGZvciBBUk0NCj4gcGxhdGZvcm1zLiINCj4gPj4gKyAgICApOw0KPiA+PiArICB9 DQo+ID4+ICsjZW5kaWYNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBBQ1BJIEZBRFQgdGFibGUuDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBGQURUIHRhYmxlIGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQSQ0KPiA+PiArICB0 YWJsZSBmaWVsZHMuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0 aGUgQUNQSSBoZWFkZXIgZm9yIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiA+PiArICBpbnZva2VzIHRo ZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIERTRFQgdGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBm dW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRz Lg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVF LCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFy YW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkg dGFibGUuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFj cGlGYWR0ICgNCj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQ dHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5U OCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDgq ICBEc2R0UHRyOw0KPiA+PiArDQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVHJhY2Us DQo+ID4+ICsgICAgMCwNCj4gPj4gKyAgICAiRkFEVCIsDQo+ID4+ICsgICAgUHRyLA0KPiA+PiAr ICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChGYWR0UGFyc2Vy KQ0KPiA+PiArICAgICk7DQo+ID4+ICsNCj4gPj4gKyAgaWYgKFRyYWNlKSB7DQo+ID4+ICsgICAg UHJpbnQgKEwiXG5TdW1tYXJ5OlxuIik7DQo+ID4+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDIsIEwi RkFEVCBWZXJzaW9uIik7DQo+ID4+ICsgICAgUHJpbnQgKEwiJWQuJWRcbiIsICAqQWNwaUhkcklu Zm8uUmV2aXNpb24sICpGYWR0TWlub3JSZXZpc2lvbik7DQo+ID4+ICsNCj4gPj4gKyAgICBpZiAo KkdldEFjcGlYc2R0SGVhZGVySW5mbyAoKS0+T2VtVGFibGVJZCAhPQ0KPiAqQWNwaUhkckluZm8u T2VtVGFibGVJZCkgew0KPiA+PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4g KyAgICAgIFByaW50IChMIkVSUk9SOiBPRU0gVGFibGUgSWQgZG9lcyBub3QgbWF0Y2ggd2l0aCBS U0RUL1hTRFQuXG4iKTsNCj4gPj4gKyAgICB9DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICAv LyBJZiBYX0RTRFQgaXMgbm90IHplcm8gdGhlbiB1c2UgWF9EU0RUIGFuZCBpZ25vcmUgRFNEVCwN Cj4gPj4gKyAgLy8gZWxzZSB1c2UgRFNEVC4NCj4gPj4gKyAgaWYgKCpYX0RzZHRBZGRyZXNzICE9 IDApIHsNCj4gPj4gKyAgICBEc2R0UHRyID0gKFVJTlQ4KikoVUlOVE4pKCpYX0RzZHRBZGRyZXNz KTsNCj4gPj4gKyAgfSBlbHNlIGlmICgqRHNkdEFkZHJlc3MgIT0gMCkgew0KPiA+PiArICAgIERz ZHRQdHIgPSAoVUlOVDgqKShVSU5UTikoKkRzZHRBZGRyZXNzKTsNCj4gPj4gKyAgfSBlbHNlIHsN Cj4gPj4gKyAgICAvLyBCb3RoIERTRFQgYW5kIFhfRFNEVCBjYW5ub3QgYmUgemVyby4NCj4gPj4g KyNpZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0K PiA+PiArICAgIGlmIChUcmFjZSkgew0KPiA+PiArICAgICAgLy8gVGhlIERTRFQgVGFibGUgaXMg bWFuZGF0b3J5IGZvciBBUk0gc3lzdGVtcw0KPiA+PiArICAgICAgLy8gYXMgdGhlIENQVSBpbmZv cm1hdGlvbiBNVVNUIGJlIHByZXNlbnRlZCBpbg0KPiA+PiArICAgICAgLy8gdGhlIERTRFQuDQo+ ID4+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgUHJpbnQgKEwi RVJST1I6IEJvdGggWF9EU0RUIGFuZCBEU0RUIGFyZSBOVUxMLlxuIik7DQo+ID4+ICsgICAgfQ0K PiA+PiArI2VuZGlmDQo+ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g KyAgUHJvY2Vzc0FjcGlUYWJsZSAoRHNkdFB0cik7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8q KiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4N Cj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhl IEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFs cmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg QSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VG SUFQSQ0KPiA+PiArRmFkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1Qg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAg RUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4+ICsgICAgICAgICAgIEVGSV9B Q1BJXzZfMl9GSVhFRF9BQ1BJX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAg ICAgICAgICAgUGFyc2VBY3BpRmFkdA0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+ PiArDQo+ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsg IEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0K PiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIg aXMgZGVyZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBU aGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVT DQo+ID4+ICtFRklBUEkNCj4gPj4gK0ZhZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAg SU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAg SU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICAp DQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKyAgICAg ICAgICAgRUZJX0FDUElfNl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJF DQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFk dFBhcnNlckxpYi5pDQo+IG5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi40MjhhMWEwMjZkZWVjMWI4N2NjYjkNCj4gM2RkNzc3NTAwNzhlMmE4 ZWVmZA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyTGliLmkN Cj4gbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4g Pj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRl eHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsj Iw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAw MDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gRmFkdFBhcnNlckxpYg0KPiA+PiArICBG SUxFX0dVSUQgICAgICA9IDE1MDdFQzhBLTJCRDQtNDYwQi05ODMwLUQ3OEQwQkQ3RTBFNg0KPiA+ PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9E UklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAg Q09OU1RSVUNUT1IgICAgPSBGYWR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJV Q1RPUiAgICAgPSBGYWR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNl c10NCj4gPj4gKyAgRmFkdFBhcnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4g KyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5 Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdp dA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvR3RkdC9HdGR0UGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLjc4NDEwNGE4YTRlNWM1ZmYwYmEyNjMNCj4gNzRhNjczNzdlNzdkZGZlMzliDQo+ ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiA+PiBAQCAt MCwwICsxLDMzOCBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIEdURFQgdGFibGUgcGFyc2VyDQo+ID4+ ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsg IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJB U0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ICsgIEBw YXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVy cmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+PiArICAqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1 ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUxpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0K PiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4+ ICsNCj4gPj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiog R3RkdFBsYXRmb3JtVGltZXJDb3VudDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0ZHRQ bGF0Zm9ybVRpbWVyT2Zmc2V0Ow0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiAgUGxhdGZvcm1U aW1lclR5cGU7DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBQbGF0Zm9ybVRpbWVyTGVuZ3Ro Ow0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiogR3RCbG9ja1RpbWVyQ291bnQ7DQo+ID4+ICtT VEFUSUMgQ09OU1QgVUlOVDMyKiBHdEJsb2NrVGltZXJPZmZzZXQ7DQo+ID4+ICtTVEFUSUMgQ09O U1QgVUlOVDE2KiBHdEJsb2NrTGVuZ3RoOw0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHZhbGlkYXRlcyB0aGUgR1QgQmxvY2sgdGltZXIgY291bnQuDQo+ID4+ICsNCj4gPj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4N Cj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMg aW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQg YmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtT VEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVHdEJsb2NrVGlt ZXJDb3VudCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250 ZXh0DQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBBQ1BJIEdURFQgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIEd0ZHRQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFE RVIgKCZBY3BpSGRySW5mbyksDQo+ID4+ICsgIHtMIkNudENvbnRyb2xCYXNlIFBoeXNpY2FsIEFk ZHJlc3MiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsDQo+ID4+ICsgICBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIlNlY3VyZSBFTDEgdGltZXIgR1NJViIsIDQsIDQ4LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU2VjdXJlIEVMMSB0aW1l ciBGTEFHUyIsIDQsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g Kw0KPiA+PiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1lciBHU0lWIiwgNCwgNTYsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1l ciBGTEFHUyIsIDQsIDYwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4g Pj4gKw0KPiA+PiArICB7TCJWaXJ0dWFsIHRpbWVyIEdTSVYiLCA0LCA2NCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlZpcnR1YWwgdGltZXIgRkxBR1MiLCA0 LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAg e0wiTm9uLVNlY3VyZSBFTDIgdGltZXIgR1NJViIsIDQsIDcyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTm9uLVNlY3VyZSBFTDIgdGltZXIgRkxBR1MiLCA0 LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4+ICsNCj4gPj4g KyAge0wiQ250UmVhZEJhc2UgUGh5c2ljYWwgYWRkcmVzcyIsIDgsIDgwLCBMIjB4JWx4IiwgTlVM TCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4+ICsgIHtMIlBsYXRmb3JtIFRpbWVyIENvdW50 IiwgNCwgODgsIEwiJWQiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3JtVGlt ZXJDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBsYXRmb3JtIFRpbWVyIE9mZnNldCIs IDQsIDkyLCBMIjB4JXgiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3JtVGlt ZXJPZmZzZXQsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gdGltZXIgaGVhZGVyLg0KPiA+ PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHdFBsYXRmb3JtVGltZXJIZWFk ZXJQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiVHlwZSIsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lE KiopJlBsYXRmb3JtVGltZXJUeXBlLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwg MiwgMSwgTlVMTCwgTlVMTCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lckxlbmd0aCwgTlVMTCwNCj4g TlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJh eSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSBHVCBCbG9jay4NCj4gPj4gKyovDQo+ID4+ICtTVEFU SUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1BhcnNlcltdID0gew0KPiA+PiArICB7TCJUeXBl IiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJMZW5n dGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja0xlbmd0aCwgTlVMTCwgTlVM TH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRDdGxCYXNlKSIsIDgsIDQs IEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gPj4gKyAge0wiVGltZXIg Q291bnQiLCA0LCAxMiwgTCIlZCIsIE5VTEwsIChWT0lEKiopJkd0QmxvY2tUaW1lckNvdW50LA0K PiA+PiArICAgVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCwgTlVMTH0sDQo+ID4+ICsgIHtMIlRp bWVyIE9mZnNldCIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja1RpbWVyT2Zm c2V0LA0KPiBOVUxMLA0KPiA+PiArICAgIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR1QgQmxvY2sgdGltZXIuDQo+ ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0QmxvY2tUaW1lclBhcnNl cltdID0gew0KPiA+PiArICB7TCJGcmFtZSBOdW1iZXIiLCAxLCAwLCBMIiVkIiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMywgMSwgTCIleCAleCAleCIs IER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQaHlzaWNhbCBhZGRy ZXNzIChDbnRCYXNlWCkiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIlBoeXNpY2FsIGFkZHJlc3MgKENudEVMMEJhc2VYKSIsIDgsIDEyLCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gPj4gKyAgICBOVUxMfSwNCj4gPj4gKyAge0wiUGh5 c2ljYWwgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiUGh5c2ljYWwgVGltZXIgRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlZpcnR1YWwgVGltZXIgR1NJViIsIDQs IDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiVmlydHVh bCBUaW1lciBGbGFncyIsIDQsIDMyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiQ29tbW9uIEZsYWdzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cuDQo+ID4+ICsqLw0KPiA+PiArU1RB VElDIENPTlNUIEFDUElfUEFSU0VSIFNCU0FHZW5lcmljV2F0Y2hkb2dQYXJzZXJbXSA9IHsNCj4g Pj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+PiArICB7TCJSZXNlcnZlZCIsIDEsIDMsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiUmVmcmVzaEZyYW1lIFBoeXNpY2FsIGFkZHJlc3MiLCA4LCA0LCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4+ICsgIHtMIkNvbnRyb2xGcmFt ZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgMTIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0K PiBOVUxMfSwNCj4gPj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgRmxh Z3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgR1QgQmxvY2sgdGlt ZXIgY291bnQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4 dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRh YmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VG SUFQSQ0KPiA+PiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ID4+ICsgIElOIFVJTlQ4 KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4g Pj4gKyAgVUlOVDMyIEJsb2NrVGltZXJDb3VudCA9ICooVUlOVDMyKilQdHI7DQo+ID4+ICsgIGlm IChCbG9ja1RpbWVyQ291bnQgPiA4KSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IFRpbWVyIENvdW50 ID0gJWQuIE1heCBUaW1lciBDb3VudCBpcyA4LiIsDQo+ID4+ICsgICAgICBCbG9ja1RpbWVyQ291 bnQNCj4gPj4gKyAgICAgICk7DQo+ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoq IFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBQbGF0Zm9ybSBHVCBCbG9jay4NCj4gPj4gKw0KPiA+ PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBHVCBC bG9jayBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggIExlbmd0aCBvZiB0aGUgR1Qg QmxvY2sgc3RydWN0dXJlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+ PiArRHVtcEdUQmxvY2sgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBVSU5U MTYgTGVuZ3RoDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+ PiArICBVSU5UMzIgT2Zmc2V0Ow0KPiA+PiArICBVSU5UMTYgR1RCbG9ja1RpbWVyTGVuZ3RoOw0K PiA+PiArDQo+ID4+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAg VFJVRSwNCj4gPj4gKyAgICAgICAgICAgICAyLA0KPiA+PiArICAgICAgICAgICAgICJHVCBCbG9j ayIsDQo+ID4+ICsgICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgIExlbmd0aCwN Cj4gPj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHdEJsb2NrUGFyc2VyKQ0KPiA+PiAr ICAgICAgICAgICAgICk7DQo+ID4+ICsgIEdUQmxvY2tUaW1lckxlbmd0aCA9ICgqR3RCbG9ja0xl bmd0aCAtIE9mZnNldCkgLyAoKkd0QmxvY2tUaW1lckNvdW50KTsNCj4gPj4gKyAgTGVuZ3RoIC09 IE9mZnNldDsNCj4gPj4gKw0KPiA+PiArICBpZiAoKkd0QmxvY2tUaW1lckNvdW50ICE9IDApIHsN Cj4gPj4gKyAgICBQdHIgKz0gKCpHdEJsb2NrVGltZXJPZmZzZXQpOw0KPiA+PiArICAgIEluZGV4 ID0gMDsNCj4gPj4gKyAgICB3aGlsZSAoKEluZGV4IDwgKCpHdEJsb2NrVGltZXJDb3VudCkpICYm IChMZW5ndGggPj0NCj4gR1RCbG9ja1RpbWVyTGVuZ3RoKSkgew0KPiA+PiArICAgICAgT2Zmc2V0 ID0gUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAg ICAgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVyIiwN Cj4gPj4gKyAgICAgICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgICAgICBHVEJs b2NrVGltZXJMZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0 QmxvY2tUaW1lclBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPj4gKyAgICAg IC8vIEluY3JlbWVudCBieSBHVCBCbG9jayBUaW1lciBzdHJ1Y3R1cmUgc2l6ZQ0KPiA+PiArICAg ICAgUHRyICs9IE9mZnNldDsNCj4gPj4gKyAgICAgIExlbmd0aCAtPSBPZmZzZXQ7DQo+ID4+ICsg ICAgICBJbmRleCsrOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIGlmIChMZW5ndGgg IT0gMCkgew0KPiA+PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAg IFByaW50ICgNCj4gPj4gKyAgICAgICAgTCJFUlJPUjpHVCBCbG9jayBUaW1lciBsZW5ndGggbWlz bWF0Y2guIFVucGFyc2VkICVkIGJ5dGVzLlxuIiwNCj4gPj4gKyAgICAgICAgTGVuZ3RoDQo+ID4+ ICsgICAgICAgICk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4g Pj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cgdGltZXIu DQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgd2F0Y2hkb2cgdGltZXIgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3Ro ICBMZW5ndGggb2YgdGhlIHdhdGNoZG9nIHRpbWVyIHN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0R1bXBXYXRjaGRvZ1RpbWVyICgNCj4gPj4gKyAg SU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiA+PiArICApDQo+ID4+ ICt7DQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVFJVRSwNCj4gPj4gKyAgICAyLA0K PiA+PiArICAgICJTQlNBIEdlbmVyaWMgV2F0Y2hkb2ciLA0KPiA+PiArICAgIFB0ciwNCj4gPj4g KyAgICBMZW5ndGgsDQo+ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoU0JTQUdlbmVyaWNXYXRjaGRv Z1BhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgR1REVCB0YWJsZS4NCj4gPj4gKyAgV2hlbiB0cmFjZSBp cyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBHVERUIHRhYmxlIGFuZA0KPiA+PiAr ICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVu Y3Rpb24gYWxzbyBwYXJzZXMgdGhlIGZvbGxvd2luZyBwbGF0Zm9ybSB0aW1lciBzdHJ1Y3R1cmVz Og0KPiA+PiArICAgIC0gR1QgQmxvY2sgdGltZXINCj4gPj4gKyAgICAtIFdhdGNoZG9nIHRpbWVy DQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24g b2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRy YWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3Ro IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lv biAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+ PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFjcGlHdGR0ICgNCj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFj ZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxl TGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ICsgICkN Cj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+PiArICBVSU5UOCogVGltZXJQdHI7 DQo+ID4+ICsNCj4gPj4gKyAgaWYgKCFUcmFjZSkgew0KPiA+PiArICAgIHJldHVybjsNCj4gPj4g KyAgfQ0KPiA+PiArDQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVFJVRSwNCj4gPj4g KyAgICAwLA0KPiA+PiArICAgICJHVERUIiwNCj4gPj4gKyAgICBQdHIsDQo+ID4+ICsgICAgQWNw aVRhYmxlTGVuZ3RoLA0KPiA+PiArICAgIFBBUlNFUl9QQVJBTVMgKEd0ZHRQYXJzZXIpDQo+ID4+ ICsgICAgKTsNCj4gPj4gKw0KPiA+PiArICBpZiAoKkd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQgIT0g MCkgew0KPiA+PiArICAgIFRpbWVyUHRyID0gUHRyICsgKCpHdGR0UGxhdGZvcm1UaW1lck9mZnNl dCk7DQo+ID4+ICsgICAgSW5kZXggPSAwOw0KPiA+PiArICAgIGRvIHsNCj4gPj4gKyAgICAgIC8v IFBhcnNlIHRoZSBQbGF0Zm9ybSBUaW1lciBIZWFkZXINCj4gPj4gKyAgICAgIFBhcnNlQWNwaSAo DQo+ID4+ICsgICAgICAgIEZBTFNFLA0KPiA+PiArICAgICAgICAwLA0KPiA+PiArICAgICAgICBO VUxMLA0KPiA+PiArICAgICAgICBUaW1lclB0ciwNCj4gPj4gKyAgICAgICAgNCwgIC8vIEdUIFBs YXRmb3JtIFRpbWVyIHN0cnVjdHVyZSBoZWFkZXIgbGVuZ3RoLg0KPiA+PiArICAgICAgICBQQVJT RVJfUEFSQU1TIChHdFBsYXRmb3JtVGltZXJIZWFkZXJQYXJzZXIpDQo+ID4+ICsgICAgICAgICk7 DQo+ID4+ICsgICAgICBzd2l0Y2ggKCpQbGF0Zm9ybVRpbWVyVHlwZSkgew0KPiA+PiArICAgICAg ICBjYXNlIEVGSV9BQ1BJXzZfMl9HVERUX0dUX0JMT0NLOg0KPiA+PiArICAgICAgICAgIER1bXBH VEJsb2NrIChUaW1lclB0ciwgKlBsYXRmb3JtVGltZXJMZW5ndGgpOw0KPiA+PiArICAgICAgICAg IGJyZWFrOw0KPiA+PiArICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HVERUX1NCU0FfR0VORVJJ Q19XQVRDSERPRzoNCj4gPj4gKyAgICAgICAgICBEdW1wV2F0Y2hkb2dUaW1lciAoVGltZXJQdHIs ICpQbGF0Zm9ybVRpbWVyTGVuZ3RoKTsNCj4gPj4gKyAgICAgICAgICBicmVhazsNCj4gPj4gKyAg ICAgICAgZGVmYXVsdDoNCj4gPj4gKyAgICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiA+PiArICAgICAgICAgIFByaW50ICgNCj4gPj4gKyAgICAgICAgICAgIEwiRVJST1I6IElOVkFM SUQgUGxhdGZvcm0gVGltZXIgVHlwZSA9ICVkXG4iLA0KPiA+PiArICAgICAgICAgICAgKlBsYXRm b3JtVGltZXJUeXBlDQo+ID4+ICsgICAgICAgICAgICApOw0KPiA+PiArICAgICAgICAgIGJyZWFr Ow0KPiA+PiArICAgICAgfSAvLyBzd2l0Y2gNCj4gPj4gKyAgICAgIFRpbWVyUHRyICs9ICgqUGxh dGZvcm1UaW1lckxlbmd0aCk7DQo+ID4+ICsgICAgICBJbmRleCsrOw0KPiA+PiArICAgIH0gd2hp bGUgKEluZGV4IDwgKkd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQpOw0KPiA+PiArICB9DQo+ID4+ICt9 DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsg IEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxl Lg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJz ZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAg VGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBAcmV0dmFs IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4gPj4gK0VG SV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgN Cj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4+ ICsNCj4gRUZJX0FDUElfNl8yX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFU VVJFLA0KPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlHdGR0DQo+ID4+ICsgICAgICAgICAgICk7 DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBp bWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9G T1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4g Pj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArR3RkdFBhcnNlckxpYkRlc3RydWN0 b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRh YmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIg KA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9HRU5FUklDX1RJTUVSX0RFU0NSSVBUSU9OX1RBQkxF X1NJR05BVFVSRQ0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0 DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9HdGR0L0d0ZHRQYXJzZXJMaWIuaQ0KPiBuZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyTGliLmkNCj4gbmYN Cj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIxZTlkOTlmMjM1M2U3ZTY5NmY2Zg0KPiAwZmM3 MTZkNDJiMjRiZmViOWUNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBh cnNlckxpYi5pDQo+IG5mDQo+ID4+IEBAIC0wLDAgKzEsMzMgQEANCj4gPj4gKyMjIEBmaWxlDQo+ ID4+ICsjDQo+ID4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyMNCj4gPj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0Qg TGljZW5zZQ0KPiA+PiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArIyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArIw0K PiA+PiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiA+PiArIyMNCj4gPj4gKw0KPiA+PiArW0RlZmluZXNdDQo+ID4+ICsgIElORl9WRVJTSU9O ICAgID0gMHgwMDAxMDAxOQ0KPiA+PiArICBCQVNFX05BTUUgICAgICA9IEd0ZHRQYXJzZXJMaWIN Cj4gPj4gKyAgRklMRV9HVUlEICAgICAgPSA0NjM4QTU3Mi01OUMwLTRBQUYtQjk5MC1COTVGQTY3 RDk2NTYNCj4gPj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gPj4gKyAgTU9EVUxFX1RZUEUg ICAgPSBEWEVfRFJJVkVSDQo+ID4+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVS DQo+ID4+ICsgIENPTlNUUlVDVE9SICAgID0gR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4+ ICsgIERFU1RSVUNUT1IgICAgID0gR3RkdFBhcnNlckxpYkRlc3RydWN0b3INCj4gPj4gKw0KPiA+ PiArW1NvdXJjZXNdDQo+ID4+ICsgIEd0ZHRQYXJzZXIuYw0KPiA+PiArDQo+ID4+ICtbUGFja2Fn ZXNdDQo+ID4+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4+ICsgIFNoZWxsUGtnL1NoZWxsUGtn LmRlYw0KPiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+PiArDQo+ID4+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4+ IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiA+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi4zNWIyNTcxMjgyYzA0MjU3YTAxMGINCj4gZjZjODAwYWNmNzE0 MGQwMjgzYg0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMN Cj4gPj4gQEAgLTAsMCArMSw3NDUgQEANCj4gPj4gKy8qKg0KPiA+PiArICBJT1JUIHRhYmxlIHBh cnNlcg0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5z ZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKw0KPiA+PiArICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKw0K PiA+PiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gPj4gKyAgICAtIElPIFJlbWFwcGluZyBUYWJs ZSwgUGxhdGZvcm0gRGVzaWduIERvY3VtZW50LCBSZXZpc2lvbiBDLCAxNSBNYXkNCj4gMjAxNw0K PiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0lvUmVt YXBwaW5nVGFibGUuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ID4+ ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9B Y3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9B Y3BpVGFibGVQYXJzZXIuaD4NCj4gPj4gKw0KPiA+PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ID4+ ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gPj4g Kw0KPiA+PiArLyoqIFRoZSBFSU9SVF9OT0RFIGVudW0gZGVzY3JpYmVzIHRoZSBJT1JUIE5vZGUg dHlwZXMuDQo+ID4+ICsqLw0KPiA+PiArdHlwZWRlZiBlbnVtIElvcnROb2RlIHsNCj4gPj4gKyAg RUlPUlRfTk9ERV9JVFNfR1JPVVAsICAgICAgICAvLy88IElUUyBHcm91cCBub2RlDQo+ID4+ICsg IEVJT1JUX05PREVfTkFNRURfQ09NUE9ORU5ULCAgLy8vPCBOYW1lZCBDb21wb25lbnQgbm9kZQ0K PiA+PiArICBFSU9SVF9OT0RFX1JPT1RfQ09NUExFWCwgICAgIC8vLzwgUm9vdCBDb21wbGV4IG5v ZGUNCj4gPj4gKyAgRUlPUlRfTk9ERV9TTU1VVjFfVjIsICAgICAgICAvLy88IFNNTVUgdjEvdjIg bm9kZQ0KPiA+PiArICBFSU9SVF9OT0RFX1NNTVVWMywgICAgICAgICAgIC8vLzwgU01NVSB2MyBu b2RlDQo+ID4+ICsgIEVJT1JUX05PREVfUE1DRywgICAgICAgICAgICAgLy8vPCBQTUMgZ3JvdXAg bm9kZQ0KPiA+PiArICBFSU9SVF9OT0RFX01BWA0KPiA+PiArfSBFSU9SVF9OT0RFOw0KPiA+PiAr DQo+ID4+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElv cnROb2RlQ291bnQ7DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZU9mZnNldDsN Cj4gPj4gKw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiBJb3J0Tm9kZVR5cGU7DQo+ID4+ICtT VEFUSUMgQ09OU1QgVUlOVDE2KiBJb3J0Tm9kZUxlbmd0aDsNCj4gPj4gK1NUQVRJQyBDT05TVCBV SU5UMzIqIElvcnRJZE1hcHBpbmdDb3VudDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElv cnRJZE1hcHBpbmdPZmZzZXQ7DQo+ID4+ICsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElu dGVycnVwdENvbnRleHRDb3VudDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEludGVycnVw dENvbnRleHRPZmZzZXQ7DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBQbXVJbnRlcnJ1cHRD b3VudDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIFBtdUludGVycnVwdE9mZnNldDsNCj4g Pj4gKw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiogSXRzQ291bnQ7DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBjb3VudCBm b3IgdGhlIElUUyBub2RlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5d IENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhp cw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlSXRzSWRNYXBwaW5nQ291bnQgKA0KPiA+PiArICBJ TiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiArICApOw0KPiA+ PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJy YXkgb2Zmc2V0IGZvciB0aGUgSVRTIG5vZGUuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRp b24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4g Pj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNl ICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4g Pj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIEhlbHBlciBNYWNybyBmb3IgcG9wdWxhdGluZyB0 aGUgSU9SVCBOb2RlIGhlYWRlciBpbiB0aGUgQUNQSV9QQVJTRVINCj4gPj4gKyAgICBhcnJheS4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW291dF0gVmFsaWRhdGVJZE1hcHBpbmdDb3VudCAgICBP cHRpb25hbCBwb2ludGVyIHRvIGENCj4gZnVuY3Rpb24gZm9yDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIElEIE1hcHBpbmcNCj4g Y291bnQuDQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UgIE9w dGlvbmFsIHBvaW50ZXIgdG8gYSBmdW5jdGlvbg0KPiBmb3INCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQgQXJyYXkNCj4gcmVm ZXJlbmNlLg0KPiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgUEFSU0VfSU9SVF9OT0RFX0hFQURFUihW YWxpZGF0ZUlkTWFwcGluZ0NvdW50LA0KPiBcDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlKQ0KPiBcDQo+ID4+ICsgIHsgTCJUeXBl IiwgMSwgMCwgTCIlZCIsIE5VTEwsIChWT0lEKiopJklvcnROb2RlVHlwZSwgTlVMTCwgTlVMTCB9 LA0KPiBcDQo+ID4+ICsgIHsgTCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikm SW9ydE5vZGVMZW5ndGgsIE5VTEwsIE5VTEwgfSwNCj4gXA0KPiA+PiArICB7IEwiUmV2aXNpb24i LCAxLCAzLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiBcDQo+ID4+ICsgIHsg TCJSZXNlcnZlZCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4g XA0KPiA+PiArICB7IEwiTnVtYmVyIG9mIElEIG1hcHBpbmdzIiwgNCwgOCwgTCIlZCIsIE5VTEws DQo+IFwNCj4gPj4gKyAgICAoVk9JRCoqKSZJb3J0SWRNYXBwaW5nQ291bnQsIFZhbGlkYXRlSWRN YXBwaW5nQ291bnQsIE5VTEwgfSwNCj4gXA0KPiA+PiArICB7IEwiUmVmZXJlbmNlIHRvIElEIEFy cmF5IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsDQo+IFwNCj4gPj4gKyAgICAoVk9JRCoqKSZJb3J0 SWRNYXBwaW5nT2Zmc2V0LCBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UsIE5VTEwgfQ0KPiA+PiAr DQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBJT1JU IFRhYmxlDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRQYXJz ZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4+ ICsgIHtMIk51bWJlciBvZiBJT1JUIE5vZGVzIiwgNCwgMzYsIEwiJWQiLCBOVUxMLA0KPiA+PiAr ICAgKFZPSUQqKikmSW9ydE5vZGVDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIk9mZnNl dCB0byBBcnJheSBvZiBJT1JUIE5vZGVzIiwgNCwgNDAsIEwiMHgleCIsIE5VTEwsDQo+ID4+ICsg ICAoVk9JRCoqKSZJb3J0Tm9kZU9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2Vy dmVkIiwgNCwgNDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0K PiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9S VCBub2RlIGhlYWRlciBzdHJ1Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIElvcnROb2RlSGVhZGVyUGFyc2VyW10gPSB7DQo+ID4+ICsgIFBBUlNFX0lPUlRf Tk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpDQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4g QUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0KPiA+ PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWMVYyUGFy c2VyW10gPSB7DQo+ID4+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0K PiA+PiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAxNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+PiArICB7TCJTcGFuIiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTW9kZWwiLCA0LCAzMiwgTCIlZCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJGbGFncyIsIDQsIDM2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVmZXJlbmNlIHRvIEdsb2JhbCBJbnRl cnJ1cHQgQXJyYXkiLCA0LCA0MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCj4gTlVMTCwNCj4gPj4g KyAgIE5VTEx9LA0KPiA+PiArICB7TCJOdW1iZXIgb2YgY29udGV4dCBpbnRlcnJ1cHRzIiwgNCwg NDQsIEwiJWQiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmSW50ZXJydXB0Q29udGV4dENvdW50 LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVmZXJlbmNlIHRvIENvbnRleHQgSW50ZXJydXB0 IEFycmF5IiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsDQo+ID4+ICsgICAoVk9JRCoqKSZJbnRlcnJ1 cHRDb250ZXh0T2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTnVtYmVyIG9mIFBNVSBJ bnRlcnJ1cHRzIiwgNCwgNTIsIEwiJWQiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmUG11SW50 ZXJydXB0Q291bnQsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZWZlcmVuY2UgdG8gUE1VIElu dGVycnVwdCBBcnJheSIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikm UG11SW50ZXJydXB0T2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICAvLyBJbnRl cnJ1cHQgQXJyYXkNCj4gPj4gKyAge0wiU01NVV9OU2dJcnB0IiwgNCwgNjAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJTTU1VX05TZ0lycHQgaW50ZXJydXB0 IGZsYWdzIiwgNCwgNjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiA+ PiArICB7TCJTTU1VX05TZ0NmZ0lycHQiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIlNNTVVfTlNnQ2ZnSXJwdCBpbnRlcnJ1cHQgZmxhZ3MiLCA0 LCA3MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0NCj4gPj4gK307DQo+ID4+ ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBTTU1VdjEv MiBOb2RlIEludGVycnVwdCBBcnJheS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgSW50ZXJydXB0QXJyYXlQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiICBJbnRlcnJ1 cHQgR1NJViIsIDQsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCIgIEZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4g Pj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBJT1JUIElEIE1hcHBpbmcuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIElvcnROb2RlSWRNYXBwaW5nUGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIiAgSW5wdXQg YmFzZSIsIDQsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCIgIE51bWJlciBvZiBJRHMiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiICBPdXRwdXQgYmFzZSIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCIgIE91dHB1dCByZWZlcmVuY2UiLCA0LCAxMiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIiAgRmxhZ3MiLCA0LCAx NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4g Pj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIFNNTVV2MyBu b2RlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNt bXVWM1BhcnNlcltdID0gew0KPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBO VUxMKSwNCj4gPj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgMjgsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJWQVRPUyBBZGRyZXNzIiwg OCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTW9k ZWwiLCA0LCA0MCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJF dmVudCIsIDQsIDQ0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAg e0wiUFJJIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJHRVJSIiwgNCwgNTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJTeW5jIiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgSU9SVCBJVFMgbm9kZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgSW9ydE5vZGVJdHNQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hF QURFUiAoDQo+ID4+ICsgICAgVmFsaWRhdGVJdHNJZE1hcHBpbmdDb3VudCwNCj4gPj4gKyAgICBW YWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2UNCj4gPj4gKyAgICApLA0KPiA+PiArICB7TCIgIE51 bWJlciBvZiBJVFNzIiwgNCwgMTYsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJdHNDb3VudCwgTlVM TH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNj cmliaW5nIHRoZSBJVFMgSUQuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIEl0c0lkUGFyc2VyW10gPSB7DQo+ID4+ICsgIHsgTCIgIEdJQyBJVFMgSWRlbnRpZmllciIs IDQsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMIH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIE5hbWVzIENvbXBv bmVudCBub2RlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0 Tm9kZU5hbWVkQ29tcG9uZW50UGFyc2VyW10gPSB7DQo+ID4+ICsgIFBBUlNFX0lPUlRfTk9ERV9I RUFERVIgKE5VTEwsIE5VTEwpLA0KPiA+PiArICB7TCJOb2RlIEZsYWdzIiwgNCwgMTYsIEwiJWQi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTWVtb3J5IGFjY2VzcyBwcm9w ZXJ0aWVzIiwgOCwgMjAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g KyAge0wiRGV2aWNlIG1lbW9yeSBhZGRyZXNzIHNpemUgbGltaXQiLCAxLCAyOCwgTCIlZCIsIE5V TEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4g QUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBSb290IENvbXBsZXggbm9kZS4N Cj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVSb290Q29t cGxleFBhcnNlcltdID0gew0KPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBO VUxMKSwNCj4gPj4gKyAge0wiTWVtb3J5IGFjY2VzcyBwcm9wZXJ0aWVzIiwgOCwgMTYsIEwiMHgl bHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQVRTIEF0dHJpYnV0ZSIs IDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUENJ IFNlZ21lbnQgbnVtYmVyIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgSU9SVCBQTUNHIG5vZGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIElvcnROb2RlUG1jZ1BhcnNlcltdID0gew0KPiA+PiArICBQQVJTRV9JT1JUX05P REVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gPj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYs IEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiT3ZlcmZsb3cg aW50ZXJydXB0IEdTSVYiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIk5vZGUgcmVmZXJlbmNlIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g dmFsaWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUgSVRTIG5vZGUuDQo+ ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRv IGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4N Cj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiAr VmFsaWRhdGVJdHNJZE1hcHBpbmdDb3VudCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ ICsgIFZPSUQqICAgICBDb250ZXh0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgaWYgKCoo VUlOVDMyKilQdHIgIT0gMCkgew0KPiA+PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ ID4+ICsgICAgUHJpbnQgKEwiXG5FUlJPUjogSU9SVCBJRCBNYXBwaW5nIGNvdW50IG11c3QgYmUg emVyby4iKTsNCj4gPj4gKyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgb2Zmc2V0IGZvciB0aGUgSVRTIG5v ZGUuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2lu dGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhl YWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0K PiA+PiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiAr ICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3Vu dCAoKTsNCj4gPj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1hcHBpbmcgb2Zmc2V0 IG11c3QgYmUgemVyby4iKTsNCj4gPj4gKyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgTm9kZSBJZCBNYXBwaW5nIGFycmF5Lg0KPiA+ PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBJT1JUIFRhYmxlLg0KPiA+PiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQg ICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNl dCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gPj4g KyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0R1bXBJb3J0Tm9kZUlkTWFwcGlu Z3MgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ0Nv dW50LA0KPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIFVJTlQ4KiBJZE1hcHBpbmdQdHI7DQo+ID4+ICsgIFVJTlQzMiBJbmRleDsNCj4g Pj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gPj4gKyAgQ0hBUjggIEJ1ZmZlcls0MF07ICAvLyBVc2Vk IGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ID4+ICsNCj4gPj4gKyAgSWRNYXBw aW5nUHRyID0gUHRyICsgTWFwcGluZ09mZnNldDsNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiAr ICB3aGlsZSAoSW5kZXggPCBNYXBwaW5nQ291bnQpIHsNCj4gPj4gKyAgICBBc2NpaVNQcmludCAo DQo+ID4+ICsgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ ICsgICAgICAiSUQgTWFwcGluZyBbJWRdIiwNCj4gPj4gKyAgICAgIEluZGV4DQo+ID4+ICsgICAg ICApOw0KPiA+PiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAg ICBUUlVFLA0KPiA+PiArICAgICAgICAgICAgICAgNCwNCj4gPj4gKyAgICAgICAgICAgICAgIEJ1 ZmZlciwNCj4gPj4gKyAgICAgICAgICAgICAgIElkTWFwcGluZ1B0ciwNCj4gPj4gKyAgICAgICAg ICAgICAgIDIwLA0KPiA+PiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJ ZE1hcHBpbmdQYXJzZXIpDQo+ID4+ICsgICAgICAgICAgICAgICApOw0KPiA+PiArICAgIElkTWFw cGluZ1B0ciArPSBPZmZzZXQ7DQo+ID4+ICsgICAgSW5kZXgrKzsNCj4gPj4gKyAgfQ0KPiA+PiAr fQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgU01NVXYx LzIgbm9kZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5n dGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFw cGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIE1h cHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFi bGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wSW9ydE5v ZGVTbW11VjFWMiAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFVJTlQxNiBM ZW5ndGgsDQo+ID4+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ID4+ICsgIElOIFVJTlQz MiBNYXBwaW5nT2Zmc2V0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIEluZGV4 Ow0KPiA+PiArICBVSU5UMzIgT2Zmc2V0Ow0KPiA+PiArICBDSEFSOCAgQnVmZmVyWzUwXTsgIC8v IFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gPj4gKw0KPiA+PiArICBV SU5UOCogQXJyYXlQdHI7DQo+ID4+ICsNCj4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICBU UlVFLA0KPiA+PiArICAgIDIsDQo+ID4+ICsgICAgIlNNTVV2MSBvciBTTU1VdjIgTm9kZSIsDQo+ ID4+ICsgICAgUHRyLA0KPiA+PiArICAgIExlbmd0aCwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1T IChJb3J0Tm9kZVNtbXVWMVYyUGFyc2VyKQ0KPiA+PiArICAgICk7DQo+ID4+ICsNCj4gPj4gKyAg QXJyYXlQdHIgPSBQdHIgKyAqSW50ZXJydXB0Q29udGV4dE9mZnNldDsNCj4gPj4gKyAgSW5kZXgg PSAwOw0KPiA+PiArICB3aGlsZSAoSW5kZXggPCAqSW50ZXJydXB0Q29udGV4dENvdW50KSB7DQo+ ID4+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiA+PiArICAgICAgQnVmZmVyLA0KPiA+PiArICAgICAg c2l6ZW9mIChCdWZmZXIpLA0KPiA+PiArICAgICAgIkNvbnRleHQgSW50ZXJydXB0cyBBcnJheSBb JWRdIiwNCj4gPj4gKyAgICAgIEluZGV4DQo+ID4+ICsgICAgICApOw0KPiA+PiArICAgIE9mZnNl dCA9IFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAg ICAgICAgICAgNCwNCj4gPj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAg ICAgICAgIEFycmF5UHRyLA0KPiA+PiArICAgICAgICAgICAgICAgOCwNCj4gPj4gKyAgICAgICAg ICAgICAgIFBBUlNFUl9QQVJBTVMgKEludGVycnVwdEFycmF5UGFyc2VyKQ0KPiA+PiArICAgICAg ICAgICAgICAgKTsNCj4gPj4gKyAgICBBcnJheVB0ciArPSBPZmZzZXQ7DQo+ID4+ICsgICAgSW5k ZXgrKzsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIEFycmF5UHRyID0gUHRyICsgKlBtdUlu dGVycnVwdE9mZnNldDsNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICB3aGlsZSAoSW5kZXgg PCAqUG11SW50ZXJydXB0Q291bnQpIHsNCj4gPj4gKyAgICBBc2NpaVNQcmludCAoDQo+ID4+ICsg ICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ICsgICAgICAi UE1VIEludGVycnVwdHMgQXJyYXkgWyVkXSIsDQo+ID4+ICsgICAgICBJbmRleA0KPiA+PiArICAg ICAgKTsNCj4gPj4gKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgICAg ICAgVFJVRSwNCj4gPj4gKyAgICAgICAgICAgICAgIDQsDQo+ID4+ICsgICAgICAgICAgICAgICBC dWZmZXIsDQo+ID4+ICsgICAgICAgICAgICAgICBBcnJheVB0ciwNCj4gPj4gKyAgICAgICAgICAg ICAgIDgsDQo+ID4+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJbnRlcnJ1cHRBcnJh eVBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgQXJyYXlQdHIgKz0g T2Zmc2V0Ow0KPiA+PiArICAgIEluZGV4Kys7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBp ZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQo+ID4+ICsgICAgRHVtcElvcnROb2RlSWRN YXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiA+PiArICB9DQo+ ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBT TU1VdjMgbm9kZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBM ZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0g TWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBwYXJhbSBbaW5d IE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQg dGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wSW9y dE5vZGVTbW11VjMgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBVSU5UMTYg TGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiA+PiArICBJTiBVSU5U MzIgTWFwcGluZ09mZnNldA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFBhcnNlQWNwaSAo DQo+ID4+ICsgICAgVFJVRSwNCj4gPj4gKyAgICAyLA0KPiA+PiArICAgICJTTU1VVjMgTm9kZSIs DQo+ID4+ICsgICAgUHRyLA0KPiA+PiArICAgIExlbmd0aCwNCj4gPj4gKyAgICBQQVJTRVJfUEFS QU1TIChJb3J0Tm9kZVNtbXVWM1BhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiArDQo+ID4+ICsg IGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gPj4gKyAgICBEdW1wSW9ydE5vZGVJ ZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ID4+ICsgIH0N Cj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JU IElUUyBub2RlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExl bmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJ Qw0KPiA+PiArVk9JRA0KPiA+PiArRHVtcElvcnROb2RlSXRzICgNCj4gPj4gKyAgSU4gVUlOVDgq IFB0ciwNCj4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQzMiBJbmRleDsNCj4gPj4gKyAgVUlOVDgq IEl0c0lkUHRyOw0KPiA+PiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lp TmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gPj4gKw0KPiA+PiArICBPZmZzZXQgPSBQYXJzZUFj cGkgKA0KPiA+PiArICAgICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgICAgMiwNCj4g Pj4gKyAgICAgICAgICAgICAiSVRTIE5vZGUiLA0KPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4g Pj4gKyAgICAgICAgICAgICBMZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoSW9ydE5vZGVJdHNQYXJzZXIpDQo+ID4+ICsgICAgICAgICAgICAgKTsNCj4gPj4gKw0KPiA+ PiArICBJdHNJZFB0ciA9IFB0ciArIE9mZnNldDsNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiAr ICB3aGlsZSAoSW5kZXggPCAqSXRzQ291bnQpIHsNCj4gPj4gKyAgICBBc2NpaVNQcmludCAoDQo+ ID4+ICsgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ICsg ICAgICAiR0lDIElUUyBJZGVudGlmaWVyIEFycmF5IFslZF0iLA0KPiA+PiArICAgICAgSW5kZXgN Cj4gPj4gKyAgICAgICk7DQo+ID4+ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPj4gKyAg ICAgICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgICAgICA0LA0KPiA+PiArICAgICAg ICAgICAgICAgQnVmZmVyLA0KPiA+PiArICAgICAgICAgICAgICAgSXRzSWRQdHIsDQo+ID4+ICsg ICAgICAgICAgICAgICA0LA0KPiA+PiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSXRz SWRQYXJzZXIpDQo+ID4+ICsgICAgICAgICAgICAgICApOw0KPiA+PiArICAgIEl0c0lkUHRyICs9 IE9mZnNldDsNCj4gPj4gKyAgICBJbmRleCsrOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAg Ly8gTm90ZTogSVRTIGRvZXMgbm90IGhhdmUgdGhlIElEIE1hcHBpbmdzIEFycmF5DQo+ID4+ICt9 DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBOYW1lZCBD b21wb25lbnQgbm9kZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2lu XSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtp bl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBwYXJhbSBb aW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElP UlQgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1w SW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsg IElOIFVJTlQxNiBMZW5ndGgsDQo+ID4+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ID4+ ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAg VUlOVDMyIE9mZnNldDsNCj4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+PiArICBVSU5UOCogRGV2 aWNlTmFtZVB0cjsNCj4gPj4gKyAgVUlOVDMyIERldmljZU5hbWVMZW5ndGg7DQo+ID4+ICsNCj4g Pj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+ PiArICAgICAgICAgICAgIDIsDQo+ID4+ICsgICAgICAgICAgICAgIk5hbWVkIENvbXBvbmVudCBO b2RlIiwNCj4gPj4gKyAgICAgICAgICAgICBQdHIsDQo+ID4+ICsgICAgICAgICAgICAgTGVuZ3Ro LA0KPiA+PiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlTmFtZWRDb21wb25l bnRQYXJzZXIpDQo+ID4+ICsgICAgICAgICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICBEZXZpY2VO YW1lUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArICAvLyBFc3RpbWF0ZSB0aGUgRGV2aWNlIE5h bWUgbGVuZ3RoDQo+ID4+ICsgIERldmljZU5hbWVMZW5ndGggPSBMZW5ndGggLSBPZmZzZXQgLSAo TWFwcGluZ0NvdW50ICogMjApOw0KPiA+PiArICBQcmludEZpZWxkTmFtZSAoMiwgTCJEZXZpY2Ug T2JqZWN0IE5hbWUiKTsNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICB3aGlsZSAoKEluZGV4 IDwgRGV2aWNlTmFtZUxlbmd0aCkgJiYgKERldmljZU5hbWVQdHJbSW5kZXhdICE9IDApKSB7DQo+ ID4+ICsgICAgUHJpbnQgKEwiJWMiLCBEZXZpY2VOYW1lUHRyW0luZGV4KytdKTsNCj4gPj4gKyAg fQ0KPiA+PiArICBQcmludCAoTCJcbiIpOw0KPiA+PiArDQo+ID4+ICsgIGlmICgqSW9ydElkTWFw cGluZ0NvdW50ICE9IDApIHsNCj4gPj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIs IE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFJvb3QgQ29tcGxleCBu b2RlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAg ICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBNYXBwaW5n Q291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGlu Z09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4N Cj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0R1bXBJb3J0Tm9kZVJv b3RDb21wbGV4ICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDE2IExl bmd0aCwNCj4gPj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gPj4gKyAgSU4gVUlOVDMy IE1hcHBpbmdPZmZzZXQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBQYXJzZUFjcGkgKA0K PiA+PiArICAgIFRSVUUsDQo+ID4+ICsgICAgMiwNCj4gPj4gKyAgICAiUm9vdCBDb21wbGV4IE5v ZGUiLA0KPiA+PiArICAgIFB0ciwNCj4gPj4gKyAgICBMZW5ndGgsDQo+ID4+ICsgICAgUEFSU0VS X1BBUkFNUyAoSW9ydE5vZGVSb290Q29tcGxleFBhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiAr DQo+ID4+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gPj4gKyAgICBEdW1w SW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBJT1JUIFBNQ0cgbm9kZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFy YW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBh cmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBw YXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJy YXkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2Yg dGhlIElPUlQgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ ICtEdW1wSW9ydE5vZGVQbWNnICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4g VUlOVDE2IExlbmd0aCwNCj4gPj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gPj4gKyAg SU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4gKyAgUGFyc2VB Y3BpICgNCj4gPj4gKyAgICBUUlVFLA0KPiA+PiArICAgIDIsDQo+ID4+ICsgICAgIlBNQ0cgTm9k ZSIsDQo+ID4+ICsgICAgUHRyLA0KPiA+PiArICAgIExlbmd0aCwNCj4gPj4gKyAgICBQQVJTRVJf UEFSQU1TIChJb3J0Tm9kZVBtY2dQYXJzZXIpDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKyAg aWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiA+PiArICAgIER1bXBJb3J0Tm9kZUlk TWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gPj4gKyAgfQ0K PiA+PiArDQo+ID4+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ID4gMSkgew0KPiA+PiArICAg IEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgUHJpbnQgKA0KPiA+PiArICAgICAg TCJFUlJPUjogSUQgbWFwcGluZyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMS4gSWQgTWFwcGlu ZyBDb3VudA0KPiA9JWRcbiIsDQo+ID4+ICsgICAgICAqSW9ydElkTWFwcGluZ0NvdW50DQo+ID4+ ICsgICAgICApOw0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBJT1JUIHRhYmxlLg0KPiA+PiArICBXaGVuIHRyYWNlIGlz IGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgdGFibGUgYW5kDQo+ID4+ICsg IHRyYWNlcyB0aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBh bHNvIHBhcnNlcyB0aGUgZm9sbG93aW5nIG5vZGVzOg0KPiA+PiArICAgIC0gSVRTIEdyb3VwDQo+ ID4+ICsgICAgLSBOYW1lZCBDb21wb25lbnQNCj4gPj4gKyAgICAtIFJvb3QgQ29tcGxleA0KPiA+ PiArICAgIC0gU01NVXYxLzINCj4gPj4gKyAgICAtIFNNTVV2Mw0KPiA+PiArICAgIC0gUE1DRw0K PiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9m IHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFj ZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBv ZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24g IFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4g K0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpSW9ydCAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxl bmd0aCwNCj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ ID4+ICt7DQo+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQzMiBJbmRleDsNCj4g Pj4gKyAgVUlOVDgqIE5vZGVQdHI7DQo+ID4+ICsNCj4gPj4gKyAgaWYgKCFUcmFjZSkgew0KPiA+ PiArICAgIHJldHVybjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ ID4+ICsgICAgVFJVRSwNCj4gPj4gKyAgICAwLA0KPiA+PiArICAgICJJT1JUIiwNCj4gPj4gKyAg ICBQdHIsDQo+ID4+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICAgIFBBUlNFUl9QQVJB TVMgKElvcnRQYXJzZXIpDQo+ID4+ICsgICAgKTsNCj4gPj4gKyAgT2Zmc2V0ID0gKklvcnROb2Rl T2Zmc2V0Ow0KPiA+PiArICBOb2RlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArICBJbmRleCA9 IDA7DQo+ID4+ICsNCj4gPj4gKyAgd2hpbGUgKChJbmRleCA8ICpJb3J0Tm9kZUNvdW50KSAmJiAo T2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSkgew0KPiA+PiArICAgIC8vIFBhcnNlIHRoZSBJT1JU IE5vZGUgSGVhZGVyDQo+ID4+ICsgICAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgIEZBTFNFLA0K PiA+PiArICAgICAgMCwNCj4gPj4gKyAgICAgICJJT1JUIE5vZGUgSGVhZGVyIiwNCj4gPj4gKyAg ICAgIE5vZGVQdHIsDQo+ID4+ICsgICAgICAxNiwNCj4gPj4gKyAgICAgIFBBUlNFUl9QQVJBTVMg KElvcnROb2RlSGVhZGVyUGFyc2VyKQ0KPiA+PiArICAgICAgKTsNCj4gPj4gKyAgICBpZiAoKklv cnROb2RlTGVuZ3RoID09IDApIHsNCj4gPj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7 DQo+ID4+ICsgICAgICBQcmludCAoTCJFUlJPUjogUGFyc2VyIGVycm9yLiBJbnZhbGlkIHRhYmxl IGRhdGEuXG4iKTsNCj4gPj4gKyAgICAgIHJldHVybjsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4g Pj4gKyAgICBQcmludEZpZWxkTmFtZSAoMiwgTCIqIE5vZGUgT2Zmc2V0ICoiKTsNCj4gPj4gKyAg ICBQcmludCAoTCIweCV4XG4iLCBPZmZzZXQpOw0KPiA+PiArDQo+ID4+ICsgICAgc3dpdGNoICgq SW9ydE5vZGVUeXBlKSB7DQo+ID4+ICsgICAgICBjYXNlIEVJT1JUX05PREVfSVRTX0dST1VQOg0K PiA+PiArICAgICAgICBEdW1wSW9ydE5vZGVJdHMgKA0KPiA+PiArICAgICAgICAgIE5vZGVQdHIs DQo+ID4+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoDQo+ID4+ICsgICAgICAgICAgKTsNCj4g Pj4gKyAgICAgICAgYnJlYWs7DQo+ID4+ICsgICAgICBjYXNlIEVJT1JUX05PREVfTkFNRURfQ09N UE9ORU5UOg0KPiA+PiArICAgICAgICBEdW1wSW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQo+ID4+ ICsgICAgICAgICAgTm9kZVB0ciwNCj4gPj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ ID4+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCj4gPj4gKyAgICAgICAgICAqSW9y dElkTWFwcGluZ09mZnNldA0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFr Ow0KPiA+PiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1JPT1RfQ09NUExFWDoNCj4gPj4gKyAgICAg ICAgRHVtcElvcnROb2RlUm9vdENvbXBsZXggKA0KPiA+PiArICAgICAgICAgIE5vZGVQdHIsDQo+ ID4+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiA+PiArICAgICAgICAgICpJb3J0SWRN YXBwaW5nQ291bnQsDQo+ID4+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gPj4g KyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBicmVhazsNCj4gPj4gKyAgICAgIGNhc2UgRUlP UlRfTk9ERV9TTU1VVjFfVjI6DQo+ID4+ICsgICAgICAgIER1bXBJb3J0Tm9kZVNtbXVWMVYyICgN Cj4gPj4gKyAgICAgICAgICBOb2RlUHRyLA0KPiA+PiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0 aCwNCj4gPj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiA+PiArICAgICAgICAg ICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAg YnJlYWs7DQo+ID4+ICsgICAgICBjYXNlIEVJT1JUX05PREVfU01NVVYzOg0KPiA+PiArICAgICAg ICBEdW1wSW9ydE5vZGVTbW11VjMgKA0KPiA+PiArICAgICAgICAgIE5vZGVQdHIsDQo+ID4+ICsg ICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5n Q291bnQsDQo+ID4+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gPj4gKyAgICAg ICAgICApOw0KPiA+PiArICAgICAgICBicmVhazsNCj4gPj4gKyAgICAgIGNhc2UgRUlPUlRfTk9E RV9QTUNHOg0KPiA+PiArICAgICAgICBEdW1wSW9ydE5vZGVQbWNnICgNCj4gPj4gKyAgICAgICAg ICBOb2RlUHRyLA0KPiA+PiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gPj4gKyAgICAg ICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5n T2Zmc2V0DQo+ID4+ICsgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArDQo+ ID4+ICsgICAgICBkZWZhdWx0Og0KPiA+PiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgp Ow0KPiA+PiArICAgICAgICBQcmludCAoTCJFUlJPUjogVW5zdXBwb3J0ZWQgSU9SVCBOb2RlIHR5 cGUgPSAlZFxuIiwNCj4gKklvcnROb2RlVHlwZSk7DQo+ID4+ICsgICAgfSAvLyBzd2l0Y2gNCj4g Pj4gKw0KPiA+PiArICAgIE5vZGVQdHIgKz0gKCpJb3J0Tm9kZUxlbmd0aCk7DQo+ID4+ICsgICAg T2Zmc2V0ICs9ICgqSW9ydE5vZGVMZW5ndGgpOw0KPiA+PiArICB9IC8vIHdoaWxlDQo+ID4+ICt9 DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsg IEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxl Lg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJz ZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAg VGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBAcmV0dmFs IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4gPj4gK0VG SV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArSW9ydFBhcnNlckxpYkNvbnN0cnVjdG9yICgN Cj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4+ ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9JT19SRU1BUFBJTkdfVEFCTEVfU0lHTkFUVVJFLA0K PiA+PiArICAgICAgICAgICBQYXJzZUFjcGlJb3J0DQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4g Pj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4N Cj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhl IHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAg ICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4gPj4gK0VG SV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArSW9ydFBhcnNlckxpYkRlc3RydWN0b3IgKA0K PiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0K PiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+ PiArICAgICAgICAgICBFRklfQUNQSV82XzJfSU9fUkVNQVBQSU5HX1RBQkxFX1NJR05BVFVSRQ0K PiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQ YXJzZXJMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXJMaWIuaW4NCj4gZg0KPiA+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi4wMGVkYmQ0ZmU3NzhiZDliNjAxZTINCj4gY2FmM2FjN2ZkMzM2OGQ5OTQ1Zg0K PiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGliLmluDQo+IGYN Cj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMg IENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsj ICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2Yg dGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0K PiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+ PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5 DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gSW9ydFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dV SUQgICAgICA9IDMxQ0Y5QTUwLTBCMkEtNEYzMy1CRDJDLTM2MDZFMzVBQTlFRg0KPiA+PiArICBW RVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVIN Cj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RS VUNUT1IgICAgPSBJb3J0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAg ICAgPSBJb3J0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4g Pj4gKyAgSW9ydFBhcnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRl UGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nl c10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBh L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFk dC9NYWR0UGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjVhMzBjMDQxOTUxNDVjODhkMzkyZA0KPiBkY2ExNjRhMDYwNjM5Yjc0NTZhDQo+ID4+IC0t LSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsx LDM1OCBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIE1BRFQgdGFibGUgcGFyc2VyDQo+ID4+ICsNCj4g Pj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0K PiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ICsgIEBwYXIgUmVm ZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBB LCBTZXB0ZW1iZXIgMjAxNw0KPiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxJbmR1 c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Cj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UOCogTWFkdEludGVy cnVwdENvbnRyb2xsZXJUeXBlOw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiBNYWR0SW50ZXJy dXB0Q29udHJvbGxlckxlbmd0aDsNCj4gPj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURF Ul9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+PiArDQo+ID4+ICsvLyBGb3J3YXJkIGRlY2xhcmF0aW9u cw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRl R0lDRFN5c3RlbVZlY3RvckJhc2UgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJ TiBWT0lEKiAgQ29udGV4dA0KPiA+PiArKTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFS U0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0MgSW50ZXJydXB0DQo+ID4+ICsgICAgQ29udHJv bGxlciBTdHJ1Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IEdpY0NQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiQ1BVIEludGVy ZmFjZSBOdW1iZXIiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlEIiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkZsYWdzIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQYXJraW5nIFByb3RvY29sIFZlcnNpb24iLCA0 LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAg e0wiUGVyZm9ybWFuY2UgSW50ZXJydXB0IEdTSVYiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4+ICsgIHtMIlBhcmtlZCBBZGRyZXNzIiwgOCwgMjQsIEwi MHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUGh5c2ljYWwgQmFz ZSBBZGRyZXNzIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiR0lDViIsIDgsIDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIkdJQ0giLCA4LCA0OCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJWR0lDIE1haW50ZW5hbmNlIGludGVycnVwdCIsIDQsIDU2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gPj4gKyAge0wiR0lDUiBCYXNlIEFk ZHJlc3MiLCA4LCA2MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJNUElEUiIsIDgsIDY4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4+ICsgIHtMIlByb2Nlc3NvciBQb3dlciBFZmZpY2llbmN5IENsYXNzIiwgMSwgNzYsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ID4+ICsgICBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2 ZWQiLCAzLCA3NywgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgR0lDRCBJbnRlcnJ1cHQNCj4gPj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4g Pj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljRFBhcnNlcltdID0gew0K PiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7TCJHSUMgSUQiLCA0LCA0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwg OCwgOCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJTeXN0 ZW0gVmVjdG9yIEJhc2UiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCj4gPj4gKyAgICBW YWxpZGF0ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlLCBOVUxMfSwNCj4gPj4gKyAge0wiR0lDIFZlcnNp b24iLCAxLCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJS ZXNlcnZlZCIsIDMsIDIxLCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVM TH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNj cmliaW5nIHRoZSBNU0kgRnJhbWUgSW50ZXJydXB0DQo+ID4+ICsgICAgQ29udHJvbGxlciBTdHJ1 Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY01TSUZy YW1lUGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIk1TSSBGcmFtZSBJ RCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQ aHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4+ICsgIHtMIkZsYWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIlNQSSBDb3VudCIsIDIsIDIwLCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlNQSSBCYXNlIiwgMiwgMjIsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDUiBJbnRlcnJ1cHQNCj4g Pj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgR2ljUlBhcnNlcltdID0gew0KPiA+PiArICB7TCJUeXBlIiwgMSwgMCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEs IDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQi LCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiAr ICB7TCJEaXNjb3ZlcnkgUmFuZ2UgQmFzZSBBZGRyZXNzIiwgOCwgNCwgTCIweCVseCIsIE5VTEws IE5VTEwsIE5VTEwsDQo+ID4+ICsgICBOVUxMfSwNCj4gPj4gKyAge0wiRGlzY292ZXJ5IFJhbmdl IExlbmd0aCIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+PiAr fTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEdJQyBJVFMgSW50ZXJydXB0DQo+ID4+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ID4+ ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0lUU1BhcnNlcltdID0gew0K PiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7TCJHSUMgSVRTIElEIiwgNCwgNCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVz cyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UmVzZXJ2ZWQiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4g K307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRo ZSBBQ1BJIE1BRFQgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIE1hZHRQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRy SW5mbyksDQo+ID4+ICsgIHtMIkxvY2FsIEludGVycnVwdCBDb250cm9sbGVyIEFkZHJlc3MiLCA0 LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gPj4gKyAgIE5VTEx9LA0KPiA+PiAr ICB7TCJGbGFncyIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIE1BRFQgSW50ZXJydXB0DQo+ID4+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUgSGVhZGVy IFN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFk dEludGVycnVwdENvbnRyb2xsZXJIZWFkZXJQYXJzZXJbXSA9IHsNCj4gPj4gKyAge05VTEwsIDEs IDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlwZSwgTlVM TCwNCj4gTlVMTH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIE5VTEwsIE5VTEwsIChWT0lE KiopJk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiBOVUxMLA0KPiA+PiArICAgTlVM TH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRl cyB0aGUgU3lzdGVtIFZlY3RvciBCYXNlIGluIHRoZSBHSUNELg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEu DQo+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmlj IGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiAr U1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlR0lDRFN5c3Rl bVZlY3RvckJhc2UgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAg Q29udGV4dA0KPiA+PiArKQ0KPiA+PiArew0KPiA+PiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAw KSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAo DQo+ID4+ICsgICAgICBMIlxuRVJST1I6IFN5c3RlbSBWZWN0b3IgQmFzZSBtdXN0IGJlIHplcm8u Ig0KPiA+PiArICAgICk7DQo+ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIE1BRFQgdGFibGUuDQo+ID4+ICsgIFdoZW4gdHJh Y2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUFEVCB0YWJsZSBhbmQNCj4g Pj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBUaGlz IGZ1bmN0aW9uIGN1cnJlbnRseSBwYXJzZXMgdGhlIGZvbGxvd2luZyBJbnRlcnJ1cHQgQ29udHJv bGxlcg0KPiA+PiArICBTdHJ1Y3R1cmVzOg0KPiA+PiArICAgIC0gR0lDQw0KPiA+PiArICAgIC0g R0lDRA0KPiA+PiArICAgIC0gR0lDIE1TSSBGcmFtZQ0KPiA+PiArICAgIC0gR0lDUg0KPiA+PiAr ICAgIC0gR0lDIElUUw0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3Jt cyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBA cGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmll bGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVu Z3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4g Pj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpTWFkdCAoDQo+ID4+ICsgIElO IEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5U MzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lv bg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJ TlQ4KiBJbnRlcnJ1cHRDb250b2xsZXJQdHI7DQo+ID4+ICsgIFVJTlQzMiBHSUNEQ291bnQgPSAw Ow0KPiA+PiArDQo+ID4+ICsgIGlmICghVHJhY2UpIHsNCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ ICsgIH0NCj4gPj4gKw0KPiA+PiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAg ICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgICAgMCwNCj4gPj4gKyAgICAgICAgICAgICAi TUFEVCIsDQo+ID4+ICsgICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgIEFjcGlU YWJsZUxlbmd0aCwNCj4gPj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNYWR0UGFyc2Vy KQ0KPiA+PiArICAgICAgICAgICAgICk7DQo+ID4+ICsgIEludGVycnVwdENvbnRvbGxlclB0ciA9 IFB0ciArIE9mZnNldDsNCj4gPj4gKw0KPiA+PiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxl TGVuZ3RoKSB7DQo+ID4+ICsgICAgLy8gUGFyc2UgSW50ZXJydXB0IENvbnRyb2xsZXIgU3RydWN0 dXJlIHRvIG9idGFpbiBMZW5ndGguDQo+ID4+ICsgICAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICAg IEZBTFNFLA0KPiA+PiArICAgICAgMCwNCj4gPj4gKyAgICAgIE5VTEwsDQo+ID4+ICsgICAgICBJ bnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ID4+ICsgICAgICAyLCAgLy8gIExlbmd0aCBpcyAxIGJ5 dGUgYXQgb2Zmc2V0IDENCj4gPj4gKyAgICAgIFBBUlNFUl9QQVJBTVMgKE1hZHRJbnRlcnJ1cHRD b250cm9sbGVySGVhZGVyUGFyc2VyKQ0KPiA+PiArICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICAg IGlmICgoKE9mZnNldCArICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgpKSA+IEFjcGlU YWJsZUxlbmd0aCkgfHwNCj4gPj4gKyAgICAgICAgKCpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxl bmd0aCA8IDQpKSB7DQo+ID4+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiAr ICAgICAgUHJpbnQgKA0KPiA+PiArICAgICAgICAgTCJFUlJPUjogSW52YWxpZCBJbnRlcnJ1cHQg Q29udHJvbGxlciBMZW5ndGgsIg0KPiA+PiArICAgICAgICAgICIgVHlwZSA9ICVkLCBMZW5ndGgg PSAlZFxuIiwNCj4gPj4gKyAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUsDQo+ ID4+ICsgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgNCj4gPj4gKyAgICAg ICAgICk7DQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAg ICBzd2l0Y2ggKCpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUpIHsNCj4gPj4gKyAgICAgIGNh c2UgRUZJX0FDUElfNl8yX0dJQzogew0KPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+PiAr ICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAgICAiR0lD QyIsDQo+ID4+ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiA+PiArICAgICAg ICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gPj4gKyAgICAgICAgICBQQVJT RVJfUEFSQU1TIChHaWNDUGFyc2VyKQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAg IGJyZWFrOw0KPiA+PiArICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICBjYXNlIEVGSV9BQ1BJ XzZfMl9HSUNEOiB7DQo+ID4+ICsgICAgICAgIGlmICgrK0dJQ0RDb3VudCA+IDEpIHsNCj4gPj4g KyAgICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgICAgIFByaW50 ICgNCj4gPj4gKyAgICAgICAgICAgIEwiRVJST1I6IE9ubHkgb25lIEdJQ0QgbXVzdCBiZSBwcmVz ZW50LCINCj4gPj4gKyAgICAgICAgICAgICAgIiBHSUNEQ291bnQgPSAlZFxuIiwNCj4gPj4gKyAg ICAgICAgICAgIEdJQ0RDb3VudA0KPiA+PiArICAgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAg fQ0KPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgIFRSVUUsDQo+ID4+ ICsgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAgICAiR0lDRCIsDQo+ID4+ICsgICAgICAgICAg SW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiA+PiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29u dHJvbGxlckxlbmd0aCwNCj4gPj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNEUGFyc2Vy KQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAg fQ0KPiA+PiArDQo+ID4+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNfTVNJX0ZSQU1FOiB7 DQo+ID4+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPj4g KyAgICAgICAgICAyLA0KPiA+PiArICAgICAgICAgICJHSUMgTVNJIEZyYW1lIiwNCj4gPj4gKyAg ICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ID4+ICsgICAgICAgICAgKk1hZHRJbnRl cnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiA+PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdp Y01TSUZyYW1lUGFyc2VyKQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFr Ow0KPiA+PiArICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9H SUNSOiB7DQo+ID4+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgVFJVRSwN Cj4gPj4gKyAgICAgICAgICAyLA0KPiA+PiArICAgICAgICAgICJHSUNSIiwNCj4gPj4gKyAgICAg ICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ID4+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyTGVuZ3RoLA0KPiA+PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY1JQ YXJzZXIpDQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4+ICsg ICAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ19JVFM6IHsN Cj4gPj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICBUUlVFLA0KPiA+PiAr ICAgICAgICAgIDIsDQo+ID4+ICsgICAgICAgICAgIkdJQyBJVFMiLA0KPiA+PiArICAgICAgICAg IEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gPj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENv bnRyb2xsZXJMZW5ndGgsDQo+ID4+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljSVRTUGFy c2VyKQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArICAg ICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICBkZWZhdWx0OiB7DQo+ID4+ICsgICAgICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgICAgIFByaW50ICgNCj4gPj4gKyAgICAgICAg ICBMIkVSUk9SOiBVbmtub3duIEludGVycnVwdCBDb250cm9sbGVyIFN0cnVjdHVyZSwiDQo+ID4+ ICsgICAgICAgICAgICAiIFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ID4+ICsgICAgICAg ICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlwZSwNCj4gPj4gKyAgICAgICAgICAqTWFkdElu dGVycnVwdENvbnRyb2xsZXJMZW5ndGgNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAg fQ0KPiA+PiArICAgIH0gLy8gc3dpdGNoDQo+ID4+ICsNCj4gPj4gKyAgICBJbnRlcnJ1cHRDb250 b2xsZXJQdHIgKz0gKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoOw0KPiA+PiArICAgIE9m ZnNldCArPSAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGg7DQo+ID4+ICsgIH0gLy8gd2hp bGUNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBp bWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZ X1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiA+PiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ID4+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRo ZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4+ICsq Lw0KPiA+PiArRUZJX1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtNYWR0UGFyc2VyTGliQ29u c3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5 c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFy c2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9U QUJMRV9TSUdOQVRVUkUsDQo+ID4+ICsgICAgICAgICAgIFBhcnNlQWNwaU1hZHQNCj4gPj4gKyAg ICAgICAgICAgKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIERlcmVnaXN0ZXIgdGhlIHBh cnNlci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5k bGUgdG8gdGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50 ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ ID4+ICsqLw0KPiA+PiArRUZJX1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtNYWR0UGFyc2Vy TGliRGVzdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09O U1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gRGVyZWdp c3RlclBhcnNlciAoDQo+ID4+ICsNCj4gRUZJX0FDUElfNl8yX01VTFRJUExFX0FQSUNfREVTQ1JJ UFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnNlckxpDQo+IGIuaW5mDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXJM aQ0KPiBiLmluZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjJiNjA0MmJiZmI1MTA4MzFl ODYNCj4gNmFhMWRjNDMzNDY3ZGFhYzQ5ZQ0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0K PiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv TWFkdC9NYWR0UGFyc2VyTGkNCj4gYi5pbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiAr IyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3Ry aWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0 DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw DQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAg SU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gTWFk dFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IENBMEE2QUUxLTExQTEtNDhDOC1B NTYxLUQyQ0ZBOTE3OTYyQQ0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBN T0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxM fERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBNYWR0UGFyc2VyTGliQ29uc3Ry dWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBNYWR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0K PiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgTWFkdFBhcnNlci5jDQo+ID4+ICsNCj4g Pj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQ a2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1h bmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNl ci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYmZlYzkwMWE3YzUwNGU3MDIyYzINCj4g MWFhZmJhYzRjODc1ZDg4ODZjDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01j ZmdQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDEzOSBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIE1D RkcgdGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+ IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4g KyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiAr DQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5T RSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gUENJIEZp cm13YXJlIFNwZWNpZmljYXRpb24gLSBSZXZpc2lvbiAzLjIsIEphbnVhcnkgMjYsIDIwMTUuDQo+ ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5o Pg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExp YnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNw aVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4+ICsNCj4gPj4gKy8vIExvY2FsIHZhcmlhYmxl cw0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87 DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIE1DRkcgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IE1jZmdQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5m byksDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgOCwgMzYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBh cnJheSBkZXNjcmliaW5nIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBTcGFjZQ0KPiA+PiArICAgIEJh c2UgQWRkcmVzcyBzdHJ1Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIFBjaUNmZ1NwYWNlQmFzZUFkZHJQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiQmFzZSBB ZGRyZXNzIiwgOCwgMCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJQQ0kgU2VnbWVudCBHcm91cCBOby4iLCAyLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU3RhcnQgQnVzIE5vLiIsIDEsIDEwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRW5kIEJ1cyBOby4iLCAxLCAxMSwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwg NCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiAr DQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgTUNGRyB0YWJsZS4NCj4g Pj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBNQ0ZH IHRhYmxlIGFuZA0KPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiAr DQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBB Q1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAg ICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0g W2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlz aW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQ SQ0KPiA+PiArUGFyc2VBY3BpTWNmZyAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQzMiBQY2lDZmdPZmZzZXQ7DQo+ ID4+ICsgIFVJTlQ4KiBQY2lDZmdTcGFjZVB0cjsNCj4gPj4gKw0KPiA+PiArICBpZiAoIVRyYWNl KSB7DQo+ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgT2Zmc2V0 ID0gUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAgICAg ICAgIDAsDQo+ID4+ICsgICAgICAgICAgICAgIk1DRkciLA0KPiA+PiArICAgICAgICAgICAgIFB0 ciwNCj4gPj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ICsgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoTWNmZ1BhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICApOw0KPiA+ PiArDQo+ID4+ICsgIFBjaUNmZ1NwYWNlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArDQo+ID4+ ICsgIHdoaWxlIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gPj4gKyAgICBQY2lDZmdP ZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgVFJVRSwNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgIDIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAi UENJIENvbmZpZ3VyYXRpb24gU3BhY2UiLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgUGNp Q2ZnU3BhY2VQdHIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAoQWNwaVRhYmxlTGVuZ3Ro IC0gT2Zmc2V0KSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFBj aUNmZ1NwYWNlQmFzZUFkZHJQYXJzZXIpDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICApOw0K PiA+PiArICAgIFBjaUNmZ1NwYWNlUHRyICs9IFBjaUNmZ09mZnNldDsNCj4gPj4gKyAgICBPZmZz ZXQgKz0gUGNpQ2ZnT2Zmc2V0Ow0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8q KiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4N Cj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhl IEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFs cmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg QSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VG SUFQSQ0KPiA+PiArTWNmZ1BhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1Qg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAg RUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4+ICsNCj4gRUZJX0FDUElfNl8y X1BDSV9FWFBSRVNTX01FTU9SWV9NQVBQRURfQ09ORklHVVJBVElPTl9TUEFDRV9CQQ0KPiBTRV9B RERSRVNTX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFy c2VBY3BpTWNmZw0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5d ICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3Rl cmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdh cyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklB UEkNCj4gPj4gK01jZmdQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJ X1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJf UENJX0VYUFJFU1NfTUVNT1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFX0JBDQo+IFNFX0FE RFJFU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlckxpYg0KPiAuaW5mDQo+IGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2Zn L01jZmdQYXJzZXJMaWINCj4gLmluZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBp bmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2QxZDU2 YTUyODk2ZWM3ZDQwMjENCj4gZThlMjNhZWYyYWZlZjI1NmNiMw0KPiA+PiAtLS0gL2Rldi9udWxs DQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyTGliDQo+IC5pbmYNCj4gPj4gQEAgLTAsMCArMSwz MyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAx NyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+ PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiAr IyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk LWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF Ug0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5l c10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFN RSAgICAgID0gTWNmZ1BhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDQ3RThDMTBE LTZDRTAtNDU1Qy1BN0JDLTgzQTdCMDg5NUM5Rg0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEu MA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9D TEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBNY2ZnUGFy c2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBNY2ZnUGFyc2VyTGli RGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgTWNmZ1BhcnNlci5j DQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4g Pj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyLmMNCj4g Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1Jz ZHAvUnNkcFBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzU1MDhkMjIyZWYx NGU5OWMyZDMNCj4gOTJhMDAzM2U2YzZkNWZhYTNlDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4g KysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9Sc2RwL1JzZHBQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDIxNCBAQA0KPiA+PiArLyoq DQo+ID4+ICsgIFJTRFAgdGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChj KSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsg IFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91 bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVT UyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiAr ICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0K PiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4g Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNs dWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsv LyBMb2NhbCBWYXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFhzZHRBZGRyZXNz Ow0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRk cmVzcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJ DQo+ID4+ICtWYWxpZGF0ZVJzZHRBZGRyZXNzICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4g Pj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYU0RUIEFkZHJlc3MuDQo+ID4+ICsNCj4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0 YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lm aWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291 bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVYc2R0QWRk cmVzcyAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0 DQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIFJTRFAgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IFJzZHBQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiU2lnbmF0dXJlIiwgOCwgMCwgTlVMTCwgRHVt cDhDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkNoZWNrc3VtIiwgMSwgOCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIk9lbSBJRCIsIDYs IDksIE5VTEwsIER1bXA2Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXZp c2lvbiIsIDEsIDE1LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtM IlJTRFQgQWRkcmVzcyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZVJzZHRB ZGRyZXNzLA0KPiBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgNCwgMjAsIEwiJWQiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWFNEVCBBZGRyZXNzIiwgOCwgMjQsIEwi MHglbHgiLCBOVUxMLCAoVk9JRCoqKSZYc2R0QWRkcmVzcywNCj4gPj4gKyAgIFZhbGlkYXRlWHNk dEFkZHJlc3MsIE5VTEx9LA0KPiA+PiArICB7TCJFeHRlbmRlZCBDaGVja3N1bSIsIDEsIDMyLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAz LCAzMywgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9 Ow0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRk cmVzcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJ DQo+ID4+ICtWYWxpZGF0ZVJzZHRBZGRyZXNzICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4g Pj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArI2lmIGRl ZmluZWQoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gPj4gKyAg Ly8gUmVmZXJlbmNlOiBTZXJ2ZXIgQmFzZSBCb290IFJlcXVpcmVtZW50cyBTeXN0ZW0gU29mdHdh cmUgb24gQVJNDQo+IFBsYXRmb3Jtcw0KPiA+PiArICAvLyBTZWN0aW9uOiA0LjIuMS4xIFJTRFAN Cj4gPj4gKyAgLy8gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlciAoUlNEUCksIEFDUEkg 77+9IDUuMi41Lg0KPiA+PiArICAvLyAgIC0gV2l0aGluIHRoZSBSU0RQLCB0aGUgUnNkdEFkZHJl c3MgZmllbGQgbXVzdCBiZSBudWxsICh6ZXJvKSBhbmQgdGhlDQo+ID4+ICsgIC8vICAgICBYc2R0 QWRkcmVzc3MgTVVTVCBiZSBhIHZhbGlkLCBub24tbnVsbCwgNjQtYml0IHZhbHVlLg0KPiA+PiAr ICBVSU5UMzIgUnNkdEFkZHIgPSAqKFVJTlQzMiopUHRyOw0KPiA+PiArICBpZiAoUnNkdEFkZHIg IT0gMCkgew0KPiA+PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgUHJp bnQgKA0KPiA+PiArICAgICAgTCJcbkVSUk9SOiBSc2R0IEFkZHJlc3MgPSAweCVwLiBUaGlzIG11 c3QgYmUgTlVMTCBvbiBBUk0NCj4gUGxhdGZvcm1zLiIsDQo+ID4+ICsgICAgICBSc2R0QWRkcg0K PiA+PiArICAgICAgKTsNCj4gPj4gKyAgfQ0KPiA+PiArI2VuZGlmDQo+ID4+ICt9DQo+ID4+ICsN Cj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNzLg0KPiA+ PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBj b250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1Zh bGlkYXRlWHNkdEFkZHJlc3MgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBW T0lEKiAgQ29udGV4dA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsjaWYgZGVmaW5lZChNREVf Q1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+PiArICAvLyBSZWZlcmVu Y2U6IFNlcnZlciBCYXNlIEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk0N Cj4gUGxhdGZvcm1zDQo+ID4+ICsgIC8vIFNlY3Rpb246IDQuMi4xLjEgUlNEUA0KPiA+PiArICAv LyBSb290IFN5c3RlbSBEZXNjcmlwdGlvbiBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUu DQo+ID4+ICsgIC8vICAgLSBXaXRoaW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBt dXN0IGJlIG51bGwgKHplcm8pIGFuZCB0aGUNCj4gPj4gKyAgLy8gICAgIFhzZHRBZGRyZXNzcyBN VVNUIGJlIGEgdmFsaWQsIG5vbi1udWxsLCA2NC1iaXQgdmFsdWUuDQo+ID4+ICsgIFVJTlQ2NCBY c2R0QWRkciA9ICooVUlOVDY0KilQdHI7DQo+ID4+ICsgIGlmIChYc2R0QWRkciA9PSAwKSB7DQo+ ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ ICsgICAgICBMIlxuRVJST1I6IFhzZHQgQWRkcmVzcyA9IDB4JXAuIFRoaXMgbXVzdCBub3QgYmUg TlVMTCBvbiBBUk0NCj4gUGxhdGZvcm1zLiIsDQo+ID4+ICsgICAgICBYc2R0QWRkcg0KPiA+PiAr ICAgICAgKTsNCj4gPj4gKyAgfQ0KPiA+PiArI2VuZGlmDQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBSU0RQIHRhYmxlLg0KPiA+PiArDQo+ ID4+ICsgIFRoaXMgZnVuY3Rpb24gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgWFNEVCB0YWJs ZS4NCj4gPj4gKyAgKiBOb3RlIC0gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBhcnNp bmcgb2YgUlNEVCB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVy Zm9ybXMgYSBSQVcgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZSBhbmQNCj4gPj4gKyAgdmFsaWRhdGVz IHRoZSBjaGVja3N1bS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAg ICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQ SSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9u IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0K PiA+PiArUGFyc2VBY3BpUnNkcCAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsg IElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4g Pj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ ID4+ICsgIGlmIChUcmFjZSkgew0KPiA+PiArICAgIER1bXBSYXcgKFB0ciwgQWNwaVRhYmxlTGVu Z3RoKTsNCj4gPj4gKyAgICBWZXJpZnlDaGVja3N1bSAoVFJVRSwgUHRyLCBBY3BpVGFibGVMZW5n dGgpOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgUGFyc2VBY3BpIChUcmFjZSwgMCwgIlJT RFAiLCBQdHIsIEFjcGlUYWJsZUxlbmd0aCwgUEFSU0VSX1BBUkFNUw0KPiAoUnNkcFBhcnNlcikp Ow0KPiA+PiArDQo+ID4+ICsgIC8vIFRoaXMgY29kZSBjdXJyZW50bHkgc3VwcG9ydHMgcGFyc2lu ZyBvZiBYU0RUIHRhYmxlIG9ubHkNCj4gPj4gKyAgLy8gYW5kIGRvZXMgbm90IHBhcnNlIHRoZSBS U0RUIHRhYmxlLiBQbGF0Zm9ybXMgcHJvdmlkZSB0aGUNCj4gPj4gKyAgLy8gUlNEVCB0byBlbmFi bGUgY29tcGF0aWJpbGl0eSB3aXRoIEFDUEkgMS4wIG9wZXJhdGluZyBzeXN0ZW1zLg0KPiA+PiAr ICAvLyBUaGVyZWZvcmUgdGhlIFJTRFQgc2hvdWxkIG5vdCBiZSB1c2VkIG9uIEFSTSBwbGF0Zm9y bXMuDQo+ID4+ICsgIGlmICgoKlhzZHRBZGRyZXNzKSA9PSAwKSB7DQo+ID4+ICsgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoTCJFUlJPUjogWFNEVCBQb2ludGVy IGlzIG5vdCBzZXQuXG4iKTsNCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ICsgIH0NCj4gPj4gKw0K PiA+PiArICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlhzZHRBZGRyZXNzKSk7 DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1h Z2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lz dGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9T VEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiAr ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8N Cj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUnNkcFBhcnNlckxpYkNvbnN0 cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFn ZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0 ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNl ciAoDQo+ID4+ICsgICAgICAgICAgIFJTRFBfVEFCTEVfSU5GTywNCj4gPj4gKyAgICAgICAgICAg UGFyc2VBY3BpUnNkcA0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5d ICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBb aW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdp c3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2Vy IHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtF RklBUEkNCj4gPj4gK1JzZHBQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1Qg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAg RUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKyAgICAgICAgICAgUlNE UF9UQUJMRV9JTkZPDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1n aXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1JzZHAvUnNkcFBhcnNlckxpYi4NCj4gaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXJMaWIuDQo+IGlu Zg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzNiOGVmZGI2NmYwNjc4NjJhZTUwDQo+IDlk NjQ1NzgzMTlmYzYzYjlmOA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2Rw UGFyc2VyTGliLg0KPiBpbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUN Cj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vu c2UNCj4gPj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4g KyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJF U0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4g Pj4gKyMjDQo+ID4+ICsNCj4gPj4gK1tEZWZpbmVzXQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9 IDB4MDAwMTAwMTkNCj4gPj4gKyAgQkFTRV9OQU1FICAgICAgPSBSc2RwUGFyc2VyTGliDQo+ID4+ ICsgIEZJTEVfR1VJRCAgICAgID0gOTM2NUNFQjMtNTJEQy00ODhELTlFMkUtQzRFMUUzMDYyRkE5 DQo+ID4+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0g RFhFX0RSSVZFUg0KPiA+PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+ PiArICBDT05TVFJVQ1RPUiAgICA9IFJzZHBQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBE RVNUUlVDVE9SICAgICA9IFJzZHBQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tT b3VyY2VzXQ0KPiA+PiArICBSc2RwUGFyc2VyLmMNCj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0K PiA+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMN Cj4gPj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xp YnJhcnlDbGFzc2VzXQ0KPiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZm IC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyLmMNCj4gPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uZjZhNGM0MTZhYTI1OWFmMTZhYTBiNw0KPiA3NmRjYzA1ODYwNGI1YzE3 YzINCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlci5jDQo+ID4+ IEBAIC0wLDAgKzEsMTg3IEBADQo+ID4+ICsvKioNCj4gPj4gKyAgU0xJVCB0YWJsZSBwYXJzZXIN Cj4gPj4gKw0KPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4g Pj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBS T0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIN Cj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4g KyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9u IC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2lu Y2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkv UHJpbnRMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2Nh bCBWYXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFNsaXRTeXN0ZW1Mb2NhbGl0 eUNvdW50Ow0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhk ckluZm87DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBBQ1BJIFNMSVQgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIFNsaXRQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3Bp SGRySW5mbyksDQo+ID4+ICsgIHtMIk51bWJlciBvZiBTeXN0ZW0gTG9jYWxpdGllcyIsIDgsIDM2 LCBMIjB4JWx4IiwgTlVMTCwNCj4gPj4gKyAgIChWT0lEKiopJlNsaXRTeXN0ZW1Mb2NhbGl0eUNv dW50LCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIE1hY3JvIHRvIGdl dCB0aGUgdmFsdWUgb2YgYSBTeXN0ZW0gTG9jYWxpdHkNCj4gPj4gKyovDQo+ID4+ICsjZGVmaW5l IFNMSVRfRUxFTUVOVChQdHIsIGksIGopICooUHRyICsgKGkgKiBMb2NhbGl0eUNvdW50KSArIGop DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTTElUIHRh YmxlLg0KPiA+PiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIFNMSVQgdGFibGUgYW5kDQo+ID4+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHZhbGlkYXRlcyBTeXN0ZW0gTG9j YWxpdGllcyBmb3IgdGhlIGZvbGxvd2luZzoNCj4gPj4gKyAgICAtIERpYWdvbmFsIGVsZW1lbnRz IGhhdmUgYSBub3JtYWxpemVkIHZhbHVlIG9mIDEwDQo+ID4+ICsgICAgLSBSZWxhdGl2ZSBkaXN0 YW5jZSBmcm9tIFN5c3RlbSBMb2NhbGl0eSBhdCBpKk4raiBpcyBzYW1lIGFzDQo+ID4+ICsgICAg ICBqKk4raQ0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJ ZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiAr ICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxl Lg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhl IEFDUEkgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQ YXJzZUFjcGlTbGl0ICgNCj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlO VDgqICBQdHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJ TiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAg VUlOVDMyIE9mZnNldDsNCj4gPj4gKyAgVUlOVDY0IGk7DQo+ID4+ICsgIFVJTlQ2NCBqOw0KPiA+ PiArICBVSU5UNjQgTG9jYWxpdHlDb3VudDsNCj4gPj4gKyAgVUlOVDgqIExvY2FsaXR5UHRyOw0K PiA+PiArICBDSEFSMTYgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBv ZiBQYXJzZUFjcGkNCj4gPj4gKw0KPiA+PiArICBpZiAoIVRyYWNlKSB7DQo+ID4+ICsgICAgcmV0 dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4g Pj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAgICAgICAgIDAsDQo+ID4+ICsgICAg ICAgICAgICAgIlNMSVQiLA0KPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4gPj4gKyAgICAgICAg ICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAo U2xpdFBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICApOw0KPiA+PiArICBMb2NhbGl0eVB0ciA9 IFB0ciArIE9mZnNldDsNCj4gPj4gKw0KPiA+PiArICBMb2NhbGl0eUNvdW50ID0gKlNsaXRTeXN0 ZW1Mb2NhbGl0eUNvdW50Ow0KPiA+PiArICAvLyBXZSBvbmx5IHByaW50IHRoZSBMb2NhbGl0aWVz IGlmIHRoZSBjb3VudCBpcyBsZXNzIHRoYW4gMTYNCj4gPj4gKyAgLy8gSWYgdGhlIGxvY2FsaXR5 IGNvdW50IGlzIG1vcmUgdGhhbiAxNiB0aGVuIHJlZmVyIHRvIHRoZQ0KPiA+PiArICAvLyByYXcg ZGF0YSBkdW1wLg0KPiA+PiArICBpZiAoTG9jYWxpdHlDb3VudCA8IDE2KSB7DQo+ID4+ICsgICAg VW5pY29kZVNQcmludCAoDQo+ID4+ICsgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICBzaXplb2Yg KEJ1ZmZlciksDQo+ID4+ICsgICAgICBMIkVudHJ5WzB4JWx4XVsweCVseF0iLA0KPiA+PiArICAg ICAgTG9jYWxpdHlDb3VudCwNCj4gPj4gKyAgICAgIExvY2FsaXR5Q291bnQNCj4gPj4gKyAgICAg ICk7DQo+ID4+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDAsIEJ1ZmZlcik7DQo+ID4+ICsgICAgUHJp bnQgKEwiXG4iKTsNCj4gPj4gKyAgICBQcmludCAoTCIgICAgICAgIik7DQo+ID4+ICsgICAgZm9y IChqID0gMDsgaiA8IExvY2FsaXR5Q291bnQ7IGorKykgew0KPiA+PiArICAgICAgUHJpbnQgKEwi ICglM2QpICIsIGopOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiA+ PiArICAgIGZvciAoaSA9IDA7IGkgPCBMb2NhbGl0eUNvdW50OyBpKyspIHsNCj4gPj4gKyAgICAg IFByaW50IChMIiAoJTNkKSAiLCBpKTsNCj4gPj4gKyAgICAgIGZvciAoaiA9IDA7IGogPCBMb2Nh bGl0eUNvdW50OyBqKyspIHsNCj4gPj4gKyAgICAgICAgUHJpbnQgKEwiICAlM2QgICIsIFNMSVRf RUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopKTsNCj4gPj4gKyAgICAgIH0NCj4gPj4gKyAgICAg IFByaW50IChMIlxuIik7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAg Ly8gVmFsaWRhdGUNCj4gPj4gKyAgZm9yIChpID0gMDsgaSA8IExvY2FsaXR5Q291bnQ7IGkrKykg ew0KPiA+PiArICAgIGZvciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gPj4g KyAgICAgIC8vIEVsZW1lbnRbeF1beF0gbXVzdCBiZSBlcXVhbCB0byAxMA0KPiA+PiArICAgICAg aWYgKChpID09IGopICYmIChTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSAhPSAxMCkp IHsNCj4gPj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgICAg UHJpbnQgKA0KPiA+PiArICAgICAgICAgIEwiRVJST1I6IERpYWdvbmFsIEVsZW1lbnRbMHglbHhd WzB4JWx4XSAoJTNkKS4iDQo+ID4+ICsgICAgICAgICAgICAiIE5vcm1hbGl6ZWQgVmFsdWUgaXMg bm90IDEwXG4iLA0KPiA+PiArICAgICAgICAgIGksDQo+ID4+ICsgICAgICAgICAgaiwNCj4gPj4g KyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKQ0KPiA+PiArICAgICAg ICAgICk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgICAvLyBFbGVtZW50W2ldW2pdIG11c3Qg YmUgZXF1YWwgdG8gRWxlbWVudFtqXVtpXQ0KPiA+PiArICAgICAgaWYgKFNMSVRfRUxFTUVOVCAo TG9jYWxpdHlQdHIsIGksIGopICE9DQo+ID4+ICsgICAgICAgICAgU0xJVF9FTEVNRU5UIChMb2Nh bGl0eVB0ciwgaiwgaSkpIHsNCj4gPj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsN Cj4gPj4gKyAgICAgICAgUHJpbnQgKA0KPiA+PiArICAgICAgICAgIEwiRVJST1I6IFJlbGF0aXZl IGRpc3RhbmNlcyBmb3IgRWxlbWVudFsweCVseF1bMHglbHhdICglM2QpDQo+IGFuZCBcbiINCj4g Pj4gKyAgICAgICAgICAgIkVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKSBkbyBub3QgbWF0Y2gu XG4iLA0KPiA+PiArICAgICAgICAgIGksDQo+ID4+ICsgICAgICAgICAgaiwNCj4gPj4gKyAgICAg ICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSwNCj4gPj4gKyAgICAgICAgICBq LA0KPiA+PiArICAgICAgICAgIGksDQo+ID4+ICsgICAgICAgICAgU0xJVF9FTEVNRU5UIChMb2Nh bGl0eVB0ciwgaiwgaSkNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgfQ0KPiA+PiAr ICAgIH0NCj4gPj4gKyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhl IHBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBo YW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBv aW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2 YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVy ZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlz IGludmFsaWQNCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2Ug dG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh cnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1Ns aXRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFC TEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1 cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TWVNURU1fTE9DQUxJ VFlfSU5GT1JNQVRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiA+PiArICAgICAgICAgICBQYXJzZUFj cGlTbGl0DQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBE ZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdl SGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5 c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQu DQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5v dCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0K PiA+PiArU2xpdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFO RExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lT VEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4g KyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TWVNU RU1fTE9DQUxJVFlfSU5GT1JNQVRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAg ICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlckxpYi5pbmYNCj4g Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1Ns aXQvU2xpdFBhcnNlckxpYi5pbmYNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5k ZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0MzBlZDlh OThmMWNjY2NkZTA3NQ0KPiAyMmI0YmY5MGQ2ZDIyY2Q3OTINCj4gPj4gLS0tIC9kZXYvbnVsbA0K PiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlckxpYi5pbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0K PiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlz IGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZv dW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vu c2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4g Pj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAg ID0gU2xpdFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDNEQ0Y3MzMzLTM2N0It NEQ0MC04NTZBLUZGMEY3M0ZCNkI0OQ0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+ PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAg PSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBTbGl0UGFyc2VyTGli Q29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBTbGl0UGFyc2VyTGliRGVzdHJ1 Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgU2xpdFBhcnNlci5jDQo+ID4+ ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAg U2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cu ZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmll d0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3Bj clBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0Njg3YTcwOGJiODI4YzUzY2Vi Nw0KPiBhNjFlOWUxMWNlMDBiNTgzY2Q1DQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+ IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9T cGNyL1NwY3JQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDIxMyBAQA0KPiA+PiArLyoqDQo+ID4+ ICsgIFNQQ1IgdGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2 IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJp YnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQN Cj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0g TWljcm9zb2Z0IFNlcmlhbCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gVGFibGUNCj4gPj4gKyAg ICAgIFNwZWNpZmljYXRpb24gLSBWZXJzaW9uIDEuMDMgLSBBdWd1c3QgMTAsIDIwMTUuDQo+ID4+ ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0K PiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU2VyaWFsUG9ydENvbnNvbGVSZWRpcmVj dGlvblRhYmxlLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+ICsj aW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8 TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPj4gKw0KPiA+PiArLy8gTG9j YWwgdmFyaWFibGVzDQo+ID4+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBB Y3BpSGRySW5mbzsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRo ZSBJbnRlcnJ1cHQgVHlwZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2lu XSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRo aXMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0K PiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0ZUludGVycnVwdFR5cGUgKA0KPiA+PiArICBJTiBV SU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiArICApOw0KPiA+PiAr DQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElycS4NCj4gPj4gKw0KPiA+ PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVs ZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBz cGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiArKi8N Cj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0ZUly cSAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBBQ1BJIFNQQ1IgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIFNwY3JQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZB Y3BpSGRySW5mbyksDQo+ID4+ICsgIHtMIkludGVyZmFjZSBUeXBlIiwgMSwgMzYsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAzNywgTCIl eCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJCYXNl IEFkZHJlc3MiLCAxMiwgNDAsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJJbnRlcnJ1cHQgVHlwZSIsIDEsIDUyLCBMIiVkIiwgTlVMTCwgTlVMTCwgVmFsaWRh dGVJbnRlcnJ1cHRUeXBlLA0KPiBOVUxMfSwNCj4gPj4gKyAge0wiSVJRIiwgMSwgNTMsIEwiJWQi LCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUlycSwgTlVMTH0sDQo+ID4+ICsgIHtMIkdsb2JhbCBTeXN0 ZW0gSW50ZXJydXB0IiwgNCwgNTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+PiArICB7TCJCYXVkIFJhdGUiLCAxLCA1OCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJQYXJpdHkiLCAxLCA1OSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJTdG9wIEJpdHMiLCAxLCA2MCwgTCIlZCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJGbG93IENvbnRyb2wiLCAxLCA2MSwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlRlcm1pbmFsIFR5cGUiLCAxLCA2 MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXNlcnZlZCIs IDEsIDYzLCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAg e0wiUENJIERldmljZSBJRCIsIDIsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiUENJIFZlbmRvciBJRCIsIDIsIDY2LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUENJIEJ1cyBOdW1iZXIiLCAxLCA2OCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBDSSBEZXZpY2UgTnVtYmVy IiwgMSwgNjksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQ Q0kgRnVuY3Rpb24gTnVtYmVyIiwgMSwgNzAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJQQ0kgRmxhZ3MiLCA0LCA3MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBDSSBTZWdtZW50IiwgMSwgNzUsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXNlcnZlZCIsIDQsIDc2LCBMIiV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSW50ZXJydXB0IFR5cGUuDQo+ID4+ICsNCj4gPj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQg ZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg Y291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJbnRl cnJ1cHRUeXBlICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENv bnRleHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJN KSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ID4+ICsgIFVJTlQ4IEludGVycnVwdFR5 cGUgPSAqUHRyOw0KPiA+PiArICBpZiAoSW50ZXJydXB0VHlwZSAhPQ0KPiA+PiArDQo+IEVGSV9B Q1BJX1NFUklBTF9QT1JUX0NPTlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfSU5URVJSVVBUX1RZUEVf R0lDKQ0KPiB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQ cmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IEludGVycnVwdFR5cGUgPSAlZC4gVGhpcyBt dXN0IGJlIDggb24gQVJNIFBsYXRmb3JtcyIsDQo+ID4+ICsgICAgICBJbnRlcnJ1cHRUeXBlDQo+ ID4+ICsgICAgICApOw0KPiA+PiArICB9DQo+ID4+ICsjZW5kaWYNCj4gPj4gK30NCj4gPj4gKw0K PiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJcnEuDQo+ID4+ICsNCj4gPj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQg ZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg Y291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJcnEg KA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ PiArICApDQo+ID4+ICt7DQo+ID4+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmlu ZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gPj4gKyAgVUlOVDggSXJxID0gKlB0cjsNCj4gPj4gKyAg aWYgKElycSAhPSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4g KyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IElycSA9ICVkLiBUaGlzIG11c3Qg YmUgemVybyBvbiBBUk0gUGxhdGZvcm1zXG4iLA0KPiA+PiArICAgICAgSXJxDQo+ID4+ICsgICAg ICApOw0KPiA+PiArICB9DQo+ID4+ICsjZW5kaWYNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoq IFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNQQ1IgdGFibGUuDQo+ID4+ICsgIFdoZW4g dHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1BDUiB0YWJsZSBhbmQN Cj4gPj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBU aGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbnMgb2YgdGhlIEFDUEkgdGFibGUg ZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJ ZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiAr ICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxl Lg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhl IEFDUEkgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQ YXJzZUFjcGlTcGNyICgNCj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlO VDgqICBQdHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJ TiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAg aWYgKCFUcmFjZSkgew0KPiA+PiArICAgIHJldHVybjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ ICsgIC8vIER1bXAgdGhlIFNQQ1INCj4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICBUUlVF LA0KPiA+PiArICAgIDAsDQo+ID4+ICsgICAgIlNQQ1IiLA0KPiA+PiArICAgIFB0ciwNCj4gPj4g KyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoU3BjclBhcnNl cikNCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhl IHBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBo YW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBv aW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2 YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVy ZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlz IGludmFsaWQNCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2Ug dG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh cnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1Nw Y3JQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFC TEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1 cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9D T05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFy c2VBY3BpU3Bjcg0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5d ICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3Rl cmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdh cyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklB UEkNCj4gPj4gK1NwY3JQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJ X1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJf U0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gPj4gKyAg ICAgICAgICAgKTsNCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyTGli LmkNCj4gbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjk0YWRkMzFkZTAzMGFiNzc3MWZjMw0KPiAwM2ViYTdiOTIyMjcwMjY1OTcwDQo+ID4+ IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+ PiBAQCAtMCwwICsxLDMzIEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+PiArIw0KPiA+PiArIyAgQ29w eXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyMgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4gKyMgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJB U0lTLA0KPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyMjDQo+ID4+ICsN Cj4gPj4gK1tEZWZpbmVzXQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4g Pj4gKyAgQkFTRV9OQU1FICAgICAgPSBTcGNyUGFyc2VyTGliDQo+ID4+ICsgIEZJTEVfR1VJRCAg ICAgID0gMDhDMTdDNEMtRTYyRC00QUU0LTk1QzUtREVGNDJBMjRBNTZDDQo+ID4+ICsgIFZFUlNJ T05fU1RSSU5HID0gMS4wDQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+ PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+PiArICBDT05TVFJVQ1RP UiAgICA9IFNwY3JQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICA9 IFNwY3JQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tTb3VyY2VzXQ0KPiA+PiAr ICBTcGNyUGFyc2VyLmMNCj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+PiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPj4gKyAgTWRlTW9k dWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0K PiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1Ny YXRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u YmVlNTFhN2VlNmEzNTUzZmM0MGQxDQo+IDc2NzFhY2Q2NzFmMGJlMDFlNTkNCj4gPj4gLS0tIC9k ZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+ID4+IEBAIC0wLDAgKzEsMzc1 IEBADQo+ID4+ICsvKioNCj4gPj4gKyAgU1JBVCB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiAr ICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVu Y2Uocyk6DQo+ID4+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNl cHRlbWJlciAyMDE3DQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5 U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4g Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4g Pj4gK1NUQVRJQyBDT05TVCBVSU5UOCogU3JhdFJBVHlwZTsNCj4gPj4gK1NUQVRJQyBDT05TVCBV SU5UOCogU3JhdFJBTGVuZ3RoOw0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVS X0lORk8gQWNwaUhkckluZm87DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlk YXRlcyB0aGUgUmVzZXJ2ZWQgZmllbGQgaW4gdGhlIFNSQVQgdGFibGUgaGVhZGVyLg0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250 ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlk YXRlU3JhdFJlc2VydmVkICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9J RCogIENvbnRleHQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g dHJhY2VzIHRoZSBBUElDIFByb3hpbWl0eSBEb21haW4gZmllbGQuDQo+ID4+ICsNCj4gPj4gKyAg QHBhcmFtIFtpbl0gRm9ybWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K PiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wU3Jh dEFwaWNQcm94aW1pdHkgKA0KPiA+PiArICBJTiAgQ09OU1QgQ0hBUjE2KiAgRm9ybWF0LA0KPiA+ PiArICBJTiAgVUlOVDgqICAgICAgICAgUHRyDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8q KiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBTUkFUIFRhYmxlLg0KPiA+PiAr Ki8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0UGFyc2VyW10gPSB7DQo+ID4+ ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiA+PiArICB7TCJSZXNlcnZl ZCIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZVNyYXRSZXNlcnZlZCwgTlVM TH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgOCwgNDAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIFJlc291cmNlIEFsbG9jYXRpb24NCj4gPj4gKyAgICBzdHJ1Y3R1 cmUgaGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0 UmVzb3VyY2VBbGxvY2F0aW9uUGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBO VUxMLCBOVUxMLCAoVk9JRCoqKSZTcmF0UkFUeXBlLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi TGVuZ3RoIiwgMSwgMSwgTlVMTCwgTlVMTCwgKFZPSUQqKikmU3JhdFJBTGVuZ3RoLCBOVUxMLCBO VUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRl c2NyaWJpbmcgdGhlIEdJQ0MgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiA+PiArKi8NCj4gPj4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0R2ljQ0FmZmluaXR5UGFyc2VyW10gPSB7DQo+ID4+ ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsNCj4gPj4gKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJBQ1BJIFByb2Nlc3NvciBVSUQiLCA0 LCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRmxhZ3Mi LCA0LCAxMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkNs b2NrIERvbWFpbiIsIDQsIDE0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIEdJQyBJVFMgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQyBD T05TVCBBQ1BJX1BBUlNFUiBTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gPj4gKyAg e0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKw0KPiA+PiArICB7TCJQcm94aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMiwgNiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIklUUyBJZCIsIDQsIDgsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoq IEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1lbW9yeSBBZmZpbml0eSBzdHJ1 Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRNZW1B ZmZpbml0eVBhcnNlcltdID0gew0KPiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIlByb3hpbWl0eSBE b21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAg e0wiUmVzZXJ2ZWQiLCAyLCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiQmFzZSBBZGRyZXNzIExvdyIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+PiArICB7TCJCYXNlIEFkZHJlc3MgSGlnaCIsIDQsIDEyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIExvdyIsIDQsIDE2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIEhp Z2giLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtM IlJlc2VydmVkIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJGbGFncyIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA4LCAzMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkg ZGVzY3JpYmluZyB0aGUgQVBJQy9TQVBJQyBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ID4+ICsqLw0K PiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRBcGNpU2FwaWNBZmZpbml0eVBhcnNl cltdID0gew0KPiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIlByb3hpbWl0eSBEb21haW4gWzc6MF0i LCAxLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQVBJ QyBJRCIsIDEsIDMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJGbGFncyIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJMb2NhbCBTQVBJQyBFSUQiLCAxLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiUHJveGltaXR5IERvbWFpbiBbMzE6OF0iLCAzLCA5LCBMIjB4JXgi LCBEdW1wU3JhdEFwaWNQcm94aW1pdHksDQo+ID4+ICsgICBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiQ2xvY2sgRG9tYWluIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkg ZGVzY3JpYmluZyB0aGUgUHJvY2Vzc29yIExvY2FsIHgyQVBJQw0KPiA+PiArICAgIEFmZmluaXR5 IHN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3Jh dFgyQXBjaUFmZmluaXR5UGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiUmVz ZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAg e0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJYMkFQSUMgSUQiLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRmxhZ3MiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQsIDE2LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAyMCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUmVzZXJ2ZWQgZmllbGQgaW4gdGhlIFNS QVQgdGFibGUgaGVhZGVyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5d IENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhp cw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlU3JhdFJlc2VydmVkICgNCj4gPj4gKyAgSU4gVUlO VDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyAgKQ0KPiA+PiArew0K PiA+PiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAxKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJy b3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBSZXNlcnZlZCBzaG91bGQg YmUgMSBmb3IgYmFja3dhcmQNCj4gY29tcGF0aWJpbGl0eS5cbiIpOw0KPiA+PiArICB9DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQVBJQyBQcm94 aW1pdHkgRG9tYWluIGZpZWxkLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAg Rm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4g Pj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRHVtcFNyYXRBcGljUHJveGltaXR5ICgNCj4g Pj4gKyBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gPj4gKyBJTiBVSU5UOCogICAgICAgIFB0 cg0KPiA+PiArICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIFByb3hpbWl0eURvbWFpbiA9IFB0 clswXSB8IChQdHJbMV0gPDwgOCkgfCAoUHRyWzJdIDw8IDE2KTsNCj4gPj4gKyAgUHJpbnQgKEZv cm1hdCwgUHJveGltaXR5RG9tYWluKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNSQVQgdGFibGUuDQo+ID4+ICsgIFdoZW4gdHJhY2Ug aXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1JBVCB0YWJsZSBhbmQNCj4gPj4g KyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1 bmN0aW9uIHBhcnNlcyB0aGUgZm9sbG93aW5nIFJlc291cmNlIEFsbG9jYXRpb24gU3RydWN0dXJl czoNCj4gPj4gKyAgICAtIFByb2Nlc3NvciBMb2NhbCBBUElDL1NBUElDIEFmZmluaXR5IFN0cnVj dHVyZQ0KPiA+PiArICAgIC0gTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZQ0KPiA+PiArICAgIC0g UHJvY2Vzc29yIExvY2FsIHgyQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gPj4gKyAgICAtIEdJ Q0MgQWZmaW5pdHkgU3RydWN0dXJlDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNv IHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUg QUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFjcGlTcmF0ICgNCj4g Pj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ICsg IElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJs ZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIE9mZnNldDsNCj4g Pj4gKyAgVUlOVDgqIFJlc291cmNlUHRyOw0KPiA+PiArICBVSU5UMzIgR2ljQ0FmZmluaXR5SW5k ZXggPSAwOw0KPiA+PiArICBVSU5UMzIgR2ljSVRTQWZmaW5pdHlJbmRleCA9IDA7DQo+ID4+ICsg IFVJTlQzMiBNZW1vcnlBZmZpbml0eUluZGV4ID0gMDsNCj4gPj4gKyAgVUlOVDMyIEFwaWNTYXBp Y0FmZmluaXR5SW5kZXggPSAwOw0KPiA+PiArICBVSU5UMzIgWDJBcGljQWZmaW5pdHlJbmRleCA9 IDA7DQo+ID4+ICsgIENIQVI4ICBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBh cmFtIG9mIFBhcnNlQWNwaQ0KPiA+PiArDQo+ID4+ICsgIGlmICghVHJhY2UpIHsNCj4gPj4gKyAg ICByZXR1cm47DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBPZmZzZXQgPSBQYXJzZUFjcGkg KA0KPiA+PiArICAgICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgICAgMCwNCj4gPj4g KyAgICAgICAgICAgICAiU1JBVCIsDQo+ID4+ICsgICAgICAgICAgICAgUHRyLA0KPiA+PiArICAg ICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFS QU1TIChTcmF0UGFyc2VyKQ0KPiA+PiArICAgICAgICAgICAgICk7DQo+ID4+ICsgIFJlc291cmNl UHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArDQo+ID4+ICsgIHdoaWxlIChPZmZzZXQgPCBBY3Bp VGFibGVMZW5ndGgpIHsNCj4gPj4gKyAgICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgRkFMU0Us DQo+ID4+ICsgICAgICAwLA0KPiA+PiArICAgICAgTlVMTCwNCj4gPj4gKyAgICAgIFJlc291cmNl UHRyLA0KPiA+PiArICAgICAgMiwgIC8vIFRoZSBsZW5ndGggaXMgMSBieXRlIGF0IG9mZnNldCAx DQo+ID4+ICsgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0UmVzb3VyY2VBbGxvY2F0aW9uUGFyc2Vy KQ0KPiA+PiArICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICAgIHN3aXRjaCAoKlNyYXRSQVR5cGUp IHsNCj4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ0NfQUZGSU5JVFk6DQo+ID4+ICsg ICAgICAgIEFzY2lpU1ByaW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAg ICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+PiArICAgICAgICAgICJHSUNDIEFmZmluaXR5IFN0 cnVjdHVyZSBbJWRdIiwNCj4gPj4gKyAgICAgICAgICBHaWNDQWZmaW5pdHlJbmRleCsrDQo+ID4+ ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAg ICBUUlVFLA0KPiA+PiArICAgICAgICAgIDIsDQo+ID4+ICsgICAgICAgICAgQnVmZmVyLA0KPiA+ PiArICAgICAgICAgIFJlc291cmNlUHRyLA0KPiA+PiArICAgICAgICAgICpTcmF0UkFMZW5ndGgs DQo+ID4+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdEdpY0NBZmZpbml0eVBhcnNlcikN Cj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBicmVhazsNCj4gPj4gKw0KPiA+PiAr ICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDX0lUU19BRkZJTklUWToNCj4gPj4gKyAgICAgICAg QXNjaWlTUHJpbnQgKA0KPiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICBz aXplb2YgKEJ1ZmZlciksDQo+ID4+ICsgICAgICAgICAgIkdJQyBJVFMgQWZmaW5pdHkgU3RydWN0 dXJlIFslZF0iLA0KPiA+PiArICAgICAgICAgIEdpY0lUU0FmZmluaXR5SW5kZXgrKw0KPiA+PiAr ICAgICAgICApOw0KPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgIFRS VUUsDQo+ID4+ICsgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsg ICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ID4+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4g Pj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXIpDQo+ ID4+ICsgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArDQo+ID4+ICsgICAg ICBjYXNlIEVGSV9BQ1BJXzZfMl9NRU1PUllfQUZGSU5JVFk6DQo+ID4+ICsgICAgICAgIEFzY2lp U1ByaW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgc2l6ZW9m IChCdWZmZXIpLA0KPiA+PiArICAgICAgICAgICJNZW1vcnkgQWZmaW5pdHkgU3RydWN0dXJlIFsl ZF0iLA0KPiA+PiArICAgICAgICAgIE1lbW9yeUFmZmluaXR5SW5kZXgrKw0KPiA+PiArICAgICAg ICAgICk7DQo+ID4+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgVFJVRSwN Cj4gPj4gKyAgICAgICAgICAyLA0KPiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAg ICAgICBSZXNvdXJjZVB0ciwNCj4gPj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0KPiA+PiAr ICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRNZW1BZmZpbml0eVBhcnNlcikNCj4gPj4gKyAg ICAgICAgICApOw0KPiA+PiArICAgICAgICBicmVhazsNCj4gPj4gKw0KPiA+PiArICAgICAgY2Fz ZSBFRklfQUNQSV82XzJfUFJPQ0VTU09SX0xPQ0FMX0FQSUNfU0FQSUNfQUZGSU5JVFk6DQo+ID4+ ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsg ICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+PiArICAgICAgICAgICJBUElDL1NBUElDIEFm ZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gPj4gKyAgICAgICAgICBBcGljU2FwaWNBZmZpbml0 eUluZGV4KysNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0K PiA+PiArICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAg ICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ID4+ICsgICAgICAgICAg KlNyYXRSQUxlbmd0aCwNCj4gPj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0QXBjaVNh cGljQWZmaW5pdHlQYXJzZXIpDQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgYnJl YWs7DQo+ID4+ICsNCj4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX1BST0NFU1NPUl9MT0NB TF9YMkFQSUNfQUZGSU5JVFk6DQo+ID4+ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gPj4gKyAg ICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+PiAr ICAgICAgICAgICJYMkFQSUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+PiArICAgICAg ICAgIFgyQXBpY0FmZmluaXR5SW5kZXgrKw0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAg ICAgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAgICAgICAy LA0KPiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwN Cj4gPj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0KPiA+PiArICAgICAgICAgIFBBUlNFUl9Q QVJBTVMgKFNyYXRYMkFwY2lBZmZpbml0eVBhcnNlcikNCj4gPj4gKyAgICAgICAgICApOw0KPiA+ PiArICAgICAgICBicmVhazsNCj4gPj4gKw0KPiA+PiArICAgICAgZGVmYXVsdDoNCj4gPj4gKyAg ICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgICAgUHJpbnQgKEwiRVJS T1I6IFVua25vd24gU1JBVCBBZmZpbml0eSB0eXBlID0gMHgleFxuIiwNCj4gKlNyYXRSQVR5cGUp Ow0KPiA+PiArICAgICAgICBicmVhazsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICBS ZXNvdXJjZVB0ciArPSAoKlNyYXRSQUxlbmd0aCk7DQo+ID4+ICsgICAgT2Zmc2V0ICs9ICgqU3Jh dFJBTGVuZ3RoKTsNCj4gPj4gKyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0 ZXIgdGhlIHBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUg IFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFi bGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsg IEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRh YmxlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJl Z2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1l dGVyIGlzIGludmFsaWQNCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8g c3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4g Pj4gK1NyYXRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNU RU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiAr ICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TWVNURU1f UkVTT1VSQ0VfQUZGSU5JVFlfVEFCTEVfU0lHTkFUVVJFLA0KPiA+PiArICAgICAgICAgICBQYXJz ZUFjcGlTcmF0DQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8q KiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIElt YWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVy ZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2Fz IG5vdCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQ SQ0KPiA+PiArU3JhdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklf SEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklf U1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4g Pj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9T WVNURU1fUkVTT1VSQ0VfQUZGSU5JVFlfVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAg ICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpYi5pbg0KPiBm DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9TcmF0L1NyYXRQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41 ODIzYmFiNTBkZjY0OTc0ODhlNDENCj4gZmFhYTVhZTdhODEzYWVlNDc5Mg0KPiA+PiAtLS0gL2Rl di9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyTGliLmkNCj4gbmYNCj4gPj4gQEAgLTAs MCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAo YykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiAr Iw0KPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNU UklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4g Pj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtb RGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJB U0VfTkFNRSAgICAgID0gU3JhdFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDEw NkIyMkNDLTE0OTktNDZENC1CNkZCLTM0MUJCODc4RkJDNQ0KPiA+PiArICBWRVJTSU9OX1NUUklO RyA9IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElC UkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBT cmF0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBTcmF0UGFy c2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgU3JhdFBh cnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5k ZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9N ZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAg U2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2Vy LmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NzZHQvU3NkdFBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNTYyNDJi MzUxYzhjMDRkMzEyMw0KPiA0OTA4NmUzNTNjOTRlNDMwZjMyDQo+ID4+IC0tLSAvZGV2L251bGwN Cj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDkyIEBADQo+ID4+ ICsvKioNCj4gPj4gKyAgU1NEVCB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiArICBDb3B5cmln aHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g Pj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0K PiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ ID4+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAy MDE3DQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQv QWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+PiArI2luY2x1 ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJh cnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTU0RUIHRhYmxlLg0KPiA+PiArICBXaGVuIHRyYWNlIGlz IGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNTRFQgdGFibGUgYW5kDQo+ID4+ICsg IHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4+ICsgIEZvciB0aGUgU1NEVCB0YWJs ZSBvbmx5IHRoZSBBQ1BJIGhlYWRlciBmaWVsZHMgYXJlDQo+ID4+ICsgIHBhcnNlZCBhbmQgdHJh Y2VkLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBU UlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFD UEkgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJz ZUFjcGlTc2R0ICgNCj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgq ICBQdHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBV SU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgaWYg KCFUcmFjZSkgew0KPiA+PiArICAgIHJldHVybjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsg IER1bXBBY3BpSGVhZGVyIChQdHIpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0 ZXIgdGhlIHBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUg IFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFi bGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsg IEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRh YmxlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJl Z2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1l dGVyIGlzIGludmFsaWQNCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8g c3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4g Pj4gK1NzZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNU RU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiAr ICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TRUNPTkRB UllfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAg UGFyc2VBY3BpU3NkdA0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5d ICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBb aW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdp c3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2Vy IHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtF RklBUEkNCj4gPj4gK1NzZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1Qg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAg RUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82 XzJfU0VDT05EQVJZX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gPj4gKyAg ICAgICAgICAgKTsNCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTGli LmkNCj4gbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjU3ZTU1ZWFmMDgyNGI2YzhkMDVjZQ0KPiA5Yjc5ZDk1OThlZGQ4ZjY3M2Q5DQo+ID4+ IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+ PiBAQCAtMCwwICsxLDMzIEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+PiArIw0KPiA+PiArIyAgQ29w eXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyMgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4gKyMgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJB U0lTLA0KPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyMjDQo+ID4+ICsN Cj4gPj4gK1tEZWZpbmVzXQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4g Pj4gKyAgQkFTRV9OQU1FICAgICAgPSBTc2R0UGFyc2VyTGliDQo+ID4+ICsgIEZJTEVfR1VJRCAg ICAgID0gQkMyRkY1MzgtOEZFQi00OEUzLTkyRDEtRUNBMDFCMjc3QjJDDQo+ID4+ICsgIFZFUlNJ T05fU1RSSU5HID0gMS4wDQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+ PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+PiArICBDT05TVFJVQ1RP UiAgICA9IFNzZHRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICA9 IFNzZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tTb3VyY2VzXQ0KPiA+PiAr ICBTc2R0UGFyc2VyLmMNCj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+PiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPj4gKyAgTWRlTW9k dWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0K PiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hz ZHRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u OWI5ZjMxNGI3NDhkNDI4MWRjYzU2DQo+IGQ3MDc3OThlNmViMWMyZjcwMzkNCj4gPj4gLS0tIC9k ZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci5jDQo+ID4+IEBAIC0wLDAgKzEsMTk4 IEBADQo+ID4+ICsvKioNCj4gPj4gKyAgWFNEVCB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiAr ICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVu Y2Uocyk6DQo+ID4+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNl cHRlbWJlciAyMDE3DQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5 U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ PiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4g Pj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBY U0RUIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBYc2R0 UGFyc2VyW10gPSB7DQo+ID4+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pDQo+ ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICtDT05TVCBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZP KiBDT05TVA0KPiA+PiArRUZJQVBJDQo+ID4+ICtHZXRBY3BpWHNkdEhlYWRlckluZm8gKA0KPiA+ PiArICBWT0lEDQo+ID4+ICspDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiAmQWNwaUhkckluZm87 DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQ SSBYU0RUIHRhYmxlDQo+ID4+ICsgIGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZh bGlkYXRpb24gb2YgdGhlIFhTRFQgdGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0g VHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5n dGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlz aW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ ID4+ICtFRklBUEkNCj4gPj4gK1BhcnNlQWNwaVhzZHQgKA0KPiA+PiArICBJTiBCT09MRUFOIFRy YWNlLA0KPiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQo+ID4+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPj4gKyAg KQ0KPiA+PiArew0KPiA+PiArICBVSU5UMzIgICAgICAgIE9mZnNldDsNCj4gPj4gKyAgVUlOVDMy ICAgICAgICBUYWJsZU9mZnNldDsNCj4gPj4gKyAgVUlOVDY0KiAgICAgICBUYWJsZVBvaW50ZXI7 DQo+ID4+ICsgIFVJTlROICAgICAgICAgRW50cnlJbmRleDsNCj4gPj4gKyAgQ0hBUjE2ICAgICAg ICBCdWZmZXJbMzJdOw0KPiA+PiArDQo+ID4+ICsgIC8vIFBhcnNlIHRoZSBBQ1BJIGhlYWRlciB0 byBnZXQgdGhlIGxlbmd0aA0KPiA+PiArICBQYXJzZUFjcGkgKA0KPiA+PiArICAgIEZBTFNFLA0K PiA+PiArICAgIDAsDQo+ID4+ICsgICAgIlhTRFQiLA0KPiA+PiArICAgIFB0ciwNCj4gPj4gKyAg ICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQo+ID4+ICsgICAgUEFSU0VSX1BBUkFN UyAoWHNkdFBhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiArDQo+ID4+ICsgIE9mZnNldCA9IFBh cnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAgVHJhY2UsDQo+ID4+ICsgICAgICAgICAgICAg MCwNCj4gPj4gKyAgICAgICAgICAgICAiWFNEVCIsDQo+ID4+ICsgICAgICAgICAgICAgUHRyLA0K PiA+PiArICAgICAgICAgICAgICpBY3BpSGRySW5mby5MZW5ndGgsDQo+ID4+ICsgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoWHNkdFBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICApOw0KPiA+ PiArDQo+ID4+ICsgIFRhYmxlT2Zmc2V0ID0gT2Zmc2V0Ow0KPiA+PiArDQo+ID4+ICsgIGlmIChU cmFjZSkgew0KPiA+PiArICAgIEVudHJ5SW5kZXggPSAwOw0KPiA+PiArICAgIFRhYmxlUG9pbnRl ciA9IChVSU5UNjQqKShQdHIgKyBUYWJsZU9mZnNldCk7DQo+ID4+ICsgICAgd2hpbGUgKE9mZnNl dCA8ICgqQWNwaUhkckluZm8uTGVuZ3RoKSkgew0KPiA+PiArICAgICAgQ09OU1QgVUlOVDMyKiBT aWduYXR1cmU7DQo+ID4+ICsgICAgICBDT05TVCBVSU5UMzIqIExlbmd0aDsNCj4gPj4gKyAgICAg IENPTlNUIFVJTlQ4KiAgUmV2aXNpb247DQo+ID4+ICsNCj4gPj4gKyAgICAgIGlmICgoVUlOVDY0 KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgVUlOVDgq ICAgICAgUHRyOw0KPiA+PiArDQo+ID4+ICsgICAgICAgIFBhcnNlQWNwaUhlYWRlciAoDQo+ID4+ ICsgICAgICAgICAgKFVJTlQ4KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpLA0KPiA+PiArICAgICAg ICAgICZTaWduYXR1cmUsDQo+ID4+ICsgICAgICAgICAgJkxlbmd0aCwNCj4gPj4gKyAgICAgICAg ICAmUmV2aXNpb24NCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArDQo+ID4+ICsgICAgICAgIFB0 ciA9IChVSU5UOCopU2lnbmF0dXJlOw0KPiA+PiArDQo+ID4+ICsgICAgICAgIFVuaWNvZGVTUHJp bnQgKA0KPiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICBzaXplb2YgKEJ1 ZmZlciksDQo+ID4+ICsgICAgICAgICAgTCJFbnRyeVslZF0gLSAlYyVjJWMlYyIsDQo+ID4+ICsg ICAgICAgICAgRW50cnlJbmRleCsrLA0KPiA+PiArICAgICAgICAgIFB0clswXSwNCj4gPj4gKyAg ICAgICAgICBQdHJbMV0sDQo+ID4+ICsgICAgICAgICAgUHRyWzJdLA0KPiA+PiArICAgICAgICAg IFB0clszXQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICB9IGVsc2Ugew0KPiA+PiAr ICAgICAgICBVbmljb2RlU1ByaW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsg ICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+PiArICAgICAgICAgIEwiRW50cnlbJWRdIiwN Cj4gPj4gKyAgICAgICAgICBFbnRyeUluZGV4KysNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiAr ICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICBQcmludEZpZWxkTmFtZSAoMiwgQnVmZmVyKTsN Cj4gPj4gKyAgICAgIFByaW50IChMIjB4JWx4XG4iLCAqVGFibGVQb2ludGVyKTsNCj4gPj4gKw0K PiA+PiArICAgICAgLy8gVmFsaWRhdGUgdGhlIHRhYmxlIHBvaW50ZXJzIGFyZSBub3QgTlVMTA0K PiA+PiArICAgICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9pbnRlcikgPT0gTlVMTCkg ew0KPiA+PiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgICBQ cmludCAoDQo+ID4+ICsgICAgICAgICAgTCJFUlJPUjogSW52YWxpZCB0YWJsZSBlbnRyeSBhdCAw eCVseCwgdGFibGUgYWRkcmVzcyBpcyAweCVseFxuIiwNCj4gPj4gKyAgICAgICAgICBUYWJsZVBv aW50ZXIsDQo+ID4+ICsgICAgICAgICAgKlRhYmxlUG9pbnRlcg0KPiA+PiArICAgICAgICAgICk7 DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgICBPZmZzZXQgKz0gc2l6ZW9mIChVSU5UNjQpOw0K PiA+PiArICAgICAgVGFibGVQb2ludGVyKys7DQo+ID4+ICsgICAgfSAvLyB3aGlsZQ0KPiA+PiAr ICB9DQo+ID4+ICsNCj4gPj4gKyAgLy8gUHJvY2VzcyB0aGUgdGFibGVzDQo+ID4+ICsgIE9mZnNl dCA9IFRhYmxlT2Zmc2V0Ow0KPiA+PiArICBUYWJsZVBvaW50ZXIgPSAoVUlOVDY0KikoUHRyICsg VGFibGVPZmZzZXQpOw0KPiA+PiArICB3aGlsZSAoT2Zmc2V0IDwgKCpBY3BpSGRySW5mby5MZW5n dGgpKSB7DQo+ID4+ICsgICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9pbnRlcikgIT0g TlVMTCkgew0KPiA+PiArICAgICAgUHJvY2Vzc0FjcGlUYWJsZSAoKFVJTlQ4KikoVUlOVE4pKCpU YWJsZVBvaW50ZXIpKTsNCj4gPj4gKyAgICB9DQo+ID4+ICsgICAgT2Zmc2V0ICs9IHNpemVvZiAo VUlOVDY0KTsNCj4gPj4gKyAgICBUYWJsZVBvaW50ZXIrKzsNCj4gPj4gKyAgfSAvLyB3aGlsZQ0K PiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPj4gKw0K PiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdl Lg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3Rl bSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RB UlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPj4gKyAg QHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1hzZHRQYXJzZXJMaWJDb25zdHJ1 Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VI YW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVt VGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIg KA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFC TEVfU0lHTkFUVVJFLA0KPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlYc2R0DQo+ID4+ICsgICAg ICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJz ZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxl IHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVy IHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwg RUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+ PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArWHNkdFBhcnNlckxp YkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAg IEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNU IFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERlcmVnaXN0 ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJ UFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlckxpYi5pDQo+IG5mDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXJM aWIuaQ0KPiBuZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjlhMDU4MzY0MDU2Mzc1NTIw MWMNCj4gMDg5YWEyMDcwM2E4YjJjN2YwNA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0K PiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv WHNkdC9Yc2R0UGFyc2VyTGliLmkNCj4gbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiAr IyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3Ry aWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0 DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw DQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAg SU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gWHNk dFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IEE1N0VEN0EyLTRDRDYtNDIzOS05 QTRELUY3RjBEQkRDRkNGQQ0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBN T0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxM fERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBYc2R0UGFyc2VyTGliQ29uc3Ry dWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBYc2R0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0K PiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgWHNkdFBhcnNlci5jDQo+ID4+ICsNCj4g Pj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQ a2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1h bmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuYw0KPiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZA0KPiBMaWIuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODgwMzEwZThm Y2UzNDcxZWM1MGINCj4gODVkNmZhYjk5NWFhMWM5N2FlNQ0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuYw0KPiA+PiBAQCAtMCwwICsxLDEwNiBA QA0KPiA+PiArLyoqDQo+ID4+ICsgIE1haW4gZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBjb21t YW5kIGZ1bmN0aW9uLg0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4gKyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUN Cj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEd1aWQvU2hlbGxMaWJIaWlH dWlkLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9IaWlMaWIuaD4NCj4gPj4gKyNpbmNsdWRl IDxMaWJyYXJ5L1NoZWxsQ29tbWFuZExpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUxpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGli Lmg+DQo+ID4+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+PiArI2luY2x1ZGUgIkFjcGlWaWV3Lmgi DQo+ID4+ICsjaW5jbHVkZSAiVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmgiDQo+ID4+ICsN Cj4gPj4gK0NPTlNUIENIQVIxNiBnU2hlbGxBY3BpVmlld0ZpbGVOYW1lW10gPSBMIlNoZWxsQ29t bWFuZCI7DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICBSZXR1cm4gdGhlIGZpbGUgbmFtZSBv ZiB0aGUgaGVscCB0ZXh0IGZpbGUgaWYgbm90IHVzaW5nIEhJSS4NCj4gPj4gKw0KPiA+PiArICBA cmV0dXJuIFRoZSBzdHJpbmcgcG9pbnRlciB0byB0aGUgZmlsZSBuYW1lLg0KPiA+PiArKi8NCj4g Pj4gK0NPTlNUIENIQVIxNioNCj4gPj4gK0VGSUFQSQ0KPiA+PiArU2hlbGxDb21tYW5kR2V0TWFu RmlsZU5hbWVBY3BpVmlldyAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+ PiArICByZXR1cm4gZ1NoZWxsQWNwaVZpZXdGaWxlTmFtZTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+ PiArLyoqDQo+ID4+ICsgIENvbnN0cnVjdG9yIGZvciB0aGUgU2hlbGwgQWNwaVZpZXcgQ29tbWFu ZCBsaWJyYXJ5Lg0KPiA+PiArDQo+ID4+ICsgIEluc3RhbGwgdGhlIGhhbmRsZXJzIGZvciBhY3Bp dmlldyBVRUZJIFNoZWxsIGNvbW1hbmQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIEltYWdlSGFu ZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4gPj4gKyAg QHBhcmFtIFN5c3RlbVRhYmxlICAgICAgICAgICAgVGhlIEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRl ci4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgU2hl bGwgY29tbWFuZCBoYW5kbGVycyB3ZXJlDQo+IGluc3RhbGxlZA0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0RF VklDRV9FUlJPUiAgICAgIEhpaSBwYWNrYWdlIGZhaWxlZCB0byBpbnN0YWxsLg0KPiA+PiArKi8N Cj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArU2hlbGxBY3BpVmlld0NvbW1h bmRMaWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFu ZGxlLA0KPiA+PiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4gPj4gKyAg KQ0KPiA+PiArew0KPiA+PiArICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ID4+ ICsNCj4gPj4gKyAgLy8gQ2hlY2sgU2hlbGwgUHJvZmlsZSBEZWJ1ZzEgYml0IG9mIHRoZSBwcm9m aWxlcyBtYXNrDQo+ID4+ICsgIGlmICgoRml4ZWRQY2RHZXQ4IChQY2RTaGVsbFByb2ZpbGVNYXNr KSAmIEJJVDEpID09IDApIHsNCj4gPj4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ICsg IH0NCj4gPj4gKw0KPiA+PiArICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IEhpaUFkZFBhY2th Z2VzICgNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnU2hlbGxBY3BpVmll d0hpaUd1aWQsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSW1hZ2VIYW5k bGUsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWJTdHJpbmdzLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPj4gKyAgaWYg KGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlID09IE5VTEwpIHsNCj4gPj4gKyAgICByZXR1cm4gRUZJ X0RFVklDRV9FUlJPUjsNCj4gPj4gKyAgfQ0KPiA+PiArICAvLyBJbnN0YWxsIG91ciBTaGVsbCBj b21tYW5kIGhhbmRsZXINCj4gPj4gKyAgU2hlbGxDb21tYW5kUmVnaXN0ZXJDb21tYW5kTmFtZSAo DQo+ID4+ICsgICAgTCJhY3BpdmlldyIsDQo+ID4+ICsgICAgU2hlbGxDb21tYW5kUnVuQWNwaVZp ZXcsDQo+ID4+ICsgICAgU2hlbGxDb21tYW5kR2V0TWFuRmlsZU5hbWVBY3BpVmlldywNCj4gPj4g KyAgICAwLA0KPiA+PiArICAgIEwiYWNwaXZpZXciLA0KPiA+PiArICAgIFRSVUUsDQo+ID4+ICsg ICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ID4+ICsgICAgU1RSSU5HX1RPS0VOIChTVFJf R0VUX0hFTFBfQUNQSVZJRVcpDQo+ID4+ICsgICAgKTsNCj4gPj4gKw0KPiA+PiArICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICBEZXN0cnVj dG9yIGZvciB0aGUgbGlicmFyeS4gZnJlZSBhbnkgcmVzb3VyY2VzLg0KPiA+PiArDQo+ID4+ICsg IEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHBy b2Nlc3MuDQo+ID4+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkgU3lz dGVtIFRhYmxlIHBvaW50ZXIuDQo+ID4+ICsqLw0KPiA+PiArRUZJX1NUQVRVUw0KPiA+PiArRUZJ QVBJDQo+ID4+ICtTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJ TiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gRUZJX1NZU1RFTV9U QUJMRSAgKlN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgaWYgKGdTaGVs bEFjcGlWaWV3SGlpSGFuZGxlICE9IE5VTEwpIHsNCj4gPj4gKyAgICBIaWlSZW1vdmVQYWNrYWdl cyAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUpOw0KPiA+PiArICB9DQo+ID4+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0K PiBMaWIuaA0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuaA0KPiA+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi41OWM4ZTIxNTQ0ZDY4MjlhYzg3MjkNCj4gNThmNmI4NDM1OGUxZjkxYjAyZg0KPiA+PiAt LS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuaA0KPiA+PiBA QCAtMCwwICsxLDMyIEBADQo+ID4+ICsvKioNCj4gPj4gKyAgSGVhZGVyIGZpbGUgZm9yICdhY3Bp dmlldycgU2hlbGwgY29tbWFuZCBmdW5jdGlvbnMuDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0 IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt bGljZW5zZS5waHANCj4gPj4gKw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lU SE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyoqLw0KPiA+PiArDQo+ID4+ICsjaWZuZGVmIFVF RklfU0hFTExfQUNQSVZJRVdfQ09NTUFORF9MSUJfSF8NCj4gPj4gKyNkZWZpbmUgVUVGSV9TSEVM TF9BQ1BJVklFV19DT01NQU5EX0xJQl9IXw0KPiA+PiArDQo+ID4+ICtleHRlcm4gRUZJX0hJSV9I QU5ETEUgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGU7DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiAr ICBGdW5jdGlvbiBmb3IgJ2FjcGl2aWV3JyBjb21tYW5kLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bVtpbl0gSW1hZ2VIYW5kbGUgIEhhbmRsZSB0byB0aGUgSW1hZ2UgKE5VTEwgaWYgSW50ZXJuYWwp Lg0KPiA+PiArICBAcGFyYW1baW5dIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUgKE5VTEwgaWYgSW50ZXJuYWwpLg0KPiA+PiArKi8NCj4gPj4gK1NIRUxMX1NUQVRVUw0K PiA+PiArRUZJQVBJDQo+ID4+ICtTaGVsbENvbW1hbmRSdW5BY3BpVmlldyAoDQo+ID4+ICsgIElO IEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiBFRklfU1lTVEVNX1RB QkxFICAqU3lzdGVtVGFibGUNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArI2VuZGlmIC8vIFVF RklfU0hFTExfQUNQSVZJRVdfQ09NTUFORF9MSUJfSF8NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZA0KPiBMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kDQo+IExpYi5pbmYNCj4gPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUzYjI4OThlMWFlNmRkYmM4YzdjDQo+IDBhMjkzMTJlNjAy YWIwNTQzYTMNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmQN Cj4gTGliLmluZg0KPiA+PiBAQCAtMCwwICsxLDYwIEBADQo+ID4+ICsjIyAgQGZpbGUNCj4gPj4g KyMgUHJvdmlkZXMgU2hlbGwgJ2FjcGl2aWV3JyBjb21tYW5kIGZ1bmN0aW9ucw0KPiA+PiArIw0K PiA+PiArIyBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vu c2UNCj4gPj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArIyAgVEhFIFBS T0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIN Cj4gQkFTSVMsDQo+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArIw0KPiA+ PiArIw0KPiA+PiArIyMNCj4gPj4gKw0KPiA+PiArW0RlZmluZXNdDQo+ID4+ICsgIElORl9WRVJT SU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDYNCj4gPj4gKyAgQkFTRV9OQU1FICAg ICAgICAgICAgICAgICAgICAgID0gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4+ICsg IEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9DQo+IEZCNUIzMDVFLTg0RjUtNDYxRi05 NDBELTgyRDM0NTc1N0FGQQ0KPiA+PiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAg PSBVRUZJX0RSSVZFUg0KPiA+PiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAx LjANCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0NCj4gU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWJ8VUVGSV9BUFBMSUNBVElPTiBVRUZJX0RSSVZFUg0KPiBEWEVfUlVOVElN RV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgICAgICAgICAgICAgICAgID0NCj4gU2hl bGxBY3BpVmlld0NvbW1hbmRMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICAg ICAgICAgICAgICAgICAgPQ0KPiBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3INCj4g Pj4gKw0KPiA+PiArW1NvdXJjZXMuY29tbW9uXQ0KPiA+PiArICBVZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIudW5pDQo+ID4+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5jDQo+ID4+ ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQo+ID4+ICsgIEFjcGlQYXJzZXIuYw0K PiA+PiArICBBY3BpVGFibGVQYXJzZXIuYw0KPiA+PiArICBBY3BpVmlldy5jDQo+ID4+ICsNCj4g Pj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQ a2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxp Yg0KPiA+PiArICBCYXNlTGliDQo+ID4+ICsgIEJhc2VNZW1vcnlMaWINCj4gPj4gKyAgRGVidWdM aWINCj4gPj4gKyAgU2hlbGxDb21tYW5kTGliDQo+ID4+ICsgIFNoZWxsTGliDQo+ID4+ICsgIFVl ZmlMaWINCj4gPj4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ID4+ICsgIFVlZmlC b290U2VydmljZXNUYWJsZUxpYg0KPiA+PiArICBQY2RMaWINCj4gPj4gKyAgSGlpTGliDQo+ID4+ ICsgIFByaW50TGliDQo+ID4+ICsgIEZpbGVIYW5kbGVMaWINCj4gPj4gKw0KPiA+PiArDQo+ID4+ ICtbRml4ZWRQY2RdDQo+ID4+ICsgIGdFZmlTaGVsbFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxs UHJvZmlsZU1hc2sgIyMgQ09OU1VNRVMNCj4gPj4gKw0KPiA+PiArW0d1aWRzXQ0KPiA+PiArICBn U2hlbGxBY3BpVmlld0hpaUd1aWQgICAgICAgICAgICMjIENPTlNVTUVTICMjIEhJSQ0KPiA+PiAr ICBnRWZpQWNwaVRhYmxlR3VpZCAgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUyAj Iw0KPiBTeXN0ZW1UYWJsZQ0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kDQo+IExp Yi51bmkNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmQNCj4gTGliLnVuaQ0KPiA+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi4xYzRkNjZlMWZmNTA3MDU0ZDRhYTQyDQo+IGJkNDdiZmFlODgyNGMyMThlNg0KPiA+PiAt LS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIudW5pDQo+ID4+ IEBAIC0wLDAgKzEsMTI3IEBADQo+ID4+ICsvLyAvKioNCj4gPj4gKy8vDQo+ID4+ICsvLyBDb3B5 cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4+ICsvLyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ID4+ICsvLyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKy8vIHdoaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArLy8NCj4gPj4gKy8vIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0K PiA+PiArLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKy8vDQo+ID4+ICsvLyBNb2R1 bGUgTmFtZToNCj4gPj4gKy8vDQo+ID4+ICsvLyBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIu dW5pDQo+ID4+ICsvLw0KPiA+PiArLy8gQWJzdHJhY3Q6DQo+ID4+ICsvLw0KPiA+PiArLy8gU3Ry aW5nIGRlZmluaXRpb25zIGZvciBVRUZJIFNoZWxsIGFjcGl2aWV3IGNvbW1hbmQNCj4gPj4gKy8v DQo+ID4+ICsvLw0KPiA+PiArLy8gKi8NCj4gPj4gKw0KPiA+PiArLz0jDQo+ID4+ICsNCj4gPj4g KyNsYW5nZGVmICAgZW4tVVMgImVuZ2xpc2giDQo+ID4+ICsNCj4gPj4gKyNzdHJpbmcgU1RSX0dF Tl9QUk9CTEVNICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjoNCj4gVW5rbm93biBm bGFnIC0gJyVIJXMlTidcclxuIg0KPiA+PiArI3N0cmluZyBTVFJfR0VOX05PX1ZBTFVFICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOg0KPiBNaXNzaW5nIGFyZ3VtZW50IGZvciBmbGFn IC0gJyVIJXMlTidcclxuIg0KPiA+PiArI3N0cmluZyBTVFJfR0VOX1RPT19NQU5ZICAgICAgICAg ICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBUb28NCj4gbWFueSBhcmd1bWVudHMuXHJcbiINCj4g Pj4gKyNzdHJpbmcgU1RSX0dFTl9NSVNTSU5HX09QVElPTiAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVI JXMlTjoNCj4gTWlzc2luZyBvcHRpb24gJyVIJXMlTicgcmVxdWlyZWQgYnkgZmxhZyAtICclSCVz JU4nXHJcbiINCj4gPj4gKyNzdHJpbmcgU1RSX0dFTl9SRUFET05MWV9NRURJQSAgICAjbGFuZ3Vh Z2UgZW4tVVMgIiVIJXMlTjoNCj4gVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBjdXJyZW50IGRpcmVj dG9yeSwgY2hlY2sgaWYgbWVkaWEgaXMgd3JpdGFibGUuXHJcbiINCj4gPj4gKw0KPiA+PiArI3N0 cmluZyBTVFJfR0VUX0hFTFBfQUNQSVZJRVcgICAjbGFuZ3VhZ2UgZW4tVVMgIiINCj4gPj4gKyIu VEggYWNwaXZpZXcgMCAiRGlzcGxheSBBQ1BJIGluZm9ybWF0aW9uLiJcclxuIg0KPiA+PiArIi5T SCBOQU1FXHJcbiINCj4gPj4gKyJEaXNwbGF5IEFDUEkgVGFibGUgaW5mb3JtYXRpb24uXHJcbiIN Cj4gPj4gKyIuU0ggU1lOT1BTSVNcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIkFDUElWSUVX IFtbLT9dIHwgW1stbF0gfCBbLXMgQWNwaVRhYmxlIFstZF1dXSBbLWNdIFstdl0gWy1oIEhpZ2hs aWdodF1dXHJcbiINCj4gPj4gKyIgXHJcbiINCj4gPj4gKyIuU0ggT1BUSU9OU1xyXG4iDQo+ID4+ ICsiIFxyXG4iDQo+ID4+ICsiICAtbCAtIERpc3BsYXkgbGlzdCBvZiBpbnN0YWxsZWQgQUNQSSBU YWJsZXMuXHJcbiINCj4gPj4gKyIgIC1zIC0gRGlzcGxheSBvbmx5IHRoZSBzcGVjaWZpZWQgQWNw aVRhYmxlIHR5cGUuXHJcbiINCj4gPj4gKyIgICAgICAgICBBY3BpVGFibGUgICAgOiBUaGUgcmVx dWlyZWQgQUNQSSBUYWJsZSB0eXBlLlxyXG4iDQo+ID4+ICsiICAtZCAtIEdlbmVyYXRlIGEgYmlu YXJ5IGZpbGUgZHVtcCBvZiB0aGUgc3BlY2lmaWVkIEFjcGlUYWJsZS5cclxuIg0KPiA+PiArIiAg LWMgLSBDb25zaXN0ZW5jeSBjaGVja2luZyAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiA+ PiArIiAgLXYgLSBEaXNwbGF5IHZlcmJvc2UgZGF0YSAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxu Ig0KPiA+PiArIiAgLWggLSBFbmFibGUvRGlzYWJsZSBDb2xvdXIgSGlnaGxpZ2h0aW5nLlxyXG4i DQo+ID4+ICsiICAgICAgICAgSGlnaGxpZ2h0ICAgIDogVFJVRS9PTiBlbmFibGVzIGhpZ2hsaWdo dGluZztcclxuIg0KPiA+PiArIiAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFL09GRiAoZGVm YXVsdCkgZGlzYWJsZXMgaGlnaGxpZ2h0aW5nLlxyXG4iDQo+ID4+ICsiICAtPyAtIFNob3cgaGVs cC5cclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIi5TSCBERVNDUklQVElPTlxyXG4iDQo+ID4+ ICsiIFxyXG4iDQo+ID4+ICsiICBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhh bWluYXRpb24gb2YgQUNQSSB0YWJsZSB2YWx1ZXMgZnJvbQ0KPiB0aGVcclxuIg0KPiA+PiArIiAg VUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0aCBpbnZlc3RpZ2F0aW9ucywgZXNwZWNpYWxs eSBhdCB0aGF0IHN0YWdlDQo+IHdoZXJlXHJcbiINCj4gPj4gKyIgIHRoZSB0YWJsZXMgYXJlIG5v dCBlbmFibGluZyBhbiBPUyB0byBib290LlxyXG4iDQo+ID4+ICsiICBUaGUgcHJvZ3JhbSBpcyBu b3QgZXhoYXVzdGl2ZSwgYW5kIG9ubHkgZW5jYXBzdWxhdGVzIGRldGFpbGVkDQo+IGtub3dsZWRn ZSBvZiBhXHJcbiINCj4gPj4gKyIgIGxpbWl0ZWQgbnVtYmVyIG9mIHRhYmxlIHR5cGVzLlxyXG4i DQo+ID4+ICsiIFxyXG4iDQo+ID4+ICsiICBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBkaXNwbGF5 IHRoZSBjb250ZW50IG9mIGFsbCB0YWJsZXMgaW5zdGFsbGVkLlxyXG4iDQo+ID4+ICsiICAnS25v d24nIHRhYmxlIHR5cGVzIChsaXN0ZWQgaW4gTk9URVMgYmVsb3cpIHdpbGwgYmUgcGFyc2VkIGFu ZA0KPiBkaXNwbGF5ZWRcclxuIg0KPiA+PiArIiAgd2l0aCBkZXNjcmlwdGlvbnMgYW5kIGZpZWxk IHZhbHVlcy4gIFdoZXJlIGFwcHJvcHJpYXRlIGEgZGVncmVlIG9mDQo+IGNvbnNpc3RlbmN5XHJc biINCj4gPj4gKyIgIGNoZWNraW5nIGlzIGRvbmUgYW5kIGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQg aW4gdGhlIG91dHB1dC5cclxuIg0KPiA+PiArIiAgT3RoZXIgdGFibGUgdHlwZXMgd2lsbCBiZSBk aXNwbGF5ZWQgYXMgYW4gYXJyYXkgb2YgSGV4YWRlY2ltYWwNCj4gYnl0ZXMuXHJcbiINCj4gPj4g KyIgXHJcbiINCj4gPj4gKyIgIFRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLCB0aGUgLXMgYW5kIC1k IG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUNCj4gYVxyXG4iDQo+ID4+ICsiICBiaW5h cnkgZmlsZSBpbWFnZSBvZiBhIHRhYmxlIHRoYXQgY2FuIGJlIGNvcGllZCBlbHNld2hlcmUgZm9y DQo+IGludmVzdGlnYXRpb25cclxuIg0KPiA+PiArIiAgdXNpbmcgdG9vbHMgc3VjaCBhcyB0aG9z ZSBwcm92aWRlZCBieSBhY3BpY2Eub3JnLiAgVGhpcyBpcyBlc3BlY2lhbGx5DQo+IHJlbGV2YW50 XHJcbiINCj4gPj4gKyIgIGZvciBBTUwgdHlwZSB0YWJsZXMgbGlrZSBEU0RUIGFuZCBTU0RULlxy XG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ICsiTk9URVM6XHJcbiINCj4gPj4gKyIgIDEuIFRoZSBB Y3BpVGFibGUgcGFyYW1ldGVyIGNhbiBtYXRjaCBhbnkgaW5zdGFsbGVkIHRhYmxlIHR5cGUuXHJc biINCj4gPj4gKyIgICAgIFRhYmxlcyB3aXRob3V0IHNwZWNpZmljIGhhbmRsaW5nIHdpbGwgYmUg ZGlzcGxheWVkIGFzIGEgcmF3IGhleCBkdW1wDQo+IChvclxyXG4iDQo+ID4+ICsiICAgICBkdW1w ZWQgdG8gYSBmaWxlIGlmIC1kIGlzIHVzZWQpLlxyXG4iDQo+ID4+ICsiICAyLiBGb3JtYXR0ZWQg ZGlzcGxheSBhbmQgY2hlY2tpbmcgaXMgcHJvdmlkZWQgZm9yIHRoZXNlIHNpZ25hdHVyZQ0KPiB0 eXBlczpcclxuIg0KPiA+PiArIiAgICAgICBBUElDICAtIE11bHRpcGxlIEFQSUMgRGVzY3JpcHRp b24gVGFibGUgKE1BRFQpXHJcbiINCj4gPj4gKyIgICAgICAgQkdSVCAgLSBCb290IEdyYXBoaWNz IFJlc291cmNlIFRhYmxlXHJcbiINCj4gPj4gKyIgICAgICAgREJHMiAgLSBEZWJ1ZyBQb3J0IFRh YmxlIDJcclxuIg0KPiA+PiArIiAgICAgICBGQUNQICAtIEZpeGVkIEFDUEkgRGVzY3JpcHRpb24g VGFibGUgKEZBRFQpXHJcbiINCj4gPj4gKyIgICAgICAgR1REVCAgLSBHZW5lcmljIFRpbWVyIERl c2NyaXB0aW9uIFRhYmxlXHJcbiINCj4gPj4gKyIgICAgICAgSU9SVCAgLSBJTyBSZW1hcHBpbmcg VGFibGVcclxuIg0KPiA+PiArIiAgICAgICBNQ0ZHICAtIE1lbW9yeSBNYXBwZWQgQ29uZmlnIFNw YWNlIEJhc2UgQWRkcmVzcyBEZXNjcmlwdGlvbg0KPiBUYWJsZVxyXG4iDQo+ID4+ICsiICAgICAg IFJTRFAgIC0gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlclxyXG4iDQo+ID4+ICsiICAg ICAgIFNMSVQgIC0gU3lzdGVtIExvY2FsaXR5IEluZm9ybWF0aW9uIFRhYmxlXHJcbiINCj4gPj4g KyIgICAgICAgU1BDUiAgLSBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGlyZWN0aW9uIFRhYmxlXHJc biINCj4gPj4gKyIgICAgICAgU1JBVCAgLSBTeXN0ZW0gUmVzb3VyY2UgQWZmaW5pdHkgVGFibGVc clxuIg0KPiA+PiArIiAgICAgICBYU0RUICAtIEV4dGVuZGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBU YWJsZVxyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ICsiLlNIIFNUQU5EQVJEU1xyXG4iDQo+ID4+ ICsiIFxyXG4iDQo+ID4+ICsiICBUYWJsZSBkZXRhaWxzIGNvcnJlc3BvbmQgdG8gdGhvc2UgaW4g J0FkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kDQo+IFBvd2VyXHJcbiINCj4gPj4gKyIgIEludGVy ZmFjZSBTcGVjaWZpY2F0aW9uJyBWZXJzaW9uIDYuMiBFcnJhdGEgQSwgW1NlcHRlbWJlciAyMDE3 XVxyXG4iDQo+ID4+ICsiDQo+IChodHRwOi8vd3d3LnVlZmkub3JnL3NpdGVzL2RlZmF1bHQvZmls ZXMvcmVzb3VyY2VzL0FDUEklMjA2XzJfQV9TZXB0MjkucGRmKQ0KPiBcclxuIg0KPiA+PiArIiBc clxuIg0KPiA+PiArIiAgTk9URTogVGhlIG5hdHVyZSBvZiB0aGUgQUNQSSBzdGFuZGFyZCBtZWFu cyB0aGF0IGFsbW9zdCBhbGwgdGFibGVzIGluIDYuMQ0KPiB3aWxsXHJcbiINCj4gPj4gKyIgICAg ICAgIGJlICdiYWNrd2FyZHMgY29tcGF0aWJsZScgd2l0aCBwcmlvciB2ZXJzaW9uIG9mIHRoZSBz cGVjaWZpY2F0aW9uDQo+IGluXHJcbiINCj4gPj4gKyIgICAgICAgIHRlcm1zIG9mIHN0cnVjdHVy ZSwgc28gZm9ybWF0dGVkIG91dHB1dCBzaG91bGQgYmUgY29ycmVjdC4gIFRoZQ0KPiBtYWluXHJc biINCj4gPj4gKyIgICAgICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHRoYXQgcHJldmlvdXNseSAncmVz ZXJ2ZWQnIGZpZWxkcyB3aWxsIGJlDQo+IHJlcG9ydGVkXHJcbiINCj4gPj4gKyIgICAgICAgIHdp dGggbmV3IG5hbWVzLCB3aGVyZSB0aGV5IGhhdmUgYmVlbiBhZGRlZCBpbiBsYXRlciB2ZXJzaW9u cyBvZg0KPiB0aGVcclxuIg0KPiA+PiArIiAgICAgICAgc3BlY2lmaWNhdGlvbi5cclxuIg0KPiA+ PiArIiBcclxuIg0KPiA+PiArIi5TSCBFWEFNUExFU1xyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ ICsiIFxyXG4iDQo+ID4+ICsiRVhBTVBMRVM6XHJcbiINCj4gPj4gKyIgICogVG8gZGlzcGxheSBh IGxpc3Qgb2YgdGhlIGluc3RhbGxlZCB0YWJsZSB0eXBlczpcclxuIg0KPiA+PiArIiAgICBmczA6 XD4gYWNwaXZpZXcgLWxcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIiAgKiBUbyBwYXJzZSBh bmQgZGlzcGxheSBhIHNwZWNpZmljIHRhYmxlIHR5cGU6XHJcbiINCj4gPj4gKyIgICAgZnMwOlw+ IGFjcGl2aWV3IC1zIEdURFRcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIiAgKiBUbyBzYXZl IGEgYmluYXJ5IGR1bXAgb2YgdGhlIGNvbnRlbnRzIG9mIGEgdGFibGUgdG8gYSBmaWxlXHJcbiIN Cj4gPj4gKyIgICAgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk6XHJcbiINCj4gPj4g KyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIERTRFQgLWRcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+ PiArIiAgKiBUbyBkaXNwbGF5IGNvbnRlbnRzIG9mIGFsbCBBQ1BJIHRhYmxlczpcclxuIg0KPiA+ PiArIiAgICBmczA6XD4gYWNwaXZpZXdcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIi5TSCBS RVRVUk5WQUxVRVNcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIlJFVFVSTiBWQUxVRVM6XHJc biINCj4gPj4gKyIgIFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAgRGF0YSB3YXMgZGlzcGxheWVk IGFzIHJlcXVlc3RlZC5cclxuIg0KPiA+PiArIiAgU0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBB Q1BJIFRhYmxlIHBhcnNpbmcgZmFpbGVkLlxyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ICsNCj4g Pj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL1NoZWxsUGtnLmRlYyBiL1NoZWxsUGtnL1NoZWxsUGtn LmRlYw0KPiA+PiBpbmRleA0KPiAwYzRmNzRmZjQxNzI2YzRhMjhlZDA4Mjg0OWMxYjg2NGIxYzQ4 NzUyLi5jMDkwYWE0ZDA4YmUzYWFkNGQ5YWVkYg0KPiA1NDJjMDEwNTZiY2U0Njk2OSAxMDA2NDQN Cj4gPj4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsrKyBiL1NoZWxsUGtnL1No ZWxsUGtnLmRlYw0KPiA+PiBAQCAtMyw2ICszLDcgQEANCj4gPj4gICAgIw0KPiA+PiAgICAjIChD KSBDb3B5cmlnaHQgMjAxMy0yMDE0IEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55 LA0KPiBMLlAuPEJSPg0KPiA+PiAgICAjIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTgsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4gKyMgQ29weXJpZ2h0 IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+PiAgICAjDQo+ID4+ICAgICMgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUNCj4gYXZhaWxhYmxlIHVuZGVyDQo+ID4+ICAg ICMgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2Nv bXBhbmllcyB0aGlzDQo+IGRpc3RyaWJ1dGlvbi4NCj4gPj4gQEAgLTU2LDcgKzU3LDcgQEAgW0d1 aWRzXQ0KPiA+PiAgICAgIGdTaGVsbE5ldHdvcmsySGlpR3VpZCAgICAgICAgICAgPSB7MHgxNzRi MmI1LCAweGY1MDUsIDB4NGIxMiwNCj4gezB4YWEsIDB4NjAsIDB4NTksIDB4ZGYsIDB4ZjgsIDB4 ZDYsIDB4ZWEsIDB4Mzd9fQ0KPiA+PiAgICAgIGdTaGVsbFRmdHBIaWlHdWlkICAgICAgICAgICAg ICAgPSB7MHg3MzhhOTMxNCwgMHg4MmMxLCAweDQ1OTIsDQo+IHsweDhmLCAweGY3LCAweGMxLCAw eGJkLCAweGYxLCAweGIyLCAweDBlLCAweGQ0fX0NCj4gPj4gICAgICBnU2hlbGxCY2ZnSGlpR3Vp ZCAgICAgICAgICAgICAgID0gezB4NWY1ZjYwNWQsIDB4MTU4MywgMHg0YTJkLA0KPiB7MHhhNiwg MHhiMiwgMHhlYiwgMHgxMiwgMHhkYSwgMHhiNCwgMHhhMiwgMHhiNn19DQo+ID4+IC0NCj4gPj4g KyAgZ1NoZWxsQWNwaVZpZXdIaWlHdWlkICAgICAgICAgICA9IHsweGRhOGNjZGY0LCAweGVkOGYs IDB4NGZmYywgezB4YjUsDQo+IDB4ZWYsIDB4MmUsIDB4ZjUsIDB4NWUsIDB4MjQsIDB4OTMsIDB4 MmF9fQ0KPiA+PiAgICAgICMgRklMRV9HVUlEIGFzIGRlZmluZWQgaW4gU2hlbGxQa2cvQXBwbGlj YXRpb24vU2hlbGwvU2hlbGwuaW5mDQo+ID4+ICAgICAgZ1VlZmlTaGVsbEZpbGVHdWlkICAgICAg ICAgICAgICA9IHsweDdjMDRhNTgzLCAweDllM2UsIDB4NGYxYywNCj4gezB4YWQsIDB4NjUsIDB4 ZTAsIDB4NTIsIDB4NjgsIDB4ZDAsIDB4YjQsIDB4ZDF9fQ0KPiA+Pg0KPiA+Pg0KPiA+DQo+ID4N Cj4gDQo+IA0KPiAtLQ0KPiBUaGFua3MsDQo+IFJheQ0K