Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@apache.org Received: (qmail 23299 invoked from network); 10 May 2002 12:44:34 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 10 May 2002 12:44:34 -0000 Received: (qmail 8307 invoked by uid 97); 10 May 2002 12:44:25 -0000 Delivered-To: qmlist-jakarta-archive-ant-dev@jakarta.apache.org Received: (qmail 8251 invoked by uid 97); 10 May 2002 12:44:24 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Ant Developers List" Reply-To: "Ant Developers List" Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 8239 invoked by uid 98); 10 May 2002 12:44:24 -0000 X-Antivirus: nagoya (v4198 created Apr 24 2002) Message-ID: <00c901c1f820$5f096e20$1e04a8c0@win.xtramind.dfki.de> From: "Ingmar J Stein" To: "Ant Developers List" References: <28EDF15139E6BD4DAFFCA7A5D6F686392C0428@prodexch1.zilliant.com> Subject: Re: echoproperties Date: Fri, 10 May 2002 14:44:05 +0200 MIME-Version: 1.0 X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 X-MIMETrack: Itemize by SMTP Server on domino1/XtraMind(Release 5.0.9a |January 7, 2002) at 10.05.2002 14:44:06, Serialize by Router on domino1/XtraMind(Release 5.0.9a |January 7, 2002) at 10.05.2002 14:44:06 Content-Type: multipart/mixed; boundary="----=_NextPart_000_00C6_01C1F831.22751930" X-Virus-Scanned: by AMaViS with Sophos Sweep X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N ------=_NextPart_000_00C6_01C1F831.22751930 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="iso-8859-1" > Once the task is JDK 1.1 compatible, I'm a +1, for what it counts. Done. I added the putAll method to o.a.t.a.util.CollectionUtils as Stefan suggested and merged his changes in the testcase. Here are the patches against he beta1 codebase. Cheers, Ingmar ------=_NextPart_000_00C6_01C1F831.22751930 Content-Transfer-Encoding: 7bit Content-Type: application/octet-stream; name="EchoPropertiesTest.java.diff" Content-Disposition: attachment; filename="EchoPropertiesTest.java.diff" ------=_NextPart_000_00C6_01C1F831.22751930 Content-Type: application/octet-stream; name="EchoProperties.java.diff" Content-Disposition: attachment; filename="EchoProperties.java.diff" Content-Transfer-Encoding: base64 LS0tIHNyYy9tYWluL29yZy9hcGFjaGUvdG9vbHMvYW50L3Rhc2tkZWZzL29wdGlvbmFsL0VjaG9Q cm9wZXJ0aWVzLmphdmEJMjAwMi0wNS0xMCAxNDowMDowOC42OTE2MDAwMDAgKzAyMDAKKysrIHNy Yy9tYWluL29yZy9hcGFjaGUvdG9vbHMvYW50L3Rhc2tkZWZzL29wdGlvbmFsL0VjaG9Qcm9wZXJ0 aWVzLmphdmEub3JpZwkyMDAyLTA1LTAyIDE3OjQwOjMxLjIyMDc0MTAwMCArMDIwMApAQCAtNTYs MjggKzU2LDE2IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuUHJvamVjdDsNCiBpbXBv cnQgb3JnLmFwYWNoZS50b29scy5hbnQuVGFzazsNCiBpbXBvcnQgb3JnLmFwYWNoZS50b29scy5h bnQuQnVpbGRFeGNlcHRpb247DQotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LnV0aWwuRE9N RWxlbWVudFdyaXRlcjsNCi1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQudXRpbC5Db2xsZWN0 aW9uVXRpbHM7DQotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LnR5cGVzLkVudW1lcmF0ZWRB dHRyaWJ1dGU7DQotDQotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50Ow0KLWltcG9ydCBvcmcu dzNjLmRvbS5FbGVtZW50Ow0KIA0KIGltcG9ydCBqYXZhLnV0aWwuUHJvcGVydGllczsNCitpbXBv cnQgamF2YS51dGlsLkhhc2h0YWJsZTsNCiBpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOw0K IA0KIGltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsNCiBpbXBvcnQgamF2YS5p by5PdXRwdXRTdHJlYW07DQotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyOw0KLWlt cG9ydCBqYXZhLmlvLldyaXRlcjsNCiBpbXBvcnQgamF2YS5pby5GaWxlOw0KLWltcG9ydCBqYXZh LmlvLkZpbGVJbnB1dFN0cmVhbTsNCi1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOw0K LWltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsNCiBpbXBvcnQgamF2YS5pby5J T0V4Y2VwdGlvbjsNCi0NCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVy Ow0KLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Ow0KK2lt cG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07DQogDQogLyoqDQogICogIERpc3BsYXlzIGFs bCB0aGUgY3VycmVudCBwcm9wZXJ0aWVzIGluIHRoZSBidWlsZC4gVGhlIG91dHB1dCBjYW4gYmUg c2VudCB0bw0KQEAgLTExMiwzOCArMTAwLDExIEBACiAgKg0KICAqQGF1dGhvciAgICAgTWF0dCBB bGJyZWNodCA8YSBocmVmPSJtYWlsdG86Z3JvYm9jbG93bkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQi Pg0KICAqICAgICAgZ3JvYm9jbG93bkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ8L2E+DQotICpAYXV0 aG9yICAgICBJbmdtYXIgU3RlaW4gPGEgaHJlZj0ibWFpbHRvOnN0ZWluQHh0cmFtaW5kLmNvbSI+ DQotICAgICAgICBzdGVpbkB4dHJhbWluZC5jb208L2E+DQogICpAc2luY2UgICAgICBBbnQgMS41 DQogICovDQogcHVibGljIGNsYXNzIEVjaG9Qcm9wZXJ0aWVzIGV4dGVuZHMgVGFzayB7DQogDQog ICAgIC8qKg0KLSAgICAgKiB0aGUgcHJvcGVydGllcyBlbGVtZW50Lg0KLSAgICAgKi8NCi0gICAg cHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRJRVMgPSAicHJvcGVydGllcyI7DQot DQotICAgIC8qKg0KLSAgICAgKiB0aGUgcHJvcGVydHkgZWxlbWVudC4NCi0gICAgICovDQotICAg IHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWSA9ICJwcm9wZXJ0eSI7DQotDQot ICAgIC8qKg0KLSAgICAgKiBuYW1lIGF0dHJpYnV0ZSBmb3IgcHJvcGVydHksIHRlc3RjYXNlIGFu ZCB0ZXN0c3VpdGUgZWxlbWVudHMuDQotICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5h bCBTdHJpbmcgQVRUUl9OQU1FID0gIm5hbWUiOw0KLQ0KLSAgICAvKioNCi0gICAgICogdmFsdWUg YXR0cmlidXRlIGZvciBwcm9wZXJ0eSBlbGVtZW50cy4NCi0gICAgICovDQotICAgIHByaXZhdGUg c3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1ZBTFVFID0gInZhbHVlIjsNCi0NCi0gICAgLyoqDQot ICAgICAqIHRoZSBpbnB1dCBmaWxlLg0KLSAgICAgKi8NCi0gICAgcHJpdmF0ZSBGaWxlIGluRmls ZSA9IG51bGw7DQotDQotICAgIC8qKg0KICAgICAgKiAgRmlsZSBvYmplY3QgcG9pbnRpbmcgdG8g dGhlIG91dHB1dCBmaWxlLiBJZiB0aGlzIGlzIG51bGwsIHRoZW4gd2Ugb3V0cHV0DQogICAgICAq ICB0byB0aGUgcHJvamVjdCBsb2csIG5vdCB0byBhIGZpbGUuDQogICAgICAqLw0KQEAgLTE2Miwx NyArMTIzLDYgQEAKICAgICBwcml2YXRlIFN0cmluZyBwcmVmaXggPSBudWxsOw0KIA0KIA0KLSAg ICBwcml2YXRlIFN0cmluZyBmb3JtYXQgPSAidGV4dCI7DQotDQotICAgIC8qKg0KLSAgICAgKiBT ZXRzIHRoZSBpbnB1dCBmaWxlLg0KLSAgICAgKg0KLSAgICAgKiBAcGFyYW0gZmlsZSAgdGhlIGlu cHV0IGZpbGUNCi0gICAgICovDQotICAgIHB1YmxpYyB2b2lkIHNldFNyY2ZpbGUoIEZpbGUgZmls ZSApIHsNCi0gICAgICAgIGluRmlsZSA9IGZpbGU7DQotICAgIH0NCi0NCiAgICAgLyoqDQogICAg ICAqICBTZXQgYSBmaWxlIHRvIHN0b3JlIHRoZSBwcm9wZXJ0eSBvdXRwdXQuICBJZiB0aGlzIGlz IG5ldmVyIHNwZWNpZmllZCwNCiAgICAgICogIHRoZW4gdGhlIG91dHB1dCB3aWxsIGJlIHNlbnQg dG8gdGhlIEFudCBsb2cuDQpAQCAtMjEzLDEyMSArMTYzLDMyIEBACiAgICAgfQ0KIA0KIA0KLSAg ICBwdWJsaWMgdm9pZCBzZXRGb3JtYXQoRm9ybWF0QXR0cmlidXRlIGVhKSB7DQotICAgICAgICBm b3JtYXQgPSBlYS5nZXRWYWx1ZSgpOw0KLSAgICB9DQotDQotICAgIHB1YmxpYyBzdGF0aWMgY2xh c3MgRm9ybWF0QXR0cmlidXRlIGV4dGVuZHMgRW51bWVyYXRlZEF0dHJpYnV0ZSB7DQotICAgICAg ICBwcml2YXRlIFN0cmluZyBbXSBmb3JtYXRzID0gbmV3IFN0cmluZ1tdeyJ4bWwiLCAidGV4dCJ9 Ow0KLQ0KLSAgICAgICAgcHVibGljIFN0cmluZ1tdIGdldFZhbHVlcygpIHsNCi0gICAgICAgICAg ICByZXR1cm4gZm9ybWF0czsNCi0gICAgICAgIH0NCi0gICAgfQ0KLQ0KICAgICAvKioNCiAgICAg ICogIFJ1biB0aGUgdGFzay4NCiAgICAgICoNCiAgICAgICpAZXhjZXB0aW9uICBCdWlsZEV4Y2Vw dGlvbiAgdHJvdWJsZSwgcHJvYmFibHkgZmlsZSBJTw0KICAgICAgKi8NCiAgICAgcHVibGljIHZv aWQgZXhlY3V0ZSgpIHRocm93cyBCdWlsZEV4Y2VwdGlvbiB7DQotICAgICAgICBQcm9wZXJ0aWVz IHByb3BzID0gbmV3IFByb3BlcnRpZXMoKTsNCisgICAgICAgIC8vY29weSB0aGUgcHJvcGVydGll cyBmaWxlDQorICAgICAgICBIYXNodGFibGUgYWxsUHJvcHMgPSBwcm9qZWN0LmdldFByb3BlcnRp ZXMoKTsNCiANCi0gICAgICAgIC8qIGxvYWQgcHJvcGVydGllcyBmcm9tIGZpbGUgaWYgc3BlY2lm aWVkLCBvdGhlcndpc2UNCi0gICAgICAgIHVzZSBBbnQncyBwcm9wZXJ0aWVzICovDQotICAgICAg ICBpZiggaW5GaWxlID09IG51bGwgKSB7DQotICAgICAgICAgICAgLy8gYWRkIGFudCBwcm9wZXJ0 aWVzDQotICAgICAgICAgICAgQ29sbGVjdGlvblV0aWxzLnB1dEFsbCggcHJvcHMsIHByb2plY3Qu Z2V0UHJvcGVydGllcygpICk7DQotICAgICAgICB9IGVsc2Ugew0KLSAgICAgICAgICAgIGlmIChp bkZpbGUuZXhpc3RzKCkgJiYgaW5GaWxlLmlzRGlyZWN0b3J5KCkpIHsNCi0gICAgICAgICAgICAg ICAgU3RyaW5nIG1lc3NhZ2UgPSAic3JjZmlsZSBpcyBhIGRpcmVjdG9yeSEiOw0KLSAgICAgICAg ICAgICAgICBpZiAoZmFpbG9uZXJyb3IpIHsNCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5l dyBCdWlsZEV4Y2VwdGlvbihtZXNzYWdlLCBsb2NhdGlvbik7DQotICAgICAgICAgICAgICAgIH0g ZWxzZSB7DQotICAgICAgICAgICAgICAgICAgICBsb2coIG1lc3NhZ2UsIFByb2plY3QuTVNHX0VS UiApOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIHJldHVybjsNCi0gICAg ICAgICAgICB9DQotDQotICAgICAgICAgICAgaWYgKGluRmlsZS5leGlzdHMoKSAmJiAhaW5GaWxl LmNhblJlYWQoKSkgew0KLSAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJDYW4gbm90 IHJlYWQgZnJvbSB0aGUgc3BlY2lmaWVkIHNyY2ZpbGUhIjsNCi0gICAgICAgICAgICAgICAgaWYo IGZhaWxvbmVycm9yICkgew0KLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkRXhj ZXB0aW9uKCBtZXNzYWdlLCBsb2NhdGlvbiApOw0KLSAgICAgICAgICAgICAgICB9IGVsc2Ugew0K LSAgICAgICAgICAgICAgICAgICAgbG9nKCBtZXNzYWdlLCBQcm9qZWN0Lk1TR19FUlIgKTsNCi0g ICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICByZXR1cm47DQotICAgICAgICAgICAg fQ0KLQ0KLSAgICAgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBpbiA9IG51bGw7DQotICAgICAgICAg ICAgdHJ5IHsNCi0gICAgICAgICAgICAgICAgaW4gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCBpbkZp bGUgKTsNCi0gICAgICAgICAgICAgICAgcHJvcHMubG9hZCggaW4gKTsNCi0gICAgICAgICAgICB9 IGNhdGNoKCBGaWxlTm90Rm91bmRFeGNlcHRpb24gZm5mZSApIHsNCi0gICAgICAgICAgICAgICAg U3RyaW5nIG1lc3NhZ2UgPQ0KLSAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBmaW5kIGZp bGUgIiArIGluRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKTsNCi0gICAgICAgICAgICAgICAgaWYgKGZh aWxvbmVycm9yKSB7DQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQnVpbGRFeGNlcHRp b24obWVzc2FnZSwgZm5mZSwgbG9jYXRpb24pOw0KLSAgICAgICAgICAgICAgICB9IGVsc2Ugew0K LSAgICAgICAgICAgICAgICAgICAgbG9nKCBtZXNzYWdlLCBQcm9qZWN0Lk1TR19XQVJOICk7DQot ICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgcmV0dXJuOw0KLSAgICAgICAgICAg IH0gY2F0Y2goIElPRXhjZXB0aW9uIGlvZSApIHsNCi0gICAgICAgICAgICAgICAgU3RyaW5nIG1l c3NhZ2UgPQ0KLSAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCByZWFkIGZpbGUgIiArIGlu RmlsZS5nZXRBYnNvbHV0ZVBhdGgoKTsNCi0gICAgICAgICAgICAgICAgaWYgKGZhaWxvbmVycm9y KSB7DQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQnVpbGRFeGNlcHRpb24obWVzc2Fn ZSwgaW9lLCBsb2NhdGlvbik7DQotICAgICAgICAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAg ICAgICAgICAgICBsb2coIG1lc3NhZ2UsIFByb2plY3QuTVNHX1dBUk4gKTsNCi0gICAgICAgICAg ICAgICAgfQ0KLSAgICAgICAgICAgICAgICByZXR1cm47DQotICAgICAgICAgICAgfSBmaW5hbGx5 IHsNCi0gICAgICAgICAgICAgICAgdHJ5IHsNCi0gICAgICAgICAgICAgICAgICAgIGlmKCBudWxs ICE9IGluICkgew0KLSAgICAgICAgICAgICAgICAgICAgICAgIGluLmNsb3NlKCk7DQotICAgICAg ICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIH0gY2F0Y2goSU9FeGNlcHRpb24gaW9l KSB7fQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0NCi0gICAgICAgIGlmIChkZXN0Zmls ZSA9PSBudWxsKSB7DQotICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBu ZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7DQotICAgICAgICAgICAgdHJ5IHsNCi0gICAgICAg ICAgICAgICAgc2F2ZVByb3BlcnRpZXMocHJvcHMsIGJhb3MpOw0KLSAgICAgICAgICAgIH0gY2F0 Y2goIElPRXhjZXB0aW9uIGlvZSApIHt9DQotICAgICAgICAgICAgbG9nKGJhb3MudG9TdHJpbmco KSwgUHJvamVjdC5NU0dfSU5GTyk7DQotICAgICAgICB9IGVsc2Ugew0KLSAgICAgICAgICAgIGlm IChkZXN0ZmlsZS5leGlzdHMoKSAmJiBkZXN0ZmlsZS5pc0RpcmVjdG9yeSgpKSB7DQotICAgICAg ICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gImRlc3RmaWxlIGlzIGEgZGlyZWN0b3J5ISI7DQot ICAgICAgICAgICAgICAgIGlmIChmYWlsb25lcnJvcikgew0KLSAgICAgICAgICAgICAgICAgICAg dGhyb3cgbmV3IEJ1aWxkRXhjZXB0aW9uKG1lc3NhZ2UsIGxvY2F0aW9uKTsNCi0gICAgICAgICAg ICAgICAgfSBlbHNlIHsNCi0gICAgICAgICAgICAgICAgICAgIGxvZyggbWVzc2FnZSwgUHJvamVj dC5NU0dfRVJSICk7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgcmV0dXJu Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBpZiAoZGVzdGZpbGUuZXhpc3RzKCkg JiYgIWRlc3RmaWxlLmNhbldyaXRlKCkpIHsNCi0gICAgICAgICAgICAgICAgU3RyaW5nIG1lc3Nh Z2UgPSAiQ2FuIG5vdCB3cml0ZSB0byB0aGUgc3BlY2lmaWVkIGRlc3RmaWxlISI7DQotICAgICAg ICAgICAgICAgIGlmKCBmYWlsb25lcnJvciApIHsNCi0gICAgICAgICAgICAgICAgICAgIHRocm93 IG5ldyBCdWlsZEV4Y2VwdGlvbiggbWVzc2FnZSwgbG9jYXRpb24gKTsNCi0gICAgICAgICAgICAg ICAgfSBlbHNlIHsNCi0gICAgICAgICAgICAgICAgICAgIGxvZyggbWVzc2FnZSwgUHJvamVjdC5N U0dfRVJSICk7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgcmV0dXJuOw0K LSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0cnkgew0KLSAgICAgICAgICAgICAgICBP dXRwdXRTdHJlYW0gb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShkZXN0ZmlsZSk7DQotICAgICAg ICAgICAgICAgIHNhdmVQcm9wZXJ0aWVzKHByb3BzLCBvcyk7DQotICAgICAgICAgICAgfSBjYXRj aCAoSU9FeGNlcHRpb24gaW9lKSB7DQotICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0N Ci0gICAgICAgICAgICAgICAgICAgICAgICAiRGVzdGZpbGUgIiArIGRlc3RmaWxlICsgIiBjb3Vs ZCBub3QgYmUgd3JpdHRlbiB0by4iOw0KLSAgICAgICAgICAgICAgICBpZiAoZmFpbG9uZXJyb3Ip IHsNCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlvbihtZXNzYWdl LCBpb2UsIGxvY2F0aW9uKTsNCi0gICAgICAgICAgICAgICAgfSBlbHNlIHsNCi0gICAgICAgICAg ICAgICAgICAgIGxvZyhtZXNzYWdlLCBQcm9qZWN0Lk1TR19JTkZPKTsNCi0gICAgICAgICAgICAg ICAgfQ0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICBpZiAoZGVzdGZpbGUgPT0gbnVsbCkg ew0KKyAgICAgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRl QXJyYXlPdXRwdXRTdHJlYW0oKTsNCisgICAgICAgICAgICAgICAgc2F2ZVByb3BlcnRpZXMoYWxs UHJvcHMsIGJhb3MpOw0KKyAgICAgICAgICAgICAgICBsb2coYmFvcy50b1N0cmluZygpLCBQcm9q ZWN0Lk1TR19JTkZPKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBP dXRwdXRTdHJlYW0gb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSh0aGlzLmRlc3RmaWxlKTsNCisg ICAgICAgICAgICAgICAgc2F2ZVByb3BlcnRpZXMoYWxsUHJvcHMsIG9zKTsNCisgICAgICAgICAg ICB9DQorICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsNCisgICAgICAgICAgICBT dHJpbmcgbWVzc2FnZSA9DQorICAgICAgICAgICAgICAgICAgICAiRGVzdGZpbGUgIiArIGRlc3Rm aWxlICsgIiBjb3VsZCBub3QgYmUgd3JpdHRlbiB0by4iOw0KKyAgICAgICAgICAgIGlmIChmYWls b25lcnJvcikgew0KKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQnVpbGRFeGNlcHRpb24obWVz c2FnZSwgaW9lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uKTsNCisgICAgICAg ICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBsb2cobWVzc2FnZSwgUHJvamVjdC5NU0df SU5GTyk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtMzQzLDcgKzIw NCw3IEBACiAgICAgICpAcGFyYW0gIG9zICAgICAgICAgICAgICAgb3V0cHV0IHN0cmVhbQ0KICAg ICAgKkBleGNlcHRpb24gIElPRXhjZXB0aW9uICB0cm91YmxlDQogICAgICAqLw0KLSAgICBwcm90 ZWN0ZWQgdm9pZCBzYXZlUHJvcGVydGllcyhQcm9wZXJ0aWVzIGFsbFByb3BzLCBPdXRwdXRTdHJl YW0gb3MpDQorICAgIHByb3RlY3RlZCB2b2lkIHNhdmVQcm9wZXJ0aWVzKEhhc2h0YWJsZSBhbGxQ cm9wcywgT3V0cHV0U3RyZWFtIG9zKQ0KICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24s IEJ1aWxkRXhjZXB0aW9uIHsNCiAgICAgICAgIFByb3BlcnRpZXMgcHJvcHMgPSBuZXcgUHJvcGVy dGllcygpOw0KICAgICAgICAgRW51bWVyYXRpb24gZW51bSA9IGFsbFByb3BzLmtleXMoKTsNCkBA IC0zNTUsNDggKzIxNiwxMyBAQAogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAg dHJ5IHsNCi0gICAgICAgICAgICBpZiAoInRleHQiLmVxdWFscyhmb3JtYXQpKSB7DQotICAgICAg ICAgICAgICAgIGpka1NhdmVQcm9wZXJ0aWVzKHByb3BzLCBvcywgIkFudCBwcm9wZXJ0aWVzIik7 DQotICAgICAgICAgICAgfSBlbHNlIGlmICgieG1sIi5lcXVhbHMoZm9ybWF0KSkgew0KLSAgICAg ICAgICAgICAgICB4bWxTYXZlUHJvcGVydGllcyhwcm9wcywgb3MgKTsNCi0gICAgICAgICAgICB9 DQorICAgICAgICAgICAgamRrU2F2ZVByb3BlcnRpZXMocHJvcHMsIG9zLCAiQW50IHByb3BlcnRp ZXMiKTsNCiAgICAgICAgIH0gZmluYWxseSB7DQogICAgICAgICAgICAgb3MuY2xvc2UoKTsNCiAg ICAgICAgIH0NCiAgICAgfQ0KLQ0KLSAgICBwcm90ZWN0ZWQgdm9pZCB4bWxTYXZlUHJvcGVydGll cyhQcm9wZXJ0aWVzIHByb3BzLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0U3RyZWFtIG9zKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KLSAgICAgICAgLy8gY3Jl YXRlIFhNTCBkb2N1bWVudA0KLSAgICAgICAgRG9jdW1lbnQgZG9jID0gZ2V0RG9jdW1lbnRCdWls ZGVyKCkubmV3RG9jdW1lbnQoKTsNCi0gICAgICAgIEVsZW1lbnQgcm9vdEVsZW1lbnQgPSBkb2Mu Y3JlYXRlRWxlbWVudCggUFJPUEVSVElFUyApOw0KLQ0KLSAgICAgICAgLy8gb3V0cHV0IHByb3Bl cnRpZXMNCi0gICAgICAgIFN0cmluZyBuYW1lOw0KLSAgICAgICAgRW51bWVyYXRpb24gZSA9IHBy b3BzLnByb3BlcnR5TmFtZXMoKTsNCi0gICAgICAgIHdoaWxlKCBlLmhhc01vcmVFbGVtZW50cygp ICkgew0KLSAgICAgICAgICAgIG5hbWUgPSAoU3RyaW5nKWUubmV4dEVsZW1lbnQoKTsNCi0gICAg ICAgICAgICBFbGVtZW50IHByb3BFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoIFBST1BFUlRZ ICk7DQotICAgICAgICAgICAgcHJvcEVsZW1lbnQuc2V0QXR0cmlidXRlKCBBVFRSX05BTUUsIG5h bWUgKTsNCi0gICAgICAgICAgICBwcm9wRWxlbWVudC5zZXRBdHRyaWJ1dGUoIEFUVFJfVkFMVUUs IHByb3BzLmdldFByb3BlcnR5KCBuYW1lICkgKTsNCi0gICAgICAgICAgICByb290RWxlbWVudC5h cHBlbmRDaGlsZCggcHJvcEVsZW1lbnQgKTsNCi0gICAgICAgIH0NCi0NCi0gICAgICAgIFdyaXRl ciB3cmkgPSBudWxsOw0KLSAgICAgICAgdHJ5IHsNCi0gICAgICAgICAgICB3cmkgPSBuZXcgT3V0 cHV0U3RyZWFtV3JpdGVyKCBvcywgIlVURjgiICk7DQotICAgICAgICAgICAgd3JpLndyaXRlKCAi PD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+IiApOw0KLSAgICAgICAg ICAgICggbmV3IERPTUVsZW1lbnRXcml0ZXIoKSApLndyaXRlKCByb290RWxlbWVudCwgd3JpLCAw LCAiXHQiICk7DQotICAgICAgICAgICAgd3JpLmZsdXNoKCk7DQotICAgICAgICB9IGNhdGNoKCBJ T0V4Y2VwdGlvbiBpb2UgKSB7DQotICAgICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkRXhjZXB0aW9u KCAiVW5hYmxlIHRvIHdyaXRlIFhNTCBmaWxlIiwgaW9lICk7DQotICAgICAgICB9IGZpbmFsbHkg ew0KLSAgICAgICAgICAgIGlmKCB3cmkgIT0gbnVsbCApIHsNCi0gICAgICAgICAgICAgICAgd3Jp LmNsb3NlKCk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICB9DQotDQorICAgIA0K KyAgICANCiAgICAgLyoqDQogICAgICAqICBKREsgMS4yIGFsbG93cyBmb3IgdGhlIHNhZmVyIG1l dGhvZA0KICAgICAgKiAgPHR0PlByb3BlcnRpZXMuc3RvcmUoIE91dHB1dFN0cmVhbSwgU3RyaW5n ICk8L3R0Piwgd2hpY2ggdGhyb3dzIGFuDQpAQCAtNDI1LDcgKzI1MSw3IEBACiAgICAgICAgICAg ICBpZiAodCBpbnN0YW5jZW9mIFJ1bnRpbWVFeGNlcHRpb24pIHsNCiAgICAgICAgICAgICAgICAg dGhyb3cgKFJ1bnRpbWVFeGNlcHRpb24pIHQ7DQogICAgICAgICAgICAgfQ0KLQ0KKyAgICAgICAg ICAgIA0KICAgICAgICAgICAgIC8vIG5vdCBhbiBleHBlY3RlZCBleGNlcHRpb24uICBSZXNvcnQg dG8gSkRLIDEuMCB0byBleGVjdXRlDQogICAgICAgICAgICAgLy8gdGhpcyBtZXRob2QNCiAgICAg ICAgICAgICBqZGsxMFNhdmVQcm9wZXJ0aWVzKHByb3BzLCBvcywgaGVhZGVyKTsNCkBAIC00Mzgs OCArMjY0LDggQEAKICAgICAgICAgICAgIGpkazEwU2F2ZVByb3BlcnRpZXMocHJvcHMsIG9zLCBo ZWFkZXIpOw0KICAgICAgICAgfQ0KICAgICB9DQotDQotDQorICAgIA0KKyAgICANCiAgICAgLyoq DQogICAgICAqIFNhdmUgdGhlIHByb3BlcnRpZXMgdG8gdGhlIG91dHB1dCBzdHJlYW0gdXNpbmcg dGhlIEpESyAxLjAgY29tcGF0aWJsZQ0KICAgICAgKiBtZXRob2QuICBUaGlzIHdvbid0IHRocm93 IGFuIDx0dD5JT0V4Y2VwdGlvbjwvdHQ+IG9uIGFuIG91dHB1dCBlcnJvci4NCkBAIC00NTIsMTgg KzI3OCw1IEBACiAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyKSB7DQogICAgICAgICBwcm9wcy5z YXZlKG9zLCBoZWFkZXIpOw0KICAgICB9DQotDQotICAgIC8qKg0KLSAgICAgKiBVc2VzIHRoZSBE b2N1bWVudEJ1aWxkZXJGYWN0b3J5IHRvIGdldCBhIERvY3VtZW50QnVpbGRlciBpbnN0YW5jZS4N Ci0gICAgICoNCi0gICAgICogQHJldHVybiAgIFRoZSBEb2N1bWVudEJ1aWxkZXIgaW5zdGFuY2UN Ci0gICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIERvY3VtZW50QnVpbGRlciBnZXREb2N1bWVu dEJ1aWxkZXIoKSB7DQotICAgICAgICB0cnkgew0KLSAgICAgICAgICAgIHJldHVybiBEb2N1bWVu dEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3RG9jdW1lbnRCdWlsZGVyKCk7DQotICAg ICAgICB9IGNhdGNoKCBFeGNlcHRpb24gZSApIHsNCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXhj ZXB0aW9uSW5Jbml0aWFsaXplckVycm9yKCBlICk7DQotICAgICAgICB9DQotICAgIH0NCiB9DQog DQo= ------=_NextPart_000_00C6_01C1F831.22751930 Content-Type: application/octet-stream; name="echoproperties.xml.diff" Content-Disposition: attachment; filename="echoproperties.xml.diff" Content-Transfer-Encoding: base64 LS0tIGVjaG9wcm9wZXJ0aWVzLnhtbC5vcmcJMjAwMi0wNS0wNiAxNDoxNzoyMS4xMDg5MTgwMDAg KzAyMDAKKysrIHNyYy9ldGMvdGVzdGNhc2VzL3Rhc2tkZWZzL29wdGlvbmFsL2VjaG9wcm9wZXJ0 aWVzLnhtbAkyMDAyLTA1LTA3IDA5OjI0OjQ2LjI3OTM0MTAwMCArMDIwMApAQCAtMTIsNiArMTIs MjYgQEAKICAgICA8ZWNob3Byb3BlcnRpZXMgLz4NCiAgIDwvdGFyZ2V0Pg0KIA0KKyAgPHRhcmdl dCBuYW1lPSJ0ZXN0RWNob1RvTG9nWG1sIiBkZXBlbmRzPSJzZXR1cCI+DQorICAgIDxlY2hvcHJv cGVydGllcyBmb3JtYXQ9InhtbCIgLz4NCisgIDwvdGFyZ2V0Pg0KKw0KKyAgPHRhcmdldCBuYW1l PSJ0ZXN0UmVhZEFuZEVjaG9Ub0xvZyIgZGVwZW5kcz0ic2V0dXAiPg0KKyAgICA8ZWNob3Byb3Bl cnRpZXMgc3JjZmlsZT0iZWNob3Byb3BlcnRpZXMucHJvcGVydGllcyIgLz4NCisgIDwvdGFyZ2V0 Pg0KKw0KKyAgPHRhcmdldCBuYW1lPSJ0ZXN0UmVhZEJhZEZpbGUiIGRlcGVuZHM9InNldHVwIj4N CisgICAgPGVjaG9wcm9wZXJ0aWVzIHNyY2ZpbGU9Ii4iIC8+DQorICA8L3RhcmdldD4NCisNCisg IDx0YXJnZXQgbmFtZT0idGVzdFJlYWRCYWRGaWxlRmFpbCIgZGVwZW5kcz0ic2V0dXAiPg0KKyAg ICA8ZWNob3Byb3BlcnRpZXMgc3JjZmlsZT0iLiIgZmFpbG9uZXJyb3I9InllcyIgLz4NCisgIDwv dGFyZ2V0Pg0KKw0KKyAgPHRhcmdldCBuYW1lPSJ0ZXN0UmVhZEJhZEZpbGVOb0ZhaWwiIGRlcGVu ZHM9InNldHVwIj4NCisgICAgPGVjaG9wcm9wZXJ0aWVzIHNyY2ZpbGU9Ii4iIGZhaWxvbmVycm9y PSJubyIgLz4NCisgIDwvdGFyZ2V0Pg0KKw0KICAgPHRhcmdldCBuYW1lPSJ0ZXN0RWNob1RvQmFk RmlsZSIgZGVwZW5kcz0ic2V0dXAiPg0KICAgICA8ZWNob3Byb3BlcnRpZXMgZGVzdGZpbGU9Ii4i IC8+DQogICA8L3RhcmdldD4NCkBAIC0yOCw2ICs0OCwxMCBAQAogICAgIDxlY2hvcHJvcGVydGll cyBkZXN0ZmlsZT0idGVzdC5wcm9wZXJ0aWVzIiAvPg0KICAgPC90YXJnZXQ+DQogDQorICA8dGFy Z2V0IG5hbWU9InRlc3RFY2hvVG9Hb29kRmlsZVhtbCIgZGVwZW5kcz0ic2V0dXAiPg0KKyAgICA8 ZWNob3Byb3BlcnRpZXMgZGVzdGZpbGU9InRlc3QueG1sIiBmb3JtYXQ9InhtbCIgLz4NCisgIDwv dGFyZ2V0Pg0KKw0KICAgPHRhcmdldCBuYW1lPSJ0ZXN0RWNob1RvR29vZEZpbGVGYWlsIiBkZXBl bmRzPSJzZXR1cCI+DQogICAgIDxlY2hvcHJvcGVydGllcyBkZXN0ZmlsZT0idGVzdC5wcm9wZXJ0 aWVzIiBmYWlsb25lcnJvcj0ieWVzIiAvPg0KICAgPC90YXJnZXQ+DQpAQCAtNDMsNiArNjcsNyBA QAogICA8dGFyZ2V0IG5hbWU9ImNsZWFudXAiPg0KICAgICA8ZGVsZXRlIGZpbGU9InRlc3QucHJv cGVydGllcyIgZmFpbG9uZXJyb3I9Im5vIiAvPg0KICAgICA8ZGVsZXRlIGZpbGU9InRlc3QtcHJl Zml4LnByb3BlcnRpZXMiIGZhaWxvbmVycm9yPSJubyIgLz4NCisgICAgPGRlbGV0ZSBmaWxlPSJ0 ZXN0LnhtbCIgZmFpbG9uZXJyb3I9Im5vIiAvPg0KICAgPC90YXJnZXQ+DQogDQogPC9wcm9qZWN0 Pg0K ------=_NextPart_000_00C6_01C1F831.22751930 Content-Transfer-Encoding: 7bit Content-Type: application/octet-stream; name="CollectionUtils.java.diff" Content-Disposition: attachment; filename="CollectionUtils.java.diff" ------=_NextPart_000_00C6_01C1F831.22751930 Content-Type: application/octet-stream; name="EchoPropertiesTest.class" Content-Disposition: attachment; filename="EchoPropertiesTest.class" Content-Transfer-Encoding: base64 yv66vgAAAC4BBwoAYgCLCACMCgBhAI0JAGEAjggAjwgAkAoAkQCSCACTCgBhAJQIAHIIAJUKAGEA lggAcwoAYQCUCgBhAJcIAJgIAJkKAJoAmwoAnACdCAB0CgBhAJQKAGEAlwgAnggAnwgAdQgAoAgA oQoAYQCiCgBhAKIIAHcKAGEAowgAeAgApAgApQoAYQCiCAB5CgBhAKIIAHoKAGEAowgAewoAYQCU CgBhAKYIAH4KAGEAlAgApwoAYQCoBwCpCgAvAKoHAKsKADEArAoAMQCtCACuCgCcAK8KAC8AsAcA sQgAfwoAYQCUCACACgBhAJQIAIEKAGEAlAgAsgoAYQCzCAC0CAC1CAC2CgBIALcKAJwAuAgAuQgA ugoAnAC7BwC8CgBIAL0HAL4HAL8KAEsAqgoASgDACgBIAMEKAMIAsAgAwwcAxAoAUQC9CADFCgBR AMYKAF4AxwoAUQDICgBeAMkJAMoAywoASADMCADNCADOCgCaAM8KAGEA0AcA0QoAYQDQCgBeANIH ANMHANQBAAxUQVNLREVGU19ESVIBABJMamF2YS9sYW5nL1N0cmluZzsBAA1Db25zdGFudFZhbHVl CADVAQAMR09PRF9PVVRGSUxFAQAQR09PRF9PVVRGSUxFX1hNTAEADlBSRUZJWF9PVVRGSUxFAQAK VEVTVF9WQUxVRQEABjxpbml0PgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEABENvZGUBAA9MaW5l TnVtYmVyVGFibGUBAAVzZXRVcAEAAygpVgEACHRlYXJEb3duAQANdGVzdEVjaG9Ub0xvZwEAEHRl c3RFY2hvVG9Mb2dYbWwBABR0ZXN0UmVhZEFuZEVjaG9Ub0xvZwEAD3Rlc3RSZWFkQmFkRmlsZQEA E3Rlc3RSZWFkQmFkRmlsZUZhaWwBABV0ZXN0UmVhZEJhZEZpbGVOb0ZhaWwBABF0ZXN0RWNob1Rv QmFkRmlsZQEAFXRlc3RFY2hvVG9CYWRGaWxlRmFpbAEAF3Rlc3RFY2hvVG9CYWRGaWxlTm9GYWls AQASdGVzdEVjaG9Ub0dvb2RGaWxlAQAKRXhjZXB0aW9ucwcA1gEAFXRlc3RFY2hvVG9Hb29kRmls ZVhtbAEAFnRlc3RFY2hvVG9Hb29kRmlsZUZhaWwBABh0ZXN0RWNob1RvR29vZEZpbGVOb0ZhaWwB AA50ZXN0RWNob1ByZWZpeAEADGxvYWRQcm9wRmlsZQEAKihMamF2YS9sYW5nL1N0cmluZzspTGph dmEvdXRpbC9Qcm9wZXJ0aWVzOwEADmFzc2VydEdvb2RGaWxlAQAKdG9BYnNvbHV0ZQEAJihMamF2 YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7AQASY3JlYXRlUmVsYXRpdmVGaWxlAQAi KExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9pby9GaWxlOwEAClNvdXJjZUZpbGUBABdFY2hvUHJv cGVydGllc1Rlc3QuamF2YQwAawBsAQA2c3JjL2V0Yy90ZXN0Y2FzZXMvdGFza2RlZnMvb3B0aW9u YWwvZWNob3Byb3BlcnRpZXMueG1sDADXAGwMANgA2QEADXRlc3QucHJvcGVydHkBAAVpc1NldAcA 2gwA2wDcAQAHY2xlYW51cAwA3QBsAQATdGVzdC5wcm9wZXJ0eT1pc1NldAwA3gDcDADfAOABACBE aWQgbm90IG91dHB1dCB0ZXN0RWNob1RvTG9nWG1sLgEAODxwcm9wZXJ0eSBuYW1lPSJ0ZXN0LnBy b3BlcnR5IiB2YWx1ZT0iaXNTZXQiPjwvcHJvcGVydHk+BwDhDADiAOMHAOQMAOUA5gEAHURpZCBu b3Qgb3V0cHV0IHRlc3RFY2hvVG9Mb2cuAQAQdGVzdC5pbmZpbGU9dHJ1ZQEAFnNyY2ZpbGUgaXMg YSBkaXJlY3RvcnkBABdzcmNmaWxlIGlzIGEgZGlyZWN0b3J5IQwA5wDoDADpANwBABdkZXN0Zmls ZSBpcyBhIGRpcmVjdG9yeQEAGGRlc3RmaWxlIGlzIGEgZGlyZWN0b3J5IQwAhABwAQAIdGVzdC54 bWwMAIcAiAEAEmphdmEvaW8vRmlsZVJlYWRlcgwAawDqAQAWamF2YS9pby9CdWZmZXJlZFJlYWRl cgwAawDrDADsAOABADFkaWQgbm90IGVuY291bnRlciBzZXQgcHJvcGVydHkgaW4gZ2VuZXJhdGVk IGZpbGUuDADtAGwMAO4AcAEAE2phdmEvaW8vSU9FeGNlcHRpb24BABZ0ZXN0LXByZWZpeC5wcm9w ZXJ0aWVzDACCAIMBACZwcmVmaXggZGlkbid0IGluY2x1ZGUgJ2Euc2V0JyBwcm9wZXJ0eQEABHRy dWUBAAVhLnNldAwA7wCGDADwAPEBACxwcmVmaXggZmFpbGVkIHRvIGZpbHRlciBvdXQgcHJvcGVy dHkgJ2Iuc2V0JwEABWIuc2V0DADyAPMBABRqYXZhL3V0aWwvUHJvcGVydGllcwwAawBwAQAbamF2 YS9pby9CdWZmZXJlZElucHV0U3RyZWFtAQAXamF2YS9pby9GaWxlSW5wdXRTdHJlYW0MAGsA9AwA 9QD0BwD2AQAPdGVzdC5wcm9wZXJ0aWVzAQAWamF2YS9sYW5nL1N0cmluZ0J1ZmZlcgEAD0RpZCBu b3QgY3JlYXRlIAwA9wD4DAD5AOAMAPoA4AwA+wD8BwD9DAD+AP8MAQABAQEAGHRlc3QgcHJvcGVy dHkgbm90IGZvdW5kIAEAAS4MAQIBAwwBBAEFAQAMamF2YS9pby9GaWxlDABrAQYBADlvcmcvYXBh Y2hlL3Rvb2xzL2FudC90YXNrZGVmcy9vcHRpb25hbC9FY2hvUHJvcGVydGllc1Rlc3QBACJvcmcv YXBhY2hlL3Rvb2xzL2FudC9CdWlsZEZpbGVUZXN0AQAkc3JjL2V0Yy90ZXN0Y2FzZXMvdGFza2Rl ZnMvb3B0aW9uYWwvAQATamF2YS9sYW5nL0V4Y2VwdGlvbgEAEGNvbmZpZ3VyZVByb2plY3QBAAdw cm9qZWN0AQAeTG9yZy9hcGFjaGUvdG9vbHMvYW50L1Byb2plY3Q7AQAcb3JnL2FwYWNoZS90b29s cy9hbnQvUHJvamVjdAEAC3NldFByb3BlcnR5AQAnKExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xh bmcvU3RyaW5nOylWAQANZXhlY3V0ZVRhcmdldAEAE2V4cGVjdExvZ0NvbnRhaW5pbmcBAAZnZXRM b2cBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwEAEGphdmEvbGFuZy9TdHJpbmcBAAdpbmRleE9mAQAV KExqYXZhL2xhbmcvU3RyaW5nOylJAQAWanVuaXQvZnJhbWV3b3JrL0Fzc2VydAEACmFzc2VydFRy dWUBABYoTGphdmEvbGFuZy9TdHJpbmc7WilWAQAeZXhwZWN0QnVpbGRFeGNlcHRpb25Db250YWlu aW5nAQA5KExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3Ry aW5nOylWAQAJZXhwZWN0TG9nAQARKExqYXZhL2lvL0ZpbGU7KVYBABMoTGphdmEvaW8vUmVhZGVy OylWAQAIcmVhZExpbmUBAARmYWlsAQAFY2xvc2UBAAtnZXRQcm9wZXJ0eQEADGFzc2VydEVxdWFs cwEAOShMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL09iamVj dDspVgEACmFzc2VydE51bGwBACcoTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9PYmplY3Q7 KVYBABgoTGphdmEvaW8vSW5wdXRTdHJlYW07KVYBAARsb2FkAQATamF2YS9pby9JbnB1dFN0cmVh bQEABmFwcGVuZAEALChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWZmZXI7 AQAPZ2V0QWJzb2x1dGVQYXRoAQAIdG9TdHJpbmcBAAZleGlzdHMBAAMoKVoBABBqYXZhL2xhbmcv U3lzdGVtAQADb3V0AQAVTGphdmEvaW8vUHJpbnRTdHJlYW07AQAEbGlzdAEAGChMamF2YS9pby9Q cmludFN0cmVhbTspVgEABmVxdWFscwEAFShMamF2YS9sYW5nL09iamVjdDspWgEADWdldFByb2pl Y3REaXIBABAoKUxqYXZhL2lvL0ZpbGU7AQAjKExqYXZhL2lvL0ZpbGU7TGphdmEvbGFuZy9TdHJp bmc7KVYAIQBhAGIAAAAFABoAYwBkAAEAZQAAAAIAZgAaAGcAZAABAGUAAAACAFAAGgBoAGQAAQBl AAAAAgAtABoAaQBkAAEAZQAAAAIAPgAaAGoAZAABAGUAAAACAAYAFQABAGsAbAABAG0AAAAiAAIA AgAAAAYqK7cAAbEAAAABAG4AAAAKAAIAAABVAAUAVgABAG8AcAABAG0AAAAyAAMAAQAAABIqEgK2 AAMqtAAEEgUSBrYAB7EAAAABAG4AAAAOAAMAAABaAAYAWwARAFwAAQBxAHAAAQBtAAAAIwACAAEA AAAHKhIItgAJsQAAAAEAbgAAAAoAAgAAAGAABgBhAAEAcgBwAAEAbQAAACUAAwABAAAACSoSChIL tgAMsQAAAAEAbgAAAAoAAgAAAGUACABmAAEAcwBwAAEAbQAAAEMAAwACAAAAHyoSDbYADiq2AA9M EhArEhG2ABKbAAcEpwAEA7gAE7EAAAABAG4AAAASAAQAAABqAAYAawALAGwAHgBvAAEAdABwAAEA bQAAAEMAAwACAAAAHyoSFLYAFSq2ABZMEhcrEhi2ABKbAAcEpwAEA7gAE7EAAAABAG4AAAASAAQA AABzAAYAdAALAHUAHgB4AAEAdQBwAAEAbQAAACcABAABAAAACyoSGRIaEhu2AByxAAAAAQBuAAAA CgACAAAAfAAKAH4AAQB2AHAAAQBtAAAAJwAEAAEAAAALKhIZEhoSG7YAHbEAAAABAG4AAAAKAAIA AACCAAoAhAABAHcAcAABAG0AAAAlAAMAAQAAAAkqEh4SG7YAH7EAAAABAG4AAAAKAAIAAACIAAgA iQABAHgAcAABAG0AAAAnAAQAAQAAAAsqEiASIRIitgAjsQAAAAEAbgAAAAoAAgAAAI0ACgCPAAEA eQBwAAEAbQAAACcABAABAAAACyoSJBIhEiK2ACWxAAAAAQBuAAAACgACAAAAkwAKAJUAAQB6AHAA AQBtAAAAJQADAAEAAAAJKhImEiK2ACexAAAAAQBuAAAACgACAAAAmQAIAJoAAQB7AHAAAgBtAAAA KwACAAEAAAALKhIotgApKrYAKrEAAAABAG4AAAAOAAMAAACeAAYAnwAKAKAAfAAAAAQAAQB9AAEA fgBwAAIAbQAAAM4AAwAIAAAAXioSK7YALCoSLbYALky7AC9ZK7cAME27ADFZLLcAMk4BOgSnABEZ BBIRtgASmwAHqAAhsS22ADNZOgTH/+sSNLgANagADqcAGDoFqAAGGQW/OgYstgA2pwAFOgepBrEA BAAWADIASAAAADMARQBIAAAASABNAEgAAABSAFYAWQA3AAEAbgAAAD4ADwAAAKQABgCnAA0AqAAW AKoAHwCrACIArAAlAK0ALwCvADMArAA9ALIAQgCzAEgAtABSALUAVgC2AF0AuAB8AAAABAABAH0A AQB/AHAAAgBtAAAAKwACAAEAAAALKhI4tgA5KrYAKrEAAAABAG4AAAAOAAMAAAC8AAYAvQAKAL4A fAAAAAQAAQB9AAEAgABwAAIAbQAAACsAAgABAAAACyoSOrYAOyq2ACqxAAAAAQBuAAAADgADAAAA wgAGAMMACgDEAHwAAAAEAAEAfQABAIEAcAACAG0AAABOAAQAAgAAACYqEjy2AD0qEj62AD9MEkAS QSsSQrYAQ7gARBJFKxJGtgBDuABHsQAAAAEAbgAAABYABQAAAMgABgDJAA0AywAaAMwAJQDOAHwA AAAEAAEAfQAEAIIAgwACAG0AAACbAAUACAAAAEsqK7YALk27AEhZtwBJTgE6BLsASlm7AEtZLLcA TLcATToELRkEtgBOqAAOpwAeOgWoAAYZBb86BhkExgANGQS2AE+nAAU6B6kGLbAAAwARACsALgAA AC4AMwAuAAAAPQBCAEUANwABAG4AAAAmAAkAAADSAAYA0wAOANQAEQDWACIA1wAoANgALgDZAD0A 2gBJAN0AfAAAAAQAAQA3AAQAhABwAAIAbQAAAGwABAADAAAAQCoSULYALky7AFFZtwBSElO2AFQr tgBVtgBUtgBWK7YAV7gAEyoSULYAP00ssgBYtgBZEloSBiwSBbYAQ7gARLEAAAABAG4AAAAaAAYA AADhAAcA4gAkAOUAKwDmADIA5wA/AOkAfAAAAAQAAQB9AAQAhQCGAAEAbQAAACEAAgACAAAACSor tgAutgBVsAAAAAEAbgAAAAYAAQAAAO0ABACHAIgAAQBtAAAAOwAEAAIAAAAbKxJbtgBcmQAIKrYA XbC7AF5ZKrYAXyu3AGCwAAAAAQBuAAAADgADAAAA8gAJAPMADgD2AAEAiQAAAAIAig== ------=_NextPart_000_00C6_01C1F831.22751930 Content-Transfer-Encoding: 7bit Content-Type: application/octet-stream; name="echoproperties.properties" Content-Disposition: attachment; filename="echoproperties.properties" test.infile=true ------=_NextPart_000_00C6_01C1F831.22751930 Content-Transfer-Encoding: 7bit Content-Type: text/xml; name="echoproperties.xml" Content-Disposition: attachment; filename="echoproperties.xml" ------=_NextPart_000_00C6_01C1F831.22751930 Content-Type: application/octet-stream; name="EchoProperties.java" Content-Disposition: attachment; filename="EchoProperties.java" Content-Transfer-Encoding: base64 LyoNCiAqIFRoZSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjENCiAqDQogKiBD b3B5cmlnaHQgKGMpIDIwMDIgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgQWxsIHJp Z2h0cw0KICogcmVzZXJ2ZWQuDQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2RpZmljYXRpb24sIGFy ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqIGFy ZSBtZXQ6DQogKg0KICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAqDQogKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0K ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluDQogKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlDQogKiAgICBkaXN0cmlidXRpb24uDQogKg0KICogMy4gVGhl IGVuZC11c2VyIGRvY3VtZW50YXRpb24gaW5jbHVkZWQgd2l0aCB0aGUgcmVkaXN0cmlidXRpb24s IGlmDQogKiAgICBhbnksIG11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGFja25vd2xlZ2VtZW50 Og0KICogICAgICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkg dGhlDQogKiAgICAgICAgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKGh0dHA6Ly93d3cuYXBh Y2hlLm9yZy8pLiINCiAqICAgIEFsdGVybmF0ZWx5LCB0aGlzIGFja25vd2xlZ2VtZW50IG1heSBh cHBlYXIgaW4gdGhlIHNvZnR3YXJlIGl0c2VsZiwNCiAqICAgIGlmIGFuZCB3aGVyZXZlciBzdWNo IHRoaXJkLXBhcnR5IGFja25vd2xlZ2VtZW50cyBub3JtYWxseSBhcHBlYXIuDQogKg0KICogNC4g VGhlIG5hbWVzICJUaGUgSmFrYXJ0YSBQcm9qZWN0IiwgIkFudCIsIGFuZCAiQXBhY2hlIFNvZnR3 YXJlDQogKiAgICBGb3VuZGF0aW9uIiBtdXN0IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBw cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuDQogKiAgICBwZXJtaXNzaW9uLCBw bGVhc2UgY29udGFjdCBhcGFjaGVAYXBhY2hlLm9yZy4NCiAqDQogKiA1LiBQcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiQXBhY2hlIg0KICogICAg bm9yIG1heSAiQXBhY2hlIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0 dGVuDQogKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBBcGFjaGUgR3JvdXAuDQogKg0KICogVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTRUQgT1IgSU1QTElF RA0KICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM SUVEIFdBUlJBTlRJRVMNCiAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQVJFDQogKiBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg VEhFIEFQQUNIRSBTT0ZUV0FSRSBGT1VOREFUSU9OIE9SDQogKiBJVFMgQ09OVFJJQlVUT1JTIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQogKiBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U DQogKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOyBMT1NTIE9GDQogKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EDQogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCiAqIE9SIFRPUlQgKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVA0K ICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP U1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKg0KICogVGhp cyBzb2Z0d2FyZSBjb25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlIGJ5IG1h bnkNCiAqIGluZGl2aWR1YWxzIG9uIGJlaGFsZiBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5k YXRpb24uICBGb3IgbW9yZQ0KICogaW5mb3JtYXRpb24gb24gdGhlIEFwYWNoZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBwbGVhc2Ugc2VlDQogKiA8aHR0cDovL3d3dy5hcGFjaGUub3JnLz4uDQogKi8N CnBhY2thZ2Ugb3JnLmFwYWNoZS50b29scy5hbnQudGFza2RlZnMub3B0aW9uYWw7DQoNCmltcG9y dCBvcmcuYXBhY2hlLnRvb2xzLmFudC5Qcm9qZWN0Ow0KaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMu YW50LlRhc2s7DQppbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuQnVpbGRFeGNlcHRpb247DQpp bXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQudXRpbC5ET01FbGVtZW50V3JpdGVyOw0KaW1wb3J0 IG9yZy5hcGFjaGUudG9vbHMuYW50LnV0aWwuQ29sbGVjdGlvblV0aWxzOw0KaW1wb3J0IG9yZy5h cGFjaGUudG9vbHMuYW50LnR5cGVzLkVudW1lcmF0ZWRBdHRyaWJ1dGU7DQoNCmltcG9ydCBvcmcu dzNjLmRvbS5Eb2N1bWVudDsNCmltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50Ow0KDQppbXBvcnQg amF2YS51dGlsLlByb3BlcnRpZXM7DQppbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOw0KDQpp bXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07DQppbXBvcnQgamF2YS5pby5PdXRw dXRTdHJlYW07DQppbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXI7DQppbXBvcnQgamF2 YS5pby5Xcml0ZXI7DQppbXBvcnQgamF2YS5pby5GaWxlOw0KaW1wb3J0IGphdmEuaW8uRmlsZUlu cHV0U3RyZWFtOw0KaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsNCmltcG9ydCBqYXZh LmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsNCmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0K DQppbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOw0KaW1wb3J0IGphdmF4 LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7DQoNCi8qKg0KICogIERpc3BsYXlz IGFsbCB0aGUgY3VycmVudCBwcm9wZXJ0aWVzIGluIHRoZSBidWlsZC4gVGhlIG91dHB1dCBjYW4g YmUgc2VudCB0bw0KICogIGEgZmlsZSBpZiBkZXNpcmVkLiA8UD4NCiAqDQogKiAgQXR0cmlidXRl ICJkZXN0ZmlsZSIgZGVmaW5lcyBhIGZpbGUgdG8gc2VuZCB0aGUgcHJvcGVydGllcyB0by4gVGhp cyBjYW4gYmUNCiAqICBwcm9jZXNzZWQgYXMgYSBzdGFuZGFyZCBwcm9wZXJ0eSBmaWxlIGxhdGVy LiA8UD4NCiAqDQogKiAgQXR0cmlidXRlICJwcmVmaXgiIGRlZmluZXMgYSBwcmVmaXggd2hpY2gg aXMgdXNlZCB0byBmaWx0ZXIgdGhlIHByb3BlcnRpZXMNCiAqICBvbmx5IHRob3NlIHByb3BlcnRp ZXMgc3RhcnRpbmcgd2l0aCB0aGlzIHByZWZpeCB3aWxsIGJlIGVjaG9lZC4gPFA+DQogKg0KICog IEJ5IGRlZmF1bHQsIHRoZSAiZmFpbG9uZXJyb3IiIGF0dHJpYnV0ZSBpcyBlbmFibGVkLiBJZiBh biBlcnJvciBvY2N1cnMgd2hpbGUNCiAqICB3cml0aW5nIHRoZSBwcm9wZXJ0aWVzIHRvIGEgZmls ZSwgYW5kIHRoaXMgYXR0cmlidXRlIGlzIGVuYWJsZWQsIHRoZW4gYQ0KICogIEJ1aWxkRXhjZXB0 aW9uIHdpbGwgYmUgdGhyb3duLiBJZiBkaXNhYmxlZCwgdGhlbiBJTyBlcnJvcnMgd2lsbCBiZSBy ZXBvcnRlZA0KICogIGFzIGEgbG9nIHN0YXRlbWVudCwgYnV0IG5vIGVycm9yIHdpbGwgYmUgdGhy b3duLiA8UD4NCiAqDQogKiAgRXhhbXBsZXM6IDxwcmU+DQogKiAgJmx0O2VjaG9wcm9wZXJ0aWVz ICAvJmd0Ow0KICogPC9wcmU+IFJlcG9ydCB0aGUgY3VycmVudCBwcm9wZXJ0aWVzIHRvIHRoZSBs b2cuIDxQPg0KICoNCiAqICA8cHJlPg0KICogICZsdDtlY2hvcHJvcGVydGllcyBkZXN0ZmlsZT0i bXkucHJvcGVydGllcyIgLyZndDsNCiAqIDwvcHJlPiBSZXBvcnQgdGhlIGN1cnJlbnQgcHJvcGVy dGllcyB0byB0aGUgZmlsZSAibXkucHJvcGVydGllcyIsIGFuZCB3aWxsDQogKiAgZmFpbCB0aGUg YnVpbGQgaWYgdGhlIGZpbGUgY291bGQgbm90IGJlIGNyZWF0ZWQgb3Igd3JpdHRlbiB0by4gPFA+ DQogKg0KICogIDxwcmU+DQogKiAgJmx0O2VjaG9wcm9wZXJ0aWVzIGRlc3RmaWxlPSJteS5wcm9w ZXJ0aWVzIiBmYWlsb25lcnJvcj0iZmFsc2UiDQogKiAgICAgIHByZWZpeD0iYW50IiAvJmd0Ow0K ICogPC9wcmU+IFJlcG9ydCBhbGwgcHJvcGVydGllcyBiZWdpbm5pbmcgd2l0aCAnYW50JyB0byB0 aGUgZmlsZQ0KICogICJteS5wcm9wZXJ0aWVzIiwgYW5kIHdpbGwgbG9nIGEgbWVzc2FnZSBpZiB0 aGUgZmlsZSBjb3VsZCBub3QgYmUgY3JlYXRlZCBvcg0KICogIHdyaXR0ZW4gdG8sIGJ1dCB3aWxs IHN0aWxsIGFsbG93IHRoZSBidWlsZCB0byBjb250aW51ZS4NCiAqDQogKkBhdXRob3IgICAgIE1h dHQgQWxicmVjaHQgPGEgaHJlZj0ibWFpbHRvOmdyb2JvY2xvd25AdXNlcnMuc291cmNlZm9yZ2Uu bmV0Ij4NCiAqICAgICAgZ3JvYm9jbG93bkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ8L2E+DQogKkBh dXRob3IgICAgIEluZ21hciBTdGVpbiA8YSBocmVmPSJtYWlsdG86c3RlaW5AeHRyYW1pbmQuY29t Ij4NCiAgICAgICAgc3RlaW5AeHRyYW1pbmQuY29tPC9hPg0KICpAc2luY2UgICAgICBBbnQgMS41 DQogKi8NCnB1YmxpYyBjbGFzcyBFY2hvUHJvcGVydGllcyBleHRlbmRzIFRhc2sgew0KDQogICAg LyoqDQogICAgICogdGhlIHByb3BlcnRpZXMgZWxlbWVudC4NCiAgICAgKi8NCiAgICBwcml2YXRl IHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUEVSVElFUyA9ICJwcm9wZXJ0aWVzIjsNCg0KICAgIC8q Kg0KICAgICAqIHRoZSBwcm9wZXJ0eSBlbGVtZW50Lg0KICAgICAqLw0KICAgIHByaXZhdGUgc3Rh dGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWSA9ICJwcm9wZXJ0eSI7DQoNCiAgICAvKioNCiAgICAg KiBuYW1lIGF0dHJpYnV0ZSBmb3IgcHJvcGVydHksIHRlc3RjYXNlIGFuZCB0ZXN0c3VpdGUgZWxl bWVudHMuDQogICAgICovDQogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfTkFN RSA9ICJuYW1lIjsNCg0KICAgIC8qKg0KICAgICAqIHZhbHVlIGF0dHJpYnV0ZSBmb3IgcHJvcGVy dHkgZWxlbWVudHMuDQogICAgICovDQogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFU VFJfVkFMVUUgPSAidmFsdWUiOw0KDQogICAgLyoqDQogICAgICogdGhlIGlucHV0IGZpbGUuDQog ICAgICovDQogICAgcHJpdmF0ZSBGaWxlIGluRmlsZSA9IG51bGw7DQoNCiAgICAvKioNCiAgICAg KiAgRmlsZSBvYmplY3QgcG9pbnRpbmcgdG8gdGhlIG91dHB1dCBmaWxlLiBJZiB0aGlzIGlzIG51 bGwsIHRoZW4gd2Ugb3V0cHV0DQogICAgICogIHRvIHRoZSBwcm9qZWN0IGxvZywgbm90IHRvIGEg ZmlsZS4NCiAgICAgKi8NCiAgICBwcml2YXRlIEZpbGUgZGVzdGZpbGUgPSBudWxsOw0KDQogICAg LyoqDQogICAgICogIElmIHRoaXMgaXMgdHJ1ZSwgdGhlbiBlcnJvcnMgZ2VuZXJhdGVkIGR1cmlu ZyBmaWxlIG91dHB1dCB3aWxsIGJlY29tZQ0KICAgICAqICBidWlsZCBlcnJvcnMsIGFuZCBpZiBm YWxzZSwgdGhlbiBzdWNoIGVycm9ycyB3aWxsIGJlIGxvZ2dlZCwgYnV0IG5vdA0KICAgICAqICB0 aHJvd24uDQogICAgICovDQogICAgcHJpdmF0ZSBib29sZWFuIGZhaWxvbmVycm9yID0gdHJ1ZTsN Cg0KICAgIC8qKg0KICAgICAqICBQcmVmaXggc3RyaW5nIGNvbnRyb2xzIHdoaWNoIHByb3BlcnRp ZXMgdG8gc2F2ZS4NCiAgICAgKi8NCiAgICBwcml2YXRlIFN0cmluZyBwcmVmaXggPSBudWxsOw0K DQoNCiAgICBwcml2YXRlIFN0cmluZyBmb3JtYXQgPSAidGV4dCI7DQoNCiAgICAvKioNCiAgICAg KiBTZXRzIHRoZSBpbnB1dCBmaWxlLg0KICAgICAqDQogICAgICogQHBhcmFtIGZpbGUgIHRoZSBp bnB1dCBmaWxlDQogICAgICovDQogICAgcHVibGljIHZvaWQgc2V0U3JjZmlsZSggRmlsZSBmaWxl ICkgew0KICAgICAgICBpbkZpbGUgPSBmaWxlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqICBT ZXQgYSBmaWxlIHRvIHN0b3JlIHRoZSBwcm9wZXJ0eSBvdXRwdXQuICBJZiB0aGlzIGlzIG5ldmVy IHNwZWNpZmllZCwNCiAgICAgKiAgdGhlbiB0aGUgb3V0cHV0IHdpbGwgYmUgc2VudCB0byB0aGUg QW50IGxvZy4NCiAgICAgKg0KICAgICAqQHBhcmFtIGRlc3RmaWxlIGZpbGUgdG8gc3RvcmUgdGhl IHByb3BlcnR5IG91dHB1dA0KICAgICAqLw0KICAgIHB1YmxpYyB2b2lkIHNldERlc3RmaWxlKEZp bGUgZGVzdGZpbGUpIHsNCiAgICAgICAgdGhpcy5kZXN0ZmlsZSA9IGRlc3RmaWxlOw0KICAgIH0N Cg0KDQogICAgLyoqDQogICAgICogIFNldHMgdGhlIGZhaWx1cmUgbW9kZSBmb3IgdGhlIHRhc2su DQogICAgICoNCiAgICAgKkBwYXJhbSAgZmFpbG9uZXJyb3IgIDx0dD50cnVlPC90dD4gaWYgSU8g ZXhjZXB0aW9ucyBhcmUgcmVwb3J0ZWQgYXMgYnVpbGQNCiAgICAgKiAgICAgIGV4Y2VwdGlvbnMs IG9yIDx0dD5mYWxzZTwvdHQ+IGlmIElPIGV4Y2VwdGlvbnMgYXJlIGlnbm9yZWQuDQogICAgICov DQogICAgcHVibGljIHZvaWQgc2V0RmFpbE9uRXJyb3IoYm9vbGVhbiBmYWlsb25lcnJvcikgew0K ICAgICAgICB0aGlzLmZhaWxvbmVycm9yID0gZmFpbG9uZXJyb3I7DQogICAgfQ0KDQoNCiAgICAv KioNCiAgICAgKiAgSWYgdGhlIHByZWZpeCBpcyBzZXQsIHRoZW4gb25seSBwcm9wZXJ0aWVzIHdo aWNoIHN0YXJ0IHdpdGggdGhpcw0KICAgICAqICBwcmVmaXggc3RyaW5nIHdpbGwgYmUgcmVjb3Jk ZWQuICBJZiB0aGlzIGlzIG5ldmVyIHNldCwgb3IgaXQgaXMgc2V0DQogICAgICogIHRvIGFuIGVt cHR5IHN0cmluZyBvciA8dHQ+bnVsbDwvdHQ+LCB0aGVuIGFsbCBwcm9wZXJ0aWVzIHdpbGwgYmUN CiAgICAgKiAgcmVjb3JkZWQuIDxQPg0KICAgICAqDQogICAgICogIEZvciBleGFtcGxlLCBpZiB0 aGUgcHJvcGVydHkgaXMgc2V0IGFzOg0KICAgICAqICAgIDxQUkU+Jmx0O2VjaG9wcm9wZXJ0aWVz ICBwcmVmaXg9ImFudC4iIC8mZ3Q7PC9QUkU+DQogICAgICogIHRoZW4gdGhlIHByb3BlcnR5ICJh bnQuaG9tZSIgd2lsbCBiZSByZWNvcmRlZCwgYnV0ICJhbnQtZXhhbXBsZSINCiAgICAgKiAgd2ls bCBub3QuDQogICAgICoNCiAgICAgKkBwYXJhbSAgcHJlZml4ICBUaGUgbmV3IHByZWZpeCB2YWx1 ZQ0KICAgICAqLw0KICAgIHB1YmxpYyB2b2lkIHNldFByZWZpeChTdHJpbmcgcHJlZml4KSB7DQog ICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4Ow0KICAgIH0NCg0KDQogICAgcHVibGljIHZvaWQg c2V0Rm9ybWF0KEZvcm1hdEF0dHJpYnV0ZSBlYSkgew0KICAgICAgICBmb3JtYXQgPSBlYS5nZXRW YWx1ZSgpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRm9ybWF0QXR0cmlidXRl IGV4dGVuZHMgRW51bWVyYXRlZEF0dHJpYnV0ZSB7DQogICAgICAgIHByaXZhdGUgU3RyaW5nIFtd IGZvcm1hdHMgPSBuZXcgU3RyaW5nW117InhtbCIsICJ0ZXh0In07DQoNCiAgICAgICAgcHVibGlj IFN0cmluZ1tdIGdldFZhbHVlcygpIHsNCiAgICAgICAgICAgIHJldHVybiBmb3JtYXRzOw0KICAg ICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogIFJ1biB0aGUgdGFzay4NCiAgICAgKg0K ICAgICAqQGV4Y2VwdGlvbiAgQnVpbGRFeGNlcHRpb24gIHRyb3VibGUsIHByb2JhYmx5IGZpbGUg SU8NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBleGVjdXRlKCkgdGhyb3dzIEJ1aWxkRXhjZXB0 aW9uIHsNCiAgICAgICAgUHJvcGVydGllcyBwcm9wcyA9IG5ldyBQcm9wZXJ0aWVzKCk7DQoNCiAg ICAgICAgLyogbG9hZCBwcm9wZXJ0aWVzIGZyb20gZmlsZSBpZiBzcGVjaWZpZWQsIG90aGVyd2lz ZQ0KICAgICAgICB1c2UgQW50J3MgcHJvcGVydGllcyAqLw0KICAgICAgICBpZiggaW5GaWxlID09 IG51bGwgKSB7DQogICAgICAgICAgICAvLyBhZGQgYW50IHByb3BlcnRpZXMNCiAgICAgICAgICAg IENvbGxlY3Rpb25VdGlscy5wdXRBbGwoIHByb3BzLCBwcm9qZWN0LmdldFByb3BlcnRpZXMoKSAp Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKGluRmlsZS5leGlzdHMoKSAmJiBp bkZpbGUuaXNEaXJlY3RvcnkoKSkgew0KICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0g InNyY2ZpbGUgaXMgYSBkaXJlY3RvcnkhIjsNCiAgICAgICAgICAgICAgICBpZiAoZmFpbG9uZXJy b3IpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkRXhjZXB0aW9uKG1lc3Nh Z2UsIGxvY2F0aW9uKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg ICAgICBsb2coIG1lc3NhZ2UsIFByb2plY3QuTVNHX0VSUiApOw0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlm IChpbkZpbGUuZXhpc3RzKCkgJiYgIWluRmlsZS5jYW5SZWFkKCkpIHsNCiAgICAgICAgICAgICAg ICBTdHJpbmcgbWVzc2FnZSA9ICJDYW4gbm90IHJlYWQgZnJvbSB0aGUgc3BlY2lmaWVkIHNyY2Zp bGUhIjsNCiAgICAgICAgICAgICAgICBpZiggZmFpbG9uZXJyb3IgKSB7DQogICAgICAgICAgICAg ICAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlvbiggbWVzc2FnZSwgbG9jYXRpb24gKTsNCiAg ICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBsb2coIG1lc3NhZ2Us IFByb2plY3QuTVNHX0VSUiApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBy ZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBpbiA9 IG51bGw7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGluID0gbmV3IEZpbGVJ bnB1dFN0cmVhbSggaW5GaWxlICk7DQogICAgICAgICAgICAgICAgcHJvcHMubG9hZCggaW4gKTsN CiAgICAgICAgICAgIH0gY2F0Y2goIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBmbmZlICkgew0KICAg ICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0NCiAgICAgICAgICAgICAgICAgICAgIkNvdWxk IG5vdCBmaW5kIGZpbGUgIiArIGluRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKTsNCiAgICAgICAgICAg ICAgICBpZiAoZmFpbG9uZXJyb3IpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJ1 aWxkRXhjZXB0aW9uKG1lc3NhZ2UsIGZuZmUsIGxvY2F0aW9uKTsNCiAgICAgICAgICAgICAgICB9 IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBsb2coIG1lc3NhZ2UsIFByb2plY3QuTVNHX1dB Uk4gKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg ICAgICAgfSBjYXRjaCggSU9FeGNlcHRpb24gaW9lICkgew0KICAgICAgICAgICAgICAgIFN0cmlu ZyBtZXNzYWdlID0NCiAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCByZWFkIGZpbGUgIiAr IGluRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKTsNCiAgICAgICAgICAgICAgICBpZiAoZmFpbG9uZXJy b3IpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkRXhjZXB0aW9uKG1lc3Nh Z2UsIGlvZSwgbG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg ICAgICAgICAgIGxvZyggbWVzc2FnZSwgUHJvamVjdC5NU0dfV0FSTiApOw0KICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9IGZpbmFsbHkgew0K ICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCBudWxsICE9IGlu ICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaW4uY2xvc2UoKTsNCiAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2goSU9FeGNlcHRpb24gaW9lKSB7fQ0KICAg ICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGRlc3RmaWxlID09IG51bGwpIHsN CiAgICAgICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBiYW9zID0gbmV3IEJ5dGVBcnJheU91 dHB1dFN0cmVhbSgpOw0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICBzYXZlUHJv cGVydGllcyhwcm9wcywgYmFvcyk7DQogICAgICAgICAgICB9IGNhdGNoKCBJT0V4Y2VwdGlvbiBp b2UgKSB7fQ0KICAgICAgICAgICAgbG9nKGJhb3MudG9TdHJpbmcoKSwgUHJvamVjdC5NU0dfSU5G Tyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoZGVzdGZpbGUuZXhpc3RzKCkg JiYgZGVzdGZpbGUuaXNEaXJlY3RvcnkoKSkgew0KICAgICAgICAgICAgICAgIFN0cmluZyBtZXNz YWdlID0gImRlc3RmaWxlIGlzIGEgZGlyZWN0b3J5ISI7DQogICAgICAgICAgICAgICAgaWYgKGZh aWxvbmVycm9yKSB7DQogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlv bihtZXNzYWdlLCBsb2NhdGlvbik7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgICAgICAgICAgbG9nKCBtZXNzYWdlLCBQcm9qZWN0Lk1TR19FUlIgKTsNCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KDQogICAgICAg ICAgICBpZiAoZGVzdGZpbGUuZXhpc3RzKCkgJiYgIWRlc3RmaWxlLmNhbldyaXRlKCkpIHsNCiAg ICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJDYW4gbm90IHdyaXRlIHRvIHRoZSBzcGVj aWZpZWQgZGVzdGZpbGUhIjsNCiAgICAgICAgICAgICAgICBpZiggZmFpbG9uZXJyb3IgKSB7DQog ICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlvbiggbWVzc2FnZSwgbG9j YXRpb24gKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBs b2coIG1lc3NhZ2UsIFByb2plY3QuTVNHX0VSUiApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHRyeSB7DQog ICAgICAgICAgICAgICAgT3V0cHV0U3RyZWFtIG9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZGVz dGZpbGUpOw0KICAgICAgICAgICAgICAgIHNhdmVQcm9wZXJ0aWVzKHByb3BzLCBvcyk7DQogICAg ICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsNCiAgICAgICAgICAgICAgICBTdHJp bmcgbWVzc2FnZSA9DQogICAgICAgICAgICAgICAgICAgICAgICAiRGVzdGZpbGUgIiArIGRlc3Rm aWxlICsgIiBjb3VsZCBub3QgYmUgd3JpdHRlbiB0by4iOw0KICAgICAgICAgICAgICAgIGlmIChm YWlsb25lcnJvcikgew0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQnVpbGRFeGNlcHRp b24obWVzc2FnZSwgaW9lLCBsb2NhdGlvbik7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAg ICAgICAgICAgICAgICAgICAgbG9nKG1lc3NhZ2UsIFByb2plY3QuTVNHX0lORk8pOw0KICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgLyoq DQogICAgICogIFNlbmQgdGhlIGtleS92YWx1ZSBwYWlycyBpbiB0aGUgaGFzaHRhYmxlIHRvIHRo ZSBnaXZlbiBvdXRwdXQgc3RyZWFtLg0KICAgICAqICBPbmx5IHRob3NlIHByb3BlcnRpZXMgbWF0 Y2hpbmcgdGhlIDx0dD5wcmVmaXg8L3R0PiBjb25zdHJhaW50IHdpbGwgYmUNCiAgICAgKiAgc2Vu dCB0byB0aGUgb3V0cHV0IHN0cmVhbS4NCiAgICAgKiAgVGhlIG91dHB1dCBzdHJlYW0gd2lsbCBi ZSBjbG9zZWQgd2hlbiB0aGlzIG1ldGhvZCByZXR1cm5zLg0KICAgICAqDQogICAgICpAcGFyYW0g IGFsbFByb3BzICAgICAgICAgcHJvcGZpbGUgdG8gc2F2ZQ0KICAgICAqQHBhcmFtICBvcyAgICAg ICAgICAgICAgIG91dHB1dCBzdHJlYW0NCiAgICAgKkBleGNlcHRpb24gIElPRXhjZXB0aW9uICB0 cm91YmxlDQogICAgICovDQogICAgcHJvdGVjdGVkIHZvaWQgc2F2ZVByb3BlcnRpZXMoUHJvcGVy dGllcyBhbGxQcm9wcywgT3V0cHV0U3RyZWFtIG9zKQ0KICAgICAgICAgICAgIHRocm93cyBJT0V4 Y2VwdGlvbiwgQnVpbGRFeGNlcHRpb24gew0KICAgICAgICBQcm9wZXJ0aWVzIHByb3BzID0gbmV3 IFByb3BlcnRpZXMoKTsNCiAgICAgICAgRW51bWVyYXRpb24gZW51bSA9IGFsbFByb3BzLmtleXMo KTsNCiAgICAgICAgd2hpbGUgKGVudW0uaGFzTW9yZUVsZW1lbnRzKCkpIHsNCiAgICAgICAgICAg IFN0cmluZyBuYW1lID0gKFN0cmluZykgZW51bS5uZXh0RWxlbWVudCgpOw0KICAgICAgICAgICAg ICAgIFN0cmluZyB2YWx1ZSA9IChTdHJpbmcpIGFsbFByb3BzLmdldChuYW1lKTsNCiAgICAgICAg ICAgIGlmIChwcmVmaXggPT0gbnVsbCB8fCBuYW1lLmluZGV4T2YocHJlZml4KSA9PSAwKSB7DQog ICAgICAgICAgICAgICAgcHJvcHMucHV0KG5hbWUsIHZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAg ICAgICAgfQ0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgaWYgKCJ0ZXh0Ii5lcXVhbHMoZm9y bWF0KSkgew0KICAgICAgICAgICAgICAgIGpka1NhdmVQcm9wZXJ0aWVzKHByb3BzLCBvcywgIkFu dCBwcm9wZXJ0aWVzIik7DQogICAgICAgICAgICB9IGVsc2UgaWYgKCJ4bWwiLmVxdWFscyhmb3Jt YXQpKSB7DQogICAgICAgICAgICAgICAgeG1sU2F2ZVByb3BlcnRpZXMocHJvcHMsIG9zICk7DQog ICAgICAgICAgICB9DQogICAgICAgIH0gZmluYWxseSB7DQogICAgICAgICAgICBvcy5jbG9zZSgp Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJvdGVjdGVkIHZvaWQgeG1sU2F2ZVByb3BlcnRp ZXMoUHJvcGVydGllcyBwcm9wcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0U3RyZWFtIG9zKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KICAgICAgICAvLyBjcmVh dGUgWE1MIGRvY3VtZW50DQogICAgICAgIERvY3VtZW50IGRvYyA9IGdldERvY3VtZW50QnVpbGRl cigpLm5ld0RvY3VtZW50KCk7DQogICAgICAgIEVsZW1lbnQgcm9vdEVsZW1lbnQgPSBkb2MuY3Jl YXRlRWxlbWVudCggUFJPUEVSVElFUyApOw0KDQogICAgICAgIC8vIG91dHB1dCBwcm9wZXJ0aWVz DQogICAgICAgIFN0cmluZyBuYW1lOw0KICAgICAgICBFbnVtZXJhdGlvbiBlID0gcHJvcHMucHJv cGVydHlOYW1lcygpOw0KICAgICAgICB3aGlsZSggZS5oYXNNb3JlRWxlbWVudHMoKSApIHsNCiAg ICAgICAgICAgIG5hbWUgPSAoU3RyaW5nKWUubmV4dEVsZW1lbnQoKTsNCiAgICAgICAgICAgIEVs ZW1lbnQgcHJvcEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCggUFJPUEVSVFkgKTsNCiAgICAg ICAgICAgIHByb3BFbGVtZW50LnNldEF0dHJpYnV0ZSggQVRUUl9OQU1FLCBuYW1lICk7DQogICAg ICAgICAgICBwcm9wRWxlbWVudC5zZXRBdHRyaWJ1dGUoIEFUVFJfVkFMVUUsIHByb3BzLmdldFBy b3BlcnR5KCBuYW1lICkgKTsNCiAgICAgICAgICAgIHJvb3RFbGVtZW50LmFwcGVuZENoaWxkKCBw cm9wRWxlbWVudCApOw0KICAgICAgICB9DQoNCiAgICAgICAgV3JpdGVyIHdyaSA9IG51bGw7DQog ICAgICAgIHRyeSB7DQogICAgICAgICAgICB3cmkgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKCBv cywgIlVURjgiICk7DQogICAgICAgICAgICB3cmkud3JpdGUoICI8P3htbCB2ZXJzaW9uPVwiMS4w XCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4iICk7DQogICAgICAgICAgICAoIG5ldyBET01FbGVtZW50 V3JpdGVyKCkgKS53cml0ZSggcm9vdEVsZW1lbnQsIHdyaSwgMCwgIlx0IiApOw0KICAgICAgICAg ICAgd3JpLmZsdXNoKCk7DQogICAgICAgIH0gY2F0Y2goIElPRXhjZXB0aW9uIGlvZSApIHsNCiAg ICAgICAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlvbiggIlVuYWJsZSB0byB3cml0ZSBYTUwg ZmlsZSIsIGlvZSApOw0KICAgICAgICB9IGZpbmFsbHkgew0KICAgICAgICAgICAgaWYoIHdyaSAh PSBudWxsICkgew0KICAgICAgICAgICAgICAgIHdyaS5jbG9zZSgpOw0KICAgICAgICAgICAgfQ0K ICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogIEpESyAxLjIgYWxsb3dzIGZvciB0 aGUgc2FmZXIgbWV0aG9kDQogICAgICogIDx0dD5Qcm9wZXJ0aWVzLnN0b3JlKCBPdXRwdXRTdHJl YW0sIFN0cmluZyApPC90dD4sIHdoaWNoIHRocm93cyBhbg0KICAgICAqICA8dHQ+SU9FeGNlcHRp b248L3R0PiBvbiBhbiBvdXRwdXQgZXJyb3IuICBUaGlzIG1ldGhvZCBhdHRlbXB0cyB0bw0KICAg ICAqICB1c2UgdGhlIEpESyAxLjIgbWV0aG9kIGZpcnN0LCBhbmQgaWYgdGhhdCBkb2VzIG5vdCBl eGlzdCwgdGhlbiB0aGUNCiAgICAgKiAgSkRLIDEuMCBjb21wYXRpYmxlIG1ldGhvZA0KICAgICAq ICA8dHQ+UHJvcGVydGllcy5zYXZlKCBPdXRwdXRTdHJlYW0sIFN0cmluZyApPC90dD4gaXMgdXNl ZCBpbnN0ZWFkLg0KICAgICAqDQogICAgICpAcGFyYW0gcHJvcHMgdGhlIHByb3BlcnRpZXMgdG8g cmVjb3JkDQogICAgICpAcGFyYW0gb3MgcmVjb3JkIHRoZSBwcm9wZXJ0aWVzIHRvIHRoaXMgb3V0 cHV0IHN0cmVhbQ0KICAgICAqQHBhcmFtIGhlYWRlciBwcmVwZW5kIHRoaXMgaGVhZGVyIHRvIHRo ZSBwcm9wZXJ0eSBvdXRwdXQNCiAgICAgKkBleGNlcHRpb24gSU9FeGNlcHRpb24gb24gYW4gSS9P IGVycm9yIGR1cmluZyBhIHdyaXRlLiAgT25seSB0aHJvd24NCiAgICAgKiAgICAgIGZvciBKREsg MS4yKy4NCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgdm9pZCBqZGtTYXZlUHJvcGVydGllcyhQcm9w ZXJ0aWVzIHByb3BzLCBPdXRwdXRTdHJlYW0gb3MsDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU3RyaW5nIGhlYWRlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsNCiAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgIGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBtID0gcHJvcHMuZ2V0 Q2xhc3MoKS5nZXRNZXRob2QoDQogICAgICAgICAgICAgICAgInN0b3JlIiwgbmV3IENsYXNzW117 T3V0cHV0U3RyZWFtLmNsYXNzLCBTdHJpbmcuY2xhc3N9KTsNCiAgICAgICAgICAgIG0uaW52b2tl KHByb3BzLCBuZXcgT2JqZWN0W117b3MsIGhlYWRlcn0pOw0KICAgICAgICB9IGNhdGNoIChqYXZh LmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGl0ZSkgew0KICAgICAgICAg ICAgVGhyb3dhYmxlIHQgPSBpdGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCk7DQogICAgICAgICAgICBp ZiAodCBpbnN0YW5jZW9mIElPRXhjZXB0aW9uKSB7DQogICAgICAgICAgICAgICAgdGhyb3cgKElP RXhjZXB0aW9uKSB0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHQgaW5zdGFuY2Vv ZiBSdW50aW1lRXhjZXB0aW9uKSB7DQogICAgICAgICAgICAgICAgdGhyb3cgKFJ1bnRpbWVFeGNl cHRpb24pIHQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIG5vdCBhbiBleHBlY3Rl ZCBleGNlcHRpb24uICBSZXNvcnQgdG8gSkRLIDEuMCB0byBleGVjdXRlDQogICAgICAgICAgICAv LyB0aGlzIG1ldGhvZA0KICAgICAgICAgICAgamRrMTBTYXZlUHJvcGVydGllcyhwcm9wcywgb3Ms IGhlYWRlcik7DQogICAgICAgIH0gY2F0Y2ggKFRocmVhZERlYXRoIHRkKSB7DQogICAgICAgICAg ICAvLyBkb24ndCB0cmFwIHRocmVhZCBkZWF0aCBlcnJvcnMuDQogICAgICAgICAgICB0aHJvdyB0 ZDsNCiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIGV4KSB7DQogICAgICAgICAgICAvLyB0aGlz ICdzdG9yZScgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUsIHNvIHJlc29ydCB0byB0aGUgSkRLIDEu MA0KICAgICAgICAgICAgLy8gY29tcGF0aWJsZSBtZXRob2QuDQogICAgICAgICAgICBqZGsxMFNh dmVQcm9wZXJ0aWVzKHByb3BzLCBvcywgaGVhZGVyKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQog ICAgLyoqDQogICAgICogU2F2ZSB0aGUgcHJvcGVydGllcyB0byB0aGUgb3V0cHV0IHN0cmVhbSB1 c2luZyB0aGUgSkRLIDEuMCBjb21wYXRpYmxlDQogICAgICogbWV0aG9kLiAgVGhpcyB3b24ndCB0 aHJvdyBhbiA8dHQ+SU9FeGNlcHRpb248L3R0PiBvbiBhbiBvdXRwdXQgZXJyb3IuDQogICAgICoN CiAgICAgKkBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyB0byByZWNvcmQNCiAgICAgKkBwYXJh bSBvcyByZWNvcmQgdGhlIHByb3BlcnRpZXMgdG8gdGhpcyBvdXRwdXQgc3RyZWFtDQogICAgICpA cGFyYW0gaGVhZGVyIHByZXBlbmQgdGhpcyBoZWFkZXIgdG8gdGhlIHByb3BlcnR5IG91dHB1dA0K ICAgICAqLw0KICAgIHByb3RlY3RlZCB2b2lkIGpkazEwU2F2ZVByb3BlcnRpZXMoUHJvcGVydGll cyBwcm9wcywgT3V0cHV0U3RyZWFtIG9zLA0KICAgICAgICAgICAgU3RyaW5nIGhlYWRlcikgew0K ICAgICAgICBwcm9wcy5zYXZlKG9zLCBoZWFkZXIpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAq IFVzZXMgdGhlIERvY3VtZW50QnVpbGRlckZhY3RvcnkgdG8gZ2V0IGEgRG9jdW1lbnRCdWlsZGVy IGluc3RhbmNlLg0KICAgICAqDQogICAgICogQHJldHVybiAgIFRoZSBEb2N1bWVudEJ1aWxkZXIg aW5zdGFuY2UNCiAgICAgKi8NCiAgICBwcml2YXRlIHN0YXRpYyBEb2N1bWVudEJ1aWxkZXIgZ2V0 RG9jdW1lbnRCdWlsZGVyKCkgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgcmV0dXJuIERv Y3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsN CiAgICAgICAgfSBjYXRjaCggRXhjZXB0aW9uIGUgKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcg RXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yKCBlICk7DQogICAgICAgIH0NCiAgICB9DQp9DQoN Cg== ------=_NextPart_000_00C6_01C1F831.22751930 Content-Type: text/plain; charset=us-ascii -- To unsubscribe, e-mail: For additional commands, e-mail: ------=_NextPart_000_00C6_01C1F831.22751930--