Return-Path: Delivered-To: apmail-incubator-empire-db-dev-archive@minotaur.apache.org Received: (qmail 17122 invoked from network); 6 Feb 2011 22:26:05 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 6 Feb 2011 22:26:05 -0000 Received: (qmail 3988 invoked by uid 500); 6 Feb 2011 22:26:05 -0000 Delivered-To: apmail-incubator-empire-db-dev-archive@incubator.apache.org Received: (qmail 3948 invoked by uid 500); 6 Feb 2011 22:26:05 -0000 Mailing-List: contact empire-db-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: empire-db-dev@incubator.apache.org Delivered-To: mailing list empire-db-dev@incubator.apache.org Received: (qmail 3940 invoked by uid 99); 6 Feb 2011 22:26:05 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Feb 2011 22:26:05 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [88.79.172.157] (HELO mail.esteam.de) (88.79.172.157) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Feb 2011 22:26:00 +0000 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: a few improvments for SLF4J logging (EMPIREDB-38) Date: Sun, 6 Feb 2011 23:23:26 +0100 Message-ID: In-Reply-To: <20110202175025.753DD23889D7@eris.apache.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: a few improvments for SLF4J logging (EMPIREDB-38) thread-index: AcvDIVqiGLtic49+QIm5mBK0E4MubQDHbhNA References: <20110202175025.753DD23889D7@eris.apache.org> From: =?utf-8?B?UmFpbmVyIETDtmJlbGU=?= To: SGkgQmVuamFtaW4sDQoNCnRoYW5rcyBhIGxvdCBmb3IgeW91ciB3b3JrIG9uIHRoZSBTTEY0SiBp c3N1ZS4NCkxvb2tzIGxpa2UgdGhpcyB3YXMgcXVpdGUgYSBiaXQgb2Ygd29yayAtIHdlbGwgZG9u ZS4NCg0KSSBoYXZlIGhhZCBhIGxvb2sgYXQgaXQgYW5kIEkgaG9wZSB5b3UgZG9uJ3QgbWluZCB0 aGF0IEkgaGF2ZSBhIGZldyBpZGVhcyBmb3IgaW1wcm92ZW1lbnRzIC0gdGhhdCBJIGhhdmUgYWxy ZWFkeSBjaGVja2VkIGluLg0KRmlyc3QgSSBoYXZlIHJlbW92ZWQgdGhlIHBhcmFtZXRlciAiaW5p dExvZ2dpbmciIGZyb20gWE1MQ29uZmlndXJhdGlvbjppbml0KCkgd2hpY2ggaXMgbm93IG9ic29s ZXRlLg0KQWZ0ZXJ3YXJkcyBJIGhhZCB0byBjaGFuZ2UgYWxsIGNhbGxzIHRvIHRoaXMgZnVuY3Rp b24gZnJvbSB0aGUgb3RoZXIgcHJvamVjdHMuDQoNClRoZW4gSSBmb3VuZCwgdGhhdCBpdCBpcyBw cm9iYWJseSBhIGJldHRlciBpZGVhIHRvIGxlYXZlIHRoZSBsb2c0aiBjb25maWd1cmF0aW9uIGlu IHRoZSBjb25maWcueG1sIGFuZCBzaW1wbHkgdXNlIHRoZSBsb2c0aiBET01Db25maWd1cmF0b3Ig aW4gdGhlIHNhbXBsZXMnIGNvbmZpZyBjbGFzc2VzLg0KSW4gdGhpcyBjYXNlIHdlIGNhbiByZW1v dmUgdGhlIGxvZzRqLnByb3BlcnRpZXMgZmlsZSBhZ2Fpbi4NCkkgcmVtZW1iZXIgaGF2aW5nIHNh aWQgdGhhdCBsb2c0aiBjb25maWd1cmF0aW9uIGNhbiBnbyBpbiBpdHMgb3duIGZpbGUsIGJ1dCBm b3Igb3VyIGRpc3RyaWJ1dGlvbiBJIGZpbmQgaXQgc2ltcGxlciBhbmQgbW9yZSBjb252ZW5pZW50 IHRoaXMgd2F5LiBQZXJzb25hbGx5IEkgcHJlZmVyIGFuIFhNTCBjb25maWd1cmF0aW9uIG92ZXIg YSBwcm9wZXJ0aWVzIGZpbGUgY29uZmlndXJhdGlvbi4gVGhpcyB3YXkgd2Ugc2hvdyBob3cgdG8g ZG8gdGhlIFhNTCBjb25maWd1cmF0aW9uIGJ1dCBsZWF2ZSBpdCB0byBldmVyeW9uZSB0byBkZWNp ZGUgZm9yIHRoZW1zZWx2ZXMuDQoNCkFsc28gSSBmb3VuZCB0aGF0IGxvZ2dpbmcgd2FzIG5vdCBw cm9wZXJseSB3b3JraW5nIHNpbmNlIHlvdSBkaWQgbm90IHNldCB0aGUgZGVwZW5kZW5jeSB0byBz bGY0ai1sb2c0ajEyLg0KSSBoYXZlIGFkZGVkIHRoaXMgYW5kIGFsc28gbW92ZWQgdGhlIHNsZjRq IHZlcnNpb24gc3RyaW5nIHRvIHRoZSBlbXBpcmUtZGItcGFyZW50IHBvbS4NCg0KU28gZmFyIEkg aGF2ZSBvbmx5IGNoYW5nZWQgYW5kIHRlc3RlZCB0aGUgYmFzaWMgYW5kIHRoZSBhZHZhbmNlZCBl eGFtcGxlIChlbXBpcmUtZGItZXhhbXBsZS1iYXNpYyBhbmQgZW1waXJlLWRiLWV4YW1wbGUtYWR2 YW5jZWQpLg0KDQpJZiB5b3UgZG9uJ3QgbWluZCBJIHdpbGwgY2hhbmdlIGFuZCB0ZXN0IHRoZSBv dGhlciBwcm9qZWN0J3MgY29uZmlndXJhdGlvbiBpbiB0aGUgbmV4dCBmZXcgZGF5cy4NClJlZ2Fy ZHMNCg0KUmFpbmVyDQoNCg0KPiBmcm9tOiBiZW5uaXZlbkBhcGFjaGUub3JnIFttYWlsdG86YmVu bml2ZW5AYXBhY2hlLm9yZ10NCj4gdG86IGVtcGlyZS1kYi1jb21taXRzQGluY3ViYXRvci5hcGFj aGUub3JnDQo+IHJlOiBzdm4gY29tbWl0OiByMTA2NjU0NyBbMS8yXSAtIGluIC9pbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rOiAuLw0KPiBlbXBpcmUtZGItY29kZWdlbi9zcmMvbWFpbi9qYXZhL29y Zy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vIGVtcGlyZS0NCj4gZGItY29kZWdlbi9zcmMvbWFp bi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vdXRpbC8gZW1waXJlLWRiLQ0KPiBj b2RlZ2VuL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvY29kZWdlbi4uLg0KPiAN Cj4gQXV0aG9yOiBiZW5uaXZlbg0KPiBEYXRlOiBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4g TmV3IFJldmlzaW9uOiAxMDY2NTQ3DQo+IA0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92 aWV3dmM/cmV2PTEwNjY1NDcmdmlldz1yZXYNCj4gTG9nOg0KPiBUaGlzIGNvbW1pdCBpcyBmb3Ig RU1QSVJFREItMzggYW5kIEVNUElSRS03NzoNCj4gLSBsb2c0aiBhbmQgamNsIGRlcGVuZGVuY2ll cyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIGNvcmUgY29tcG9uZW50cw0KPiAoZW1wcmUtZGIsIGVt cHJlLWRiLXN0cnV0czIsIGVtcGlyZS1kYi1jb2RlZ2VuKQ0KPiAtIGFkZGVkIHNsZjRqIGFzIGxv Z2dpbmcgYXBpIGluIHRoZSBjb3JlIGNvbXBvbmVudHMgYW5kIG1vZGlmaWVkIHRoZQ0KPiBjb2Rl IHRvIGNvbXBseSB3aXRoIHRoZSBzbGY0ai1hcGkNCj4gLSBwcmVzZXJ2ZWQgbG9nNGogYW5kIGpj bCBpbiB0aGUgZXhhbXBsZXMNCj4gDQo+IHN0aWxsIHRvIGRvOg0KPiAtIGNoZWNrIGlmIGxvZ2dp bmcgaXMgY29uZmlndXJlZCBwcm9wZXJseSBpbiB0aGUgZXhhbXBsZXMNCj4gLSB1c2UgcGFyYW1l dGVyaXplZCBsb2dnaW5nIGluc3RlYWQgb2YgIi50b1N0cmluZygpIg0KPiANCj4gQWRkZWQ6DQo+ ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUt ZGItZXhhbXBsZS0NCj4gYWR2YW5jZWQvbG9nNGoucHJvcGVydGllcw0KPiAgICAgaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+ IGJhc2ljL2xvZzRqLnByb3BlcnRpZXMNCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsv ZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBjeGYvbG9nNGoucHJvcGVy dGllcw0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMv ZW1waXJlLWRiLWV4YW1wbGUtDQo+IHN0cnV0czItY3hmL3NyYy9tYWluL3dlYmFwcC9XRUItSU5G L2xvZzRqLnByb3BlcnRpZXMNCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJl LWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL3dlYmFw cC9XRUItSU5GL2xvZzRqLnByb3BlcnRpZXMNCj4gTW9kaWZpZWQ6DQo+ICAgICBpbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9h cGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vQ29kZUdlbkFwcC5qYXZhDQo+ICAgICBpbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9h cGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vQ29kZUdlblBhcnNlci5qYXZhDQo+ICAgICBpbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29y Zy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vQ29kZUdlbldyaXRlci5qYXZhDQo+ICAgICBpbmN1 YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZh L29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vV3JpdGVyU2VydmljZS5qYXZhDQo+ICAgICBp bmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9q YXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vdXRpbC9EQlV0aWwuamF2YQ0KPiAgICAg aW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGNvZGVnZW4vc3JjL21haW4v amF2YS9vcmcvYXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL3V0aWwvRmlsZVV0aWxzLmphdmENCj4g ICAgIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBjb2RlZ2VuL3NyYy90 ZXN0L2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvY29kZWdlbi91dGlsL0RCVXRpbFRlc3QuamF2 YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1w aXJlLWRiLWV4YW1wbGUtDQo+IGFkdmFuY2VkL2NvbmZpZy54bWwNCj4gICAgIGluY3ViYXRvci9l bXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBh ZHZhbmNlZC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3NhbXBsZXMvZGIvYWR2YW5j ZWQvU2FtcGxlQWR2Qw0KPiBvbmZpZy5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3Ry dW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gYmFzaWMvY29uZmln LnhtbA0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMv ZW1waXJlLWRiLWV4YW1wbGUtDQo+IGJhc2ljL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvc2FtcGxlcy9kYi9TYW1wbGVDb25maWcuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1k Yi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IGN4Zi9jb25m aWcueG1sDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxl cy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gY3hmL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvc2FtcGxlcy9jeGYvd3NzYW1wbGUvc2VydmVyL1NhbXBsZUMNCj4gb25maWcuamF2YQ0KPiAg ICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRi LWV4YW1wbGUtDQo+IHN0cnV0czItY3hmL3BvbS54bWwNCj4gICAgIGluY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMy LQ0KPiBjeGYvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYnNhbXBs ZS93ZWIvU2FtcGxlQ29uZmlnLg0KPiBqYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3Ry dW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gc3RydXRzMi1jeGYv c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZmlnLnhtbA0KPiAgICAgaW5jdWJhdG9yL2VtcGly ZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IHN0cnV0 czIvcG9tLnhtbA0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhh bXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBh Y2hlL2VtcGlyZS9zdHJ1dHMyL3dlYnNhbXBsZS93ZWIvU2FtcGxlQ29uDQo+IGZpZy5qYXZhDQo+ ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUt ZGItZXhhbXBsZS0NCj4gc3RydXRzMi9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25maWcueG1s DQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9wb20u eG1sDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1tYXZlbi1wbHVn aW4vcG9tLnhtbA0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+ IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbi9X ZWJBY3Rpb24uamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGIt DQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlv bnN1cHBvcnQvQWN0aW9uQmFzDQo+IGUuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90 cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGly ZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvQWN0aW9uUHJvDQo+IHBlcnR5U3VwcG9ydC5qYXZhDQo+ ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMv bWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvYWN0aW9uc3VwcG9ydC9Gb3JtQWN0 aW8NCj4gblN1cHBvcnQuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBp cmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMy L2FjdGlvbnN1cHBvcnQvTGlzdEFjdGlvDQo+IG5TdXBwb3J0LmphdmENCj4gICAgIGluY3ViYXRv ci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3Jn L2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0L1JlYWRlckxpcw0KPiB0QWN0aW9u U3VwcG9ydC5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0N Cj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvYWN0aW9u c3VwcG9ydC9SZWNvcmRBY3QNCj4gaW9uU3VwcG9ydC5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFj aGUvZW1waXJlL3N0cnV0czIvYWN0aW9uc3VwcG9ydC9UZXh0UHJvdmkNCj4gZGVyQWN0aW9uU3Vw cG9ydC5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4g c3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvaHRtbC9IdG1s VGFnRGljdGlvbmFyeS4NCj4gamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9l bXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1 dHMyL2h0bWwvSHRtbFdyaXRlci5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5r L2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0 cnV0czIvaW50ZXJjZXB0b3JzL0FjdGlvbkFjY2UNCj4gc3NJbnRlcmNlcHRvci5qYXZhDQo+ICAg ICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFp bi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvaW50ZXJjZXB0b3JzL0ludGVyY2VwdG8N Cj4gclN1cHBvcnQuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUt ZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pz cC9jb21wb25lbnRzL0FuY2hvckNvDQo+IG1wb25lbnQuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBh Y2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRzL0NhbGVuZGFyDQo+IENvbXBvbmVudC5q YXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRz Mi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMv Q29udHJvbEMNCj4gb21wb25lbnQuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVu ay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9z dHJ1dHMyL2pzcC9jb21wb25lbnRzL0RhdGFWYWx1DQo+IGVDb21wb25lbnQuamF2YQ0KPiAgICAg aW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4v amF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRzL0Zvcm1Db21wDQo+ IG9uZW50LmphdmENCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0K PiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvY29t cG9uZW50cy9pbmZvL0NhbA0KPiBlbmRhckluZm8uamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGly ZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hl L2VtcGlyZS9zdHJ1dHMyL2pzcC9jb250cm9scy9JbnB1dENvbnRyDQo+IG9sLmphdmENCj4gICAg IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWlu L2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvdGFncy9FbXBpcmVUYWdTdXBwbw0K PiBydC5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4g c3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3RhZ3Mv RmxleERpdlRhZy5qYXYNCj4gYQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBp cmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMy L2pzcC90YWdzL0Zsb2F0Q2xlYXJUYWcuDQo+IGphdmENCj4gICAgIGluY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9l bXBpcmUvc3RydXRzMi9qc3AvdGFncy9JdGVtTGlzdFRhZy5qYQ0KPiB2YQ0KPiAgICAgaW5jdWJh dG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9v cmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVQb3J0bGV0RGlzcGF0DQo+IGNoZXIu amF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0 czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVQb3J0 bGV0UmVzdWx0DQo+IC5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGly ZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIv d2ViL0VtcGlyZVN0cnV0c0Rpc3BhdGMNCj4gaGVyLmphdmENCj4gICAgIGluY3ViYXRvci9lbXBp cmUtZGIvdHJ1bmsvZW1waXJlLWRiL3BvbS54bWwNCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2NvbW1v bnMvRGF0ZVV0aWxzLmphdmENCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJl LQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2NvbW1vbnMvRXJyb3JPYmpl Y3QuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3Ny Yy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvY29tbW9ucy9FcnJvclR5cGUuamF2YQ0KPiAg ICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEv b3JnL2FwYWNoZS9lbXBpcmUvY29tbW9ucy9PYmplY3RVdGlscy5qYXZhDQo+ICAgICBpbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS0NCj4gZGIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hl L2VtcGlyZS9kYXRhL2JlYW4vQmVhblJlY29yZFByb3h5LmphdmENCj4gICAgIGluY3ViYXRvci9l bXBpcmUtZGIvdHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1w aXJlL2RiL0RCQmxvYkRhdGEuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9l bXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvREJDb21tYW5k LmphdmENCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMv bWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL0RCRGF0YWJhc2UuamF2YQ0KPiAgICAgaW5j dWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2Fw YWNoZS9lbXBpcmUvZGIvREJEYXRhYmFzZURyaXZlci5qYXZhDQo+ICAgICBpbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS0NCj4gZGIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGly ZS9kYi9EQkV4cHIuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUt DQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvREJPYmplY3QuamF2YQ0K PiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2ph dmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvREJSZWFkZXIuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvZGIvREJSZWNvcmQuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBp cmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvREJSZWNvcmREYXRh LmphdmENCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMv bWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL0RCUm93U2V0LmphdmENCj4gICAgIGluY3Vi YXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFj aGUvZW1waXJlL2RiL0RCU1FMU2NyaXB0LmphdmENCj4gICAgIGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL29y YWNsZS9PcmFjbGVEYXRhRGljdGlvbm5hcnkuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1k Yi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIv cG9zdGdyZXNxbC9EQkRhdGFiYXNlRHJpdmVyUG9zdGdyDQo+IGVTUUwuamF2YQ0KPiAgICAgaW5j dWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2Fw YWNoZS9lbXBpcmUveG1sL1hNTENvbmZpZ3VyYXRpb24uamF2YQ0KPiAgICAgaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUveG1sL1hNTFV0aWwuamF2YQ0KPiAgICAgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBp cmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUveG1sL1hNTFdyaXRlci5q YXZhDQo+ICAgICBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL3BvbS54bWwNCj4gDQo+IE1vZGlm aWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMv bWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vQ29kZUdlbkFwcC5qYXZhDQo+ IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJlLWRiL3Ry dW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJl L2RiL2NvZGVnZW4vQ29kZUdlbkFwcC5qYXZhP3Jldj0NCj4gMTA2NjU0NyZyMT0xMDY2NTQ2JnIy PTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGlu Y3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBjb2RlZ2VuL3NyYy9tYWluL2ph dmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvY29kZWdlbi9Db2RlR2VuQXBwLmphdmENCj4gKG9yaWdp bmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGNvZGVn ZW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL0NvZGVHZW5BcHAu amF2YSBXZWQNCj4gRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTE4LDggKzE4LDggQEANCj4g ICAqLw0KPiAgcGFja2FnZSBvcmcuYXBhY2hlLmVtcGlyZS5kYi5jb2RlZ2VuOw0KPiANCj4gLWlt cG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2c7DQo+IC1pbXBvcnQgb3JnLmFwYWNo ZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2Vy Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KPiAgaW1wb3J0IG9yZy5hcGFj aGUuZW1waXJlLmNvbW1vbnMuRXJyb3JPYmplY3Q7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBp cmUuZGIuREJEYXRhYmFzZTsNCj4gDQo+IEBAIC0yOSw3ICsyOSw3IEBAIGltcG9ydCBvcmcuYXBh Y2hlLmVtcGlyZS5kYi5EQkRhdGFiYXNlOw0KPiAgICovDQo+ICBwdWJsaWMgY2xhc3MgQ29kZUdl bkFwcCB7DQo+IA0KPiAtCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZyBsb2cgPQ0KPiBMb2dGYWN0 b3J5LmdldExvZyhDb2RlR2VuQXBwLmNsYXNzKTsNCj4gKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBM b2dnZXIgbG9nID0NCj4gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQ29kZUdlbkFwcC5jbGFzcyk7 DQo+IA0KPiAgCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0NPTkZJR19GSUxF ID0gImNvbmZpZy54bWwiOw0KPiANCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRi L3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1w aXJlL2RiL2NvZGVnZW4vQ29kZUdlblBhcnNlci5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFj aGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29k ZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vQ29kZUdlblBh cnNlci5qYXZhP3INCj4gZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZm DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLWRiLQ0KPiBjb2RlZ2VuL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvZGIvY29kZWdlbi9Db2RlR2VuUGFyc2VyLmphdmENCj4gKG9yaWdpbmFsKQ0KPiArKysgaW5j dWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGNvZGVnZW4vc3JjL21haW4vamF2 YS9vcmcvYXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL0NvZGVHZW5QYXJzZXIuamF2YQ0KPiBXZWQg RmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTI4LDggKzI4LDggQEAgaW1wb3J0IGphdmEuc3Fs LlR5cGVzOw0KPiAgaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQo+ICBpbXBvcnQgamF2YS51 dGlsLkxpc3Q7DQo+IA0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZzsN Cj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5Ow0KPiAraW1w b3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7 DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuY29tbW9ucy5FcnJvck9iamVjdDsNCj4gIGlt cG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLkVycm9yczsNCj4gIGltcG9ydCBvcmcuYXBh Y2hlLmVtcGlyZS5kYXRhLkRhdGFUeXBlOw0KPiBAQCAtNjksNyArNjksNyBAQCBwdWJsaWMgY2xh c3MgQ29kZUdlblBhcnNlciBleHRlbmRzIEVycm9yDQo+ICAJCX0NCj4gIAl9DQo+IA0KPiAtCXBy aXZhdGUgc3RhdGljIGZpbmFsIExvZyBsb2cgPQ0KPiBMb2dGYWN0b3J5LmdldExvZyhDb2RlR2Vu UGFyc2VyLmNsYXNzKTsNCj4gKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0NCj4g TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQ29kZUdlblBhcnNlci5jbGFzcyk7DQo+IA0KPiAgCXBy aXZhdGUgRGF0YWJhc2VNZXRhRGF0YSBkYk1ldGE7DQo+ICAJcHJpdmF0ZSBDb25uZWN0aW9uIGNv bjsNCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0N Cj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vQ29k ZUdlbldyaXRlci5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1 YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZh L29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vQ29kZUdlbldyaXRlci5qYXZhP3INCj4gZXY9 MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0K PiBjb2RlZ2VuL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvY29kZWdlbi9Db2Rl R2VuV3JpdGVyLmphdmENCj4gKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90 cnVuay9lbXBpcmUtZGItDQo+IGNvZGVnZW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGly ZS9kYi9jb2RlZ2VuL0NvZGVHZW5Xcml0ZXIuamF2YQ0KPiBXZWQgRmViICAyIDE3OjUwOjIxIDIw MTENCj4gQEAgLTI1LDggKzI1LDggQEAgaW1wb3J0IGphdmEuaW8uV3JpdGVyOw0KPiAgaW1wb3J0 IGphdmEudXRpbC5BcnJheUxpc3Q7DQo+ICBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQo+IA0KPiAt aW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZzsNCj4gLWltcG9ydCBvcmcuYXBh Y2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dn ZXI7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFw YWNoZS5lbXBpcmUuZGIuREJEYXRhYmFzZTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5k Yi5EQlRhYmxlOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmRiLkRCVmlldzsNCj4gQEAg LTY0LDcgKzY0LDcgQEAgaW1wb3J0IG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdQ0K PiAgICovDQo+IA0KPiAgcHVibGljIGNsYXNzIENvZGVHZW5Xcml0ZXIgew0KPiAtCXByaXZhdGUg c3RhdGljIGZpbmFsIExvZyBsb2cgPQ0KPiBMb2dGYWN0b3J5LmdldExvZyhDb2RlR2VuV3JpdGVy LmNsYXNzKTsNCj4gKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0NCj4gTG9nZ2Vy RmFjdG9yeS5nZXRMb2dnZXIoQ29kZUdlbldyaXRlci5jbGFzcyk7DQo+IA0KPiAgCS8vIFRlbXBs YXRlcw0KPiAgCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERBVEFCQVNFX1RFTVBMQVRFID0g IkRhdGFiYXNlLnZtIjsNCj4gQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWMgY2xhc3MgQ29kZUdl bldyaXRlciB7DQo+ICAJCXRyeSB7DQo+ICAJCQllbmdpbmUuaW5pdCgpOw0KPiAgCQl9IGNhdGNo IChFeGNlcHRpb24gZSkgew0KPiAtCQkJbG9nLmZhdGFsKGUpOw0KPiArCQkJbG9nLmVycm9yKCJB IEV4Y2VwdGlvbiBvY2N1cmVkIG9uIGluaXRpYWxpemluZyB0aGUNCj4gdmVsb2NpdHktZW5naW5l OiIsIGUpOw0KPiAgCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7DQo+ICAJCX0NCj4g IAl9DQo+IA0KPiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGIt DQo+IGNvZGVnZW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL1dy aXRlclNlcnZpY2UuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5j dWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGNvZGVnZW4vc3JjL21haW4vamF2 YS9vcmcvYXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL1dyaXRlclNlcnZpY2UuamF2YT9yDQo+IGV2 PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0N Cj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vV3Jp dGVyU2VydmljZS5qYXZhDQo+IChvcmlnaW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLWRiLQ0KPiBjb2RlZ2VuL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvZGIvY29kZWdlbi9Xcml0ZXJTZXJ2aWNlLmphdmENCj4gV2VkIEZlYiAgMiAxNzo1MDoyMSAy MDExDQo+IEBAIC0yNCw4ICsyNCw4IEBAIGltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCj4gIGltcG9y dCBqYXZhLnV0aWwuSGFzaFNldDsNCj4gIGltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KPiANCj4gLWlt cG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2c7DQo+IC1pbXBvcnQgb3JnLmFwYWNo ZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2Vy Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KPiAgaW1wb3J0IG9yZy5hcGFj aGUuZW1waXJlLmRhdGEuRGF0YVR5cGU7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuZGIu REJDb2x1bW47DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuZGIuREJSZWNvcmQ7DQo+IEBA IC0zNyw3ICszNyw3IEBAIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5kYi5EQlRhYmxlQ29sdW0N Cj4gICAqLw0KPiAgcHVibGljIGNsYXNzIFdyaXRlclNlcnZpY2Ugew0KPiANCj4gLQlwcml2YXRl IHN0YXRpYyBmaW5hbCBMb2cgbG9nID0NCj4gTG9nRmFjdG9yeS5nZXRMb2coV3JpdGVyU2Vydmlj ZS5jbGFzcyk7DQo+ICsJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9DQo+IExvZ2dl ckZhY3RvcnkuZ2V0TG9nZ2VyKFdyaXRlclNlcnZpY2UuY2xhc3MpOw0KPiANCj4gIAlwcml2YXRl IGZpbmFsIENvZGVHZW5Db25maWcgY29uZmlnOw0KPiAgCXByaXZhdGUgZmluYWwgU2V0PFN0cmlu Zz4gZGJyZWNNZXRob2ROYW1lczsNCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRi L3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1w aXJlL2RiL2NvZGVnZW4vdXRpbC9EQlV0aWwuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hl Lm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGNvZGVn ZW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL3V0aWwvREJVdGls LmphdmE/cmV2DQo+ID0xMDY2NTQ3JnIxPTEwNjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVu ay9lbXBpcmUtZGItDQo+IGNvZGVnZW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9k Yi9jb2RlZ2VuL3V0aWwvREJVdGlsLmphdmENCj4gKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGNvZGVnZW4vc3JjL21haW4vamF2YS9vcmcv YXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL3V0aWwvREJVdGlsLmphdmEgV2VkDQo+IEZlYiAgMiAx Nzo1MDoyMSAyMDExDQo+IEBAIC0yMiw3ICsyMiw3IEBAIGltcG9ydCBqYXZhLnNxbC5Db25uZWN0 aW9uOw0KPiAgaW1wb3J0IGphdmEuc3FsLlJlc3VsdFNldDsNCj4gIGltcG9ydCBqYXZhLnNxbC5T UUxFeGNlcHRpb247DQo+IA0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxv ZzsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KPiANCj4gDQo+ICBwdWJsaWMgZmluYWwg Y2xhc3MgREJVdGlsIHsNCj4gQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljIGZpbmFsIGNsYXNzIERC VXRpbCB7DQo+ICAJICogQHBhcmFtIGxvZyB0aGUgbG9nZ2VyIGluc3RhbmNlIHRvIHVzZSBmb3Ig bG9nZ2luZw0KPiAgCSAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXMNCj4gIAkgKi8NCj4gLQlwdWJs aWMgc3RhdGljIGJvb2xlYW4gY2xvc2UoUmVzdWx0U2V0IHJzLCBMb2cgbG9nKSB7DQo+ICsJcHVi bGljIHN0YXRpYyBib29sZWFuIGNsb3NlKFJlc3VsdFNldCBycywgTG9nZ2VyIGxvZykgew0KPiAg CQlib29sZWFuIGIgPSBmYWxzZTsNCj4gIAkJdHJ5IHsNCj4gIAkJCWlmKHJzIT1udWxsKQ0KPiBA QCAtNTQsMTMgKzU0LDEzIEBAIHB1YmxpYyBmaW5hbCBjbGFzcyBEQlV0aWwgew0KPiAgCS8qKg0K PiAgCSAqIENsb3NlcyBhIEpEQkMtQ29ubmVjdGlvbiBhbmQgbG9ncyBleGNlcHRpb25zLg0KPiAg CSAqLw0KPiAtCXB1YmxpYyBzdGF0aWMgdm9pZCBjbG9zZShDb25uZWN0aW9uIGNvbm4sIExvZyBs b2cpIHsNCj4gKwlwdWJsaWMgc3RhdGljIHZvaWQgY2xvc2UoQ29ubmVjdGlvbiBjb25uLCBMb2dn ZXIgbG9nKSB7DQo+ICAJCWlmKGNvbm4gIT0gbnVsbCl7DQo+ICAJCQlsb2cuaW5mbygiQ2xvc2lu ZyBkYXRhYmFzZSBjb25uZWN0aW9uIik7DQo+ICAJCQl0cnkgew0KPiAgCQkJCWNvbm4uY2xvc2Uo KTsNCj4gIAkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQo+IC0JCQkJbG9nLmZhdGFsKCJFcnJv ciBjbG9zaW5nIGNvbm5lY3Rpb24iLCBlKTsNCj4gKwkJCQlsb2cuZXJyb3IoIkVycm9yIGNsb3Np bmcgY29ubmVjdGlvbiIsIGUpOw0KPiAgCQkJfQ0KPiAgCQl9DQo+ICAJfQ0KPiANCj4gTW9kaWZp ZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBjb2RlZ2VuL3NyYy9t YWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvY29kZWdlbi91dGlsL0ZpbGVVdGlscy5qYXZh DQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJlLWRi L3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1w aXJlL2RiL2NvZGVnZW4vdXRpbC9GaWxlVXRpbHMuamF2YT8NCj4gcmV2PTEwNjY1NDcmcjE9MTA2 NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+ IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMv bWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vdXRpbC9GaWxlVXRpbHMuamF2 YQ0KPiAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1k Yi0NCj4gY29kZWdlbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2RiL2NvZGVnZW4v dXRpbC9GaWxlVXRpbHMuamF2YQ0KPiBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTMx LDggKzMxLDggQEAgaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQo+ICBpbXBvcnQgamF2YS5p by5PYmplY3RJbnB1dFN0cmVhbTsNCj4gIGltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVh bTsNCj4gDQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1w b3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3Jn LnNsZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gDQo+ ICAvKioNCj4gICAqIEZpbGUgdXRpbGl0aWVzDQo+IEBAIC00MSw3ICs0MSw3IEBAIGltcG9ydCBv cmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWMNCj4gICAqLw0KPiAgcHVibGljIGNsYXNz IEZpbGVVdGlscyB7DQo+IA0KPiAtCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZyBsb2cgPQ0KPiBM b2dGYWN0b3J5LmdldExvZyhGaWxlVXRpbHMuY2xhc3MpOw0KPiArCXByaXZhdGUgc3RhdGljIGZp bmFsIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihGaWxlVXRpbHMuY2xh c3MpOw0KPiAgCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFUEFSQVRPUiA9DQo+IFN5c3Rl bS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsNCj4gIAlwcml2YXRlIEZpbGVVdGlscygp DQo+ICAJew0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJl LWRiLQ0KPiBjb2RlZ2VuL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvY29kZWdl bi91dGlsL0RCVXRpbFRlc3QuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3 dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGNvZGVnZW4vc3JjL3Rl c3QvamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9kYi9jb2RlZ2VuL3V0aWwvREJVdGlsVGVzdC5qYXZh DQo+ID9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1w aXJlLWRiLQ0KPiBjb2RlZ2VuL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvZGIvY29k ZWdlbi91dGlsL0RCVXRpbFRlc3QuamF2YQ0KPiAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gY29kZWdlbi9zcmMvdGVzdC9qYXZhL29yZy9h cGFjaGUvZW1waXJlL2RiL2NvZGVnZW4vdXRpbC9EQlV0aWxUZXN0LmphdmENCj4gV2VkIEZlYiAg MiAxNzo1MDoyMSAyMDExDQo+IEBAIC0yNCw3ICsyNCw3IEBAIGltcG9ydCBzdGF0aWMgb3JnLmp1 bml0LkFzc2VydC5hc3NlcnRUcnUNCj4gIGltcG9ydCBqYXZhLnNxbC5SZXN1bHRTZXQ7DQo+ICBp bXBvcnQgamF2YS5zcWwuU1FMRXhjZXB0aW9uOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNv bW1vbnMubG9nZ2luZy5Mb2c7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4gIGltcG9y dCBvcmcuanVuaXQuVGVzdDsNCj4gIGltcG9ydCBvcmcubW9ja2l0by5Nb2NraXRvOw0KPiANCj4g QEAgLTMzLDcgKzMzLDcgQEAgcHVibGljIGNsYXNzIERCVXRpbFRlc3Qgew0KPiAgCUBUZXN0DQo+ ICAJcHVibGljIHZvaWQgdGVzdENsb3NlUmVzdWx0U2V0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7 DQo+ICAJCS8vIG51bGwNCj4gLQkJTG9nIGxvZyA9IE1vY2tpdG8ubW9jayhMb2cuY2xhc3MpOw0K PiArCQlMb2dnZXIgbG9nID0gTW9ja2l0by5tb2NrKExvZ2dlci5jbGFzcyk7DQo+ICAJCWJvb2xl YW4gc3VjY2VzID0gREJVdGlsLmNsb3NlKChSZXN1bHRTZXQpbnVsbCwgbG9nKTsNCj4gIAkJYXNz ZXJ0VHJ1ZShzdWNjZXMpOw0KPiANCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRi L3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItDQo+IGV4YW1wbGUtYWR2YW5jZWQv Y29uZmlnLnhtbA0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxl LQ0KPiBhZHZhbmNlZC9jb25maWcueG1sP3Jldj0xMDY2NTQ3JnIxPTEwNjY1NDYmcjI9MTA2NjU0 NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+ IGFkdmFuY2VkL2NvbmZpZy54bWwgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1k Yi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IGFkdmFuY2Vk L2NvbmZpZy54bWwgV2VkIEZlYiAgMiAxNzo1MDoyMSAyMDExDQo+IEBAIC05NCw1OSArOTQsNCBA QA0KPiAgCQk8c2NoZW1hTmFtZT5EQlNBTVBMRUFEVjwvc2NoZW1hTmFtZT4NCj4gIAk8L3Byb3Bl cnRpZXMtc3Fsc2VydmVyPg0KPiANCj4gLQk8bG9nNGo6Y29uZmlndXJhdGlvbg0KPiB4bWxuczps b2c0aj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9sb2c0ai8iPg0KPiAtDQo+IC0JCTxhcHBl bmRlciBuYW1lPSJkZWZhdWx0Ig0KPiBjbGFzcz0ib3JnLmFwYWNoZS5sb2c0ai5Db25zb2xlQXBw ZW5kZXIiPg0KPiAtCQkJPCEtLSBsYXlvdXQgY2xhc3M9Im9yZy5hcGFjaGUubG9nNGouVFRDQ0xh eW91dCIvIC0tPg0KPiAtCQkJPGxheW91dCBjbGFzcz0ib3JnLmFwYWNoZS5sb2c0ai5QYXR0ZXJu TGF5b3V0Ij4NCj4gLQkJCQk8IS0tIHBhcmFtIG5hbWU9IkNvbnZlcnNpb25QYXR0ZXJuIg0KPiB2 YWx1ZT0iTlNCKCVjKSAlLTVwICVtCWF0ICVsJW4iLyAtLT4NCj4gLQkJCQk8cGFyYW0gbmFtZT0i Q29udmVyc2lvblBhdHRlcm4iIHZhbHVlPSIlLTVwDQo+IFslZHt5eXl5L01NL2RkIEhIOm1tfV06 ICVtCQlhdCAlbCAlbiIvPg0KPiAtCQkJPC9sYXlvdXQ+DQo+IC0JCTwvYXBwZW5kZXI+DQo+IC0N Cj4gLQkJPCEtLSBsb2cgZGV0YWlsIGNvbmZpZ3VyYXRpb24gLS0+DQo+IC0NCj4gLQkJPGxvZ2dl ciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS54bWwiIGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJ CTxsZXZlbCB2YWx1ZT0iaW5mbyIvPg0KPiAtCQkJPGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQi Lz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVt cGlyZS5jb21tb25zIg0KPiBhZGRpdGl2aXR5PSJmYWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9 Indhcm4iLz4NCj4gLQkJCTxhcHBlbmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9n Z2VyPg0KPiAtDQo+IC0JCTxsb2dnZXIgbmFtZT0ib3JnLmFwYWNoZS5lbXBpcmUuZGIiIGFkZGl0 aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0id2FybiIvPg0KPiAtCQkJPGFwcGVu ZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPCEtLSBT ZXQgdGhpcyBsZXZlbCB0byAiZGVidWciIHRvIGxvZyBhbGwgU1FMLVN0YXRlbWVudHMgLS0NCj4g Pg0KPiAtCQk8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuZW1waXJlLmRiLkRCRGF0YWJhc2UiDQo+ IGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0iZGVidWciLz4NCj4gLQkJ CTxhcHBlbmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0KPiAtCQk8bG9n Z2VyIG5hbWU9Im9yZy5hcGFjaGUuZW1waXJlLmRiLkRCRGF0YWJhc2VEcml2ZXIiDQo+IGFkZGl0 aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0iZGVidWciLz4NCj4gLQkJCTxhcHBl bmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0KPiAtDQo+IC0JCTwhLS0g U2V0IHRoaXMgbGV2ZWwgdG8gImRlYnVnIiB0byBsb2cgYWxsIERETC1TdGF0ZW1lbnRzIC0tDQo+ ID4NCj4gLQkJPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS5kYi5EQlNRTFNjcmlwdCIN Cj4gYWRkaXRpdml0eT0iZmFsc2UiPg0KPiAtCQkJPGxldmVsIHZhbHVlPSJkZWJ1ZyIvPg0KPiAt CQkJPGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4g LQkJPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS5zYW1wbGVzLmRiLmFkdmFuY2VkIg0K PiBhZGRpdGl2aXR5PSJmYWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9ImRlYnVnIi8+DQo+IC0J CQk8YXBwZW5kZXItcmVmIHJlZj0iZGVmYXVsdCIvPg0KPiAtCQk8L2xvZ2dlcj4NCj4gLQ0KPiAt CQk8cm9vdD4NCj4gLQkJCTxwcmlvcml0eSB2YWx1ZT0iaW5mbyIvPg0KPiAtCQkJPGFwcGVuZGVy LXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9yb290Pg0KPiAtDQo+IC0JPC9sb2c0ajpjb25m aWd1cmF0aW9uPg0KPiAtDQo+ICA8L2NvbmZpZz4NCj4gDQo+IEFkZGVkOiBpbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gYWR2 YW5jZWQvbG9nNGoucHJvcGVydGllcw0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3 dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGV4YW1wbGVzL2VtcGly ZS1kYi1leGFtcGxlLQ0KPiBhZHZhbmNlZC9sb2c0ai5wcm9wZXJ0aWVzP3Jldj0xMDY2NTQ3JnZp ZXc9YXV0bw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gYWR2 YW5jZWQvbG9nNGoucHJvcGVydGllcyAoYWRkZWQpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRi L3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gYWR2YW5jZWQv bG9nNGoucHJvcGVydGllcyBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTAsMCArMSwy MSBAQA0KPiArIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFT RikgdW5kZXIgb25lDQo+ICsjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRz LiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KPiArIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBm b3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KPiArIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVy c2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQo+ICsjIHRvIHlvdSB1bmRlciB0aGUg QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCj4gKyMgIkxpY2Vuc2UiKTsgeW91IG1h eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KPiArIyB3aXRoIHRoZSBM aWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQo+ICsjDQo+ ICsjICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCj4gKyMNCj4g KyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0 aW5nLA0KPiArIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0 cmlidXRlZCBvbiBhbg0KPiArIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig Q09ORElUSU9OUyBPRiBBTlkNCj4gKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4g IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQo+ICsjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu ZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCj4gKyMgdW5kZXIgdGhlIExpY2Vuc2UuDQo+ ICsNCj4gK2xvZzRqLnJvb3RDYXRlZ29yeT1GQVRBTCwgY29uc29sZQ0KPiArbG9nNGouYXBwZW5k ZXIuY29uc29sZT1vcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlcg0KPiArbG9nNGouYXBw ZW5kZXIuY29uc29sZS5sYXlvdXQ9b3JnLmFwYWNoZS5sb2c0ai5QYXR0ZXJuTGF5b3V0DQo+ICts b2c0ai5hcHBlbmRlci5jb25zb2xlLmxheW91dC5jb252ZXJzaW9uUGF0dGVybiA9ICVke0lTTzg2 MDF9ICUtNXANCj4gWyVjXSAtICVtJW4NCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJl LWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItDQo+IGV4YW1wbGUtDQo+IGFk dmFuY2VkL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc2FtcGxlcy9kYi9hZHZhbmNl ZC9TYW1wbGVBZHZDDQo+IG9uZmlnLmphdmENCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcv dmlld3ZjL2luY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBleGFtcGxlcy9l bXBpcmUtZGItZXhhbXBsZS0NCj4gYWR2YW5jZWQvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2Vt cGlyZS9zYW1wbGVzL2RiL2FkdmFuY2VkL1NhbXBsZUFkdkMNCj4gb25maWcuamF2YT9yZXY9MTA2 NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1w bGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBhZHZhbmNlZC9zcmMvbWFpbi9qYXZhL29yZy9hcGFj aGUvZW1waXJlL3NhbXBsZXMvZGIvYWR2YW5jZWQvU2FtcGxlQWR2Qw0KPiBvbmZpZy5qYXZhIChv cmlnaW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1w bGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBhZHZhbmNlZC9zcmMvbWFpbi9qYXZhL29yZy9hcGFj aGUvZW1waXJlL3NhbXBsZXMvZGIvYWR2YW5jZWQvU2FtcGxlQWR2Qw0KPiBvbmZpZy5qYXZhIFdl ZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMTgsNyArMTgsOSBAQA0KPiAgICovDQo+ICBw YWNrYWdlIG9yZy5hcGFjaGUuZW1waXJlLnNhbXBsZXMuZGIuYWR2YW5jZWQ7DQo+IA0KPiAraW1w b3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICBpbXBvcnQgb3Jn LmFwYWNoZS5lbXBpcmUueG1sLlhNTENvbmZpZ3VyYXRpb247DQo+ICtpbXBvcnQgb3JnLmFwYWNo ZS5sb2c0ai54bWwuRE9NQ29uZmlndXJhdG9yOw0KPiANCj4gIC8qKg0KPiAgICogPFBSRT4NCj4g DQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxl cy9lbXBpcmUtZGItDQo+IGV4YW1wbGUtYmFzaWMvY29uZmlnLnhtbA0KPiBVUkw6IGh0dHA6Ly9z dm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGIt DQo+IGV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBiYXNpYy9jb25maWcueG1sP3Jldj0x MDY2NTQ3JnIxPTEwNjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Cj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhh bXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IGJhc2ljL2NvbmZpZy54bWwgKG9yaWdpbmFsKQ0K PiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJl LWRiLWV4YW1wbGUtDQo+IGJhc2ljL2NvbmZpZy54bWwgV2VkIEZlYiAgMiAxNzo1MDoyMSAyMDEx DQo+IEBAIC05Myw1MCArOTMsNCBAQA0KPiAgCQk8amRiY1B3ZD5lc3RlYW08L2pkYmNQd2Q+DQo+ ICAJCTxzY2hlbWFOYW1lPkRCU0FNUExFPC9zY2hlbWFOYW1lPg0KPiAgCTwvcHJvcGVydGllcy1z cWxzZXJ2ZXI+DQo+IC0NCj4gLQk8bG9nNGo6Y29uZmlndXJhdGlvbg0KPiB4bWxuczpsb2c0aj0i aHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9sb2c0ai8iPg0KPiAtDQo+IC0JCTxhcHBlbmRlciBu YW1lPSJkZWZhdWx0Ig0KPiBjbGFzcz0ib3JnLmFwYWNoZS5sb2c0ai5Db25zb2xlQXBwZW5kZXIi Pg0KPiAtCQkJPCEtLSBsYXlvdXQgY2xhc3M9Im9yZy5hcGFjaGUubG9nNGouVFRDQ0xheW91dCIv IC0tPg0KPiAtCQkJPGxheW91dCBjbGFzcz0ib3JnLmFwYWNoZS5sb2c0ai5QYXR0ZXJuTGF5b3V0 Ij4NCj4gLQkJCQk8IS0tIHBhcmFtIG5hbWU9IkNvbnZlcnNpb25QYXR0ZXJuIg0KPiB2YWx1ZT0i TlNCKCVjKSAlLTVwICVtCWF0ICVsJW4iLyAtLT4NCj4gLQkJCQk8cGFyYW0gbmFtZT0iQ29udmVy c2lvblBhdHRlcm4iIHZhbHVlPSIlLTVwDQo+IFslZHt5eXl5L01NL2RkIEhIOm1tfV06ICVtCQlh dCAlbCAlbiIvPg0KPiAtCQkJPC9sYXlvdXQ+DQo+IC0JCTwvYXBwZW5kZXI+DQo+IC0NCj4gLQkJ PCEtLSBsb2cgZGV0YWlsIGNvbmZpZ3VyYXRpb24gLS0+DQo+IC0NCj4gLQkJPGxvZ2dlciBuYW1l PSJvcmcuYXBhY2hlLmVtcGlyZS54bWwiIGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZl bCB2YWx1ZT0iaW5mbyIvPg0KPiAtCQkJPGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4g LQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS5j b21tb25zIg0KPiBhZGRpdGl2aXR5PSJmYWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9Indhcm4i Lz4NCj4gLQkJCTxhcHBlbmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0K PiAtDQo+IC0JCTxsb2dnZXIgbmFtZT0ib3JnLmFwYWNoZS5lbXBpcmUuZGIiIGFkZGl0aXZpdHk9 ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0id2FybiIvPg0KPiAtCQkJPGFwcGVuZGVyLXJl ZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPCEtLSBTZXQgdGhp cyBsZXZlbCB0byAiZGVidWciIHRvIGxvZyBhbGwgU1FMLVN0YXRlbWVudHMgLS0NCj4gPg0KPiAt CQk8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuZW1waXJlLmRiLkRCRGF0YWJhc2UiDQo+IGFkZGl0 aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0iZGVidWciLz4NCj4gLQkJCTxhcHBl bmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0KPiAtDQo+IC0JCTxsb2dn ZXIgbmFtZT0ib3JnLmFwYWNoZS5lbXBpcmUuc2FtcGxlcy5kYiINCj4gYWRkaXRpdml0eT0iZmFs c2UiPg0KPiAtCQkJPGxldmVsIHZhbHVlPSJkZWJ1ZyIvPg0KPiAtCQkJPGFwcGVuZGVyLXJlZiBy ZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPHJvb3Q+DQo+IC0JCQk8 cHJpb3JpdHkgdmFsdWU9ImluZm8iLz4NCj4gLQkJCTxhcHBlbmRlci1yZWYgcmVmPSJkZWZhdWx0 Ii8+DQo+IC0JCTwvcm9vdD4NCj4gLQ0KPiAtCTwvbG9nNGo6Y29uZmlndXJhdGlvbj4NCj4gLQ0K PiAgPC9jb25maWc+DQo+IA0KPiBBZGRlZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBp cmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IGJhc2ljL2xvZzRqLnByb3BlcnRp ZXMNCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBleGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS1iYXNpYy9s b2c0ai5wcm9wZXJ0aWVzP3Jldj0xMDY2NTQ3JnZpZXc9YXV0bw0KPiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K PiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFt cGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gYmFzaWMvbG9nNGoucHJvcGVydGllcyAoYWRkZWQp DQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBp cmUtZGItZXhhbXBsZS0NCj4gYmFzaWMvbG9nNGoucHJvcGVydGllcyBXZWQgRmViICAyIDE3OjUw OjIxIDIwMTENCj4gQEAgLTAsMCArMSwyMSBAQA0KPiArIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hl IFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQo+ICsjIG9yIG1vcmUgY29udHJp YnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KPiArIyBkaXN0 cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KPiArIyBy ZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxl DQo+ICsjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUN Cj4gKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t cGxpYW5jZQ0KPiArIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m IHRoZSBMaWNlbnNlIGF0DQo+ICsjDQo+ICsjICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z ZXMvTElDRU5TRS0yLjANCj4gKyMNCj4gKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KPiArIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1 bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KPiArIyAiQVMgSVMiIEJBU0lT LCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCj4gKyMgS0lORCwgZWl0 aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQo+ICsjIHNw ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCj4g KyMgdW5kZXIgdGhlIExpY2Vuc2UuDQo+ICsNCj4gK2xvZzRqLnJvb3RDYXRlZ29yeT1GQVRBTCwg Y29uc29sZQ0KPiArbG9nNGouYXBwZW5kZXIuY29uc29sZT1vcmcuYXBhY2hlLmxvZzRqLkNvbnNv bGVBcHBlbmRlcg0KPiArbG9nNGouYXBwZW5kZXIuY29uc29sZS5sYXlvdXQ9b3JnLmFwYWNoZS5s b2c0ai5QYXR0ZXJuTGF5b3V0DQo+ICtsb2c0ai5hcHBlbmRlci5jb25zb2xlLmxheW91dC5jb252 ZXJzaW9uUGF0dGVybiA9ICVke0lTTzg2MDF9ICUtNXANCj4gWyVjXSAtICVtJW4NCj4gDQo+IE1v ZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBp cmUtZGItDQo+IGV4YW1wbGUtDQo+IGJhc2ljL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvc2FtcGxlcy9kYi9TYW1wbGVDb25maWcuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hl Lm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGV4YW1w bGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBiYXNpYy9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUv ZW1waXJlL3NhbXBsZXMvZGIvU2FtcGxlQ29uZmlnLmphdmE/cmV2PQ0KPiAxMDY2NTQ3JnIxPTEw NjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0K PiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJl LWRiLWV4YW1wbGUtDQo+IGJhc2ljL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc2Ft cGxlcy9kYi9TYW1wbGVDb25maWcuamF2YQ0KPiAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4g YmFzaWMvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zYW1wbGVzL2RiL1NhbXBsZUNv bmZpZy5qYXZhIFdlZA0KPiBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMTgsOCArMTgsOSBA QA0KPiAgICovDQo+ICBwYWNrYWdlIG9yZy5hcGFjaGUuZW1waXJlLnNhbXBsZXMuZGI7DQo+IA0K PiAraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICBpbXBv cnQgb3JnLmFwYWNoZS5lbXBpcmUueG1sLlhNTENvbmZpZ3VyYXRpb247DQo+IC0NCj4gK2ltcG9y dCBvcmcuYXBhY2hlLmxvZzRqLnhtbC5ET01Db25maWd1cmF0b3I7DQo+ICAvKioNCj4gICAqIDxQ UkU+DQo+ICAgKiBUaGUgU2FtcGxlQ29uZmlnIGNsYXNzIHByb3ZpZGVzIGFjY2VzcyB0byBjb25m aWd1cmF0aW9uIHNldHRpbmdzLg0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi0NCj4gZXhhbXBsZS1jeGYvY29uZmln LnhtbA0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGly ZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBj eGYvY29uZmlnLnhtbD9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZm DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBjeGYvY29uZmln LnhtbCAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1k Yi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gY3hmL2NvbmZpZy54bWwgV2VkIEZlYiAg MiAxNzo1MDoyMSAyMDExDQo+IEBAIC02NCw1NCArNjQsNCBAQA0KPiAgCQk8c2NoZW1hTmFtZT5E QlNBTVBMRTwvc2NoZW1hTmFtZT4NCj4gIAk8L3Byb3BlcnRpZXMtc3Fsc2VydmVyPg0KPiANCj4g LQk8bG9nNGo6Y29uZmlndXJhdGlvbg0KPiB4bWxuczpsb2c0aj0iaHR0cDovL2pha2FydGEuYXBh Y2hlLm9yZy9sb2c0ai8iPg0KPiAtDQo+IC0JCTxhcHBlbmRlciBuYW1lPSJkZWZhdWx0Ig0KPiBj bGFzcz0ib3JnLmFwYWNoZS5sb2c0ai5Db25zb2xlQXBwZW5kZXIiPg0KPiAtCQkJPCEtLSBsYXlv dXQgY2xhc3M9Im9yZy5hcGFjaGUubG9nNGouVFRDQ0xheW91dCIvIC0tPg0KPiAtCQkJPGxheW91 dCBjbGFzcz0ib3JnLmFwYWNoZS5sb2c0ai5QYXR0ZXJuTGF5b3V0Ij4NCj4gLQkJCQk8IS0tIHBh cmFtIG5hbWU9IkNvbnZlcnNpb25QYXR0ZXJuIg0KPiB2YWx1ZT0iTlNCKCVjKSAlLTVwICVtCWF0 ICVsJW4iLyAtLT4NCj4gLQkJCQk8cGFyYW0gbmFtZT0iQ29udmVyc2lvblBhdHRlcm4iIHZhbHVl PSIlLTVwDQo+IFslZHt5eXl5L01NL2RkIEhIOm1tfV06ICVtCQlhdCAlbCAlbiIvPg0KPiAtCQkJ PC9sYXlvdXQ+DQo+IC0JCTwvYXBwZW5kZXI+DQo+IC0NCj4gLQkJPCEtLSBsb2cgZGV0YWlsIGNv bmZpZ3VyYXRpb24gLS0+DQo+IC0NCj4gLQkJPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGly ZS54bWwiIGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0iaW5mbyIvPg0K PiAtCQkJPGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0N Cj4gLQkJPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zIg0KPiBhZGRpdGl2 aXR5PSJmYWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9Indhcm4iLz4NCj4gLQkJCTxhcHBlbmRl ci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0KPiAtDQo+IC0JCTxsb2dnZXIg bmFtZT0ib3JnLmFwYWNoZS5lbXBpcmUuZGIiIGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxs ZXZlbCB2YWx1ZT0id2FybiIvPg0KPiAtCQkJPGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4N Cj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPCEtLSBTZXQgdGhpcyBsZXZlbCB0byAiZGVidWci IHRvIGxvZyBhbGwgU1FMLVN0YXRlbWVudHMgLS0NCj4gPg0KPiAtCQk8bG9nZ2VyIG5hbWU9Im9y Zy5hcGFjaGUuZW1waXJlLmRiLkRCRGF0YWJhc2UiDQo+IGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4g LQkJCTxsZXZlbCB2YWx1ZT0iZGVidWciLz4NCj4gLQkJCTxhcHBlbmRlci1yZWYgcmVmPSJkZWZh dWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0KPiAtDQo+IC0JCTxsb2dnZXIgbmFtZT0ib3JnLmFwYWNo ZS5lbXBpcmUuc3RydXRzMiINCj4gYWRkaXRpdml0eT0iZmFsc2UiPg0KPiAtCQkJPGxldmVsIHZh bHVlPSJ3YXJuIi8+DQo+IC0JCQk8YXBwZW5kZXItcmVmIHJlZj0iZGVmYXVsdCIvPg0KPiAtCQk8 L2xvZ2dlcj4NCj4gLQ0KPiAtCQk8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuZW1waXJlLnN0cnV0 czIud2Vic2FtcGxlIg0KPiBhZGRpdGl2aXR5PSJmYWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9 ImRlYnVnIi8+DQo+IC0JCQk8YXBwZW5kZXItcmVmIHJlZj0iZGVmYXVsdCIvPg0KPiAtCQk8L2xv Z2dlcj4NCj4gLQ0KPiAtCQk8cm9vdD4NCj4gLQkJCTxwcmlvcml0eSB2YWx1ZT0iaW5mbyIvPg0K PiAtCQkJPGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9yb290Pg0KPiAtDQo+ IC0JPC9sb2c0ajpjb25maWd1cmF0aW9uPg0KPiAtDQo+ICA8L2NvbmZpZz4NCj4gDQo+IEFkZGVk OiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGIt ZXhhbXBsZS0NCj4gY3hmL2xvZzRqLnByb3BlcnRpZXMNCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNo ZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBleGFt cGxlcy9lbXBpcmUtZGItZXhhbXBsZS1jeGYvbG9nNGoucHJvcGVydGllcz9yZXY9MTA2NjU0NyZ2 aWV3PWF1dG8NCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IGN4 Zi9sb2c0ai5wcm9wZXJ0aWVzIChhZGRlZCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1 bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBjeGYvbG9nNGoucHJv cGVydGllcyBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTAsMCArMSwyMSBAQA0KPiAr IyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIg b25lDQo+ICsjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRo ZSBOT1RJQ0UgZmlsZQ0KPiArIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRp b25hbCBpbmZvcm1hdGlvbg0KPiArIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRo ZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQo+ICsjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExp Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCj4gKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNl IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KPiArIyB3aXRoIHRoZSBMaWNlbnNlLiAg WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQo+ICsjDQo+ICsjICBodHRw Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCj4gKyMNCj4gKyMgVW5sZXNz IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KPiAr IyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv biBhbg0KPiArIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O UyBPRiBBTlkNCj4gKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUg TGljZW5zZSBmb3IgdGhlDQo+ICsjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz aW9ucyBhbmQgbGltaXRhdGlvbnMNCj4gKyMgdW5kZXIgdGhlIExpY2Vuc2UuDQo+ICsNCj4gK2xv ZzRqLnJvb3RDYXRlZ29yeT1GQVRBTCwgY29uc29sZQ0KPiArbG9nNGouYXBwZW5kZXIuY29uc29s ZT1vcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlcg0KPiArbG9nNGouYXBwZW5kZXIuY29u c29sZS5sYXlvdXQ9b3JnLmFwYWNoZS5sb2c0ai5QYXR0ZXJuTGF5b3V0DQo+ICtsb2c0ai5hcHBl bmRlci5jb25zb2xlLmxheW91dC5jb252ZXJzaW9uUGF0dGVybiA9ICVke0lTTzg2MDF9ICUtNXAN Cj4gWyVjXSAtICVtJW4NCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5r L2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItDQo+IGV4YW1wbGUtDQo+IGN4Zi9zcmMvbWFp bi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3NhbXBsZXMvY3hmL3dzc2FtcGxlL3NlcnZlci9TYW1w bGVDDQo+IG9uZmlnLmphdmENCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL2lu Y3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBleGFtcGxlcy9lbXBpcmUtZGIt ZXhhbXBsZS0NCj4gY3hmL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc2FtcGxlcy9j eGYvd3NzYW1wbGUvc2VydmVyL1NhbXBsZUMNCj4gb25maWcuamF2YT9yZXY9MTA2NjU0NyZyMT0x MDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0N Cj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGly ZS1kYi1leGFtcGxlLQ0KPiBjeGYvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zYW1w bGVzL2N4Zi93c3NhbXBsZS9zZXJ2ZXIvU2FtcGxlQw0KPiBvbmZpZy5qYXZhIChvcmlnaW5hbCkN Cj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGly ZS1kYi1leGFtcGxlLQ0KPiBjeGYvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zYW1w bGVzL2N4Zi93c3NhbXBsZS9zZXJ2ZXIvU2FtcGxlQw0KPiBvbmZpZy5qYXZhIFdlZCBGZWIgIDIg MTc6NTA6MjEgMjAxMQ0KPiBAQCAtMTgsNyArMTgsOSBAQA0KPiAgICovDQo+ICBwYWNrYWdlIG9y Zy5hcGFjaGUuZW1waXJlLnNhbXBsZXMuY3hmLndzc2FtcGxlLnNlcnZlcjsNCj4gDQo+ICtpbXBv cnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcu YXBhY2hlLmVtcGlyZS54bWwuWE1MQ29uZmlndXJhdGlvbjsNCj4gK2ltcG9ydCBvcmcuYXBhY2hl LmxvZzRqLnhtbC5ET01Db25maWd1cmF0b3I7DQo+IA0KPiAgcHVibGljIGNsYXNzIFNhbXBsZUNv bmZpZyBleHRlbmRzIFhNTENvbmZpZ3VyYXRpb24gew0KPiANCj4gDQo+IE1vZGlmaWVkOiBpbmN1 YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItDQo+IGV4 YW1wbGUtc3RydXRzMi1jeGYvcG9tLnhtbA0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92 aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IGV4YW1wbGVzL2Vt cGlyZS1kYi1leGFtcGxlLXN0cnV0czItDQo+IGN4Zi9wb20ueG1sP3Jldj0xMDY2NTQ3JnIxPTEw NjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0K PiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJl LWRiLWV4YW1wbGUtDQo+IHN0cnV0czItY3hmL3BvbS54bWwgKG9yaWdpbmFsKQ0KPiArKysgaW5j dWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1w bGUtDQo+IHN0cnV0czItY3hmL3BvbS54bWwgV2VkIEZlYiAgMiAxNzo1MDoyMSAyMDExDQo+IEBA IC00NSwxMSArNDUsNiBAQA0KPiAgCQkJPGFydGlmYWN0SWQ+Y3hmLXJ0LWZyb250ZW5kLWpheHdz PC9hcnRpZmFjdElkPg0KPiAgCQkJPHZlcnNpb24+Mi4xLjM8L3ZlcnNpb24+DQo+ICAJCTwvZGVw ZW5kZW5jeT4NCj4gLQ0KPiAtCQk8ZGVwZW5kZW5jeT4NCj4gLQkJCTxncm91cElkPmxvZzRqPC9n cm91cElkPg0KPiAtCQkJPGFydGlmYWN0SWQ+bG9nNGo8L2FydGlmYWN0SWQ+DQo+IC0JCTwvZGVw ZW5kZW5jeT4NCj4gDQo+ICAJCTwhLS0gSmV0dHkgaXMgbmVlZGVkIGlmIHlvdSdyZSBhcmUgbm90 IHVzaW5nIHRoZSBDWEZTZXJ2bGV0DQo+IC0tPg0KPiAgCQk8ZGVwZW5kZW5jeT4NCj4gDQo+IE1v ZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBp cmUtZGItDQo+IGV4YW1wbGUtc3RydXRzMi0NCj4gY3hmL3NyYy9tYWluL2phdmEvb3JnL2FwYWNo ZS9lbXBpcmUvc3RydXRzMi93ZWJzYW1wbGUvd2ViL1NhbXBsZUNvbmZpZy4NCj4gamF2YQ0KPiBV Ukw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVu ay9lbXBpcmUtZGItDQo+IGV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLXN0cnV0czItDQo+IGN4 Zi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvd2Vic2FtcGxlL3dlYi9T YW1wbGVDb25maWcuDQo+IGphdmE/cmV2PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZp ZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gc3Ry dXRzMi0NCj4gY3hmL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi93ZWJz YW1wbGUvd2ViL1NhbXBsZUNvbmZpZy4NCj4gamF2YSAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0N Cj4gc3RydXRzMi0NCj4gY3hmL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRz Mi93ZWJzYW1wbGUvd2ViL1NhbXBsZUNvbmZpZy4NCj4gamF2YSBXZWQgRmViICAyIDE3OjUwOjIx IDIwMTENCj4gQEAgLTE4LDcgKzE4LDkgQEANCj4gICAqLw0KPiAgcGFja2FnZSBvcmcuYXBhY2hl LmVtcGlyZS5zdHJ1dHMyLndlYnNhbXBsZS53ZWI7DQo+IA0KPiAraW1wb3J0IG9yZy5hcGFjaGUu Y29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUu eG1sLlhNTENvbmZpZ3VyYXRpb247DQo+ICtpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai54bWwuRE9N Q29uZmlndXJhdG9yOw0KPiANCj4gIHB1YmxpYyBjbGFzcyBTYW1wbGVDb25maWcgZXh0ZW5kcyBY TUxDb25maWd1cmF0aW9uIHsNCj4gDQo+IA0KPiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1k Yi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLQ0KPiBleGFtcGxlLXN0cnV0czIt Y3hmL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmZpZy54bWwNCj4gVVJMOiBodHRwOi8vc3Zu LmFwYWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0K PiBleGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS1zdHJ1dHMyLWN4Zi9zcmMvbWFpbi93ZWJhcHAv V0VCLQ0KPiBJTkYvY29uZmlnLnhtbD9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcm dmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9l bXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBz dHJ1dHMyLWN4Zi9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25maWcueG1sIChvcmlnaW5hbCkN Cj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGly ZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMyLWN4Zi9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25m aWcueG1sIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMzAsNTUgKzMwLDQgQEANCj4g IAkJPHNlcnZpY2VQb3J0PjgwODE8L3NlcnZpY2VQb3J0Pg0KPiAgCQk8c2VydmljZU5hbWU+ZW1w bG95ZWVTZXJ2aWNlPC9zZXJ2aWNlTmFtZT4NCj4gIAk8L3Byb3BlcnRpZXMtd2Vic2VydmljZT4N Cj4gLQ0KPiAtCTxsb2c0ajpjb25maWd1cmF0aW9uDQo+IHhtbG5zOmxvZzRqPSJodHRwOi8vamFr YXJ0YS5hcGFjaGUub3JnL2xvZzRqLyI+DQo+IC0NCj4gLQkJPGFwcGVuZGVyIG5hbWU9ImRlZmF1 bHQiDQo+IGNsYXNzPSJvcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlciI+DQo+IC0JCQk8 IS0tIGxheW91dCBjbGFzcz0ib3JnLmFwYWNoZS5sb2c0ai5UVENDTGF5b3V0Ii8gLS0+DQo+IC0J CQk8bGF5b3V0IGNsYXNzPSJvcmcuYXBhY2hlLmxvZzRqLlBhdHRlcm5MYXlvdXQiPg0KPiAtCQkJ CTwhLS0gcGFyYW0gbmFtZT0iQ29udmVyc2lvblBhdHRlcm4iDQo+IHZhbHVlPSJOU0IoJWMpICUt NXAgJW0JYXQgJWwlbiIvIC0tPg0KPiAtCQkJCTxwYXJhbSBuYW1lPSJDb252ZXJzaW9uUGF0dGVy biIgdmFsdWU9IiUtNXANCj4gWyVke3l5eXkvTU0vZGQgSEg6bW19XTogJW0JCWF0ICVsICVuIi8+ DQo+IC0JCQk8L2xheW91dD4NCj4gLQkJPC9hcHBlbmRlcj4NCj4gLQ0KPiAtCQk8IS0tIGxvZyBk ZXRhaWwgY29uZmlndXJhdGlvbiAtLT4NCj4gLQ0KPiAtCQk8bG9nZ2VyIG5hbWU9Im9yZy5hcGFj aGUuZW1waXJlLnhtbCIgYWRkaXRpdml0eT0iZmFsc2UiPg0KPiAtCQkJPGxldmVsIHZhbHVlPSJp bmZvIi8+DQo+IC0JCQk8YXBwZW5kZXItcmVmIHJlZj0iZGVmYXVsdCIvPg0KPiAtCQk8L2xvZ2dl cj4NCj4gLQ0KPiAtCQk8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMiDQo+ IGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0id2FybiIvPg0KPiAtCQkJ PGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJ PGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS5kYiIgYWRkaXRpdml0eT0iZmFsc2UiPg0K PiAtCQkJPGxldmVsIHZhbHVlPSJ3YXJuIi8+DQo+IC0JCQk8YXBwZW5kZXItcmVmIHJlZj0iZGVm YXVsdCIvPg0KPiAtCQk8L2xvZ2dlcj4NCj4gLQ0KPiAtCQk8IS0tIFNldCB0aGlzIGxldmVsIHRv ICJkZWJ1ZyIgdG8gbG9nIGFsbCBTUUwtU3RhdGVtZW50cyAtLQ0KPiA+DQo+IC0JCTxsb2dnZXIg bmFtZT0ib3JnLmFwYWNoZS5lbXBpcmUuZGIuREJEYXRhYmFzZSINCj4gYWRkaXRpdml0eT0iZmFs c2UiPg0KPiAtCQkJPGxldmVsIHZhbHVlPSJkZWJ1ZyIvPg0KPiAtCQkJPGFwcGVuZGVyLXJlZiBy ZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPGxvZ2dlciBuYW1lPSJv cmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMyIg0KPiBhZGRpdGl2aXR5PSJmYWxzZSI+DQo+IC0JCQk8 bGV2ZWwgdmFsdWU9Indhcm4iLz4NCj4gLQkJCTxhcHBlbmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+ DQo+IC0JCTwvbG9nZ2VyPg0KPiAtDQo+IC0JCTxsb2dnZXIgbmFtZT0ib3JnLmFwYWNoZS5lbXBp cmUuc3RydXRzMi53ZWJzYW1wbGUiDQo+IGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZl bCB2YWx1ZT0iZGVidWciLz4NCj4gLQkJCTxhcHBlbmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+ IC0JCTwvbG9nZ2VyPg0KPiAtDQo+IC0JCTxyb290Pg0KPiAtCQkJPHByaW9yaXR5IHZhbHVlPSJp bmZvIi8+DQo+IC0JCQk8YXBwZW5kZXItcmVmIHJlZj0iZGVmYXVsdCIvPg0KPiAtCQk8L3Jvb3Q+ DQo+IC0NCj4gLQk8L2xvZzRqOmNvbmZpZ3VyYXRpb24+DQo+IC0NCj4gIDwvY29uZmlnPg0KPiAN Cj4gQWRkZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2Vt cGlyZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMyLWN4Zi9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9s b2c0ai5wcm9wZXJ0aWVzDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1 YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gZXhhbXBsZXMvZW1waXJlLWRiLWV4 YW1wbGUtc3RydXRzMi1jeGYvc3JjL21haW4vd2ViYXBwL1dFQi0NCj4gSU5GL2xvZzRqLnByb3Bl cnRpZXM/cmV2PTEwNjY1NDcmdmlldz1hdXRvDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0N Cj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGly ZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMyLWN4Zi9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9sb2c0 ai5wcm9wZXJ0aWVzIChhZGRlZCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1w aXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMyLWN4Zi9zcmMvbWFp bi93ZWJhcHAvV0VCLUlORi9sb2c0ai5wcm9wZXJ0aWVzIFdlZCBGZWIgIDINCj4gMTc6NTA6MjEg MjAxMQ0KPiBAQCAtMCwwICsxLDIxIEBADQo+ICsjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29m dHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCj4gKyMgb3IgbW9yZSBjb250cmlidXRv ciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQo+ICsjIGRpc3RyaWJ1 dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQo+ICsjIHJlZ2Fy ZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCj4g KyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KPiAr IyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh bmNlDQo+ICsjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl IExpY2Vuc2UgYXQNCj4gKyMNCj4gKyMgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M SUNFTlNFLTIuMA0KPiArIw0KPiArIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQo+ICsjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVy IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQo+ICsjICJBUyBJUyIgQkFTSVMsIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KPiArIyBLSU5ELCBlaXRoZXIg ZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCj4gKyMgc3BlY2lm aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KPiArIyB1 bmRlciB0aGUgTGljZW5zZS4NCj4gKw0KPiArbG9nNGoucm9vdENhdGVnb3J5PUZBVEFMLCBjb25z b2xlDQo+ICtsb2c0ai5hcHBlbmRlci5jb25zb2xlPW9yZy5hcGFjaGUubG9nNGouQ29uc29sZUFw cGVuZGVyDQo+ICtsb2c0ai5hcHBlbmRlci5jb25zb2xlLmxheW91dD1vcmcuYXBhY2hlLmxvZzRq LlBhdHRlcm5MYXlvdXQNCj4gK2xvZzRqLmFwcGVuZGVyLmNvbnNvbGUubGF5b3V0LmNvbnZlcnNp b25QYXR0ZXJuID0gJWR7SVNPODYwMX0gJS01cA0KPiBbJWNdIC0gJW0lbg0KPiANCj4gTW9kaWZp ZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1k Yi0NCj4gZXhhbXBsZS1zdHJ1dHMyL3BvbS54bWwNCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5v cmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBleGFtcGxl cy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gc3RydXRzMi9wb20ueG1sP3Jldj0xMDY2NTQ3JnIxPTEw NjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0K PiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJl LWRiLWV4YW1wbGUtDQo+IHN0cnV0czIvcG9tLnhtbCAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0N Cj4gc3RydXRzMi9wb20ueG1sIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtNTAsMTAg KzUwLDYgQEANCj4gIAkJCTxhcnRpZmFjdElkPmhzcWxkYjwvYXJ0aWZhY3RJZD4NCj4gIAkJPC9k ZXBlbmRlbmN5Pg0KPiAgCQk8ZGVwZW5kZW5jeT4NCj4gLQkJCTxncm91cElkPmxvZzRqPC9ncm91 cElkPg0KPiAtCQkJPGFydGlmYWN0SWQ+bG9nNGo8L2FydGlmYWN0SWQ+DQo+IC0JCTwvZGVwZW5k ZW5jeT4NCj4gLQkJPGRlcGVuZGVuY3k+DQo+ICAgICAgICAgICAgICA8Z3JvdXBJZD5qYXZheC5w b3J0bGV0PC9ncm91cElkPg0KPiAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+cG9ydGxldC1hcGk8 L2FydGlmYWN0SWQ+DQo+ICAgICAgICAgICAgICA8c2NvcGU+cnVudGltZTwvc2NvcGU+DQo+IA0K PiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMv ZW1waXJlLWRiLQ0KPiBleGFtcGxlLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNo ZS9lbXBpcmUvc3RydXRzMi93ZWJzYW1wbGUvd2ViL1NhbXBsZUNvbg0KPiBmaWcuamF2YQ0KPiBV Ukw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVu ay9lbXBpcmUtZGItDQo+IGV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMyL3Ny Yy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi93ZWJzYW1wbGUvd2ViL1NhbXBs ZUNvbg0KPiBmaWcuamF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1k aWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMy L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi93ZWJzYW1wbGUvd2ViL1Nh bXBsZUNvbg0KPiBmaWcuamF2YSAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRi L3RydW5rL2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gc3RydXRzMi9z cmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvd2Vic2FtcGxlL3dlYi9TYW1w bGVDb24NCj4gZmlnLmphdmEgV2VkIEZlYiAgMiAxNzo1MDoyMSAyMDExDQo+IEBAIC0xOCw3ICsx OCw5IEBADQo+ICAgKi8NCj4gIHBhY2thZ2Ugb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi53ZWJz YW1wbGUud2ViOw0KPiANCj4gK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dG YWN0b3J5Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnhtbC5YTUxDb25maWd1cmF0aW9u Ow0KPiAraW1wb3J0IG9yZy5hcGFjaGUubG9nNGoueG1sLkRPTUNvbmZpZ3VyYXRvcjsNCj4gDQo+ ICBwdWJsaWMgY2xhc3MgU2FtcGxlQ29uZmlnIGV4dGVuZHMgWE1MQ29uZmlndXJhdGlvbiB7DQo+ IA0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4 YW1wbGVzL2VtcGlyZS1kYi0NCj4gZXhhbXBsZS1zdHJ1dHMyL3NyYy9tYWluL3dlYmFwcC9XRUIt SU5GL2NvbmZpZy54bWwNCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL2luY3Vi YXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBleGFtcGxlcy9lbXBpcmUtZGItZXhh bXBsZS1zdHJ1dHMyL3NyYy9tYWluL3dlYmFwcC9XRUItDQo+IElORi9jb25maWcueG1sP3Jldj0x MDY2NTQ3JnIxPTEwNjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Cj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhh bXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IHN0cnV0czIvc3JjL21haW4vd2ViYXBwL1dFQi1J TkYvY29uZmlnLnhtbCAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5r L2VtcGlyZS1kYi1leGFtcGxlcy9lbXBpcmUtZGItZXhhbXBsZS0NCj4gc3RydXRzMi9zcmMvbWFp bi93ZWJhcHAvV0VCLUlORi9jb25maWcueG1sIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBA QCAtNjQsNTQgKzY0LDQgQEANCj4gIAkJPHNjaGVtYU5hbWU+REJTQU1QTEU8L3NjaGVtYU5hbWU+ DQo+ICAJPC9wcm9wZXJ0aWVzLXNxbHNlcnZlcj4NCj4gDQo+IC0JPGxvZzRqOmNvbmZpZ3VyYXRp b24NCj4geG1sbnM6bG9nNGo9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvbG9nNGovIj4NCj4g LQ0KPiAtCQk8YXBwZW5kZXIgbmFtZT0iZGVmYXVsdCINCj4gY2xhc3M9Im9yZy5hcGFjaGUubG9n NGouQ29uc29sZUFwcGVuZGVyIj4NCj4gLQkJCTwhLS0gbGF5b3V0IGNsYXNzPSJvcmcuYXBhY2hl LmxvZzRqLlRUQ0NMYXlvdXQiLyAtLT4NCj4gLQkJCTxsYXlvdXQgY2xhc3M9Im9yZy5hcGFjaGUu bG9nNGouUGF0dGVybkxheW91dCI+DQo+IC0JCQkJPCEtLSBwYXJhbSBuYW1lPSJDb252ZXJzaW9u UGF0dGVybiINCj4gdmFsdWU9Ik5TQiglYykgJS01cCAlbQlhdCAlbCVuIi8gLS0+DQo+IC0JCQkJ PHBhcmFtIG5hbWU9IkNvbnZlcnNpb25QYXR0ZXJuIiB2YWx1ZT0iJS01cA0KPiBbJWR7eXl5eS9N TS9kZCBISDptbX1dOiAlbQkJYXQgJWwgJW4iLz4NCj4gLQkJCTwvbGF5b3V0Pg0KPiAtCQk8L2Fw cGVuZGVyPg0KPiAtDQo+IC0JCTwhLS0gbG9nIGRldGFpbCBjb25maWd1cmF0aW9uIC0tPg0KPiAt DQo+IC0JCTxsb2dnZXIgbmFtZT0ib3JnLmFwYWNoZS5lbXBpcmUueG1sIiBhZGRpdGl2aXR5PSJm YWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9ImluZm8iLz4NCj4gLQkJCTxhcHBlbmRlci1yZWYg cmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0KPiAtDQo+IC0JCTxsb2dnZXIgbmFtZT0i b3JnLmFwYWNoZS5lbXBpcmUuY29tbW9ucyINCj4gYWRkaXRpdml0eT0iZmFsc2UiPg0KPiAtCQkJ PGxldmVsIHZhbHVlPSJ3YXJuIi8+DQo+IC0JCQk8YXBwZW5kZXItcmVmIHJlZj0iZGVmYXVsdCIv Pg0KPiAtCQk8L2xvZ2dlcj4NCj4gLQ0KPiAtCQk8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuZW1w aXJlLmRiIiBhZGRpdGl2aXR5PSJmYWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9Indhcm4iLz4N Cj4gLQkJCTxhcHBlbmRlci1yZWYgcmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvbG9nZ2VyPg0KPiAt DQo+IC0JCTwhLS0gU2V0IHRoaXMgbGV2ZWwgdG8gImRlYnVnIiB0byBsb2cgYWxsIFNRTC1TdGF0 ZW1lbnRzIC0tDQo+ID4NCj4gLQkJPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS5kYi5E QkRhdGFiYXNlIg0KPiBhZGRpdGl2aXR5PSJmYWxzZSI+DQo+IC0JCQk8bGV2ZWwgdmFsdWU9ImRl YnVnIi8+DQo+IC0JCQk8YXBwZW5kZXItcmVmIHJlZj0iZGVmYXVsdCIvPg0KPiAtCQk8L2xvZ2dl cj4NCj4gLQ0KPiAtCQk8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIiDQo+ IGFkZGl0aXZpdHk9ImZhbHNlIj4NCj4gLQkJCTxsZXZlbCB2YWx1ZT0id2FybiIvPg0KPiAtCQkJ PGFwcGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJ PGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMyLndlYnNhbXBsZSINCj4gYWRk aXRpdml0eT0iZmFsc2UiPg0KPiAtCQkJPGxldmVsIHZhbHVlPSJkZWJ1ZyIvPg0KPiAtCQkJPGFw cGVuZGVyLXJlZiByZWY9ImRlZmF1bHQiLz4NCj4gLQkJPC9sb2dnZXI+DQo+IC0NCj4gLQkJPHJv b3Q+DQo+IC0JCQk8cHJpb3JpdHkgdmFsdWU9ImluZm8iLz4NCj4gLQkJCTxhcHBlbmRlci1yZWYg cmVmPSJkZWZhdWx0Ii8+DQo+IC0JCTwvcm9vdD4NCj4gLQ0KPiAtCTwvbG9nNGo6Y29uZmlndXJh dGlvbj4NCj4gLQ0KPiAgPC9jb25maWc+DQo+IA0KPiBBZGRlZDogaW5jdWJhdG9yL2VtcGlyZS1k Yi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IHN0cnV0czIv c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvbG9nNGoucHJvcGVydGllcw0KPiBVUkw6IGh0dHA6Ly9z dm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGIt DQo+IGV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLXN0cnV0czIvc3JjL21haW4vd2ViYXBwL1dF Qi0NCj4gSU5GL2xvZzRqLnByb3BlcnRpZXM/cmV2PTEwNjY1NDcmdmlldz1hdXRvDQo+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1w aXJlLWRiLWV4YW1wbGVzL2VtcGlyZS1kYi1leGFtcGxlLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL3dl YmFwcC9XRUItSU5GL2xvZzRqLnByb3BlcnRpZXMgKGFkZGVkKQ0KPiArKysgaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtZGItZXhhbXBsZXMvZW1waXJlLWRiLWV4YW1wbGUtDQo+IHN0 cnV0czIvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvbG9nNGoucHJvcGVydGllcyBXZWQgRmViICAy IDE3OjUwOjIxDQo+IDIwMTENCj4gQEAgLTAsMCArMSwyMSBAQA0KPiArIyBMaWNlbnNlZCB0byB0 aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQo+ICsjIG9yIG1v cmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0K PiArIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlv bg0KPiArIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMg dGhpcyBmaWxlDQo+ICsjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g Mi4wICh0aGUNCj4gKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl cHQgaW4gY29tcGxpYW5jZQ0KPiArIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4g YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQo+ICsjDQo+ICsjICBodHRwOi8vd3d3LmFwYWNoZS5v cmcvbGljZW5zZXMvTElDRU5TRS0yLjANCj4gKyMNCj4gKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KPiArIyBzb2Z0d2FyZSBkaXN0 cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KPiArIyAiQVMg SVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCj4gKyMg S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl DQo+ICsjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRh dGlvbnMNCj4gKyMgdW5kZXIgdGhlIExpY2Vuc2UuDQo+ICsNCj4gK2xvZzRqLnJvb3RDYXRlZ29y eT1GQVRBTCwgY29uc29sZQ0KPiArbG9nNGouYXBwZW5kZXIuY29uc29sZT1vcmcuYXBhY2hlLmxv ZzRqLkNvbnNvbGVBcHBlbmRlcg0KPiArbG9nNGouYXBwZW5kZXIuY29uc29sZS5sYXlvdXQ9b3Jn LmFwYWNoZS5sb2c0ai5QYXR0ZXJuTGF5b3V0DQo+ICtsb2c0ai5hcHBlbmRlci5jb25zb2xlLmxh eW91dC5jb252ZXJzaW9uUGF0dGVybiA9ICVke0lTTzg2MDF9ICUtNXANCj4gWyVjXSAtICVtJW4N Cj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi1leGFt cGxlcy9wb20ueG1sDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gZXhhbXBsZXMvcG9tLnhtbD9yZXY9MTA2 NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLWV4YW1w bGVzL3BvbS54bWwgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9l bXBpcmUtZGItZXhhbXBsZXMvcG9tLnhtbCBXZWQgRmViICAyDQo+IDE3OjUwOjIxIDIwMTENCj4g QEAgLTI2LDYgKzI2LDIyIEBADQo+ICAJPGFydGlmYWN0SWQ+ZW1waXJlLWRiLWV4YW1wbGVzPC9h cnRpZmFjdElkPg0KPiAgCTxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+DQo+ICAJPG5hbWU+QXBh Y2hlIEVtcGlyZS1kYiBFeGFtcGxlczwvbmFtZT4NCj4gKwk8ZGVwZW5kZW5jaWVzPg0KPiArCQk8 ZGVwZW5kZW5jeT4NCj4gKwkJCTxncm91cElkPmNvbW1vbnMtbG9nZ2luZzwvZ3JvdXBJZD4NCj4g KwkJCTxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2luZzwvYXJ0aWZhY3RJZD4NCj4gKwkJCTx2ZXJz aW9uPjEuMC40PC92ZXJzaW9uPg0KPiArCQk8L2RlcGVuZGVuY3k+DQo+ICsJCTxkZXBlbmRlbmN5 Pg0KPiArCQkJPGdyb3VwSWQ+bG9nNGo8L2dyb3VwSWQ+DQo+ICsJCQk8YXJ0aWZhY3RJZD5sb2c0 ajwvYXJ0aWZhY3RJZD4NCj4gKwkJCTx2ZXJzaW9uPjEuMi4xNDwvdmVyc2lvbj4NCj4gKwkJPC9k ZXBlbmRlbmN5Pg0KPiArCQk8ZGVwZW5kZW5jeT4NCj4gKwkJCTxncm91cElkPmNvbW1vbnMtYmVh bnV0aWxzPC9ncm91cElkPg0KPiArCQkJPGFydGlmYWN0SWQ+Y29tbW9ucy1iZWFudXRpbHM8L2Fy dGlmYWN0SWQ+DQo+ICsJCTwvZGVwZW5kZW5jeT4NCj4gKwk8L2RlcGVuZGVuY2llcz4NCj4gIAk8 bW9kdWxlcz4NCj4gIAkJPG1vZHVsZT5lbXBpcmUtZGItZXhhbXBsZS1iYXNpYzwvbW9kdWxlPg0K PiAgCQk8bW9kdWxlPmVtcGlyZS1kYi1leGFtcGxlLWFkdmFuY2VkPC9tb2R1bGU+DQo+IA0KPiBN b2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItbWF2ZW4tcGx1Z2lu L3BvbS54bWwNCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9l bXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBtYXZlbi1wbHVnaW4vcG9tLnhtbD9yZXY9MTA2 NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLW1hdmVu LXBsdWdpbi9wb20ueG1sIChvcmlnaW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1 bmsvZW1waXJlLWRiLW1hdmVuLXBsdWdpbi9wb20ueG1sIFdlZCBGZWIgIDINCj4gMTc6NTA6MjEg MjAxMQ0KPiBAQCAtNTEsOCArNTEsMTQgQEANCj4gIAkJCTx2ZXJzaW9uPjIuMDwvdmVyc2lvbj4N Cj4gIAkJPC9kZXBlbmRlbmN5Pg0KPiAgCQk8ZGVwZW5kZW5jeT4NCj4gKwkJCTxncm91cElkPmNv bW1vbnMtbG9nZ2luZzwvZ3JvdXBJZD4NCj4gKwkJCTxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2lu ZzwvYXJ0aWZhY3RJZD4NCj4gKwkJCTx2ZXJzaW9uPjEuMC40PC92ZXJzaW9uPg0KPiArCQk8L2Rl cGVuZGVuY3k+DQo+ICsJCTxkZXBlbmRlbmN5Pg0KPiAgCQkJPGdyb3VwSWQ+bG9nNGo8L2dyb3Vw SWQ+DQo+ICAJCQk8YXJ0aWZhY3RJZD5sb2c0ajwvYXJ0aWZhY3RJZD4NCj4gKwkJCTx2ZXJzaW9u PjEuMi4xNDwvdmVyc2lvbj4NCj4gIAkJPC9kZXBlbmRlbmN5Pg0KPiAgCQk8ZGVwZW5kZW5jeT4N Cj4gIAkJCTxncm91cElkPmp1bml0PC9ncm91cElkPg0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRv ci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3Jn L2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb24vV2ViQWN0aW9uLmphdmENCj4gVVJMOiBodHRw Oi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJl LWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9h Y3Rpb24vV2ViQWN0aW9uLmphdmE/cg0KPiBldj0xMDY2NTQ3JnIxPTEwNjY1NDYmcjI9MTA2NjU0 NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcv YXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbi9XZWJBY3Rpb24uamF2YQ0KPiAob3JpZ2luYWwp DQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9z cmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvYWN0aW9uL1dlYkFjdGlvbi5q YXZhDQo+IFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMjUsOCArMjUsOCBAQCBpbXBv cnQgamF2YS51dGlsLkxvY2FsZTsNCj4gIGltcG9ydCBqYXZhLnV0aWwuTWFwOw0KPiAgaW1wb3J0 IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsNCj4gDQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21t b25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxv Z0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcuc2xm NGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLkVy cm9ySW5mbzsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLkVycm9yT2JqZWN0 Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMuRXJyb3JUeXBlOw0KPiBAQCAt NTgsNyArNTgsNyBAQCBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgV2ViQWN0aW9uIGV4dGVuZHMNCj4g IHsNCj4gICAgICAvLyBMb2dnZXINCj4gICAgICBAU3VwcHJlc3NXYXJuaW5ncygiaGlkaW5nIikN Cj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExvZyBsb2cgPSBMb2dGYWN0b3J5LmdldExvZyhXZWJB Y3Rpb24uY2xhc3MpOw0KPiArICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nZ2VyIGxvZyA9DQo+IExv Z2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFdlYkFjdGlvbi5jbGFzcyk7DQo+IA0KPiAgICAgIC8vIERl ZmF1bHQgTmFtZSBmb3IgSXRlbSBwYXJhbQ0KPiAgICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIERF RkFVTFRfSVRFTV9QUk9QRVJUWV9OQU1FID0gIml0ZW0iOw0KPiANCj4gTW9kaWZpZWQ6IGluY3Vi YXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEv b3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0L0FjdGlvbkJhcw0KPiBlLmph dmENCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9l bXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0L0FjdGlvbkJhcw0KPiBlLmphdmE/cmV2PTEwNjY1 NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9 PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3Ry dXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvYWN0aW9uc3VwcG9y dC9BY3Rpb25CYXMNCj4gZS5qYXZhIChvcmlnaW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9l bXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0L0FjdGlvbkJhcw0KPiBlLmphdmEgV2VkIEZlYiAg MiAxNzo1MDoyMSAyMDExDQo+IEBAIC0yMCw4ICsyMCw4IEBAIHBhY2thZ2Ugb3JnLmFwYWNoZS5l bXBpcmUuc3RydXRzMi5hY3Rpb24NCj4gDQo+ICBpbXBvcnQgamF2YS5zcWwuQ29ubmVjdGlvbjsN Cj4gDQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0 IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNs ZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9y dCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLkVycm9ySW5mbzsNCj4gIGltcG9ydCBvcmcuYXBh Y2hlLmVtcGlyZS5jb21tb25zLlN0cmluZ1V0aWxzOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1w aXJlLmRhdGEuQ29sdW1uOw0KPiBAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWMgYWJzdHJhY3QgY2xh c3MgQWN0aW9uQmFzZQ0KPiAgICAgIGltcGxlbWVudHMgQWN0aW9uSXRlbVByb3BlcnR5LCBSZXF1 ZXN0UGFyYW1Qcm92aWRlciwNCj4gTG9jYWxlUHJvdmlkZXINCj4gIHsNCj4gICAgICAvLyBMb2dn ZXINCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExvZyBsb2cgPSBMb2dGYWN0b3J5LmdldExvZyhB Y3Rpb25CYXNlLmNsYXNzKTsNCj4gKyAgICBwcm90ZWN0ZWQgc3RhdGljIExvZ2dlciBsb2cgPQ0K PiBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihBY3Rpb25CYXNlLmNsYXNzKTsNCj4gDQo+ICAgICAg cHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBLRVlfU0VQX0NIQVIgID0gJy8nOw0KPiAgICAgIHBy aXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgTkVXX0ZMQUdfQ0hBUiA9ICcqJzsNCj4gQEAgLTEzOCw3 ICsxMzgsNyBAQCBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWN0aW9uQmFzZQ0KPiAgICAgICAgICAg ICAgICAgIG9iaiA9IG9iakNsYXNzLm5ld0luc3RhbmNlKCk7DQo+ICAgICAgICAgICAgICAgICAg Y29udGV4dC5nZXRTZXNzaW9uKCkucHV0KGtleSwgb2JqKTsNCj4gICAgICAgICAgICAgIH0gY2F0 Y2goRXhjZXB0aW9uIGUpIHsNCj4gLSAgICAgICAgICAgICAgICBsb2cuZmF0YWwoIkNhbm5vdCBj cmVhdGUgSW5zdGFuY2Ugb2YgdHlwZSAiICsNCj4gb2JqQ2xhc3MuZ2V0TmFtZSgpLCBlKTsNCj4g KyAgICAgICAgICAgICAgICBsb2cuZXJyb3IoIkNhbm5vdCBjcmVhdGUgSW5zdGFuY2Ugb2YgdHlw ZSAiICsNCj4gb2JqQ2xhc3MuZ2V0TmFtZSgpLCBlKTsNCj4gICAgICAgICAgICAgIH0NCj4gICAg ICAgICAgfQ0KPiAgICAgICAgICByZXR1cm4gb2JqOw0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRv ci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3Jn L2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0L0FjdGlvblBybw0KPiBwZXJ0eVN1 cHBvcnQuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcv YXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvQWN0aW9uUHJvDQo+IHBlcnR5U3Vw cG9ydC5qYXZhP3Jldj0xMDY2NTQ3JnIxPTEwNjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVu ay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9z dHJ1dHMyL2FjdGlvbnN1cHBvcnQvQWN0aW9uUHJvDQo+IHBlcnR5U3VwcG9ydC5qYXZhIChvcmln aW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1 dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0 L0FjdGlvblBybw0KPiBwZXJ0eVN1cHBvcnQuamF2YSBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTEN Cj4gQEAgLTE4LDE1ICsxOCwxNSBAQA0KPiAgICovDQo+ICBwYWNrYWdlIG9yZy5hcGFjaGUuZW1w aXJlLnN0cnV0czIuYWN0aW9uc3VwcG9ydDsNCj4gDQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21t b25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxv Z0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcuc2xm NGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLlN0 cmluZ1V0aWxzOw0KPiANCj4gDQo+ICBwdWJsaWMgY2xhc3MgQWN0aW9uUHJvcGVydHlTdXBwb3J0 DQo+ICB7DQo+ICAgICAgLy8gTG9nZ2VyDQo+IC0gICAgcHJvdGVjdGVkIHN0YXRpYyBMb2cgbG9n ID0NCj4gTG9nRmFjdG9yeS5nZXRMb2coQWN0aW9uUHJvcGVydHlTdXBwb3J0LmNsYXNzKTsNCj4g KyAgICBwcm90ZWN0ZWQgc3RhdGljIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExv Z2dlcihBY3Rpb25Qcm9wZXJ0eVN1cHBvcnQuY2xhc3MpOw0KPiANCj4gICAgICBwcml2YXRlIEFj dGlvbkJhc2UgYWN0aW9uOw0KPiAgICAgIHByaXZhdGUgU3RyaW5nIHByb3BlcnR5TmFtZTsNCj4g DQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3Ry dXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvYWN0aW9uc3VwcG9y dC9Gb3JtQWN0aW8NCj4gblN1cHBvcnQuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9y Zy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIv c3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvRm9y bUFjdGlvDQo+IG5TdXBwb3J0LmphdmE/cmV2PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3 JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9h cGFjaGUvZW1waXJlL3N0cnV0czIvYWN0aW9uc3VwcG9ydC9Gb3JtQWN0aW8NCj4gblN1cHBvcnQu amF2YSAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1k Yi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvYWN0 aW9uc3VwcG9ydC9Gb3JtQWN0aW8NCj4gblN1cHBvcnQuamF2YSBXZWQgRmViICAyIDE3OjUwOjIx IDIwMTENCj4gQEAgLTE4LDggKzE4LDggQEANCj4gICAqLw0KPiAgcGFja2FnZSBvcmcuYXBhY2hl LmVtcGlyZS5zdHJ1dHMyLmFjdGlvbnN1cHBvcnQ7DQo+IA0KPiAtaW1wb3J0IG9yZy5hcGFjaGUu Y29tbW9ucy5sb2dnaW5nLkxvZzsNCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2lu Zy5Mb2dGYWN0b3J5Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQo+ICtpbXBvcnQgb3Jn LnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuY29tbW9u cy5FcnJvckluZm87DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuY29tbW9ucy5FcnJvck9i amVjdDsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLlN0cmluZ1V0aWxzOw0K PiBAQCAtMjgsNyArMjgsNyBAQCBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuZGF0YS5Db2x1bW47 DQo+IA0KPiAgcHVibGljIGFic3RyYWN0IGNsYXNzIEZvcm1BY3Rpb25TdXBwb3J0IGV4dGVuZHMg RXJyb3JPYmplY3QNCj4gIHsNCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExvZyBsb2cgPQ0KPiBM b2dGYWN0b3J5LmdldExvZyhGb3JtQWN0aW9uU3VwcG9ydC5jbGFzcyk7DQo+ICsgICAgcHJvdGVj dGVkIHN0YXRpYyBMb2dnZXIgbG9nID0NCj4gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoRm9ybUFj dGlvblN1cHBvcnQuY2xhc3MpOw0KPiANCj4gICAgICBwcm90ZWN0ZWQgQWN0aW9uQmFzZSBhY3Rp b247DQo+IA0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJl LWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9h Y3Rpb25zdXBwb3J0L0xpc3RBY3Rpbw0KPiBuU3VwcG9ydC5qYXZhDQo+IFVSTDogaHR0cDovL3N2 bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0N Cj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvYWN0aW9u c3VwcG9ydC9MaXN0QWN0aW8NCj4gblN1cHBvcnQuamF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2 JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0t IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWlu L2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0L0xpc3RBY3Rpbw0K PiBuU3VwcG9ydC5qYXZhIChvcmlnaW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1 bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUv c3RydXRzMi9hY3Rpb25zdXBwb3J0L0xpc3RBY3Rpbw0KPiBuU3VwcG9ydC5qYXZhIFdlZCBGZWIg IDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMTgsOCArMTgsOCBAQA0KPiAgICovDQo+ICBwYWNrYWdl IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIuYWN0aW9uc3VwcG9ydDsNCj4gDQo+IC1pbXBvcnQg b3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29t bW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4g K2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVt cGlyZS5jb21tb25zLkVycm9yT2JqZWN0Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmRh dGEuQ29sdW1uRXhwcjsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMyLmFjdGlv bi5MaXN0UGFnaW5nSW5mbzsNCj4gQEAgLTM3LDcgKzM3LDcgQEAgaW1wb3J0IG9yZy5hcGFjaGUu ZW1waXJlLnN0cnV0czIuYWN0aW9uLg0KPiAgcHVibGljIGFic3RyYWN0IGNsYXNzIExpc3RBY3Rp b25TdXBwb3J0IGV4dGVuZHMgRXJyb3JPYmplY3QNCj4gICAgICBpbXBsZW1lbnRzIExpc3RQYWdp bmdJbmZvLCBMaXN0U29ydGluZ0luZm8NCj4gIHsNCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExv ZyBsb2cgPQ0KPiBMb2dGYWN0b3J5LmdldExvZyhMaXN0QWN0aW9uU3VwcG9ydC5jbGFzcyk7DQo+ ICsgICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dnZXIgbG9nID0NCj4gTG9nZ2VyRmFjdG9yeS5nZXRM b2dnZXIoTGlzdEFjdGlvblN1cHBvcnQuY2xhc3MpOw0KPiANCj4gICAgICBwcm90ZWN0ZWQgQWN0 aW9uQmFzZSBhY3Rpb247DQo+ICAgICAgcHJvdGVjdGVkIFN0cmluZyBwcm9wZXJ0eU5hbWU7DQo+ IA0KPiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0 cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBv cnQvUmVhZGVyTGlzDQo+IHRBY3Rpb25TdXBwb3J0LmphdmENCj4gVVJMOiBodHRwOi8vc3ZuLmFw YWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBz dHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb25zdXBw b3J0L1JlYWRlckxpcw0KPiB0QWN0aW9uU3VwcG9ydC5qYXZhP3Jldj0xMDY2NTQ3JnIxPTEwNjY1 NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiAt LS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21h aW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvUmVhZGVyTGlz DQo+IHRBY3Rpb25TdXBwb3J0LmphdmEgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGly ZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hl L2VtcGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvUmVhZGVyTGlzDQo+IHRBY3Rpb25TdXBwb3J0 LmphdmEgV2VkIEZlYiAgMiAxNzo1MDoyMSAyMDExDQo+IEBAIC0xOCw4ICsxOCw4IEBADQo+ICAg Ki8NCj4gIHBhY2thZ2Ugb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi5hY3Rpb25zdXBwb3J0Ow0K PiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2c7DQo+IC1pbXBvcnQg b3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsNCj4gK2ltcG9ydCBvcmcuc2xm NGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KPiAgaW1wb3J0 IG9yZy5hcGFjaGUuZW1waXJlLmRiLkRCQ29tbWFuZEV4cHI7DQo+ICBpbXBvcnQgb3JnLmFwYWNo ZS5lbXBpcmUuZGIuREJSZWFkZXI7DQo+IA0KPiBAQCAtMzQsNyArMzQsNyBAQCBpbXBvcnQgb3Jn LmFwYWNoZS5lbXBpcmUuZGIuREJSZWFkZXI7DQo+ICBwdWJsaWMgY2xhc3MgUmVhZGVyTGlzdEFj dGlvblN1cHBvcnQgZXh0ZW5kcyBMaXN0QWN0aW9uU3VwcG9ydA0KPiAgew0KPiAgICAgIEBTdXBw cmVzc1dhcm5pbmdzKCJoaWRpbmciKQ0KPiAtICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nIGxvZyA9 DQo+IExvZ0ZhY3RvcnkuZ2V0TG9nKFJlY29yZEFjdGlvblN1cHBvcnQuY2xhc3MpOw0KPiArICAg IHByb3RlY3RlZCBzdGF0aWMgTG9nZ2VyIGxvZyA9DQo+IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2Vy KFJlY29yZEFjdGlvblN1cHBvcnQuY2xhc3MpOw0KPiANCj4gICAgICBwcm90ZWN0ZWQgREJSZWFk ZXIgIHJlYWRlcjsNCj4gDQo+IA0KPiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVu ay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9z dHJ1dHMyL2FjdGlvbnN1cHBvcnQvUmVjb3JkQWN0DQo+IGlvblN1cHBvcnQuamF2YQ0KPiBVUkw6 IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9l bXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1 dHMyL2FjdGlvbnN1cHBvcnQvUmVjb3JkQWN0DQo+IGlvblN1cHBvcnQuamF2YT9yZXY9MTA2NjU0 NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09 PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1 dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9hY3Rpb25zdXBwb3J0 L1JlY29yZEFjdA0KPiBpb25TdXBwb3J0LmphdmEgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcv YXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvUmVjb3JkQWN0DQo+IGlvblN1cHBv cnQuamF2YSBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTIzLDggKzIzLDggQEAgaW1w b3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQo+ICBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQo+ICBp bXBvcnQgamF2YS51dGlsLk1hcDsNCj4gDQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxv Z2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rv cnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9n Z2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLkVycm9yczsN Cj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLlN0cmluZ1V0aWxzOw0KPiAgaW1w b3J0IG9yZy5hcGFjaGUuZW1waXJlLmRhdGEuUmVjb3JkOw0KPiBAQCAtNzksNyArNzksNyBAQCBw dWJsaWMgY2xhc3MgUmVjb3JkQWN0aW9uU3VwcG9ydCBleHRlbmRzDQo+IA0KPiANCj4gICAgICBA U3VwcHJlc3NXYXJuaW5ncygiaGlkaW5nIikNCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExvZyBs b2cgPQ0KPiBMb2dGYWN0b3J5LmdldExvZyhSZWNvcmRBY3Rpb25TdXBwb3J0LmNsYXNzKTsNCj4g KyAgICBwcm90ZWN0ZWQgc3RhdGljIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExv Z2dlcihSZWNvcmRBY3Rpb25TdXBwb3J0LmNsYXNzKTsNCj4gDQo+ICAgICAgcHJvdGVjdGVkIERC Um93U2V0IHJvd3NldDsNCj4gDQo+IA0KPiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90 cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGly ZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvVGV4dFByb3ZpDQo+IGRlckFjdGlvblN1cHBvcnQuamF2 YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1k Yi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2Vt cGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQvVGV4dFByb3ZpDQo+IGRlckFjdGlvblN1cHBvcnQu amF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1w aXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRz Mi9hY3Rpb25zdXBwb3J0L1RleHRQcm92aQ0KPiBkZXJBY3Rpb25TdXBwb3J0LmphdmEgKG9yaWdp bmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0 czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2FjdGlvbnN1cHBvcnQv VGV4dFByb3ZpDQo+IGRlckFjdGlvblN1cHBvcnQuamF2YSBXZWQgRmViICAyIDE3OjUwOjIxIDIw MTENCj4gQEAgLTIzLDggKzIzLDggQEAgaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KPiAgaW1wb3J0 IGphdmEudXRpbC5Mb2NhbGU7DQo+ICBpbXBvcnQgamF2YS51dGlsLk1hcDsNCj4gDQo+IC1pbXBv cnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUu Y29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsN Cj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gDQo+ICBpbXBvcnQgY29tLm9w ZW5zeW1waG9ueS54d29yazIuTG9jYWxlUHJvdmlkZXI7DQo+ICBpbXBvcnQgY29tLm9wZW5zeW1w aG9ueS54d29yazIuUmVzb3VyY2VCdW5kbGVUZXh0UHJvdmlkZXI7DQo+IEBAIC0zNSw3ICszNSw3 IEBAIHB1YmxpYyBjbGFzcyBUZXh0UHJvdmlkZXJBY3Rpb25TdXBwb3J0IGUNCj4gIHsNCj4gDQo+ ICAgICAgcHJpdmF0ZSBzdGF0aWMgTWFwPExvY2FsZSwgTWFwPFN0cmluZywgU3RyaW5nPj4gbWFw cyA9IG5ldw0KPiBIYXNodGFibGU8TG9jYWxlLCBNYXA8U3RyaW5nLCBTdHJpbmc+PigpOw0KPiAt ICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nIGxvZyA9DQo+IExvZ0ZhY3RvcnkuZ2V0TG9nKFRleHRQ cm92aWRlckFjdGlvblN1cHBvcnQuY2xhc3MpOw0KPiArICAgIHByb3RlY3RlZCBzdGF0aWMgTG9n Z2VyIGxvZyA9DQo+IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFRleHRQcm92aWRlckFjdGlvblN1 cHBvcnQuY2xhc3MpOw0KPiAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTlZBTElE X1RFWFQgPSAiTk9fVEVYVCI7DQo+IA0KPiAgICAgIHByaXZhdGUgTG9jYWxlUHJvdmlkZXIgYUxv Y2FsZVByb3ZpZGVyOw0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsv ZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3Ry dXRzMi9odG1sL0h0bWxUYWdEaWN0aW9uYXJ5Lg0KPiBqYXZhDQo+IFVSTDogaHR0cDovL3N2bi5h cGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4g c3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvaHRtbC9IdG1s VGFnRGljdGlvbmFyeS4NCj4gamF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcm dmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9l bXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2Fw YWNoZS9lbXBpcmUvc3RydXRzMi9odG1sL0h0bWxUYWdEaWN0aW9uYXJ5Lg0KPiBqYXZhIChvcmln aW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1 dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9odG1sL0h0bWxUYWdE aWN0aW9uYXJ5Lg0KPiBqYXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMTgsMTMg KzE4LDEzIEBADQo+ICAgKi8NCj4gIHBhY2thZ2Ugb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi5o dG1sOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2c7DQo+IC1p bXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsNCj4gK2ltcG9ydCBv cmcuc2xmNGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KPiAN Cj4gIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBIdG1sVGFnRGljdGlvbmFyeQ0KPiAgew0KPiAgICAg IC8vIExvZ2dlcg0KPiAtICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nIGxvZyA9DQo+IExvZ0ZhY3Rv cnkuZ2V0TG9nKEh0bWxUYWdEaWN0aW9uYXJ5LmNsYXNzKTsNCj4gKyAgICBwcm90ZWN0ZWQgc3Rh dGljIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihIdG1sVGFnRGljdGlv bmFyeS5jbGFzcyk7DQo+IA0KPiAgICAgIHByaXZhdGUgc3RhdGljIEh0bWxUYWdEaWN0aW9uYXJ5 IGh0bWxEaWN0b25hcnk7DQo+IA0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvc3RydXRzMi9odG1sL0h0bWxXcml0ZXIuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hl Lm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0 czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2h0bWwvSHRtbFdyaXRl ci5qYXZhP3JlDQo+IHY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1 bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUv c3RydXRzMi9odG1sL0h0bWxXcml0ZXIuamF2YQ0KPiAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29y Zy9hcGFjaGUvZW1waXJlL3N0cnV0czIvaHRtbC9IdG1sV3JpdGVyLmphdmENCj4gV2VkIEZlYiAg MiAxNzo1MDoyMSAyMDExDQo+IEBAIC0yMSw4ICsyMSw4IEBAIHBhY2thZ2Ugb3JnLmFwYWNoZS5l bXBpcmUuc3RydXRzMi5odG1sOw0KPiAgaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQo+ICBp bXBvcnQgamF2YS5pby5Xcml0ZXI7DQo+IA0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5s b2dnaW5nLkxvZzsNCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0 b3J5Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxv Z2dlckZhY3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuY29tbW9ucy5TdHJpbmdV dGlsczsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZy54d29yay5TdHJpbmdFc2Nh cGVVdGlsczsNCj4gDQo+IEBAIC0zMCw3ICszMCw3IEBAIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1v bnMubGFuZy54d29yay5TdHINCj4gIHB1YmxpYyBjbGFzcyBIdG1sV3JpdGVyDQo+ICB7DQo+ICAg ICAgLy8gTG9nZ2VyDQo+IC0gICAgcHJvdGVjdGVkIHN0YXRpYyBMb2cgbG9nID0gTG9nRmFjdG9y eS5nZXRMb2coSHRtbFdyaXRlci5jbGFzcyk7DQo+ICsgICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dn ZXIgbG9nID0NCj4gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoSHRtbFdyaXRlci5jbGFzcyk7DQo+ IA0KPiAgICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSHRtbFRhZw0KPiAgICAgIHsNCj4gQEAgLTIw NSw4ICsyMDUsNyBAQCBwdWJsaWMgY2xhc3MgSHRtbFdyaXRlcg0KPiAgICAgICAgICAgICAgaWYg KGVuZE9mTGluZSkNCj4gICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGUoIlxuIik7DQo+ICAg ICAgICAgICAgfSBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7DQo+IC0gICAgICAgICAgICAgIGxvZy5l cnJvcihlLmdldE1lc3NhZ2UoKSk7DQo+IC0gICAgICAgICAgICAgIGxvZy5lcnJvcihlLmdldFN0 YWNrVHJhY2UoKSk7DQo+ICsgICAgICAgICAgICAgIGxvZy5lcnJvcihlLmdldE1lc3NhZ2UoKSwg ZSk7DQo+ICAgICAgICAgICAgfQ0KPiAgICAgIH0NCj4gDQo+IA0KPiBNb2RpZmllZDogaW5jdWJh dG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9v cmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2ludGVyY2VwdG9ycy9BY3Rpb25BY2NlDQo+IHNzSW50 ZXJjZXB0b3IuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJh dG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9v cmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2ludGVyY2VwdG9ycy9BY3Rpb25BY2NlDQo+IHNzSW50 ZXJjZXB0b3IuamF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZm DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvc3RydXRzMi9pbnRlcmNlcHRvcnMvQWN0aW9uQWNjZQ0KPiBzc0ludGVyY2VwdG9yLmphdmEg KG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+ IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2ludGVyY2Vw dG9ycy9BY3Rpb25BY2NlDQo+IHNzSW50ZXJjZXB0b3IuamF2YSBXZWQgRmViICAyIDE3OjUwOjIx IDIwMTENCj4gQEAgLTE4LDggKzE4LDggQEANCj4gICAqLw0KPiAgcGFja2FnZSBvcmcuYXBhY2hl LmVtcGlyZS5zdHJ1dHMyLmludGVyY2VwdG9yczsNCj4gDQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5j b21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5n LkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcu c2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMy LmFjdGlvbi5BY3Rpb25BY2Nlc3NWYWxpZGF0b3I7DQo+IA0KPiAgaW1wb3J0IGNvbS5vcGVuc3lt cGhvbnkueHdvcmsyLkFjdGlvbkludm9jYXRpb247DQo+IEBAIC0zMSw3ICszMSw3IEBAIHB1Ymxp YyBjbGFzcyBBY3Rpb25BY2Nlc3NJbnRlcmNlcHRvciBleHQNCj4gIHsNCj4gICAgICAvLyBMb2dn ZXINCj4gICAgICBAU3VwcHJlc3NXYXJuaW5ncygiaGlkaW5nIikNCj4gLSAgICBwcm90ZWN0ZWQg c3RhdGljIExvZyBsb2cgPQ0KPiBMb2dGYWN0b3J5LmdldExvZyhBY3Rpb25BY2Nlc3NJbnRlcmNl cHRvci5jbGFzcyk7DQo+ICsgICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dnZXIgbG9nID0NCj4gTG9n Z2VyRmFjdG9yeS5nZXRMb2dnZXIoQWN0aW9uQWNjZXNzSW50ZXJjZXB0b3IuY2xhc3MpOw0KPiAN Cj4gICAgICBwcml2YXRlIFN0cmluZyBsb2dpbkFjdGlvbiA9IG51bGw7DQo+IA0KPiANCj4gTW9k aWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3Ny Yy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9pbnRlcmNlcHRvcnMvSW50ZXJj ZXB0bw0KPiByU3VwcG9ydC5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2 Yy9pbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFp bi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvaW50ZXJjZXB0b3JzL0ludGVyY2VwdG8N Cj4gclN1cHBvcnQuamF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1k aWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9l bXBpcmUvc3RydXRzMi9pbnRlcmNlcHRvcnMvSW50ZXJjZXB0bw0KPiByU3VwcG9ydC5qYXZhIChv cmlnaW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBz dHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9pbnRlcmNlcHRv cnMvSW50ZXJjZXB0bw0KPiByU3VwcG9ydC5qYXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0K PiBAQCAtMjYsOCArMjYsOCBAQCBpbXBvcnQgamF2YXgucG9ydGxldC5Qb3J0bGV0UmVzcG9uc2U7 DQo+ICBpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsNCj4gIGlt cG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsNCj4gDQo+IC1pbXBv cnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUu Y29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsN Cj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hl LnN0cnV0czIuU2VydmxldEFjdGlvbkNvbnRleHQ7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5zdHJ1 dHMyLnBvcnRsZXQuc2VydmxldC5Qb3J0bGV0U2VydmxldFJlcXVlc3Q7DQo+ICBpbXBvcnQgb3Jn LmFwYWNoZS5zdHJ1dHMyLnBvcnRsZXQuc2VydmxldC5Qb3J0bGV0U2VydmxldFJlc3BvbnNlOw0K PiBAQCAtMzksNyArMzksNyBAQCBpbXBvcnQgY29tLm9wZW5zeW1waG9ueS54d29yazIuaW50ZXJj ZXB0DQo+ICBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgSW50ZXJjZXB0b3JTdXBwb3J0IGV4dGVuZHMg QWJzdHJhY3RJbnRlcmNlcHRvcg0KPiAgew0KPiAgICAgIC8vIExvZ2dlcg0KPiAtICAgIHByb3Rl Y3RlZCBzdGF0aWMgTG9nIGxvZyA9DQo+IExvZ0ZhY3RvcnkuZ2V0TG9nKEludGVyY2VwdG9yU3Vw cG9ydC5jbGFzcyk7DQo+ICsgICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dnZXIgbG9nID0NCj4gTG9n Z2VyRmFjdG9yeS5nZXRMb2dnZXIoSW50ZXJjZXB0b3JTdXBwb3J0LmNsYXNzKTsNCj4gDQo+ICAg ICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTk9ORSA9ICJub25lIjsNCj4gDQo+IA0KPiBN b2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIv c3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRzL0Fu Y2hvckNvDQo+IG1wb25lbnQuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3 dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21h aW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRzL0FuY2hvckNv DQo+IG1wb25lbnQuamF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1k aWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9l bXBpcmUvc3RydXRzMi9qc3AvY29tcG9uZW50cy9BbmNob3JDbw0KPiBtcG9uZW50LmphdmEgKG9y aWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0 cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25l bnRzL0FuY2hvckNvDQo+IG1wb25lbnQuamF2YSBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4g QEAgLTI0LDggKzI0LDggQEAgaW1wb3J0IGphdmEuaW8uV3JpdGVyOw0KPiAgaW1wb3J0IGphdmF4 LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7DQo+ICBpbXBvcnQgamF2YXguc2Vydmxl dC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7DQo+IA0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29t bW9ucy5sb2dnaW5nLkxvZzsNCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5M b2dGYWN0b3J5Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQo+ICtpbXBvcnQgb3JnLnNs ZjRqLkxvZ2dlckZhY3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi5o dG1sLkh0bWxUYWdEaWN0aW9uYXJ5Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0 czIuaHRtbC5IdG1sV3JpdGVyOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIu aHRtbC5IdG1sV3JpdGVyLkh0bWxUYWc7DQo+IEBAIC0zNyw3ICszNyw3IEBAIGltcG9ydCBjb20u b3BlbnN5bXBob255Lnh3b3JrMi51dGlsLlZhbHUNCj4gIHB1YmxpYyBjbGFzcyBBbmNob3JDb21w b25lbnQgZXh0ZW5kcyBBbmNob3INCj4gIHsNCj4gICAgICAvLyBMb2dnZXINCj4gLSAgICBwcm90 ZWN0ZWQgc3RhdGljIExvZyBsb2cgPQ0KPiBMb2dGYWN0b3J5LmdldExvZyhBbmNob3JDb21wb25l bnQuY2xhc3MpOw0KPiArICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nZ2VyIGxvZyA9DQo+IExvZ2dl ckZhY3RvcnkuZ2V0TG9nZ2VyKEFuY2hvckNvbXBvbmVudC5jbGFzcyk7DQo+IA0KPiAgICAgIHBy aXZhdGUgU3RyaW5nICB0ZXh0Ow0KPiAgICAgIC8qDQo+IA0KPiBNb2RpZmllZDogaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcv YXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRzL0NhbGVuZGFyDQo+IENvbXBvbmVu dC5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFj aGUvZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMvQ2FsZW5kYXINCj4gQ29tcG9uZW50Lmph dmE/cmV2PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGly ZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIv anNwL2NvbXBvbmVudHMvQ2FsZW5kYXINCj4gQ29tcG9uZW50LmphdmEgKG9yaWdpbmFsKQ0KPiAr KysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21h aW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRzL0NhbGVuZGFy DQo+IENvbXBvbmVudC5qYXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMjUsOCAr MjUsOCBAQCBpbXBvcnQgamF2YS51dGlsLk1hcDsNCj4gIGltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0 dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Ow0KPiAgaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRw U2VydmxldFJlc3BvbnNlOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2lu Zy5Mb2c7DQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsN Cj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJG YWN0b3J5Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMuQXR0cmlidXRlczsN Cj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLlN0cmluZ1V0aWxzOw0KPiAgaW1w b3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIuaHRtbC5IdG1sV3JpdGVyOw0KPiBAQCAtNDUs NyArNDUsNyBAQCBpbXBvcnQgY29tLm9wZW5zeW1waG9ueS54d29yazIudXRpbC5WYWx1DQo+ICBw dWJsaWMgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBVSUJlYW4NCj4gIHsNCj4gICAg ICAvLyBMb2dnZXINCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExvZyBsb2cgICAgICAgICAgICAg ICAgID0NCj4gTG9nRmFjdG9yeS5nZXRMb2coQ29udHJvbENvbXBvbmVudC5jbGFzcyk7DQo+ICsg ICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dnZXIgbG9nICAgICAgICAgICAgICA9DQo+IExvZ2dlckZh Y3RvcnkuZ2V0TG9nZ2VyKENvbnRyb2xDb21wb25lbnQuY2xhc3MpOw0KPiANCj4gICAgICBwcm90 ZWN0ZWQgVXJsUmVuZGVyZXIgdXJsUmVuZGVyZXI7DQo+IA0KPiANCj4gTW9kaWZpZWQ6IGluY3Vi YXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEv b3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvY29tcG9uZW50cy9Db250cm9sQw0KPiBvbXBv bmVudC5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9h cGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMvQ29udHJvbEMNCj4gb21wb25lbnQu amF2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1w aXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRz Mi9qc3AvY29tcG9uZW50cy9Db250cm9sQw0KPiBvbXBvbmVudC5qYXZhIChvcmlnaW5hbCkNCj4g KysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9t YWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvY29tcG9uZW50cy9Db250cm9s Qw0KPiBvbXBvbmVudC5qYXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMjQsOCAr MjQsOCBAQCBpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsNCj4gIGltcG9ydCBqYXZheC5zZXJ2bGV0 Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Ow0KPiAgaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5I dHRwU2VydmxldFJlc3BvbnNlOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9n Z2luZy5Mb2c7DQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9y eTsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dn ZXJGYWN0b3J5Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMuT2JqZWN0VXRp bHM7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuY29tbW9ucy5PcHRpb25zOw0KPiAgaW1w b3J0IG9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMuU3RyaW5nVXRpbHM7DQo+IEBAIC00Myw3ICs0 Myw3IEBAIGltcG9ydCBjb20ub3BlbnN5bXBob255Lnh3b3JrMi51dGlsLlZhbHUNCj4gIHB1Ymxp YyBhYnN0cmFjdCBjbGFzcyBDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgVUlCZWFuIGltcGxlbWVu dHMNCj4gSW5wdXRDb250cm9sLlZhbHVlSW5mbw0KPiAgew0KPiAgICAgIC8vIExvZ2dlcg0KPiAt ICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nIGxvZyA9DQo+IExvZ0ZhY3RvcnkuZ2V0TG9nKENvbnRy b2xDb21wb25lbnQuY2xhc3MpOw0KPiArICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nZ2VyIGxvZyA9 DQo+IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKENvbnRyb2xDb21wb25lbnQuY2xhc3MpOw0KPiAN Cj4gICAgICAvLyBQcm9wZXJ0aWVzDQo+ICAgICAgcHJvdGVjdGVkIENvbHVtbiAgICAgY29sdW1u Ow0KPiBAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBDb250cm9sQ29t cG9uZW50IGUNCj4gICAgICAgICAgICAgIHJldHVybg0KPiBBY3Rpb25Db250ZXh0LmdldENvbnRl eHQoKS5nZXRBY3Rpb25JbnZvY2F0aW9uKCkuZ2V0QWN0aW9uKCk7DQo+ICAgICAgICAgIH0gY2F0 Y2ggKEV4Y2VwdGlvbiBlKQ0KPiAgICAgICAgICB7DQo+IC0gICAgICAgICAgICBsb2cuZmF0YWwo IlVuYWJsZSB0byBkZXRlY3QgQWN0aW9uLiBBY3Rpb24gSW52b2NhdGlvbiBub3QNCj4gYXZhaWxh YmxlISIpOw0KPiArICAgICAgICAgICAgbG9nLmVycm9yKCJVbmFibGUgdG8gZGV0ZWN0IEFjdGlv bi4gQWN0aW9uIEludm9jYXRpb24gbm90DQo+IGF2YWlsYWJsZSEiKTsNCj4gICAgICAgICAgICAg IHJldHVybiAiIjsNCj4gICAgICAgICAgfQ0KPiAgICAgIH0NCj4gDQo+IE1vZGlmaWVkOiBpbmN1 YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZh L29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMvRGF0YVZhbHUNCj4gZUNv bXBvbmVudC5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29y Zy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMvRGF0YVZhbHUNCj4gZUNvbXBv bmVudC5qYXZhP3Jldj0xMDY2NTQ3JnIxPTEwNjY1NDYmcjI9MTA2NjU0NyZ2aWV3PWRpZmYNCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiAtLS0gaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVu ay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9z dHJ1dHMyL2pzcC9jb21wb25lbnRzL0RhdGFWYWx1DQo+IGVDb21wb25lbnQuamF2YSAob3JpZ2lu YWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRz Mi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMv RGF0YVZhbHUNCj4gZUNvbXBvbmVudC5qYXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBA QCAtMjMsOCArMjMsOCBAQCBpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7DQo+ICBpbXBvcnQg amF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsNCj4gIGltcG9ydCBqYXZheC5z ZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsNCj4gDQo+IC1pbXBvcnQgb3JnLmFwYWNo ZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dn aW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBv cmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1 dHMyLmh0bWwuSHRtbFdyaXRlcjsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMy Lmh0bWwuSHRtbFdyaXRlci5IdG1sVGFnOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0 cnV0czIuanNwLmNvbnRyb2xzLklucHV0Q29udHJvbDsNCj4gQEAgLTQwLDcgKzQwLDcgQEAgcHVi bGljIGNsYXNzIERhdGFWYWx1ZUNvbXBvbmVudCBleHRlbmRzDQo+ICB7DQo+ICAgICAgLy8gTG9n Z2VyDQo+ICAgICAgQFN1cHByZXNzV2FybmluZ3MoImhpZGluZyIpDQo+IC0JcHJvdGVjdGVkIHN0 YXRpYyBMb2cgbG9nID0NCj4gTG9nRmFjdG9yeS5nZXRMb2coRGF0YVZhbHVlQ29tcG9uZW50LmNs YXNzKTsNCj4gKwlwcm90ZWN0ZWQgc3RhdGljIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5 LmdldExvZ2dlcihEYXRhVmFsdWVDb21wb25lbnQuY2xhc3MpOw0KPiANCj4gICAgICBwcm90ZWN0 ZWQgVXJsUmVuZGVyZXIgdXJsUmVuZGVyZXI7DQo+IA0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRv ci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3Jn L2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvY29tcG9uZW50cy9Gb3JtQ29tcA0KPiBvbmVudC5q YXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJl LWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUv ZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMvRm9ybUNvbXANCj4gb25lbnQuamF2YT9yZXY9 MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0K PiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvY29t cG9uZW50cy9Gb3JtQ29tcA0KPiBvbmVudC5qYXZhIChvcmlnaW5hbCkNCj4gKysrIGluY3ViYXRv ci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3Jn L2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvY29tcG9uZW50cy9Gb3JtQ29tcA0KPiBvbmVudC5q YXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMjQsOCArMjQsOCBAQCBpbXBvcnQg amF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxDQo+ICBpbXBvcnQgamF2YXguc2Vydmxl dC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7DQo+IA0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuY29t bW9ucy5sYW5nLnh3b3JrLlN0cmluZ1V0aWxzOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9u cy5sb2dnaW5nLkxvZzsNCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dG YWN0b3J5Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQo+ICtpbXBvcnQgb3JnLnNsZjRq LkxvZ2dlckZhY3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi5odG1s Lkh0bWxXcml0ZXI7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi5odG1sLkh0 bWxXcml0ZXIuSHRtbFRhZzsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLnN0cnV0czIuY29tcG9uZW50 cy5Gb3JtOw0KPiBAQCAtMzYsNyArMzYsNyBAQCBpbXBvcnQgY29tLm9wZW5zeW1waG9ueS54d29y azIudXRpbC5WYWx1DQo+ICBwdWJsaWMgY2xhc3MgRm9ybUNvbXBvbmVudCBleHRlbmRzIEZvcm0N Cj4gIHsNCj4gICAgICAvLyBMb2dnZXINCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExvZyBsb2cg PQ0KPiBMb2dGYWN0b3J5LmdldExvZyhDb250cm9sQ29tcG9uZW50LmNsYXNzKTsNCj4gKyAgICBw cm90ZWN0ZWQgc3RhdGljIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihD b250cm9sQ29tcG9uZW50LmNsYXNzKTsNCj4gDQo+ICAgICAgLy8gSW50ZXJuYWwgdXNlIG9ubHkN Cj4gICAgICBwcml2YXRlIEh0bWxUYWcgZm9ybVRhZyA9IG51bGw7DQo+IA0KPiBNb2RpZmllZDog aW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4v amF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRzL2luZm8vQ2FsDQo+ IGVuZGFySW5mby5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1 YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZh L29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbXBvbmVudHMvaW5mby9DYWwNCj4gZW5k YXJJbmZvLmphdmE/cmV2PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0K PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3Ry dW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJl L3N0cnV0czIvanNwL2NvbXBvbmVudHMvaW5mby9DYWwNCj4gZW5kYXJJbmZvLmphdmEgKG9yaWdp bmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0 czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb21wb25lbnRz L2luZm8vQ2FsDQo+IGVuZGFySW5mby5qYXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBA QCAtMjQsOCArMjQsOCBAQCBpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOw0KPiAgaW1wb3J0IGph dmEudXRpbC5EYXRlOw0KPiAgaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7DQo+IA0KPiAtaW1wb3J0 IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZzsNCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNv bW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5Ow0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQo+ ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5l bXBpcmUuY29tbW9ucy5EYXRlVXRpbHM7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuc3Ry dXRzMi5qc3AuY29tcG9uZW50cy5Db250cm9sQ29tcG9uZW50Ow0KPiANCj4gQEAgLTMzLDcgKzMz LDcgQEAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIuanNwLmNvbQ0KPiAgcHVibGlj IGNsYXNzIENhbGVuZGFySW5mbw0KPiAgew0KPiAgICAgIC8vIExvZ2dlcg0KPiAtICAgIHByb3Rl Y3RlZCBzdGF0aWMgTG9nIGxvZyA9DQo+IExvZ0ZhY3RvcnkuZ2V0TG9nKENvbnRyb2xDb21wb25l bnQuY2xhc3MpOw0KPiArICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nZ2VyIGxvZyA9DQo+IExvZ2dl ckZhY3RvcnkuZ2V0TG9nZ2VyKENvbnRyb2xDb21wb25lbnQuY2xhc3MpOw0KPiANCj4gICAgICBw cml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFURV9GT1JNQVQgPSAieXl5eU1NZGQiOw0KPiAN Cj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4g c3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbnRy b2xzL0lucHV0Q29udHINCj4gb2wuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92 aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3Jj L21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC9jb250cm9scy9JbnB1dENv bnRyDQo+IG9sLmphdmE/cmV2PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlm Zg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRi L3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1w aXJlL3N0cnV0czIvanNwL2NvbnRyb2xzL0lucHV0Q29udHINCj4gb2wuamF2YSAob3JpZ2luYWwp DQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9z cmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL2NvbnRyb2xzL0lucHV0 Q29udHINCj4gb2wuamF2YSBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTIwLDggKzIw LDggQEAgcGFja2FnZSBvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMyLmpzcC5jbw0KPiANCj4gIGlt cG9ydCBqYXZhLnV0aWwuTG9jYWxlOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMu bG9nZ2luZy5Mb2c7DQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFj dG9yeTsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5M b2dnZXJGYWN0b3J5Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMuRXJyb3JJ bmZvOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMuRXJyb3JUeXBlOw0KPiAg aW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLmNvbW1vbnMuT3B0aW9uczsNCj4gQEAgLTM3LDcgKzM3 LDcgQEAgaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nLnh3b3JrLlN0cg0KPiAgcHVibGlj IGFic3RyYWN0IGNsYXNzIElucHV0Q29udHJvbA0KPiAgew0KPiAgICAgIC8vIExvZ2dlcg0KPiAt ICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nIGxvZyA9IExvZ0ZhY3RvcnkuZ2V0TG9nKElucHV0Q29u dHJvbC5jbGFzcyk7DQo+ICsgICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dnZXIgbG9nID0NCj4gTG9n Z2VyRmFjdG9yeS5nZXRMb2dnZXIoSW5wdXRDb250cm9sLmNsYXNzKTsNCj4gDQo+ICAgICAgLy8g U3BlY2lhbCBJbnB1dCBDb2x1bW4gQXR0cmlidXRlcw0KPiAgICAgIHB1YmxpYyBzdGF0aWMgZmlu YWwgU3RyaW5nIE5VTUJFUl9GT1JNQVRfQVRUUklCVVRFICAgID0NCj4gIm51bWJlckZvcm1hdCI7 ICAgLy8gIkludGVnZXIiLCAiQ3VycmVuY3kiLCAiUGVyY2VudCINCj4gDQo+IE1vZGlmaWVkOiBp bmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9q YXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3RhZ3MvRW1waXJlVGFnU3VwcG8NCj4g cnQuamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBh Y2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC90YWdzL0VtcGlyZVRhZ1N1cHBvDQo+IHJ0LmphdmE/cmV2 PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0N Cj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3Rh Z3MvRW1waXJlVGFnU3VwcG8NCj4gcnQuamF2YSAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3Iv ZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9h cGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3RhZ3MvRW1waXJlVGFnU3VwcG8NCj4gcnQuamF2YSBX ZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTI4LDggKzI4LDggQEAgaW1wb3J0IGphdmF4 LnNlcnZsZXQuanNwLkpzcEV4Y2VwdGlvbjsNCj4gDQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5jb21t b25zLmJlYW51dGlscy5CZWFuVXRpbHNCZWFuOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9u cy5iZWFudXRpbHMuUHJvcGVydHlVdGlsc0JlYW47DQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21t b25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxv Z0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcuc2xm NGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5jb21tb25zLlN0 cmluZ1V0aWxzOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIuYWN0aW9uLkFj dGlvbkl0ZW1Qcm9wZXJ0eTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMyLmh0 bWwuSHRtbFdyaXRlci5IdG1sVGFnOw0KPiBAQCAtNDUsNyArNDUsNyBAQCBpbXBvcnQgY29tLm9w ZW5zeW1waG9ueS54d29yazIuVGV4dFByb3ZpDQo+ICBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRW1w aXJlVGFnU3VwcG9ydCBleHRlbmRzIENvbXBvbmVudFRhZ1N1cHBvcnQNCj4gIHsNCj4gICAgICAv LyBMb2dnZXINCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExvZyBsb2cgPQ0KPiBMb2dGYWN0b3J5 LmdldExvZyhFbXBpcmVUYWdTdXBwb3J0LmNsYXNzKTsNCj4gKyAgICBwcm90ZWN0ZWQgc3RhdGlj IExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihFbXBpcmVUYWdTdXBwb3J0 LmNsYXNzKTsNCj4gDQo+ICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gICAgYXV0b1Jlc2V0UGFyYW1z ID0gdHJ1ZTsNCj4gDQo+IEBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNz IEVtcGlyZVRhZ1N1cHBvcnQgZQ0KPiAgICAgICAgICB0cnkgew0KPiAgICAgICAgICAgICAgcmV0 dXJuDQo+IEFjdGlvbkNvbnRleHQuZ2V0Q29udGV4dCgpLmdldEFjdGlvbkludm9jYXRpb24oKS5n ZXRBY3Rpb24oKTsNCj4gICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCj4gLSAgICAg ICAgICAgIGxvZy5mYXRhbCgiVW5hYmxlIHRvIGRldGVjdCBBY3Rpb24uIEFjdGlvbiBJbnZvY2F0 aW9uIG5vdA0KPiBhdmFpbGFibGUhIik7DQo+ICsgICAgICAgICAgICBsb2cuZXJyb3IoIlVuYWJs ZSB0byBkZXRlY3QgQWN0aW9uLiBBY3Rpb24gSW52b2NhdGlvbiBub3QNCj4gYXZhaWxhYmxlISIp Ow0KPiAgICAgICAgICAgICAgcmV0dXJuICIiOw0KPiAgICAgICAgICB9DQo+ICAgICAgfQ0KPiBA QCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBFbXBpcmVUYWdTdXBwb3J0 IGUNCj4gICAgICAgICAgdHJ5IHsNCj4gICAgICAgICAgICAgIHJldHVybg0KPiBBY3Rpb25Db250 ZXh0LmdldENvbnRleHQoKS5nZXRBY3Rpb25JbnZvY2F0aW9uKCkuZ2V0UHJveHkoKS5nZXRBY3Rp b25OYQ0KPiBtZSgpOw0KPiAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KPiAtICAg ICAgICAgICAgbG9nLmZhdGFsKCJVbmFibGUgdG8gZGV0ZWN0IEFjdGlvbiBuYW1lLiBBY3Rpb24g SW52b2NhdGlvbg0KPiBQcm94eSBub3QgYXZhaWxhYmxlISIpOw0KPiArICAgICAgICAgICAgbG9n LmVycm9yKCJVbmFibGUgdG8gZGV0ZWN0IEFjdGlvbiBuYW1lLiBBY3Rpb24gSW52b2NhdGlvbg0K PiBQcm94eSBub3QgYXZhaWxhYmxlISIpOw0KPiAgICAgICAgICAgICAgcmV0dXJuICIiOw0KPiAg ICAgICAgICB9DQo+ICAgICAgfQ0KPiANCj4gTW9kaWZpZWQ6IGluY3ViYXRvci9lbXBpcmUtZGIv dHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBp cmUvc3RydXRzMi9qc3AvdGFncy9GbGV4RGl2VGFnLmphdg0KPiBhDQo+IFVSTDogaHR0cDovL3N2 bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0N Cj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3Rh Z3MvRmxleERpdlRhZy5qYXYNCj4gYT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcm dmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9l bXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2Fw YWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvdGFncy9GbGV4RGl2VGFnLmphdg0KPiBhIChvcmlnaW5h bCkNCj4gKysrIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMy L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvdGFncy9GbGV4RGl2 VGFnLmphdg0KPiBhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtNTIsNyArNTIsNyBA QCBwdWJsaWMgY2xhc3MgRmxleERpdlRhZyBleHRlbmRzIEVtcGlyZVRhDQo+ICAgICAgQE92ZXJy aWRlDQo+ICAgICAgcHVibGljIENvbXBvbmVudCBnZXRCZWFuKFZhbHVlU3RhY2sgc3RhY2ssIEh0 dHBTZXJ2bGV0UmVxdWVzdCByZXEsDQo+IEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzKQ0KPiAgICAg IHsNCj4gLSAgICAgICAgbG9nLmZhdGFsKCJObyBCZWFuIGF2YWlsYWJsZSBmb3IgZmxleC10YWci KTsNCj4gKyAgICAgICAgbG9nLmVycm9yKCJObyBCZWFuIGF2YWlsYWJsZSBmb3IgZmxleC10YWci KTsNCj4gICAgICAgICAgcmV0dXJuIG51bGw7DQo+ICAgICAgfQ0KPiANCj4gDQo+IE1vZGlmaWVk OiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFp bi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3RhZ3MvRmxvYXRDbGVhclRhZy4N Cj4gamF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBh Y2hlL2VtcGlyZS9zdHJ1dHMyL2pzcC90YWdzL0Zsb2F0Q2xlYXJUYWcuDQo+IGphdmE/cmV2PTEw NjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K PiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4g c3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3RhZ3Mv RmxvYXRDbGVhclRhZy4NCj4gamF2YSAob3JpZ2luYWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJl LWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUv ZW1waXJlL3N0cnV0czIvanNwL3RhZ3MvRmxvYXRDbGVhclRhZy4NCj4gamF2YSBXZWQgRmViICAy IDE3OjUwOjIxIDIwMTENCj4gQEAgLTIxLDggKzIxLDggQEAgcGFja2FnZSBvcmcuYXBhY2hlLmVt cGlyZS5zdHJ1dHMyLmpzcC50YQ0KPiAgaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLkpzcEV4Y2Vw dGlvbjsNCj4gIGltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC50YWdleHQuQm9keVRhZ1N1cHBvcnQ7 DQo+IA0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZzsNCj4gLWltcG9y dCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5Ow0KPiAraW1wb3J0IG9yZy5z bGY0ai5Mb2dnZXI7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQo+ICBpbXBv cnQgb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi5odG1sLkh0bWxUYWdEaWN0aW9uYXJ5Ow0KPiAN Cj4gDQo+IEBAIC0zMCw3ICszMCw3IEBAIGltcG9ydCBvcmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMy Lmh0bWwuSHQNCj4gIHB1YmxpYyBjbGFzcyBGbG9hdENsZWFyVGFnIGV4dGVuZHMgQm9keVRhZ1N1 cHBvcnQNCj4gIHsNCj4gICAgICAvLyBMb2dnZXINCj4gLSAgICBwcm90ZWN0ZWQgc3RhdGljIExv ZyBsb2cgPSBMb2dGYWN0b3J5LmdldExvZyhGbG9hdENsZWFyVGFnLmNsYXNzKTsNCj4gKyAgICBw cm90ZWN0ZWQgc3RhdGljIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihG bG9hdENsZWFyVGFnLmNsYXNzKTsNCj4gDQo+ICAgICAgQE92ZXJyaWRlDQo+ICAgICAgcHVibGlj IGludCBkb1N0YXJ0VGFnKCkNCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3Ry dW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJl L3N0cnV0czIvanNwL3RhZ3MvSXRlbUxpc3RUYWcuamENCj4gdmENCj4gVVJMOiBodHRwOi8vc3Zu LmFwYWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0K PiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvdGFn cy9JdGVtTGlzdFRhZy5qYQ0KPiB2YT9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcm dmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9l bXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0KPiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2Fw YWNoZS9lbXBpcmUvc3RydXRzMi9qc3AvdGFncy9JdGVtTGlzdFRhZy5qYQ0KPiB2YSAob3JpZ2lu YWwpDQo+ICsrKyBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRz Mi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvanNwL3RhZ3MvSXRlbUxp c3RUYWcuamENCj4gdmEgV2VkIEZlYiAgMiAxNzo1MDoyMSAyMDExDQo+IEBAIC0yNiw4ICsyNiw4 IEBAIGltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXMNCj4gIGltcG9ydCBq YXZheC5zZXJ2bGV0LmpzcC5Kc3BFeGNlcHRpb247DQo+ICBpbXBvcnQgamF2YXguc2VydmxldC5q c3AuUGFnZUNvbnRleHQ7DQo+IA0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5n LkxvZzsNCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5Ow0K PiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZh Y3Rvcnk7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuZGIuREJSZWFkZXI7DQo+ICBpbXBv cnQgb3JnLmFwYWNoZS5zdHJ1dHMyLmNvbXBvbmVudHMuQ29tcG9uZW50Ow0KPiAgaW1wb3J0IG9y Zy5hcGFjaGUuc3RydXRzMi5jb21wb25lbnRzLkl0ZXJhdG9yQ29tcG9uZW50Ow0KPiBAQCAtNDIs NyArNDIsNyBAQCBpbXBvcnQgY29tLm9wZW5zeW1waG9ueS54d29yazIudXRpbC5WYWx1DQo+ICBw dWJsaWMgY2xhc3MgSXRlbUxpc3RUYWcgZXh0ZW5kcyBJdGVyYXRvclRhZw0KPiAgew0KPiAgICAg IC8vIExvZ2dlcg0KPiAtICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nIGxvZyA9IExvZ0ZhY3Rvcnku Z2V0TG9nKEl0ZW1MaXN0VGFnLmNsYXNzKTsNCj4gKyAgICBwcm90ZWN0ZWQgc3RhdGljIExvZ2dl ciBsb2cgPQ0KPiBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihJdGVtTGlzdFRhZy5jbGFzcyk7DQo+ IA0KPiAgICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSXRlbUl0ZXJhdG9yQ29tcG9uZW50IGV4dGVu ZHMNCj4gSXRlcmF0b3JDb21wb25lbnQNCj4gICAgICB7DQo+IA0KPiBNb2RpZmllZDogaW5jdWJh dG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9v cmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVQb3J0bGV0RGlzcGF0DQo+IGNoZXIu amF2YQ0KPiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGly ZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hl L2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVQb3J0bGV0RGlzcGF0DQo+IGNoZXIuamF2YT9yZXY9 MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLWRiLQ0K PiBzdHJ1dHMyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvc3RydXRzMi93ZWIvRW1w aXJlUG9ydGxldERpc3BhdA0KPiBjaGVyLmphdmEgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9y L2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcv YXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVQb3J0bGV0RGlzcGF0DQo+IGNoZXIuamF2 YSBXZWQgRmViICAyIDE3OjUwOjIxIDIwMTENCj4gQEAgLTI3LDggKzI3LDggQEAgaW1wb3J0IGph dmF4LnBvcnRsZXQuUG9ydGxldFJlcXVlc3Q7DQo+ICBpbXBvcnQgamF2YXgucG9ydGxldC5Qb3J0 bGV0UmVzcG9uc2U7DQo+ICBpbXBvcnQgamF2YXgucG9ydGxldC5Qb3J0bGV0U2Vzc2lvbjsNCj4g DQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9y Zy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRq LkxvZ2dlcjsNCj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBv cmcuYXBhY2hlLmVtcGlyZS5zdHJ1dHMyLmFjdGlvbi5EaXNwb3NhYmxlOw0KPiAgaW1wb3J0IG9y Zy5hcGFjaGUuZW1waXJlLnN0cnV0czIud2ViLnBvcnRsZXQuUG9ydGxldENvbnRleHRXcmFwcGVy Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIud2ViLnBvcnRsZXQuUG9ydGxl dFJlcXVlc3RXcmFwcGVyOw0KPiBAQCAtMzgsNyArMzgsNyBAQCBpbXBvcnQgb3JnLmFwYWNoZS5z dHJ1dHMyLnBvcnRsZXQuZGlzcGF0DQo+IA0KPiAgcHVibGljIGNsYXNzIEVtcGlyZVBvcnRsZXRE aXNwYXRjaGVyIGV4dGVuZHMgSnNyMTY4RGlzcGF0Y2hlciB7DQo+ICAgICAgLy8gTG9nZ2VyDQo+ IC0gICAgcHJvdGVjdGVkIHN0YXRpYyBMb2cgbG9nID0NCj4gTG9nRmFjdG9yeS5nZXRMb2coRW1w aXJlU3RydXRzRGlzcGF0Y2hlci5jbGFzcyk7DQo+ICsgICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dn ZXIgbG9nID0NCj4gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoRW1waXJlU3RydXRzRGlzcGF0Y2hl ci5jbGFzcyk7DQo+IA0KPiAgICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgUkVOREVSX0RJUkVDVF9B Q1RJT04gPQ0KPiAic3RydXRzLnBvcnRsZXQucmVuZGVyRGlyZWN0QWN0aW9uIjsNCj4gDQo+IA0K PiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0 czIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVQb3J0 bGV0UmVzdWx0DQo+IC5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9p bmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9q YXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvd2ViL0VtcGlyZVBvcnRsZXRSZXN1bHQNCj4g LmphdmE/cmV2PTEwNjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2Vt cGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0 czIvd2ViL0VtcGlyZVBvcnRsZXRSZXN1bHQNCj4gLmphdmEgKG9yaWdpbmFsKQ0KPiArKysgaW5j dWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2 YS9vcmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVQb3J0bGV0UmVzdWx0DQo+IC5q YXZhIFdlZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMjQsOCArMjQsOCBAQCBpbXBvcnQg amF2YS51dGlsLk1hcDsNCj4gIGltcG9ydCBqYXZheC5wb3J0bGV0LkFjdGlvblJlc3BvbnNlOw0K PiAgaW1wb3J0IGphdmF4LnBvcnRsZXQuUG9ydGxldEV4Y2VwdGlvbjsNCj4gDQo+IC1pbXBvcnQg b3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29t bW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4g K2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gIGltcG9ydCBvcmcuYXBhY2hlLmVt cGlyZS5zdHJ1dHMyLmFjdGlvbi5XZWJBY3Rpb247DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5zdHJ1 dHMyLnBvcnRsZXQuUG9ydGxldEFjdGlvbkNvbnN0YW50czsNCj4gIGltcG9ydCBvcmcuYXBhY2hl LnN0cnV0czIucG9ydGxldC5jb250ZXh0LlBvcnRsZXRBY3Rpb25Db250ZXh0Ow0KPiBAQCAtMzcs NyArMzcsNyBAQCBwdWJsaWMgY2xhc3MgRW1waXJlUG9ydGxldFJlc3VsdCBleHRlbmRzDQo+ICB7 DQo+ICAJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLQ0KPiA2 ODgzMjcyNDMyOTkzMjE2Mjc4TDsNCj4gDQo+IC0gICAgcHJvdGVjdGVkIHN0YXRpYyBMb2cgbG9n ID0NCj4gTG9nRmFjdG9yeS5nZXRMb2coRW1waXJlUG9ydGxldFJlc3VsdC5jbGFzcyk7DQo+ICsg ICAgcHJvdGVjdGVkIHN0YXRpYyBMb2dnZXIgbG9nID0NCj4gTG9nZ2VyRmFjdG9yeS5nZXRMb2dn ZXIoRW1waXJlUG9ydGxldFJlc3VsdC5jbGFzcyk7DQo+IA0KPiAgCXByaXZhdGUgU3RyaW5nIHJl bmRlck1ldGhvZCA9ICJyZW5kZXJQb3J0bGV0IjsNCj4gDQo+IA0KPiBNb2RpZmllZDogaW5jdWJh dG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9v cmcvYXBhY2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVTdHJ1dHNEaXNwYXRjDQo+IGhlci5q YXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJl LWRiL3RydW5rL2VtcGlyZS1kYi0NCj4gc3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUv ZW1waXJlL3N0cnV0czIvd2ViL0VtcGlyZVN0cnV0c0Rpc3BhdGMNCj4gaGVyLmphdmE/cmV2PTEw NjY1NDcmcjE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K PiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi0NCj4g c3RydXRzMi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL3N0cnV0czIvd2ViL0VtcGly ZVN0cnV0c0Rpc3BhdGMNCj4gaGVyLmphdmEgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2Vt cGlyZS1kYi90cnVuay9lbXBpcmUtZGItDQo+IHN0cnV0czIvc3JjL21haW4vamF2YS9vcmcvYXBh Y2hlL2VtcGlyZS9zdHJ1dHMyL3dlYi9FbXBpcmVTdHJ1dHNEaXNwYXRjDQo+IGhlci5qYXZhIFdl ZCBGZWIgIDIgMTc6NTA6MjEgMjAxMQ0KPiBAQCAtMjYsOCArMjYsOCBAQCBpbXBvcnQgamF2YXgu c2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxDQo+ICBpbXBvcnQgamF2YXguc2VydmxldC5odHRw Lkh0dHBTZXJ2bGV0UmVzcG9uc2U7DQo+ICBpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBT ZXNzaW9uOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2c7DQo+ IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsNCj4gK2ltcG9y dCBvcmcuc2xmNGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0K PiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLnN0cnV0czIuYWN0aW9uLkRpc3Bvc2FibGU7DQo+ ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi53ZWIuc2VydmxldC5TZXJ2bGV0Q29u dGV4dFdyYXBwZXI7DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuc3RydXRzMi53ZWIuc2Vy dmxldC5TZXJ2bGV0UmVxdWVzdFdyYXBwZXI7DQo+IEBAIC00MCw3ICs0MCw3IEBAIGltcG9ydCBv cmcuYXBhY2hlLnN0cnV0czIuZGlzcGF0Y2hlci5tYXANCj4gIHB1YmxpYyBjbGFzcyBFbXBpcmVT dHJ1dHNEaXNwYXRjaGVyIGV4dGVuZHMgRGlzcGF0Y2hlcg0KPiAgew0KPiAgICAgIC8vIExvZ2dl cg0KPiAtICAgIHByb3RlY3RlZCBzdGF0aWMgTG9nIGxvZyA9DQo+IExvZ0ZhY3RvcnkuZ2V0TG9n KEVtcGlyZVN0cnV0c0Rpc3BhdGNoZXIuY2xhc3MpOw0KPiArICAgIHByb3RlY3RlZCBzdGF0aWMg TG9nZ2VyIGxvZyA9DQo+IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEVtcGlyZVN0cnV0c0Rpc3Bh dGNoZXIuY2xhc3MpOw0KPiANCj4gICAgICBwdWJsaWMgZmluYWwgU3RyaW5nIEFQUExJQ0FUSU9O X0NMQVNTID0gIkFwcGxpY2F0aW9uQ2xhc3MiOw0KPiAgICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcg U0VTU0lPTl9DTEFTUyAgICAgPSAiU2Vzc2lvbkNsYXNzIjsNCj4gDQo+IE1vZGlmaWVkOiBpbmN1 YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS1kYi9wb20ueG1sDQo+IFVSTDogaHR0cDovL3N2 bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS0NCj4g ZGIvcG9tLnhtbD9yZXY9MTA2NjU0NyZyMT0xMDY2NTQ2JnIyPTEwNjY1NDcmdmlldz1kaWZmDQo+ ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3ViYXRvci9lbXBpcmUtZGIvdHJ1 bmsvZW1waXJlLWRiL3BvbS54bWwgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJhdG9yL2VtcGlyZS1k Yi90cnVuay9lbXBpcmUtZGIvcG9tLnhtbCBXZWQgRmViICAyIDE3OjUwOjIxDQo+IDIwMTENCj4g QEAgLTM1LDEyICszNSwxMCBAQA0KPiAgCQkJPGdyb3VwSWQ+Y29tbW9ucy1jb2xsZWN0aW9uczwv Z3JvdXBJZD4NCj4gIAkJCTxhcnRpZmFjdElkPmNvbW1vbnMtY29sbGVjdGlvbnM8L2FydGlmYWN0 SWQ+DQo+ICAJCTwvZGVwZW5kZW5jeT4tLT4NCj4gLQkJPCEtLSBUT0RPIHdlIHNob3VsZCBnZXQg cmlkIG9mIHRoaXMgZGVwZW5kZW5jeSAtLT4NCj4gIAkJPGRlcGVuZGVuY3k+DQo+IC0JCQk8Z3Jv dXBJZD5sb2c0ajwvZ3JvdXBJZD4NCj4gLQkJCTxhcnRpZmFjdElkPmxvZzRqPC9hcnRpZmFjdElk Pg0KPiAtCQkJPCEtLSA8c2NvcGU+cnVudGltZTwvc2NvcGU+LS0+DQo+IC0JCQk8IS0tIDxvcHRp b25hbD50cnVlPC9vcHRpb25hbD4gLS0+DQo+ICsJCQk8Z3JvdXBJZD5vcmcuc2xmNGo8L2dyb3Vw SWQ+DQo+ICsJCQk8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+DQo+ICsJCQk8dmVy c2lvbj4xLjYuMTwvdmVyc2lvbj4NCj4gIAkJPC9kZXBlbmRlbmN5Pg0KPiAgCQk8IS0tIFRFU1Qg LS0+DQo+ICAJCTxkZXBlbmRlbmN5Pg0KPiBAQCAtNTMsNiArNTEsNiBAQA0KPiAgCQkgICAgPGFy dGlmYWN0SWQ+Y29tbW9ucy1pbzwvYXJ0aWZhY3RJZD4NCj4gIAkJICAgIDx2ZXJzaW9uPjEuNDwv dmVyc2lvbj4NCj4gIAkJICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCj4gLQkJPC9kZXBlbmRlbmN5 Pg0KPiArCQk8L2RlcGVuZGVuY3k+DQo+ICAJPC9kZXBlbmRlbmNpZXM+DQo+ICA8L3Byb2plY3Q+ DQo+IA0KPiBNb2RpZmllZDogaW5jdWJhdG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRi L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvY29tbW9ucy9EYXRlVXRpbHMuamF2YQ0K PiBVUkw6IGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvaW5jdWJhdG9yL2VtcGlyZS1kYi90 cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9lbXBpcmUvY29tbW9u cy9EYXRlVXRpbHMuamF2YT9yZXY9MTA2NjU0NyZyDQo+IDE9MTA2NjU0NiZyMj0xMDY2NTQ3JnZp ZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS0NCj4gZGIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGly ZS9jb21tb25zL0RhdGVVdGlscy5qYXZhIChvcmlnaW5hbCkNCj4gKysrIGluY3ViYXRvci9lbXBp cmUtZGIvdHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJl L2NvbW1vbnMvRGF0ZVV0aWxzLmphdmEgV2VkIEZlYiAgMg0KPiAxNzo1MDoyMSAyMDExDQo+IEBA IC0yNSw4ICsyNSw4IEBAIGltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7DQo+ICBpbXBvcnQgamF2 YS51dGlsLkRhdGU7DQo+ICBpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsNCj4gDQo+IC1pbXBvcnQg b3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nOw0KPiAtaW1wb3J0IG9yZy5hcGFjaGUuY29t bW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7DQo+ICtpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCj4g K2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCj4gDQo+ICAvKioNCj4gICAqIFRoaXMg Y2xhc3MgY29udGFpbnMgY29tbW9uIGZ1bmN0aW9ucyBmb3IgY29tcGFyaW5nIGFuZCBjb252ZXJ0 aW5nDQo+IHZhbHVlcyBvZiB0eXBlIERhdGUuDQo+IEBAIC0zNSw3ICszNSw3IEBAIGltcG9ydCBv cmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWMNCj4gIHB1YmxpYyBjbGFzcyBEYXRlVXRp bHMNCj4gIHsNCj4gICAgICAvLyBMb2dnZXINCj4gLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBM b2cgbG9nID0gTG9nRmFjdG9yeS5nZXRMb2coRGF0ZVV0aWxzLmNsYXNzKTsNCj4gKyAgICBwcml2 YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0NCj4gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIo RGF0ZVV0aWxzLmNsYXNzKTsNCj4gDQo+ICAgICAgcHJpdmF0ZSBEYXRlVXRpbHMoKQ0KPiAgICAg IHsNCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS0NCj4g ZGIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9jb21tb25zL0Vycm9yT2JqZWN0Lmph dmENCj4gVVJMOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL2luY3ViYXRvci9lbXBpcmUt ZGIvdHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZW1waXJlL2Nv bW1vbnMvRXJyb3JPYmplY3QuamF2YT9yZXY9MTA2NjU0Nw0KPiAmcjE9MTA2NjU0NiZyMj0xMDY2 NTQ3JnZpZXc9ZGlmZg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+IC0tLSBpbmN1YmF0 b3IvZW1waXJlLWRiL3RydW5rL2VtcGlyZS0NCj4gZGIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hl L2VtcGlyZS9jb21tb25zL0Vycm9yT2JqZWN0LmphdmEgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJh dG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNo ZS9lbXBpcmUvY29tbW9ucy9FcnJvck9iamVjdC5qYXZhIFdlZCBGZWIgIDINCj4gMTc6NTA6MjEg MjAxMQ0KPiBAQCAtMjEsOCArMjEsOCBAQCBwYWNrYWdlIG9yZy5hcGFjaGUuZW1waXJlLmNvbW1v bnM7DQo+ICBpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7DQo+ICBpbXBvcnQgamF2YS51 dGlsLldlYWtIYXNoTWFwOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2lu Zy5Mb2c7DQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsN Cj4gK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJG YWN0b3J5Ow0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuZW1waXJlLkVtcGlyZUV4Y2VwdGlvbjsNCj4g DQo+IA0KPiBAQCAtNDEsNyArNDEsNyBAQCBpbXBvcnQgb3JnLmFwYWNoZS5lbXBpcmUuRW1waXJl RXhjZXB0aW9uDQo+ICBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRXJyb3JPYmplY3QgaW1wbGVtZW50 cyBFcnJvckluZm8NCj4gIHsNCj4gICAgICAvLyBMb2dnZXINCj4gLSAgICBwcml2YXRlIHN0YXRp YyBmaW5hbCBMb2cgbG9nID0NCj4gTG9nRmFjdG9yeS5nZXRMb2coRXJyb3JPYmplY3QuY2xhc3Mp Ow0KPiArICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPQ0KPiBMb2dnZXJGYWN0 b3J5LmdldExvZ2dlcihFcnJvck9iamVjdC5jbGFzcyk7DQo+ICAgICAgLy8gRXhjZXB0aW9ucyBm bGFnDQo+ICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBleGNlcHRpb25zRW5hYmxlZCA9IGZh bHNlOw0KPiANCj4gDQo+IE1vZGlmaWVkOiBpbmN1YmF0b3IvZW1waXJlLWRiL3RydW5rL2VtcGly ZS0NCj4gZGIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGlyZS9jb21tb25zL0Vycm9yVHlw ZS5qYXZhDQo+IFVSTDogaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9pbmN1YmF0b3IvZW1w aXJlLWRiL3RydW5rL2VtcGlyZS0NCj4gZGIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2VtcGly ZS9jb21tb25zL0Vycm9yVHlwZS5qYXZhP3Jldj0xMDY2NTQ3JnINCj4gMT0xMDY2NTQ2JnIyPTEw NjY1NDcmdmlldz1kaWZmDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gLS0tIGluY3Vi YXRvci9lbXBpcmUtZGIvdHJ1bmsvZW1waXJlLQ0KPiBkYi9zcmMvbWFpbi9qYXZhL29yZy9hcGFj aGUvZW1waXJlL2NvbW1vbnMvRXJyb3JUeXBlLmphdmEgKG9yaWdpbmFsKQ0KPiArKysgaW5jdWJh dG9yL2VtcGlyZS1kYi90cnVuay9lbXBpcmUtDQo+IGRiL3NyYy9tYWluL2phdmEvb3JnL2FwYWNo ZS9lbXBpcmUvY29tbW9ucy9FcnJvclR5cGUuamF2YSBXZWQgRmViICAyDQo+IDE3OjUwOjIxIDIw MTENCj4gQEAgLTE4LDggKzE4LDggQEANCj4gICAqLw0KPiAgcGFja2FnZSBvcmcuYXBhY2hlLmVt cGlyZS5jb21tb25zOw0KPiANCj4gLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5M b2c7DQo+IC1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeTsNCj4g K2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KPiAraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0 b3J5Ow0KPiANCj4gIC8qKg0KPiAgICogVGhlIEVycm9yVHlwZSBjbGFzcyBkZWZpbmVzIGEgdHlw ZSBvZiBlcnJvci4NCj4gQEAgLTM0LDcgKzM0LDcgQEAgaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9u cy5sb2dnaW5nLkxvZ0ZhYw0KPiAgICovDQo+ICBwdWJsaWMgY2xhc3MgRXJyb3JUeXBlDQo+ICB7 DQo+IC0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nIGxvZyA9IExvZ0ZhY3RvcnkuZ2V0TG9n KEVycm9yVHlwZS5jbGFzcyk7DQo+ICsgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxv ZyA9DQo+IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEVycm9yVHlwZS5jbGFzcyk7DQo+IA0KPiAg ICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGtleTsNCj4gICAgICBwcml2YXRlIGZpbmFsIFN0cmlu ZyBtc2dQYXR0ZXJuOw0KPiANCg0K