Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 2BD282004F3 for ; Tue, 15 Aug 2017 20:13:26 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 2A5C91671FE; Tue, 15 Aug 2017 18:13:26 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id EE1151671FB for ; Tue, 15 Aug 2017 20:13:24 +0200 (CEST) Received: (qmail 82019 invoked by uid 500); 15 Aug 2017 18:13:22 -0000 Mailing-List: contact user-help@mahout.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@mahout.apache.org Delivered-To: mailing list user@mahout.apache.org Received: (qmail 82007 invoked by uid 99); 15 Aug 2017 18:13:21 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Aug 2017 18:13:21 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 7E0A11805A5 for ; Tue, 15 Aug 2017 18:13:21 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -1.217 X-Spam-Level: X-Spam-Status: No, score=-1.217 tagged_above=-999 required=6.31 tests=[RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_GREY=1.084] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id L0GvO6vMvoia for ; Tue, 15 Aug 2017 18:13:18 +0000 (UTC) Received: from us-smtp-delivery-148.mimecast.com (us-smtp-delivery-148.mimecast.com [216.205.24.148]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 8B36D5F46F for ; Tue, 15 Aug 2017 18:13:18 +0000 (UTC) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03lp0048.outbound.protection.outlook.com [216.32.180.48]) (Using TLS) by us-smtp-1.mimecast.com with ESMTP id us-mta-177-vo8nAtrcMLWbDHlnMZOIlQ-1; Tue, 15 Aug 2017 14:13:16 -0400 Received: from CO2PR10MB0119.namprd10.prod.outlook.com (10.160.9.139) by CO2PR10MB0117.namprd10.prod.outlook.com (10.160.9.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1341.21; Tue, 15 Aug 2017 18:13:13 +0000 Received: from CO2PR10MB0119.namprd10.prod.outlook.com ([10.160.9.139]) by CO2PR10MB0119.namprd10.prod.outlook.com ([10.160.9.139]) with mapi id 15.01.1341.020; Tue, 15 Aug 2017 18:13:13 +0000 From: "Scruggs, Matt" To: "user@mahout.apache.org" Subject: Re: spark-itemsimilarity scalability / Spark parallelism issues (SimilarityAnalysis.cooccurrencesIDSs) Thread-Topic: spark-itemsimilarity scalability / Spark parallelism issues (SimilarityAnalysis.cooccurrencesIDSs) Thread-Index: AQHTFUSokxaeiN4zfkaCiZKbNSGbAqKEu2IAgAAFjyyAAGRWgIAAUiYA////H4A= Date: Tue, 15 Aug 2017 18:13:13 +0000 Message-ID: References: <8CD9EE17-45B2-40A6-A3DF-0B3D16CB73B1@occamsmachete.com> <87EF0EF1-91CA-4902-852C-E70B4F4A3B8B@bronto.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [70.60.104.210] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CO2PR10MB0117;20:9oWDFdjhX+D4TyevcY39Kv8QCzbsXhaw8P81E4SuOdTPUqdkICSF0lTLiU1Viml331vmlCYXjqqCCKQNKS19MYWNm0C6jnaj/ffLPlhyd+2vAHmwo8KJNj6j1H7JpWjFBKzvfvHBKZErsO4MyFpTHQzvRlET2EyXH9YlSjKdWZg= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: bf0b7a43-8f12-4d45-f81a-08d4e4094b3d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(48565401081)(2017052603031)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:CO2PR10MB0117; x-ms-traffictypediagnostic: CO2PR10MB0117: x-exchange-antispam-report-test: UriScan:(166708455590820)(73114469155479); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CO2PR10MB0117;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CO2PR10MB0117; x-forefront-prvs: 04004D94E2 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(39860400002)(199003)(377454003)(24454002)(189002)(101416001)(7736002)(478600001)(6512007)(6306002)(305945005)(99286003)(106356001)(105586002)(966005)(93886004)(53936002)(33656002)(25786009)(2351001)(110136004)(53946003)(6246003)(2950100002)(229853002)(66066001)(8936002)(97736004)(2900100001)(189998001)(6436002)(68736007)(6916009)(3846002)(102836003)(5640700003)(3280700002)(5660300001)(6506006)(6116002)(6486002)(77096006)(2906002)(81166006)(36756003)(3660700001)(1730700003)(81156014)(50986999)(2501003)(82746002)(14454004)(575784001)(54356999)(8676002)(83716003)(76176999)(53546010)(86362001);DIR:OUT;SFP:1102;SCL:1;SRVR:CO2PR10MB0117;H:CO2PR10MB0119.namprd10.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-ID: MIME-Version: 1.0 X-OriginatorOrg: bronto.com X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Aug 2017 18:13:13.3179 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 50dcfda3-55fe-434c-9a75-d4d981a1815e X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR10MB0117 X-MC-Unique: vo8nAtrcMLWbDHlnMZOIlQ-1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 archived-at: Tue, 15 Aug 2017 18:13:26 -0000 VGhhbmtzIFBhdCwgdGhhdCdzIGdvb2QgdG8ga25vdyENCg0KVGhpcyBpcyB0aGUgInJlZHVjZSIg c3RlcCAod2hpY2ggZ2V0cyBpdHMgb3duIHN0YWdlIGluIG15IFNwYXJrIGpvYnMuLi50aGlzIHN0 YWdlIHRha2VzIGFsbW9zdCBhbGwgdGhlIHJ1bnRpbWUpIHdoZXJlIG1vc3Qgb2YgdGhlIHdvcmsg aXMgYmVpbmcgZG9uZSwgYW5kIHRha2VzIGxvbmdlciB0aGUgbW9yZSBzaHVmZmxlIHBhcnRpdGlv bnMgdGhlcmUgYXJlIChyZWxhdGl2ZSB0byAjIG9mIENQVXMpOg0KDQpodHRwczovL2dpdGh1Yi5j b20vYXBhY2hlL21haG91dC9ibG9iLzA4ZTAyNjAyZTk0N2ZmOTQ1YjliZDczYWI1ZjBiNDU4NjNk ZjNlNTMvc3Bhcmsvc3JjL21haW4vc2NhbGEvb3JnL2FwYWNoZS9tYWhvdXQvc3BhcmtiaW5kaW5n cy9ibGFzL0F0QS5zY2FsYSNMMjU4IA0KDQoNCldoeSBkb2VzIHRoZSBydW50aW1lIG9mIHRoaXMg cmVkdWNlIHN0YWdlICh0aGF0IHVsdGltYXRlbHkgY2FsbHMgU2VxdWVudGlhbEFjY2Vzc1NwYXJz ZVZlY3Rvci5nZXRRdWljaygpIGFuZCBzZXRRdWljaygpIGEgbG90KSBkZXBlbmQgb24gdGhlIHJh dGlvIG9mICgjIFNwYXJrIENQVXMgLyBzcGFyay5zcWwuc2h1ZmZsZS5wYXJ0aXRpb25zKT8gRXNz ZW50aWFsbHkgdGhhdCByYXRpbyBkZXRlcm1pbmVzIGhvdyBtYW55ICJjaHVua3MiIG9mIHNodWZm bGUgcGFydGl0aW9uIChyZWR1Y2UpIHRhc2tzIG11c3QgcnVuLCBhbmQgZWFjaCBvZiB0aG9zZSBj aHVua3MgYWx3YXlzIHRha2VzIHRoZSBzYW1lIGFtb3VudCBvZiB0aW1lLCBzbyB0aGUgc3RhZ2Ug ZmluaXNoZXMgaW4gbGVzcyB0aW1lIHdoZW4gdGhhdCByYXRpbyBpcyBsb3cgKHByZWZlcmFibHkg MSkuDQoNCkVYQU1QTEVTIC0gdXNpbmcgMzIgY29yZXMgYW5kIDIwMCBzaHVmZmxlIHBhcnRpdGlv bnMsIHRoaXMgc3RhZ2UgcmVxdWlyZXMgY2VpbCgxNDUgdGFza3MgLyAzMiBjb3JlcykgPSA1ICJj aHVua3MiIG9mIHdvcmsgKDE0NSB0YXNrcyBpbnN0ZWFkIG9mIDIwMCBiZWNhdXNlIG9mIHRoZSBl c3RpbWF0ZVByb2R1Y3RQYXJ0aXRpb25zIGNhbGwgaW4gQXRBKS4gRWFjaCBjaHVuayB0YWtlcyB+ OCBtaW51dGVzLCBzbyAoNSBjaHVua3MgKiA4IG1pbikgPSB+NDAgbWlucy4gRm9yIGEgam9iIHdp dGggMzIgY29yZXMgYW5kIDMyIHNodWZmbGUgcGFydGl0aW9ucyAoc2FtZSBDUFUgcmVzb3VyY2Vz LCBzdGlsbCAxMDAlIHV0aWxpemVkKSwgdGhpcyBzdGFnZSByZXF1aXJlcyBvbmx5IGNlaWwoMjMg dGFza3MgLyAzMiBjb3JlcykgPSAxIGNodW5rIG9mIHdvcmssIHdoaWNoIHRha2VzIHRoZSBzYW1l IDggbWludXRlcywgc28gdGhlIGpvYiBmaW5pc2hlcyB+NXggZmFzdGVyLiBZb3UgY2FuIHRha2Ug dGhpcyB0byB0aGUgZXh0cmVtZSB3aXRoIGp1c3QgMSBjb3JlIGFuZCAxIHNodWZmbGUgcGFydGl0 aW9uLCBhbmQgdGhlIHN0YWdlIHN0aWxsIHRha2VzIHRoZSBzYW1lIGFtb3VudCBvZiB0aW1lISBJ J2QgbG92ZSB0byBrbm93IGlmIHlvdSBjYW4gcmVwcm9kdWNlIHRoaXMgYmVoYXZpb3IuDQoNClRo aXMgZ29lcyBhZ2FpbnN0IG1vc3QgYWR2aWNlIGFuZCBleHBlcmllbmNlIEkndmUgaGFkIHdpdGgg U3BhcmssIHdoZXJlIHlvdSB3YW50IHRvICppbmNyZWFzZSogeW91ciBwYXJ0aXRpb25pbmcgaW4g bWFueSBjYXNlcyAob3IgYXQgbGVhc3QgbGVhdmUgaXQgYXQgdGhlIGRlZmF1bHQgMjAwLCBub3Qg bG93ZXIgaXQgZHJhbWF0aWNhbGx5KSB0byB1dGlsaXplIENQVXMgYmV0dGVyIChhbmQgc2hyaW5r IGVhY2ggaW5kaXZpZHVhbCBwYXJ0aXRpb24ncyB0YXNrKS4gVGhlcmUgc2VlbXMgdG8gYmUgbm8g cmVkdWN0aW9uIGluIGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eSAqcGVyIHRhc2sqICh3aXRoaW4g dGhpcyBzdGFnZSBJJ20gdGFsa2luZyBhYm91dCkgZXZlbiB3aXRoIGhpZ2ggdmFsdWVzIGZvciBz cGFyay5zcWwuc2h1ZmZsZS5wYXJ0aXRpb25zIChzbyBpdCBzZWVtcyB0aGUgZGF0YSBpc24ndCBh Y3R1YWxseSBiZWluZyBwYXJ0aXRpb25lZCBieSB0aGUgc2h1ZmZsZSBwcm9jZXNzKS4gUmVmZXIg YmFjayB0byB0aGUgdGltaW5ncyB3L3ZhcmlvdXMgY29uZmlncyBpbiBteSBmaXJzdCBtZXNzYWdl Lg0KDQpBbHNvLi4uaXMgdGhlcmUgYSBwb3NzaWJpbGl0eSBvZiB1c2luZyBhIGZhc3RlciBoYXNo LWJhc2VkIGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgdGhlIHNldFF1aWNrKCkgLyBnZXRRdWlj aygpIG1ldGhvZHMgb2YgU2VxdWVudGlhbEFjY2Vzc1NwYXJzZVZlY3Rvcj8gVGhlIGphdmFkb2Mg b24gdGhvc2UgbWV0aG9kcyBtZW50aW9ucyB0aGV5IHNob3VsZG4ndCBiZSB1c2VkIHVubGVzcyBh YnNvbHV0ZWx5IG5lY2Vzc2FyeSBkdWUgdG8gdGhlaXIgTyhsb2cgbikgY29tcGxleGl0eS4NCg0K DQpUaGFua3MgZm9yIHlvdXIgdGltZS4uLnRoaXMgaXMgZnVuIHN0dWZmIQ0KTWF0dA0KDQoNCg0K T24gOC8xNS8xNywgMTA6MTUgQU0sICJQYXQgRmVycmVsIiA8cGF0QG9jY2Ftc21hY2hldGUuY29t PiB3cm90ZToNCg0KPkdyZWF0LCB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byB1c2UgdGhlIEFQSXMu IFRoZSBiaWcgd2luIHdpdGggQ0NPLCB0aGUgYWxnbyB5b3UgYXJlIHVzaW5nIGlzIHdpdGggbXVs dGlwbGUgdXNlciBhY3Rpb25zLiBCZSBhd2FyZSB0aGF0IHdoZW4geW91IGdvIHRvIHRoaXMgbWV0 aG9kcyB0aGUgaW5wdXQgSW5kZXhlZERhdGFzZXRzIG11c3QgYmUgY29lcmNlZCB0byBoYXZlIGNv bXBhdGlibGUgZGltZW5zaW9uYWxpdHksIGluIHRoaXMgY2FzZSB0aGUgcHJpbWFyeSBhY3Rpb24g ZGVmaW5lcyB0aGUgdXNlci1zZXQgdXNlZCBpbiBjYWxjdWxhdGluZyB0aGUgbW9kZWzigJRub3Qg dGhlIG9uZSBmb3IgbWFraW5nIHF1ZXJpZXMsIHdoaWNoIGNhbiB1c2UgYW5vbnltb3VzIHVzZXIg IGhpc3RvcnkuIEJ1dCB0aGF0IGlzIGZvciBsYXRlciBhbmQgb3V0c2lkZSBNYWhvdXQuDQo+DQo+ MSkgNHggbWF4IHBhcmFsbGVsaXNtIGlzIGEgcnVsZSBvZiB0aHVtYiBzaW5jZSB0aGUgY29yZXMg bWF5IG5vdCBuZWVkIDEwMCUgZHV0eSBjeWNsZSwgaWYgdGhleSBhcmUgYWxyZWFkeSBhdCAxMDAl IHRoZSA0eCBkb2VzIG5vIGdvb2QuIDIpIHlvdSBoYXZlIGZvdW5kIGEgbG9uZyBydW5uaW5nIHRh c2sgYnV0IHRoZXJlIHdpbGwgYWx3YXlzIGJlIG9uZSwgaWYgaXQgd2VyZW7igJl0IHRoaXMgb25l IGl0IHdvdWxkIGJlIGFub3RoZXIuIERpZmZlcmVudCB0eXBlcyBvZiB0YXNrcyB1c2UgcmVzb3Vy Y2VzIGRpZmZlcmVudGx5LiBGb3IgaW5zdGFuY2UgdGhlIGNvbGxlY3RzLCB3aGljaCBtdXN0IGV2 ZW50dWFsbHkgdXNlIGEgdGhlIG1lbW9yeSBvZiB0aGUgRHJpdmVyIHRvIGluc3RhbnRpYXRlIGFu IGluLW1lbW9yeSBkYXRhIHN0cnVjdHVyZS4gVGhlcmUgaXMgbm8gbWFnaWMgY2hvaWNlIHRvIG1h a2UgdGhpcyB3b3JrIGRpZmZlcmVudGx5IGJ1dCBpdCBhdm9pZCBzZXZlcmFsIGpvaW5zLCB3aGlj aCBhcmUgbXVjaCBzbG93ZXIuDQo+DQo+SeKAmW0gbm90IHF1aXRlIHN1cmUgd2hhdCB5b3VyIHF1 ZXN0aW9uIGlzLg0KPg0KPg0KPk9uIEF1ZyAxNSwgMjAxNywgYXQgNjoyMSBBTSwgU2NydWdncywg TWF0dCA8bWF0dC5zY3J1Z2dzQGJyb250by5jb20+IHdyb3RlOg0KPg0KPkhpIFBhdCwNCj4NCj5J J3ZlIHRha2VuIHNvbWUgc2NyZWVuc2hvdHMgb2YgbXkgU3BhcmsgVUkgdG8gaG9wZWZ1bGx5IHNo ZWQgc29tZSBsaWdodCBvbiB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gRG8geW91IG1pbmQgaWYg SSBzZW5kIHlvdSBhIGxpbmsgdmlhIGRpcmVjdCBlbWFpbCAod291bGQgcmF0aGVyIG5vdCBwb3N0 IGl0IGhlcmUpPyBJdCdzIGp1c3QgYSBzaGFyZWQgRHJvcGJveCBmb2xkZXIuDQo+DQo+DQo+VGhh bmtzLA0KPk1hdHQNCj4NCj4NCj4NCj5PbiA4LzE0LzE3LCAxMTozNCBQTSwgIlNjcnVnZ3MsIE1h dHQiIDxtYXR0LnNjcnVnZ3NAYnJvbnRvLmNvbT4gd3JvdGU6DQo+DQo+PiBJJ20gcnVubmluZyBh IGN1c3RvbSBTY2FsYSBhcHAgKGRpc3RyaWJ1dGVkIGluIGEgc2hhZGVkIGphcikgZGlyZWN0bHkg Y2FsbGluZyBTaW1pbGFyaXR5QW5hbHlzaXMuY29vY2N1cnJlbmNlSURTcygpLCBub3QgdXNpbmcg dGhlIENMSS4NCj4+IA0KPj4gVGhlIGlucHV0IGRhdGEgYWxyZWFkeSBnZXRzIGV4cGxpY2l0bHkg cmVwYXJ0aXRpb25lZCB0byBzcGFyay5jb3Jlcy5tYXggKGRlZmF1bHRQYXJhbGxlbGlzbSkgaW4g b3VyIGNvZGUuIEknbGwgdHJ5IGluY3JlYXNpbmcgdGhhdCBieSB0aGUgZmFjdG9yIG9mIDQgdGhh dCB5b3Ugc3VnZ2VzdCwgYnV0IGFsbCBvdXIgY29yZXMgYXJlIGFscmVhZHkgdXRpbGl6ZWQgc28g SSdtIG5vdCBzdXJlIHRoYXQgd2lsbCBoZWxwLiBJdCBnZXRzIGJvZ2dlZCBkb3duIGluIHRoZSBw b3N0LXNodWZmbGUgKHNodWZmbGUgcmVhZCAvIGNvbWJpbmUgLyByZWR1Y2UpIHBoYXNlIGV2ZW4g d2l0aCBhbGwgY29yZXMgYnVzeSB0aGUgd2hvbGUgdGltZSwgd2hpY2ggaXMgd2h5IEkndmUgYmVl biBwbGF5aW5nIGFyb3VuZCB3aXRoIHZhcmlvdXMgdmFsdWVzIGZvciBzcGFyay5zcWwuc2h1ZmZs ZS5wYXJ0aXRpb25zLiBUaGUgTyhsb2cgbikgb3BlcmF0aW9ucyBJIG1lbnRpb25lZCBzZWVtIHRv IHRha2UgPjk1JSBvZiBydW50aW1lLg0KPj4gDQo+PiBUaGFua3MsDQo+PiBNYXR0DQo+PiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPj4gRnJvbTogUGF0IEZlcnJlbCA8cGF0QG9j Y2Ftc21hY2hldGUuY29tPg0KPj4gU2VudDogTW9uZGF5LCBBdWd1c3QgMTQsIDIwMTcgMTE6MDI6 NDIgUE0NCj4+IFRvOiB1c2VyQG1haG91dC5hcGFjaGUub3JnDQo+PiBTdWJqZWN0OiBSZTogc3Bh cmstaXRlbXNpbWlsYXJpdHkgc2NhbGFiaWxpdHkgLyBTcGFyayBwYXJhbGxlbGlzbSBpc3N1ZXMg KFNpbWlsYXJpdHlBbmFseXNpcy5jb29jY3VycmVuY2VzSURTcykNCj4+IA0KPj4gQXJlIHlvdSB1 c2luZyB0aGUgQ0xJPyBJZiBzbyBpdOKAmXMgbGlrZWx5IHRoYXQgdGhlcmUgaXMgb25seSBvbmUg cGFydGl0aW9uIG9mIHRoZSBkYXRhLiBJZiB5b3UgdXNlIE1haG91dCBpbiB0aGUgU3Bhcmsgc2hl bGwgb3IgdXNpbmcgaXQgYXMgYSBsaWIsIGRvIGEgcmVwYXJ0aXRpb24gb24gdGhlIGlucHV0IGRh dGEgYmVmb3JlIHBhc3NpbmcgaXQgaW50byBTaW1pbGFyaXR5QW5hbHlzaXMuY29vY2N1cnJlbmNl c0lEU3MuIEkgcmVwYXJ0aXRpb24gdG8gNCp0b3RhbCBjb3JlcyB0byBzdGFydCB3aXRoIGFuZCBz ZXQgbWF4IHBhcmFsbGVsaXNtIGZvciBzcGFyayB0byB0aGUgc2FtZS4gVGhlIENMSSBpc27igJl0 IHJlYWxseSBwcm9kdWN0aW9uIHdvcnRoeSwganVzdCBmb3Igc3VwZXIgZWFzeSBleHBlcmltZW50 cyB3aXRoIENTVnMuDQo+PiANCj4+IA0KPj4gT24gQXVnIDE0LCAyMDE3LCBhdCAyOjMxIFBNLCBT Y3J1Z2dzLCBNYXR0IDxtYXR0LnNjcnVnZ3NAYnJvbnRvLmNvbT4gd3JvdGU6DQo+PiANCj4+IEhv d2R5LA0KPj4gDQo+PiBJJ20gcnVubmluZyBTaW1pbGFyaXR5QW5hbHlzaXMuY29vY2N1cnJlbmNl c0lEU3Mgb24gYSBmYWlybHkgc21hbGwgZGF0YXNldCAoYWJvdXQgODcwayBbdXNlciwgaXRlbV0g cm93cyBpbiB0aGUgcHJpbWFyeSBhY3Rpb24gSURT4oCmbm8gY3Jvc3MgY28tb2NjdXJyZW5jZSBJ RFMpIGFuZCBJIG5vdGljZWQgaXQgc2NhbGVzIHN0cmFuZ2VseS4gVGhpcyBpcyB3aXRoIE1haG91 dCAwLjEzLjAgYWx0aG91Z2ggdGhlIHNhbWUgYmVoYXZpb3IgaGFwcGVucyBpbiAwLjEyLnggYXMg d2VsbCAoaGF2ZW4ndCB0ZXN0ZWQgaXQgYmVmb3JlIHRoYXQpLg0KPj4gDQo+PiBUTERSIC0gcmVn YXJkbGVzcyBvZiB0aGUgU3BhcmsgcGFyYWxsZWxpc20gKENQVXMpIEkgdGhyb3cgYXQgdGhpcyBy b3V0aW5lLCBldmVyeSBTcGFyayB0YXNrIHdpdGhpbiB0aGUgZmluYWwgLyBidXN5IHN0YWdlIHNl ZW1zIHRvIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIHRpbWUsIHdoaWNoIGxlYWRzIG1lIHRvIGd1 ZXNzIHRoYXQgZXZlcnkgc2h1ZmZsZSBwYXJ0aXRpb24gY29udGFpbnMgdGhlIHNhbWUgYW1vdW50 IG9mIGRhdGEgKHBlcmhhcHMgdGhlIGZ1bGwgZGF0YXNldCBtYXRyaXggaW4gc2hhcGUvc2l6ZSwg YWxiZWl0IHdpdGggZGlmZmVyZW50IHZhbHVlcykuIEknbSByZWFjaGluZyBvdXQgdG8gc2VlIGlm IHRoaXMgaXMgYSBrbm93biBhbGdvcml0aG1pYyBjb21wbGV4aXR5IGlzc3VlIGluIHRoaXMgcm91 dGluZSwgb3IgaWYgbXkgY29uZmlnIGlzIHRvIGJsYW1lIChvciBib3RoKS4NCj4+IA0KPj4gUmVn YXJkaW5nIG91ciBoYXJkd2FyZSwgd2UgaGF2ZSBpZGVudGljYWwgcGh5c2ljYWwgbWFjaGluZXMg aW4gYSBNZXNvcyBjbHVzdGVyIHdpdGggNiB3b3JrZXJzIGFuZCBhIGZldyBtYXN0ZXJzLiBFYWNo IHdvcmtlciBoYXMgfjUwMEdCIG9mIFNTRCwgMzIgY29yZXMgYW5kIDEyOGcgUkFNLiBXZSBydW4g bG90cyBvZiBTcGFyayBqb2JzIGFuZCBoYXZlIGdlbmVyYWxseSBpcm9uZWQgb3V0IHRoZSBraW5r cyBpbiB0ZXJtcyBvZiBoYXJkd2FyZSBhbmQgY2x1c3RlciBjb25maWcsIHNvIEkgZG9uJ3Qgc3Vz cGVjdCBhbnkgaGFyZHdhcmUtcmVsYXRlZCBpc3N1ZXMuDQo+PiANCj4+IEhlcmUgYXJlIHNvbWUg dGltaW5ncyBmb3IgU2ltaWxhcml0eUFuYWx5c2lzLmNvb2NjdXJyZW5jZXNJRFNzIG9uIHRoaXMg ZGF0YXNldCB3aXRoIG1heE51bUludGVyYWN0aW9ucyA9IDUwMCwgbWF4SW50ZXJlc3RpbmdJdGVt c1BlclRoaW5nID0gMjAsIHJhbmRvbVNlZWQgPSBkZWZhdWx0LCBwYXJPcHRzID0gZGVmYXVsdCAo dGhlcmUncyBsb3RzIG9mIG90aGVyIFNwYXJrIGNvbmZpZywgdGhpcyBpcyBqdXN0IHdoYXQgSSdt IHZhcnlpbmcgdG8gY2hlY2sgZm9yIGVmZmVjdHMpLiBJbiBwYXJ0aWN1bGFyLCBub3RpY2UgaG93 IHRoZSByYXRpbyBvZiAoc3Bhcmsuc3FsLnNodWZmbGUucGFydGl0aW9ucyAvIHNwYXJrLmNvcmVz Lm1heCkgYWZmZWN0cyB0aGUgcnVudGltZToNCj4+IA0KPj4gKiA4IGV4ZWN1dG9ycyB3LzggY29y ZXMgZWFjaCwgdGFrZXMgYWJvdXQgNDUgbWludXRlcw0KPj4gKiBub3RlIHRoYXQgc3Bhcmsuc3Fs LnNodWZmbGUucGFydGl0aW9ucyA+IHNwYXJrLmNvcmVzLm1heA0KPj4gc3BhcmsuY29yZXMubWF4 ID0gNjQNCj4+IHNwYXJrLmV4ZWN1dG9yLmNvcmVzID0gOA0KPj4gc3Bhcmsuc3FsLnNodWZmbGUu cGFydGl0aW9ucyA9IDIwMCAoZGVmYXVsdCkNCj4+IA0KPj4gKiAxIGV4ZWN1dG9ycyB3LzI0IGNv cmVzLCB0YWtlcyBhYm91dCA2NSBtaW51dGVzDQo+PiAqIG5vdGUgdGhhdCBzcGFyay5zcWwuc2h1 ZmZsZS5wYXJ0aXRpb25zID4+PiBzcGFyay5jb3Jlcy5tYXgNCj4+IHNwYXJrLmNvcmVzLm1heCA9 IDI0DQo+PiBzcGFyay5leGVjdXRvci5jb3JlcyA9IDI0DQo+PiBzcGFyay5zcWwuc2h1ZmZsZS5w YXJ0aXRpb25zID0gMjAwIChkZWZhdWx0KQ0KPj4gDQo+PiAqIDEgZXhlY3V0b3Igdy84IGNvcmVz LCB0YWtlcyBhYm91dCA4IG1pbnV0ZXMNCj4+ICogbm90ZSB0aGF0IHNwYXJrLnNxbC5zaHVmZmxl LnBhcnRpdGlvbnMgPSBzcGFyay5jb3Jlcy5tYXgNCj4+IHNwYXJrLmNvcmVzLm1heCA9IDgNCj4+ IHNwYXJrLmV4ZWN1dG9yLmNvcmVzID0gOCAoMSBleGVjdXRvciB3LzggY29yZXMpDQo+PiBzcGFy ay5zcWwuc2h1ZmZsZS5wYXJ0aXRpb25zID0gOA0KPj4gDQo+PiAqIDEgZXhlY3V0b3Igdy8yNCBj b3JlcywgdGFrZXMgYWJvdXQgOCBtaW51dGVzIChzYW1lIGFzIDggY29yZXMhKQ0KPj4gKiBub3Rl IHRoYXQgc3Bhcmsuc3FsLnNodWZmbGUucGFydGl0aW9ucyA9IHNwYXJrLmNvcmVzLm1heA0KPj4g c3BhcmsuY29yZXMubWF4ID0gMjQNCj4+IHNwYXJrLmV4ZWN1dG9yLmNvcmVzID0gMjQgKDEgZXhl Y3V0b3Igdy8yNCBjb3JlcykNCj4+IHNwYXJrLnNxbC5zaHVmZmxlLnBhcnRpdGlvbnMgPSAyNA0K Pj4gDQo+PiAqIDMyIGV4ZWN1dG9ycyB3LzIgY29yZXMgZWFjaCwgdGFrZXMgYWJvdXQgOCBtaW51 dGVzIChzYW1lIGFzIDggY29yZXMhKQ0KPj4gKiBub3RlIHRoYXQgc3Bhcmsuc3FsLnNodWZmbGUu cGFydGl0aW9ucyA9IHNwYXJrLmNvcmVzLm1heA0KPj4gc3BhcmsuY29yZXMubWF4ID0gNjQNCj4+ IHNwYXJrLmV4ZWN1dG9yLmNvcmVzID0gMg0KPj4gc3Bhcmsuc3FsLnNodWZmbGUucGFydGl0aW9u cyA9IDg4IChyZXN1bHRzIGluIDY0IHRhc2tzIGZvciBmaW5hbCBzdGFnZSkNCj4+IA0KPj4gQWRq dXN0aW5nIHRoZSAibWF4TnVtSW50ZXJhY3Rpb25zIiBwYXJhbWV0ZXIgZG93biB0byAxMDAgYW5k IDUwIHJlc3VsdHMgaW4gYSBtaW5vciBpbXByb3ZlbWVudCAoNS0xMCUpLiBJJ3ZlIGFsc28gcGxh eWVkIGFyb3VuZCB3aXRoIHJlbW92aW5nIFt1c2VyLCBpdGVtXSByb3dzIGZyb20gdGhlIGlucHV0 IGRhdGFzZXQgZm9yIHVzZXJzIHdpdGggb25seSAxIGludGVyYWN0aW9u4oCmSSByZWFkIHRvIHRy eSB0aGF0IGluIGFub3RoZXIgdGhyZWFk4oCmdGhhdCB5aWVsZGVkIG1heWJlIGEgNDAtNTAlIHNw ZWVkIGltcHJvdmVtZW50LCBidXQgSSdkIHJhdGhlciBub3QgdG9zcyBvdXQgZGF0YSAodW5sZXNz IGl0IHRydWx5IGlzIHRvdGFsbHkgdXNlbGVzcywgb2YgY291cnNlIDpEICkuDQo+PiANCj4+IFdo ZW4gSSBsb29rIGF0IHRoZSB0aHJlYWQgZHVtcCB3aXRoaW4gdGhlIFNwYXJrIFVJJ3MgRXhlY3V0 b3JzIC0+IHRocmVhZCBkdW1wIHBhZ2VzLCBpdCBzZWVtcyBhbGwgdGhlIGV4ZWN1dG9ycyBhcmUg dmVyeSBidXN5IGluIHRoZSBjb2RlIHBhc3RlZCBiZWxvdyBmb3IgPjk1JSBvZiB0aGUgcnVuLiBH QyB0aHJvdWdocHV0IGlzIHZlcnkgZ29vZCBzbyB3ZSdyZSBub3QgYm9nZ2VkIGRvd24gdGhlcmUu Li5pdCdzIGp1c3Qgc3VwZXIgYnVzeSBkb2luZyBydW5uaW5nIHRoZSBjb2RlIGJlbG93LiBJIGFt IGludHJpZ3VlZCBhYm91dCB0aGUgY29tbWVudHMgb24gdGhlIFNlcXVlbnRpYWxBY2Nlc3NTcGFy c2VWZWN0b3IgbWV0aG9kcyBJIHNlZSBiZWluZyBjYWxsZWQgKGdldFF1aWNrIGFuZCBzZXRRdWlj ayksIHdoaWNoIHN0YXRlIHRoZXkgdGFrZSBPKGxvZyBuKSB0aW1lIChodHRwczovL2dpdGh1Yi5j b20vYXBhY2hlL21haG91dC9ibG9iLzA4ZTAyNjAyZTk0N2ZmOTQ1YjliZDczYWI1ZjBiNDU4NjNk ZjNlNTMvbWF0aC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvbWFob3V0L21hdGgvU2VxdWVudGlh bEFjY2Vzc1NwYXJzZVZlY3Rvci5qYXZhKS4NCj4+IA0KPj4gDQo+PiBUaGFua3MgYWxsIGZvciB5 b3VyIHRpbWUgYW5kIGZlZWRiYWNrIQ0KPj4gDQo+PiBNYXR0IFNjcnVnZ3MNCj4+IA0KPj4gb3Jn LmFwYWNoZS5tYWhvdXQubWF0aC5PcmRlcmVkSW50RG91YmxlTWFwcGluZy5maW5kKE9yZGVyZWRJ bnREb3VibGVNYXBwaW5nLmphdmE6MTA1KQ0KPj4gb3JnLmFwYWNoZS5tYWhvdXQubWF0aC5PcmRl cmVkSW50RG91YmxlTWFwcGluZy5nZXQoT3JkZXJlZEludERvdWJsZU1hcHBpbmcuamF2YToxMTAp DQo+PiBvcmcuYXBhY2hlLm1haG91dC5tYXRoLlNlcXVlbnRpYWxBY2Nlc3NTcGFyc2VWZWN0b3Iu Z2V0UXVpY2soU2VxdWVudGlhbEFjY2Vzc1NwYXJzZVZlY3Rvci5qYXZhOjE1NykNCj4+IG9yZy5h cGFjaGUubWFob3V0Lm1hdGguU3BhcnNlUm93TWF0cml4LmdldFF1aWNrKFNwYXJzZVJvd01hdHJp eC5qYXZhOjkwKQ0KPj4gb3JnLmFwYWNoZS5tYWhvdXQubWF0aC5BYnN0cmFjdE1hdHJpeC5hc3Np Z24oQWJzdHJhY3RNYXRyaXguamF2YToyNDApDQo+PiBvcmcuYXBhY2hlLm1haG91dC5tYXRoLnNj YWxhYmluZGluZ3MuTWF0cml4T3BzLiRwbHVzJGVxKE1hdHJpeE9wcy5zY2FsYTo0NSkNCj4+IG9y Zy5hcGFjaGUubWFob3V0LnNwYXJrYmluZGluZ3MuYmxhcy5BdEEkJGFub25mdW4kMTkuYXBwbHko QXRBLnNjYWxhOjI1OCkNCj4+IG9yZy5hcGFjaGUubWFob3V0LnNwYXJrYmluZGluZ3MuYmxhcy5B dEEkJGFub25mdW4kMTkuYXBwbHkoQXRBLnNjYWxhOjI1OCkNCj4+IG9yZy5hcGFjaGUuc3Bhcmsu dXRpbC5jb2xsZWN0aW9uLkV4dGVybmFsQXBwZW5kT25seU1hcCQkYW5vbmZ1biQzLmFwcGx5KEV4 dGVybmFsQXBwZW5kT25seU1hcC5zY2FsYToxNTEpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnV0aWwu Y29sbGVjdGlvbi5FeHRlcm5hbEFwcGVuZE9ubHlNYXAkJGFub25mdW4kMy5hcHBseShFeHRlcm5h bEFwcGVuZE9ubHlNYXAuc2NhbGE6MTUwKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay51dGlsLmNvbGxl Y3Rpb24uQXBwZW5kT25seU1hcC5jaGFuZ2VWYWx1ZShBcHBlbmRPbmx5TWFwLnNjYWxhOjE0NCkN Cj4+IG9yZy5hcGFjaGUuc3BhcmsudXRpbC5jb2xsZWN0aW9uLlNpemVUcmFja2luZ0FwcGVuZE9u bHlNYXAuY2hhbmdlVmFsdWUoU2l6ZVRyYWNraW5nQXBwZW5kT25seU1hcC5zY2FsYTozMikNCj4+ IG9yZy5hcGFjaGUuc3BhcmsudXRpbC5jb2xsZWN0aW9uLkV4dGVybmFsQXBwZW5kT25seU1hcC5p bnNlcnRBbGwoRXh0ZXJuYWxBcHBlbmRPbmx5TWFwLnNjYWxhOjE2MykNCj4+IG9yZy5hcGFjaGUu c3BhcmsuQWdncmVnYXRvci5jb21iaW5lQ29tYmluZXJzQnlLZXkoQWdncmVnYXRvci5zY2FsYTo1 MCkNCj4+IG9yZy5hcGFjaGUuc3Bhcmsuc2h1ZmZsZS5CbG9ja1N0b3JlU2h1ZmZsZVJlYWRlci5y ZWFkKEJsb2NrU3RvcmVTaHVmZmxlUmVhZGVyLnNjYWxhOjg1KQ0KPj4gb3JnLmFwYWNoZS5zcGFy ay5yZGQuU2h1ZmZsZWRSREQuY29tcHV0ZShTaHVmZmxlZFJERC5zY2FsYToxMDkpDQo+PiBvcmcu YXBhY2hlLnNwYXJrLnJkZC5SREQuY29tcHV0ZU9yUmVhZENoZWNrcG9pbnQoUkRELnNjYWxhOjMx OSkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5pdGVyYXRvcihSREQuc2NhbGE6MjgzKQ0K Pj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuTWFwUGFydGl0aW9uc1JERC5jb21wdXRlKE1hcFBhcnRp dGlvbnNSREQuc2NhbGE6MzgpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5SREQuY29tcHV0ZU9y UmVhZENoZWNrcG9pbnQoUkRELnNjYWxhOjMxOSkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJE RC5pdGVyYXRvcihSREQuc2NhbGE6MjgzKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuTWFwUGFy dGl0aW9uc1JERC5jb21wdXRlKE1hcFBhcnRpdGlvbnNSREQuc2NhbGE6MzgpDQo+PiBvcmcuYXBh Y2hlLnNwYXJrLnJkZC5SREQuY29tcHV0ZU9yUmVhZENoZWNrcG9pbnQoUkRELnNjYWxhOjMxOSkN Cj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5pdGVyYXRvcihSREQuc2NhbGE6MjgzKQ0KPj4g b3JnLmFwYWNoZS5zcGFyay5yZGQuTWFwUGFydGl0aW9uc1JERC5jb21wdXRlKE1hcFBhcnRpdGlv bnNSREQuc2NhbGE6MzgpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5SREQuY29tcHV0ZU9yUmVh ZENoZWNrcG9pbnQoUkRELnNjYWxhOjMxOSkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5p dGVyYXRvcihSREQuc2NhbGE6MjgzKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuTWFwUGFydGl0 aW9uc1JERC5jb21wdXRlKE1hcFBhcnRpdGlvbnNSREQuc2NhbGE6MzgpDQo+PiBvcmcuYXBhY2hl LnNwYXJrLnJkZC5SREQuY29tcHV0ZU9yUmVhZENoZWNrcG9pbnQoUkRELnNjYWxhOjMxOSkNCj4+ IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5pdGVyYXRvcihSREQuc2NhbGE6MjgzKQ0KPj4gb3Jn LmFwYWNoZS5zcGFyay5yZGQuTWFwUGFydGl0aW9uc1JERC5jb21wdXRlKE1hcFBhcnRpdGlvbnNS REQuc2NhbGE6MzgpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5SREQuY29tcHV0ZU9yUmVhZENo ZWNrcG9pbnQoUkRELnNjYWxhOjMxOSkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5pdGVy YXRvcihSREQuc2NhbGE6MjgzKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuTWFwUGFydGl0aW9u c1JERC5jb21wdXRlKE1hcFBhcnRpdGlvbnNSREQuc2NhbGE6MzgpDQo+PiBvcmcuYXBhY2hlLnNw YXJrLnJkZC5SREQuY29tcHV0ZU9yUmVhZENoZWNrcG9pbnQoUkRELnNjYWxhOjMxOSkNCj4+IG9y Zy5hcGFjaGUuc3BhcmsucmRkLlJERC5pdGVyYXRvcihSREQuc2NhbGE6MjgzKQ0KPj4gb3JnLmFw YWNoZS5zcGFyay5yZGQuTWFwUGFydGl0aW9uc1JERC5jb21wdXRlKE1hcFBhcnRpdGlvbnNSREQu c2NhbGE6MzgpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5SREQuY29tcHV0ZU9yUmVhZENoZWNr cG9pbnQoUkRELnNjYWxhOjMxOSkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5pdGVyYXRv cihSREQuc2NhbGE6MjgzKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuTWFwUGFydGl0aW9uc1JE RC5jb21wdXRlKE1hcFBhcnRpdGlvbnNSREQuc2NhbGE6MzgpDQo+PiBvcmcuYXBhY2hlLnNwYXJr LnJkZC5SREQuY29tcHV0ZU9yUmVhZENoZWNrcG9pbnQoUkRELnNjYWxhOjMxOSkNCj4+IG9yZy5h cGFjaGUuc3BhcmsucmRkLlJERC5pdGVyYXRvcihSREQuc2NhbGE6MjgzKQ0KPj4gb3JnLmFwYWNo ZS5zcGFyay5zY2hlZHVsZXIuU2h1ZmZsZU1hcFRhc2sucnVuVGFzayhTaHVmZmxlTWFwVGFzay5z Y2FsYTo3OSkNCj4+IG9yZy5hcGFjaGUuc3Bhcmsuc2NoZWR1bGVyLlNodWZmbGVNYXBUYXNrLnJ1 blRhc2soU2h1ZmZsZU1hcFRhc2suc2NhbGE6NDcpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnNjaGVk dWxlci5UYXNrLnJ1bihUYXNrLnNjYWxhOjg2KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5leGVjdXRv ci5FeGVjdXRvciRUYXNrUnVubmVyLnJ1bihFeGVjdXRvci5zY2FsYToyNzQpDQo+PiBqYXZhLnV0 aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVj dXRvci5qYXZhOjExNDIpDQo+PiBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0 b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MTcpDQo+PiBqYXZhLmxhbmcu VGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDUpDQo+PiANCj4+IOKApuKApm9yIHRoaXMgY29kZeKA puKApg0KPj4gDQo+PiBvcmcuYXBhY2hlLm1haG91dC5tYXRoLlNwYXJzZVJvd01hdHJpeC5zZXRR dWljayhTcGFyc2VSb3dNYXRyaXguamF2YToxMDUpDQo+PiBvcmcuYXBhY2hlLm1haG91dC5tYXRo LkFic3RyYWN0TWF0cml4LmFzc2lnbihBYnN0cmFjdE1hdHJpeC5qYXZhOjI0MCkNCj4+IG9yZy5h cGFjaGUubWFob3V0Lm1hdGguc2NhbGFiaW5kaW5ncy5NYXRyaXhPcHMuJHBsdXMkZXEoTWF0cml4 T3BzLnNjYWxhOjQ1KQ0KPj4gb3JnLmFwYWNoZS5tYWhvdXQuc3BhcmtiaW5kaW5ncy5ibGFzLkF0 QSQkYW5vbmZ1biQxOS5hcHBseShBdEEuc2NhbGE6MjU4KQ0KPj4gb3JnLmFwYWNoZS5tYWhvdXQu c3BhcmtiaW5kaW5ncy5ibGFzLkF0QSQkYW5vbmZ1biQxOS5hcHBseShBdEEuc2NhbGE6MjU4KQ0K Pj4gb3JnLmFwYWNoZS5zcGFyay51dGlsLmNvbGxlY3Rpb24uRXh0ZXJuYWxBcHBlbmRPbmx5TWFw JCRhbm9uZnVuJDMuYXBwbHkoRXh0ZXJuYWxBcHBlbmRPbmx5TWFwLnNjYWxhOjE1MSkNCj4+IG9y Zy5hcGFjaGUuc3BhcmsudXRpbC5jb2xsZWN0aW9uLkV4dGVybmFsQXBwZW5kT25seU1hcCQkYW5v bmZ1biQzLmFwcGx5KEV4dGVybmFsQXBwZW5kT25seU1hcC5zY2FsYToxNTApDQo+PiBvcmcuYXBh Y2hlLnNwYXJrLnV0aWwuY29sbGVjdGlvbi5BcHBlbmRPbmx5TWFwLmNoYW5nZVZhbHVlKEFwcGVu ZE9ubHlNYXAuc2NhbGE6MTQ0KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay51dGlsLmNvbGxlY3Rpb24u U2l6ZVRyYWNraW5nQXBwZW5kT25seU1hcC5jaGFuZ2VWYWx1ZShTaXplVHJhY2tpbmdBcHBlbmRP bmx5TWFwLnNjYWxhOjMyKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay51dGlsLmNvbGxlY3Rpb24uRXh0 ZXJuYWxBcHBlbmRPbmx5TWFwLmluc2VydEFsbChFeHRlcm5hbEFwcGVuZE9ubHlNYXAuc2NhbGE6 MTYzKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5BZ2dyZWdhdG9yLmNvbWJpbmVDb21iaW5lcnNCeUtl eShBZ2dyZWdhdG9yLnNjYWxhOjUwKQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5zaHVmZmxlLkJsb2Nr U3RvcmVTaHVmZmxlUmVhZGVyLnJlYWQoQmxvY2tTdG9yZVNodWZmbGVSZWFkZXIuc2NhbGE6ODUp DQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5TaHVmZmxlZFJERC5jb21wdXRlKFNodWZmbGVkUkRE LnNjYWxhOjEwOSkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5jb21wdXRlT3JSZWFkQ2hl Y2twb2ludChSREQuc2NhbGE6MzE5KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuUkRELml0ZXJh dG9yKFJERC5zY2FsYToyODMpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5NYXBQYXJ0aXRpb25z UkRELmNvbXB1dGUoTWFwUGFydGl0aW9uc1JERC5zY2FsYTozOCkNCj4+IG9yZy5hcGFjaGUuc3Bh cmsucmRkLlJERC5jb21wdXRlT3JSZWFkQ2hlY2twb2ludChSREQuc2NhbGE6MzE5KQ0KPj4gb3Jn LmFwYWNoZS5zcGFyay5yZGQuUkRELml0ZXJhdG9yKFJERC5zY2FsYToyODMpDQo+PiBvcmcuYXBh Y2hlLnNwYXJrLnJkZC5NYXBQYXJ0aXRpb25zUkRELmNvbXB1dGUoTWFwUGFydGl0aW9uc1JERC5z Y2FsYTozOCkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5jb21wdXRlT3JSZWFkQ2hlY2tw b2ludChSREQuc2NhbGE6MzE5KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuUkRELml0ZXJhdG9y KFJERC5zY2FsYToyODMpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5NYXBQYXJ0aXRpb25zUkRE LmNvbXB1dGUoTWFwUGFydGl0aW9uc1JERC5zY2FsYTozOCkNCj4+IG9yZy5hcGFjaGUuc3Bhcmsu cmRkLlJERC5jb21wdXRlT3JSZWFkQ2hlY2twb2ludChSREQuc2NhbGE6MzE5KQ0KPj4gb3JnLmFw YWNoZS5zcGFyay5yZGQuUkRELml0ZXJhdG9yKFJERC5zY2FsYToyODMpDQo+PiBvcmcuYXBhY2hl LnNwYXJrLnJkZC5NYXBQYXJ0aXRpb25zUkRELmNvbXB1dGUoTWFwUGFydGl0aW9uc1JERC5zY2Fs YTozOCkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5jb21wdXRlT3JSZWFkQ2hlY2twb2lu dChSREQuc2NhbGE6MzE5KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuUkRELml0ZXJhdG9yKFJE RC5zY2FsYToyODMpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5NYXBQYXJ0aXRpb25zUkRELmNv bXB1dGUoTWFwUGFydGl0aW9uc1JERC5zY2FsYTozOCkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRk LlJERC5jb21wdXRlT3JSZWFkQ2hlY2twb2ludChSREQuc2NhbGE6MzE5KQ0KPj4gb3JnLmFwYWNo ZS5zcGFyay5yZGQuUkRELml0ZXJhdG9yKFJERC5zY2FsYToyODMpDQo+PiBvcmcuYXBhY2hlLnNw YXJrLnJkZC5NYXBQYXJ0aXRpb25zUkRELmNvbXB1dGUoTWFwUGFydGl0aW9uc1JERC5zY2FsYToz OCkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5jb21wdXRlT3JSZWFkQ2hlY2twb2ludChS REQuc2NhbGE6MzE5KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuUkRELml0ZXJhdG9yKFJERC5z Y2FsYToyODMpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnJkZC5NYXBQYXJ0aXRpb25zUkRELmNvbXB1 dGUoTWFwUGFydGl0aW9uc1JERC5zY2FsYTozOCkNCj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJE RC5jb21wdXRlT3JSZWFkQ2hlY2twb2ludChSREQuc2NhbGE6MzE5KQ0KPj4gb3JnLmFwYWNoZS5z cGFyay5yZGQuUkRELml0ZXJhdG9yKFJERC5zY2FsYToyODMpDQo+PiBvcmcuYXBhY2hlLnNwYXJr LnJkZC5NYXBQYXJ0aXRpb25zUkRELmNvbXB1dGUoTWFwUGFydGl0aW9uc1JERC5zY2FsYTozOCkN Cj4+IG9yZy5hcGFjaGUuc3BhcmsucmRkLlJERC5jb21wdXRlT3JSZWFkQ2hlY2twb2ludChSREQu c2NhbGE6MzE5KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5yZGQuUkRELml0ZXJhdG9yKFJERC5zY2Fs YToyODMpDQo+PiBvcmcuYXBhY2hlLnNwYXJrLnNjaGVkdWxlci5TaHVmZmxlTWFwVGFzay5ydW5U YXNrKFNodWZmbGVNYXBUYXNrLnNjYWxhOjc5KQ0KPj4gb3JnLmFwYWNoZS5zcGFyay5zY2hlZHVs ZXIuU2h1ZmZsZU1hcFRhc2sucnVuVGFzayhTaHVmZmxlTWFwVGFzay5zY2FsYTo0NykNCj4+IG9y Zy5hcGFjaGUuc3Bhcmsuc2NoZWR1bGVyLlRhc2sucnVuKFRhc2suc2NhbGE6ODYpDQo+PiBvcmcu YXBhY2hlLnNwYXJrLmV4ZWN1dG9yLkV4ZWN1dG9yJFRhc2tSdW5uZXIucnVuKEV4ZWN1dG9yLnNj YWxhOjI3NCkNCj4+IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5X b3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0MikNCj4+IGphdmEudXRpbC5jb25jdXJy ZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZh OjYxNykNCj4+IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0NSkNCj4+IA0KPg0K