Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 2151 invoked from network); 21 Mar 2004 13:20:26 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 21 Mar 2004 13:20:26 -0000 Received: (qmail 66256 invoked by uid 500); 21 Mar 2004 13:20:14 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 66200 invoked by uid 500); 21 Mar 2004 13:20:13 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 66186 invoked from network); 21 Mar 2004 13:20:13 -0000 Received: from unknown (HELO email06.aon.at) (195.3.96.75) by daedalus.apache.org with SMTP; 21 Mar 2004 13:20:13 -0000 Received: (qmail 102846 invoked from network); 21 Mar 2004 13:20:10 -0000 Received: from m1192p027.adsl.highway.telekom.at (HELO sbs124.sbg.sbs.co.at) ([80.121.20.251]) (envelope-sender ) by qmail6rs.highway.telekom.at (qmail-ldap-1.03) with SMTP for ; 21 Mar 2004 13:20:10 -0000 Received: from [127.0.0.1] (helo=localhost) by sbs124.sbg.sbs.co.at with esmtp (Exim 4.30) id HUXH1G-0003S8-5X; Sun, 21 Mar 2004 14:20:04 +0100 Date: Sun, 21 Mar 2004 14:20:03 +0100 From: Ron Blaschke Reply-To: Ron Blaschke X-Priority: 3 (Normal) Message-ID: <109024979.20040321142003@rblasch.org> To: Jakarta Commons Developers List Subject: Re: [convert] Initial ideas (was: conversion with default values) Resent-from: Ron Blaschke MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------89149478CB0CD" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N ------------89149478CB0CD Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sunday, March 21, 2004, 2:59:12 AM, you wrote: SC> Basically the sooner you can make available ideas/designs/code the more it SC> can be talked about ;-) Point taken. Please find attached a summary of my thoughts (well, not all of them; just those related to convert). Ron ------------89149478CB0CD Content-Type: text/xml; name="think.xsl" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="think.xsl" PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzbDpzdHlsZXNoZWV0 IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9U cmFuc2Zvcm0iPgogIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgogICAgPGh0bWwgeG1sbnM6 eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+CiAgICAg IDxoZWFkPgogICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iL2RvY3VtZW50 L3Byb3BlcnRpZXMvdGl0bGUiLz4KICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxl Y3Q9Ii9kb2N1bWVudC9tZXRhIi8+CiAgICAgIDwvaGVhZD4KICAgICAgPHhzbDphcHBseS10 ZW1wbGF0ZXMgc2VsZWN0PSIvZG9jdW1lbnQvYm9keSIvPgogICAgPC9odG1sPgogIDwveHNs OnRlbXBsYXRlPgogIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImJvZHkiPgogICAgPGJvZHk+CiAg ICAgIDxkaXYgY2xhc3M9ImFwcCI+CiAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgog ICAgICA8L2Rpdj4KICAgIDwvYm9keT4JCiAgPC94c2w6dGVtcGxhdGU+CiAgPHhzbDp0ZW1w bGF0ZSBtYXRjaD0ic2VjdGlvbiI+CiAgICA8ZGl2PgogICAgICA8aDM+PHhzbDp2YWx1ZS1v ZiBzZWxlY3Q9IkBuYW1lIi8+PC9oMz4KICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgog ICAgPC9kaXY+CiAgPC94c2w6dGVtcGxhdGU+CiAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3Vi c2VjdGlvbiI+CiAgICA8ZGl2PgogICAgICA8aDQ+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBu YW1lIi8+PC9oND4KICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgogICAgPC9kaXY+CiAg PC94c2w6dGVtcGxhdGU+CiAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibm9kZSgpfEAqIj4KICAg IDx4c2w6Y29weT4KICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJAKiIvPgog ICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CiAgICA8L3hzbDpjb3B5PgogIDwveHNsOnRl bXBsYXRlPgo8L3hzbDpzdHlsZXNoZWV0Pgo= ------------89149478CB0CD Content-Type: application/xml; name="think.xml" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="think.xml" PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pg0KIDwhLS0NCiAg IENvcHlyaWdodCAyMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbg0KDQogICBM aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp Y2Vuc2UiKTsNCiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0 aGUgTGljZW5zZSBhdA0KDQogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz L0xJQ0VOU0UtMi4wDQoNCiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCiAgIGRpc3RyaWJ1dGVkIHVuZGVy IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQogICBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4 cHJlc3Mgb3IgaW1wbGllZC4NCiAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCiAgIGxpbWl0YXRpb25zIHVu ZGVyIHRoZSBMaWNlbnNlLg0KICAtLT4NCjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94 c2wiIGhyZWY9InRoaW5rLnhzbCI/Pg0KPGRvY3VtZW50Pg0KPHByb3BlcnRpZXM+DQogIDx0 aXRsZT5UaGluazwvdGl0bGU+DQogIDxhdXRob3IgZW1haWw9ImNvbW1vbnMtZGV2QGpha2Fy dGEuYXBhY2hlLm9yZyI+Q29tbW9ucyBEb2N1bWVudGF0aW9uIFRlYW08L2F1dGhvcj4NCiAg PGF1dGhvciBlbWFpbD0icm9uQHJibGFzY2gub3JnIj5Sb25hbGQgQmxhc2Noa2U8L2F1dGhv cj4NCjwvcHJvcGVydGllcz4NCg0KPGJvZHk+DQo8cD5UaGlzIGRvY3VtZW50IGRlc2NyaWJl cyBzb21lIGluaXRhbCB0aG91Z2h0cyBvbiBjb21tb25zIGNvbnZlcnQuICBNb3N0IG9mDQp0 aGUgc3R1ZmYgdGhhdCBmb2xsb3dzIGFyZSByYW5kb20gdGhvdWdodHMgKHdlbGwsIG1heWJl IG5vdCA8ZW0+dGhhdDwvZW0+DQpyYW5kb20pLCBhbmQgc2hvdWxkIGJlIGNvbnNpZGVyZWQg YXMgaW5wdXQgZm9yIHRoZSBkZXNpZ24uPC9wPg0KPHNlY3Rpb24gbmFtZT0iVGhlIFNpbXBs ZSBUaGluZ3MuLi4iPg0KPHA+VGhpcyBzZWN0aW9uIHN0YXJ0cyB3aXRoIHNvbWUgYmFzaWMg dGhpbmdzIG5lZWRlZCB0byBnZXQgY29udmVydCBydW5uaW5nLjwvcD4NCg0KPHN1YnNlY3Rp b24gbmFtZT0iV2hhdCdzIGEgQ29udmVydGVyPyI+DQo8cD5IZXJlIGlzIGEgc2ltcGxlIGlu dGVyZmFjZSB0aGF0IHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBtb3N0IGNvbnZlcnNpb25z LjwvcD4NCjxwcmU+PGNvZGU+DQpwYWNrYWdlIG9yZy5hcGFjaGUuY29tbW9ucy5jb252ZXJ0 Ow0KDQpwdWJsaWMgaW50ZXJmYWNlIENvbnZlcnRlciB7DQogICAgQ2xhc3MgZ2V0U291cmNl Q2xhc3MoKTsNCiAgICBDbGFzcyBnZXREZXN0aW5hdGlvbkNsYXNzKCk7DQogICAgT2JqZWN0 IGNvbnZlcnQoT2JqZWN0IHZhbHVlKSB0aHJvd3MgTm9TdWNoQ29udmVyc2lvbkV4Y2VwdGlv biwgQ29udmVyc2lvbkZhaWxlZEV4Y2VwdGlvbjsNCn0NCjwvY29kZT48L3ByZT4NCjxwPjxj b2RlPmdldFNvdXJjZUNsYXNzPC9jb2RlPiBhbmQgPGNvZGU+Z2V0RGVzdGluYXRpb25DbGFz czwvY29kZT4gcHJvdmlkZQ0Kc29tZSBzaW1wbGUgbWV0YSBpbmZvLCA8Y29kZT5jb252ZXJ0 PC9jb2RlPiBkb2VzIHRoZSBhY3V0YWwgd29yay4gIEl0IG1heQ0KdGhyb3cgYSA8Y29kZT5O b1N1Y2hDb252ZXJzaW9uRXhjZXB0aW9uPC9jb2RlPiBpZiA8Y29kZT52YWx1ZTwvY29kZT4g aXMgbm90IG9mDQp0eXBlIDxjb2RlPmdldFNvdXJjZUNsYXNzPC9jb2RlPi4gIElmIGFueXRo aW5nIGVsc2UgZ29lcyB3cm9uZyBkdXJpbmcNCmNvbnZlcnNpb24gKGVnIGNvbnZlcnNpb24g b2YgYW4gSW50ZWdlciAmZ3Q7IDEyNyB0byBhIEJ5dGUpIGENCjxjb2RlPkNvbnZlcnNpb25G YWlsZWRFeGNlcHRpb248L2NvZGU+IHNob3VsZCBiZSB0aHJvd24uICA8Y29kZT5udWxsPC9j b2RlPg0Kc2hvdWxkIGJlIGhhbmRsZWQgdHJhbnNwYXJlbnRseSBieSB0aGUgY29udmVydGVy LjwvcD4NCg0KPHA+SGVyZSBpcyBhbiBleGFtcGxlIG9mIGFuIDxjb2RlPkludGVnZXI8L2Nv ZGU+IHRvIDxjb2RlPkJ5dGU8L2NvZGU+DQpjb252ZXJ0ZXIuPC9wPg0KPHByZT48Y29kZT4N CnBhY2thZ2Ugb3JnLmFwYWNoZS5jb21tb25zLmNvbnZlcnQuY29udmVydGVyczsNCg0KaW1w b3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb252ZXJ0LkNvbnZlcnNpb25GYWlsZWRFeGNlcHRp b247DQppbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbnZlcnQuTm9TdWNoQ29udmVyc2lv bkV4Y2VwdGlvbjsNCg0KcHVibGljIGZpbmFsIGNsYXNzIEludGVnZXJUb0J5dGVDb252ZXJ0 ZXIgZXh0ZW5kcyBBYnN0cmFjdENvbnZlcnRlciB7DQogICAgcHVibGljIENsYXNzIGdldFNv dXJjZUNsYXNzKCkgeyByZXR1cm4gSW50ZWdlci5jbGFzczsgfQ0KICAgIHB1YmxpYyBDbGFz cyBnZXREZXN0aW5hdGlvbkNsYXNzKCkgeyByZXR1cm4gQnl0ZS5jbGFzczsgfQ0KDQogICAg cHVibGljIE9iamVjdCBjb252ZXJ0KGZpbmFsIE9iamVjdCB2YWx1ZSkgdGhyb3dzIE5vU3Vj aENvbnZlcnNpb25FeGNlcHRpb24sIENvbnZlcnNpb25GYWlsZWRFeGNlcHRpb24gew0KICAg ICAgICBmaW5hbCBJbnRlZ2VyIGluID0gKEludGVnZXIpIHZhbHVlOw0KDQogICAgICAgIGlm IChpbi5pbnRWYWx1ZSgpICZsdDsgQnl0ZS5NSU5fVkFMVUUgfHwgaW4uaW50VmFsdWUoKSAm Z3Q7IEJ5dGUuTUFYX1ZBTFVFKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgQ29udmVyc2lv bkZhaWxlZEV4Y2VwdGlvbigiSW5wdXQgaXMgb3V0IG9mIHJhbmdlIFsiDQogICAgICAgICAg ICAgICAgICAgICsgQnl0ZS5NSU5fVkFMVUUgKyAiOyIgKyBCeXRlLk1BWF9WQUxVRSArICJd OiAiICsgaW4pOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIG5ldyBCeXRlKGluLmJ5 dGVWYWx1ZSgpKTsNCiAgICB9DQp9DQo8L2NvZGU+PC9wcmU+DQo8L3N1YnNlY3Rpb24+DQoN CjxzdWJzZWN0aW9uIG5hbWU9IkEgU2V0IG9mIENvbnZlcnRlcnMiPg0KPHA+V2UgZGVmaW5p dGVseSBuZWVkIHNvbWUgcGxhY2UgdG8gZ2F0aGVyIGNvbnZlcnRlcnMsIGFzIHRoZXkgYXJl IG9ubHkgc3Ryb25nDQppbiBhIGdyb3VwLjwvcD4NCg0KPHByZT48Y29kZT4NCnBhY2thZ2Ug b3JnLmFwYWNoZS5jb21tb25zLmNvbnZlcnQ7DQoNCmltcG9ydCBqYXZhLnV0aWwuSXRlcmF0 b3I7DQoNCnB1YmxpYyBpbnRlcmZhY2UgQ29udmVydGVyUmVnaXN0cnkgew0KICAgIENvbnZl cnRlciBsb29rdXAoQ2xhc3Mgc291cmNlVHlwZSwgQ2xhc3MgZGVzdGluYXRpb25UeXBlKSB0 aHJvd3MgTm9TdWNoQ29udmVyc2lvbkV4Y2VwdGlvbjsNCiAgICBJdGVyYXRvciBpdGVyYXRv cigpOw0KfQ0KPC9jb2RlPjwvcHJlPg0KPHA+QSA8Y29kZT5Db252ZXJ0ZXJSZWdpc3RyeTwv Y29kZT4gKGhtbSwgbWF5YmUgd2Ugc2hvdWxkIGNvbWUgdXAgd2l0aCBhDQpiZXR0ZXIgbmFt ZSkgc3RvcmVzIHNvbWUgY29udmVydGVycyBhbmQgcHJvdmlkZXMgYSBsb29rdXAgZm9yIHRo ZW0uICBVc3VhbGx5LA0KdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgcHJvdmlkZSBzb21lIDxj b2RlPmFkZC9yZW1vdmU8L2NvZGU+IG1ldGhvZHMsIGJ1dCBhDQo8Y29kZT5Db252ZXJ0ZXJS ZWdpc3RyeTwvY29kZT4gbWF5IGFsc28gcmVwcmVzZW50IHNvbWUgY29uZmlndXJhdGlvbiBm aWxlLjwvcD4NCjwvc3Vic2VjdGlvbj4NCg0KPHN1YnNlY3Rpb24gbmFtZT0iTG9va3VwIj4N CjxwPlNvIHdlIGdvdCBhIHJlZ2lzdHJ5IHdpdGggYSBidW5jaCBvZiBjb252ZXJ0ZXJzLCBu b3cgd2UgbmVlZCBzb21lIHdheSB0bw0KbG9vayBvbmUgdXAgKGluIHRoZSByZWdpc3RyeSku PC9wPg0KPHByZT48Y29kZT4NCnBhY2thZ2Ugb3JnLmFwYWNoZS5jb21tb25zLmNvbnZlcnQ7 DQoNCnB1YmxpYyBpbnRlcmZhY2UgQ29udmVydGVyTG9va3VwIHsNCiAgICBDb252ZXJ0ZXIg bG9va3VwKGZpbmFsIENsYXNzIHNvdXJjZVR5cGUsIGZpbmFsIENsYXNzIGRlc3RpbmF0aW9u VHlwZSkgdGhyb3dzIE5vU3VjaENvbnZlcnNpb25FeGNlcHRpb247DQp9DQo8L2NvZGU+PC9w cmU+DQoNCjxwPlRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgPGNvZGU+Q29udmVydGVyTG9va3Vw PC9jb2RlPiB3aWxsIHRyeSB0byBmaW5kIGENCmNvbnZlcnRlciB3aGljaCBjYW4gYmUgdXNl ZCB0byBjb252ZXJ0IGFuIG9iamVjdCBvZiA8Y29kZT5zb3VyY2UgdHlwZTwvY29kZT4NCnRv IGFuIG9iamVjdCBvZiA8Y29kZT5kZXN0aW5hdGlvbiB0eXBlPC9jb2RlPi48L3A+DQoNCjxw PkEgPGNvZGU+TG9va3VwPC9jb2RlPiBsb29rcyAgc2ltaWxhciB0byB0aGUgPGNvZGU+Q29u dmVydGVyUmVnaXN0cnk8L2NvZGU+LA0KYnV0IGl0J3MgcHVycG9zZSBpcyBkaWZmZXJlbnQu ICBBIDxjb2RlPkNvbnZlcnRlclJlZ2lzdHJ5PC9jb2RlPiBzaG91bGQgb25seQ0Kc3RvcmUg a25vd24gY29udmVydGVycywgd2hlcmVhcyBhIDxjb2RlPkxvb2t1cDwvY29kZT4gbWlnaHQg Y29tYmluZSBrbm93bg0KY29udmVydGVycywgb3IgZXZlbiBjcmVhdGUgbmV3IG9uZXMsIHRv IGRvIGl0J3Mgam9iLjwvcD4NCg0KPHA+SGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbG9va3Vw LCB3aGljaCBjYXJlcyBhYm91dCBpbmhlcml0YW5jZSwgYW5kIHRoZQ0KZGVmYXVsdCA8Y29k ZT5PYmplY3QgLT4gU3RyaW5nPC9jb2RlPiBjb252ZXJzaW9uIGluIEphdmEuPC9wPg0KDQo8 cHJlPjxjb2RlPg0KcGFja2FnZSBvcmcuYXBhY2hlLmNvbW1vbnMuY29udmVydDsNCg0KaW1w b3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb252ZXJ0LmNvbnZlcnRlcnMuSWRlbnRpdHlDb252 ZXJ0ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbnZlcnQuY29udmVydGVycy5P YmplY3RUb1N0cmluZ0NvbnZlcnRlcjsNCg0KaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsN Cg0KcHVibGljIGZpbmFsIGNsYXNzIEluaGVyaXRhbmNlTG9va3VwIGltcGxlbWVudHMgQ29u dmVydGVyTG9va3VwIHsNCiAgICBwcml2YXRlIGZpbmFsIENvbnZlcnRlclJlZ2lzdHJ5IHJl Z2lzdHJ5Ow0KDQogICAgcHVibGljIEluaGVyaXRhbmNlTG9va3VwKGZpbmFsIENvbnZlcnRl clJlZ2lzdHJ5IHJlZ2lzdHJ5KSB7DQogICAgICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3Ry eTsNCiAgICB9DQoNCiAgICBwdWJsaWMgQ29udmVydGVyIGxvb2t1cChmaW5hbCBDbGFzcyBz b3VyY2VUeXBlLCBmaW5hbCBDbGFzcyBkZXN0aW5hdGlvblR5cGUpIHRocm93cyBOb1N1Y2hD b252ZXJzaW9uRXhjZXB0aW9uIHsNCiAgICAgICAgLy8gaWRlbnRpdHkNCiAgICAgICAgaWYg KGRlc3RpbmF0aW9uVHlwZS5pc0Fzc2lnbmFibGVGcm9tKHNvdXJjZVR5cGUpKSB7DQogICAg ICAgICAgICByZXR1cm4gbmV3IElkZW50aXR5Q29udmVydGVyKGRlc3RpbmF0aW9uVHlwZSk7 DQogICAgICAgIH0NCg0KICAgICAgICAvLyBsb29rdXANCiAgICAgICAgZm9yIChmaW5hbCBJ dGVyYXRvciBpID0gcmVnaXN0cnkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KSB7DQogICAg ICAgICAgICBmaW5hbCBDb252ZXJ0ZXIgYyA9IChDb252ZXJ0ZXIpIGkubmV4dCgpOw0KICAg ICAgICAgICAgaWYgKHNvdXJjZVR5cGUuaXNBc3NpZ25hYmxlRnJvbShjLmdldFNvdXJjZUNs YXNzKCkpICZhbXA7JmFtcDsgYy5nZXREZXN0aW5hdGlvbkNsYXNzKCkuaXNBc3NpZ25hYmxl RnJvbShkZXN0aW5hdGlvblR5cGUpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGM7DQog ICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyAiZGVmYXVsdCIgLnRvU3Ry aW5nKCkgY29udmVyc2lvbg0KICAgICAgICBpZiAoZGVzdGluYXRpb25UeXBlLmVxdWFscyhT dHJpbmcuY2xhc3MpKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IE9iamVjdFRvU3RyaW5n Q29udmVydGVyKCk7DQogICAgICAgIH0NCiAgICAgICAgdGhyb3cgbmV3IE5vU3VjaENvbnZl cnNpb25FeGNlcHRpb24oIk5vIGNvbnZlcnNpb24gZnJvbSAiICsgc291cmNlVHlwZSArICIg dG8gIiArIGRlc3RpbmF0aW9uVHlwZSk7DQogICAgfQ0KfQ0KPC9jb2RlPjwvcHJlPg0KPC9z dWJzZWN0aW9uPg0KDQo8c3Vic2VjdGlvbiBuYW1lPSJUZWFtIFdvcmsiPg0KPHA+SGVyZSBp cyBzb21lIHNpbGx5IGltcGxlbWVudGF0aW9uIHRoYXQgc2hvd3MgaG93IHRoZSBkaWZmZXJl bnQgcGFydHMgYXJlDQpzdXBwb3NlZCB0byB3b3JrIHRvZ2V0aGVyLjwvcD4NCg0KPHByZT48 Y29kZT4NCiAgICAuLi4NCiAgICBwdWJsaWMgT2JqZWN0IGNvbnZlcnQoZmluYWwgT2JqZWN0 IHZhbHVlLCBmaW5hbCBDbGFzcyBkZXN0aW5hdGlvblR5cGUpIHRocm93cyBOb1N1Y2hDb252 ZXJzaW9uRXhjZXB0aW9uLCBDb252ZXJzaW9uRmFpbGVkRXhjZXB0aW9uIHsNCiAgICAgICAg aWYgKHZhbHVlID09IG51bGwpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAgZmluYWwgTXV0 YWJsZUNvbnZlcnRlclJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IE11dGFibGVDb252ZXJ0ZXJS ZWdpc3RyeSgpOw0KICAgICAgICByZWdpc3RyeS5hZGQobmV3IEludGVnZXJUb0J5dGVDb252 ZXJ0ZXIoKSk7DQogICAgICAgIHJlZ2lzdHJ5LmFkZChuZXcgU3RyaW5nVG9JbnRlZ2VyQ29u dmVydGVyKCkpOw0KDQogICAgICAgIHJldHVybiBuZXcgSW5oZXJpdGFuY2VMb29rdXAocmVn aXN0cnkpLmxvb2t1cCh2YWx1ZS5nZXRDbGFzcygpLCBkZXN0aW5hdGlvblR5cGUpLmNvbnZl cnQodmFsdWUpOw0KICAgIH0NCiAgICAuLi4NCjwvY29kZT48L3ByZT4NCjwvc3Vic2VjdGlv bj4NCjwvc2VjdGlvbj4NCg0KPHNlY3Rpb24gbmFtZT0iTWFraW5nIFRoaW5ncyBNb3JlIElu dGVyZXN0aW5nLi4uIj4NCjxwPlRoZSBwcmV2aW91cyBzZWN0aW9uIHRhbGtlZCBhYm91dCBh IHNpbXBsZSBhcHByb2FjaCBmb3IgdHlwZSBjb252ZXJzaW9uLA0Kd2hpY2ggbWF5IGxvb2sg cHJvbWlzaW5nIHRvIGJ1aWxkIHVwb24uICBCdXQgSSB0aGluayB3ZSBuZWVkIHRvIGdvIG9u ZSBzdGVwDQpiYWNrIHRvIGdvIHR3byBzdGVwcyBmb3J3YXJkLjwvcD4NCg0KPHN1YnNlY3Rp b24gbmFtZT0iT25lIFN0ZXAgQmFjayI+DQo8cD5UaGUgc2ltcGxlIGFwcHJvYWNoIHVzZWQg PGNvZGU+Q2xhc3MuaXNBc3NpZ25hYmxlRnJvbTwvY29kZT4gdG8gaGFuZGxlDQppbmhlcml0 YW5jZSBjb252ZXJzaW9ucyBkb25lIGJ5IHRoZSBKYXZhIGxhbmd1YWdlLiAgU28gSSBndWVz cyB3ZSBmaXJzdCBuZWVkDQp0byB0YWxrIGEgbGl0dGxlIGFib3V0IDxjb2RlPlR5cGVzPC9j b2RlPiBiZWZvcmUgd2UgY2FuIGJ1aWxkIGEgZ2VuZXJpYyBsb29rdXANCmZhY2lsaXR5Ljwv cD4NCjwvc3Vic2VjdGlvbj4NCg0KPHN1YnNlY3Rpb24gbmFtZT0iVHlwZT8gLSBPaGghIj4N CjxwPkkgYW0gbm90IGdvaW5nIGludG8gZGV0YWlsIHdoYXQgYSBUeXBlIGlzLCBidXQgcmF0 aGVyIGhvdyB3ZSBzaG91bGQgdHJlYXQNCnRoZW0uPC9wPg0KDQo8cD5BIGNsYXNzIGluIEph dmEsIHdoaWNoIGlzIHVzZWQgZm9yIHR5cGVzIGluIEphdmEsIGhhcyBhbiBpbmhlcml0YW5j ZSBwYXRoIGFuZA0KaW1wbGVtZW50cyBhIG51bWJlciBvZiBpbnRlcmZhY2VzLiAgVGhpcyA8 ZW0+aW5oZXJpdGFuY2UgZ3JhcGg8L2VtPiBmb3INCjxjb2RlPkludGVnZXI8L2NvZGU+IGxv b2tzIGxpa2UgdGhpcy48L3A+IA0KPGltZyBzcmM9ImluaGVyaXRhbmNlLnBuZyIvPg0KDQo8 cD5JZiB0aGlzIGxvb2tzIGxpa2UgY29udmVyc2lvbiB0byB5b3UsIGl0IGlzLiAgV2UgY2Fu IHRoaW5rIGFib3V0IEludGVnZXIgYXMNCmEgVHlwZSwgd2hpY2gga25vd3MgYWJvdXQgY29u dmVydGVycyBmcm9tIEludGVnZXIgdG8gTnVtYmVyLCBJbnRlZ2VyIHRvDQpDb21wYXJhYmxl LCBhbmQgc28gb24uICBUaHVzLCBvdXIgVHlwZSBsb29rcyBsaWtlIHRoaXM6PC9wPg0KDQo8 cHJlPjxjb2RlPg0KcHVibGljIGludGVyZmFjZSBUeXBlIHsNCiAgICBTdHJpbmcgZ2V0TmFt ZSgpOw0KICAgIENvbnZlcnRlclJlZ2lzdHJ5IGdldENvbnZlcnRlcnMoKTsNCiAgICBib29s ZWFuIGVxdWFscyhPYmplY3Qgb2JqKTsNCn0NCjwvY29kZT48L3ByZT4NCg0KPHA+Rm9yIHRo ZSA8Y29kZT5JbnRlZ2VyPC9jb2RlPiBleGFtcGxlIDxjb2RlPmdldE5hbWUoKTwvY29kZT4g d291bGQgcmV0dXJuDQoiamF2YS5sYW5nLkludGVnZXIsIiBhbmQgPGNvZGU+Z2V0Q29udmVy dGVyczwvY29kZT4gYQ0KPGNvZGU+Q29udmVydGVyUmVnaXN0cnk8L2NvZGU+IHdpdGggNiBj b252ZXJ0ZXJzICh0aGUgZWRnZXMgaW4gdGhlDQppbmhlcml0YW5jZSBncmFwaCBwbHVzIHRo ZSBkZWZhdWx0ICJPYmplY3QgdG8gU3RyaW5nIGNvbnZlcnRlci4iPC9wPg0KDQo8cD5Bbm90 aGVyIHdheSB0byBsb29rIGF0IFR5cGVzIHdvdWxkIGJlIHRoYXQgYW4gb2JqZWN0IGlzIG9m IGEgc2luZ2xlIEphdmENCmNsYXNzLCBidXQgb2YgbWFueSAodGhpbms6IHN1cGVycG9zaXRp b24pIHR5cGVzLiAgRWcsIGFuIG9iamVjdCBvZiBjbGFzcw0KSW50ZWdlciB3b3VsZCBiZSBv ZiBUeXBlcyBbSW50ZWdlciwgTnVtYmVyLCBDb21wYXJhYmxlLCBTZXJpYWxpemFibGUsDQpP YmplY3RdLiAgV2Ugd291bGQgbmVlZCBhIHNlcGFyYXRlIHJlZ2lzdHJ5IHRoYXQga25vd3Mg YWJvdXQgdGhlIEludGVnZXIgdG8NCk51bWJlciwgSW50ZWdlciB0byBDb21wYXJhYmxlLCBh bmQgc28gb24sIGNvbnZlcnNpb25zLjwvcD4NCg0KPHA+U28sIGxldCdzIHN0aWNrIHdpdGgg dGhlIGZpcnN0IFR5cGUgZm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbnMuICBXaGljaCBvbmUgd2UN CnJlYWxseSBpbXBsZW1lbnQgY2FuIGJlIGRlY2lkZWQgbGF0ZXIgb24uICBJdCBzaG91bGRu J3QgbWFrZSB0aGF0IG11Y2ggb2YgYQ0KZGlmZmVyZW5jZS48L3A+DQo8L3N1YnNlY3Rpb24+ DQoNCjxzdWJzZWN0aW9uIG5hbWU9IkV4dGVuZGVkIENvbnZlcnRlcnMiPg0KPHA+VGhlIFR5 cGVzIG11c3QgYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0sIHNvIHRha2UgZXZlcnkN Cjxjb2RlPkNsYXNzPC9jb2RlPiB5b3UgcmVhZCBpbiB0aGUgc2VjdGlvbiAiVGhlIFNpbXBs ZSBUaGluZ3MuLi4iIGFuZCByZXBsYWNlDQppdCB3aXRoIDxjb2RlPlR5cGU8L2NvZGU+LiAg V2VsbCwgYWxtb3N0IGFueXRoaW5nLiAgRm9yZ2V0IGFib3V0IHRoZQ0KPGNvZGU+SW5oZXJp dGFuY2VMb29rdXA8L2NvZGU+LCBhcyB3ZSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBzb21ldGhp bmcNCmJldHRlci4gIEFuZCB3ZSBjYW4gcHJvdmlkZSBzb21lIHdyYXBwZXIgb2JqZWN0cywg c28gdGhhdCB3ZSBjYW4gdXNlIHRoZQ0Kc2ltcGxlIGNvbnZlcnRlcnMgb2YgdGhlIHByZXZp b3VzIHNlY3Rpb24gd2l0aCBvdXIgbmV3IFR5cGVzLjwvcD4NCg0KPHByZT48Y29kZT4NCi8v IEFkYXB0ZXIgZnJvbSBDb252ZXJ0ZXIgdG8gRXh0ZW5kZWRDb252ZXJ0ZXINCnB1YmxpYyBm aW5hbCBjbGFzcyBDb252ZXJ0ZXJBZGFwdGVyIGltcGxlbWVudHMgRXh0ZW5kZWRDb252ZXJ0 ZXIgew0KICAgIHByaXZhdGUgQ29udmVydGVyIGNvbnZlcnRlcjsNCg0KICAgIHB1YmxpYyBD b252ZXJ0ZXJBZGFwdGVyKGZpbmFsIENvbnZlcnRlciBjb252ZXJ0ZXIpIHsNCiAgICAgICAg dGhpcy5jb252ZXJ0ZXIgPSBjb252ZXJ0ZXI7DQogICAgfQ0KDQogICAgcHVibGljIFR5cGUg Z2V0U291cmNlVHlwZSgpIHsNCiAgICAgICAgcmV0dXJuIFR5cGVzLnRvVHlwZShjb252ZXJ0 ZXIuZ2V0U291cmNlQ2xhc3MoKSk7DQogICAgfQ0KDQogICAgcHVibGljIFR5cGUgZ2V0RGVz dGluYXRpb25UeXBlKCkgew0KICAgICAgICByZXR1cm4gVHlwZXMudG9UeXBlKGNvbnZlcnRl ci5nZXREZXN0aW5hdGlvbkNsYXNzKCkpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBDb252ZXJz aW9uQ29udGV4dCBjb252ZXJ0KGZpbmFsIENvbnZlcnNpb25Db250ZXh0IGNvbnRleHQpIHRo cm93cyBOb1N1Y2hDb252ZXJzaW9uRXhjZXB0aW9uLCBDb252ZXJzaW9uRmFpbGVkRXhjZXB0 aW9uIHsNCiAgICAgICAgcmV0dXJuIGNvbnRleHQudXBkYXRlKGdldERlc3RpbmF0aW9uVHlw ZSgpLCBjb252ZXJ0ZXIuY29udmVydChjb250ZXh0LmdldFZhbHVlKCkpKTsNCiAgICB9DQo8 L2NvZGU+PC9wcmU+DQoNCjxwPk9oLCBJIGZvcmdvdCB0byBtZW50aW9uIHRoYXQgdGhlIGV4 dGVuZGVkIGNvbnZlcnRlcnMgd29yayB3aXRoDQo8Y29kZT5Db252ZXJzaW9uQ29udGV4dDwv Y29kZT5zLCBhcyB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQNCnBlcmNl aXZlZCB0eXBlIG9mIGFuIG9iamVjdCAoYW4gb2JqZWN0IG1heSBiZSBwZXJjZWl2ZWQgYXMN Cjxjb2RlPk51bWJlcjwvY29kZT4sIGJ1dCBzdGlsbCBiZSBhIDxjb2RlPkludGVnZXI8L2Nv ZGU+KSwgYW5kIG90aGVycy48L3A+DQoNCjxwcmU+PGNvZGU+DQpwdWJsaWMgaW50ZXJmYWNl IENvbnZlcnNpb25Db250ZXh0IHsNCiAgICBUeXBlIGdldFR5cGUoKTsNCiAgICBPYmplY3Qg Z2V0VmFsdWUoKTsNCiAgICBDb252ZXJzaW9uQ29udGV4dCB1cGRhdGUoVHlwZSB0eXBlLCBP YmplY3QgdmFsdWUpOw0KfQ0KPC9jb2RlPjwvcHJlPg0KPC9zdWJzZWN0aW9uPg0KDQo8c3Vi c2VjdGlvbiBuYW1lPSJCdWlsZGluZyBhIEJldHRlciBMb29rdXAiPg0KPHA+U3VwcG9zZSB5 b3UgdGFrZSB0aGUgPGNvZGU+SW50ZWdlclRvQnl0ZUNvbnZlcnRlcjwvY29kZT4gb2YgdGhl IHNlY3Rpb24NCiJUaGUgU2ltcGxlIFRoaW5ncy4uLiIsIHB1dCBpdCBpbnRvIGEgYmxhY2sg Ym94IGFuZCB5b3UnZCBnZXQgdGhpcyBncmFwaC48L3A+DQo8aW1nIHNyYz0iY29udmVyc2lv bi1ncmFwaC5wbmciLz4NCg0KPHA+V2VsbCwgeW91J2QgYWN0dWFsbHkgcHV0IGxvdHMgb2Yg Y29udmVydGVycyBpbnRvIHRoZSBibGFjayBib3ggdG8gbWFrZSBpdA0KdXNlZnVsLiA7LSkg IEZvciBhbnkgY29udmVyc2lvbiwgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIHRvIGZpbmQgYSBw YXRoIGluIHRoZQ0KZ3JhcGggYW5kIGZvbGxvdyBpdC4gIEZvciBleGFtcGxlLCBsZXQncyBh ZGQgYW5vdGhlciBjb252ZXJ0ZXINCjxjb2RlPkJ5dGVUb0Jvb2xlYW48L2NvZGU+IGFuZCBh ZGQgd2VpZ2h0cyB0byB0aGUgZWRnZXMgb2YgdGhlIGdyYXBoICh3aGljaA0Kd291bGQgdGhl biBiZSBhIGRpcmVjdGVkLCB3ZWlnaHRlZCBncmFwaCkuICBUaGUgcmVkIGFycm93cyBzaG93 IHRoZSBzaG9ydGVzdA0KcGF0aCBmcm9tIDxjb2RlPkludGVnZXI8L2NvZGU+IHRvIDxjb2Rl PkJvb2xlYW48L2NvZGU+IGluIHRoaXMgZ3JhcGguPC9wPg0KPGltZyBzcmM9ImNvbnZlcnNp b24tZ3JhcGgyLnBuZyIvPg0KDQo8cD5IZXJlIGlzIGhvdyBhIHNob3J0ZXN0IHBhdGggbG9v a3VwIG1pZ2h0IGxvb2sgbGlrZS48L3A+DQo8cHJlPjxjb2RlPg0KcHVibGljIGZpbmFsIGNs YXNzIFNob3J0ZXN0UGF0aExvb2t1cCBpbXBsZW1lbnRzIEV4dGVuZGVkQ29udmVydGVyTG9v a3VwIHsNCiAgICBwcml2YXRlIGZpbmFsIFdlaWdodGVkRGlyZWN0ZWRHcmFwaCBncmFwaDsN Cg0KICAgIHB1YmxpYyBTaG9ydGVzdFBhdGhMb29rdXAoZmluYWwgRXh0ZW5kZWRDb252ZXJ0 ZXJSZWdpc3RyeSByZWdpc3RyeSkgew0KICAgICAgICBncmFwaCA9IG5ldyBTcGFyc2VXZWln aHRlZERpcmVjdGVkR3JhcGgoKTsNCiAgICAgICAgZm9yIChmaW5hbCBJdGVyYXRvciBpID0g cmVnaXN0cnkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KSB7DQogICAgICAgICAgICBmaW5h bCBFeHRlbmRlZENvbnZlcnRlciBjb252ZXJ0ZXIgPSAoRXh0ZW5kZWRDb252ZXJ0ZXIpIGku bmV4dCgpOw0KICAgICAgICAgICAgZ3JhcGguYWRkQ29ubmVjdGlvbihuZXcgVHlwZVZlcnRl eChjb252ZXJ0ZXIuZ2V0U291cmNlVHlwZSgpKSwgbmV3IENvbnZlcnRlckVkZ2UoY29udmVy dGVyLCAxKSwgbmV3IFR5cGVWZXJ0ZXgoY29udmVydGVyLmdldERlc3RpbmF0aW9uVHlwZSgp KSk7DQoNCiAgICAgICAgICAgIGFkZFR5cGVDb252ZXJ0ZXJzKGdyYXBoLCBjb252ZXJ0ZXIu Z2V0U291cmNlVHlwZSgpKTsNCiAgICAgICAgICAgIGFkZFR5cGVDb252ZXJ0ZXJzKGdyYXBo LCBjb252ZXJ0ZXIuZ2V0RGVzdGluYXRpb25UeXBlKCkpOw0KICAgICAgICB9DQogICAgfQ0K DQogICAgcHJpdmF0ZSB2b2lkIGFkZFR5cGVDb252ZXJ0ZXJzKGZpbmFsIEdyYXBoIGdyYXBo LCBmaW5hbCBUeXBlIHR5cGUpIHsNCiAgICAgICAgZm9yIChmaW5hbCBJdGVyYXRvciBpID0g dHlwZS5nZXRDb252ZXJ0ZXJzKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KSB7DQogICAg ICAgICAgICBmaW5hbCBFeHRlbmRlZENvbnZlcnRlciBjID0gKEV4dGVuZGVkQ29udmVydGVy KSBpLm5leHQoKTsNCiAgICAgICAgICAgIGdyYXBoLmFkZENvbm5lY3Rpb24obmV3IFR5cGVW ZXJ0ZXgoYy5nZXRTb3VyY2VUeXBlKCkpLCBuZXcgQ29udmVydGVyRWRnZShjLCAxKSwgbmV3 IFR5cGVWZXJ0ZXgoYy5nZXREZXN0aW5hdGlvblR5cGUoKSkpOw0KICAgICAgICB9DQogICAg fQ0KDQogICAgcHJpdmF0ZSBMaXN0IC8qIG9mIEV4dGVuZGVkQ29udmVydGVyICovIGdldENv bnZlcnRlcnNGb3JQYXRoKGZpbmFsIFBhdGggcGF0aCkgew0KICAgICAgICBmaW5hbCBMaXN0 IC8qIG9mIEV4dGVuZGVkQ29udmVydGVyICovIGNvbnZlcnRlcnMgPSBuZXcgTGlua2VkTGlz dCgpOw0KDQogICAgICAgIGZvciAoZmluYWwgSXRlcmF0b3IgaSA9IHBhdGguZ2V0RWRnZXMo KS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspIHsNCiAgICAgICAgICAgIGZpbmFsIEV4dGVu ZGVkQ29udmVydGVyIGMgPSAoKENvbnZlcnRlckVkZ2UpIGkubmV4dCgpKS5nZXRDb252ZXJ0 ZXIoKTsNCiAgICAgICAgICAgIGNvbnZlcnRlcnMuYWRkKGMpOw0KICAgICAgICB9DQoNCiAg ICAgICAgcmV0dXJuIGNvbnZlcnRlcnM7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBQYXRoIGdl dFNob3J0ZXN0UGF0aChmaW5hbCBUeXBlIHNvdXJjZVR5cGUsIGZpbmFsIFR5cGUgZGVzdGlu YXRpb25UeXBlKSB0aHJvd3MgTm9TdWNoQ29udmVyc2lvbkV4Y2VwdGlvbiB7DQogICAgICAg IGZpbmFsIFNob3J0ZXN0UGF0aEVuZ2luZSBzcEVuZ2luZSA9IG5ldyBTaG9ydGVzdFBhdGhF bmdpbmUoZ3JhcGgpOw0KICAgICAgICBmaW5hbCBQYXRoIHNob3J0ZXN0UGF0aCA9IHNwRW5n aW5lLmdldFNob3J0ZXN0UGF0aChuZXcgVHlwZVZlcnRleChzb3VyY2VUeXBlKSwgbmV3IFR5 cGVWZXJ0ZXgoZGVzdGluYXRpb25UeXBlKSk7DQogICAgICAgIGlmIChzaG9ydGVzdFBhdGgg PT0gbnVsbCkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaENvbnZlcnNpb25FeGNl cHRpb24oIk5vIGNvbnZlcnNpb24gZnJvbSAiICsgc291cmNlVHlwZSArICIgdG8gIiArIGRl c3RpbmF0aW9uVHlwZSArICIgaW4gIiArIGdyYXBoKTsNCiAgICAgICAgfQ0KICAgICAgICBy ZXR1cm4gc2hvcnRlc3RQYXRoOw0KICAgIH0NCg0KICAgIHB1YmxpYyBFeHRlbmRlZENvbnZl cnRlciBsb29rdXAoZmluYWwgVHlwZSBzb3VyY2VUeXBlLCBmaW5hbCBUeXBlIGRlc3RpbmF0 aW9uVHlwZSkgdGhyb3dzIE5vU3VjaENvbnZlcnNpb25FeGNlcHRpb24gew0KICAgICAgICBh ZGRUeXBlQ29udmVydGVycyhncmFwaCwgc291cmNlVHlwZSk7DQogICAgICAgIGFkZFR5cGVD b252ZXJ0ZXJzKGdyYXBoLCBkZXN0aW5hdGlvblR5cGUpOw0KICAgICAgICByZXR1cm4gbmV3 IENoYWluZWRFeHRlbmRlZENvbnZlcnRlcihnZXRDb252ZXJ0ZXJzRm9yUGF0aChnZXRTaG9y dGVzdFBhdGgoc291cmNlVHlwZSwgZGVzdGluYXRpb25UeXBlKSkpOw0KICAgIH0NCn0NCjwv Y29kZT48L3ByZT4NCjwvc3Vic2VjdGlvbj4NCjwvc2VjdGlvbj4NCg0KPHNlY3Rpb24gbmFt ZT0iVGhpbmdzIHRvIFBvbmRlci4uLiI+DQo8cD5IZXJlIGFyZSBzb21lIHBvaW50cyB0aGF0 IG5lZWQgdG8gYmUgZGVjaWRlZCBvbi48L3A+DQoNCjx1bD4NCiAgPGxpPkN1cnJlbnRseSwg Y29udmVyc2lvbnMgbWFrZSBubyBndWFyYW50ZWUgd2hhdHNvZXZlciBpZiB5b3UgZ2V0IGEg bmV3DQpvYmplY3QgKHRoaW5rOiA8Y29kZT5JbnRlZ2VyPC9jb2RlPiB0byA8Y29kZT5CeXRl PC9jb2RlPiBjb252ZXJzaW9uKSwgb3IgdGhlDQpzYW1lICh0aGluazogPGNvZGU+SW50ZWdl cjwvY29kZT4gdG8gPGNvZGU+TnVtYmVyPC9jb2RlPiBjb252ZXJzaW9uKS4gIFNob3VsZA0K d2UganVzdCBsaXZlIHdpdGggdGhhdD88L2xpPg0KDQogIDxsaT5TaG91bGQgd2UgZ28gd2l0 aCBib3RoIHNpbXBsZSBhbmQgZXh0ZW5kZWQsIG9yIGRlY2lkZSBqdXN0IGZvciBvbmU/PC9s aT4NCg0KICA8bGk+V2hhdCBhYm91dCB0aGUgVHlwZXM/ICBTaG91bGQgYSBUeXBlIGtub3cg YWJvdXQgYWxsIGNvbnZlcnNpb25zIG9mIGENCmNsYXNzIG9yIGp1c3QgdGhlIGltbWVkaWF0 ZWx5IHJlbGF0ZWQgb25lcz8gIERvZXMgaXQgbWFrZSBhbnkgZGlmZmVyZW5jZT88L2xpPg0K DQogIDxsaT5JJ3ZlIG9ubHkgcHJlc2VudGVkIGEgc2hvcnRlc3QgcGF0aCBsb29rdXAuICBT aG91bGQgd2UgYnVpbGQgYSBsb29rdXAgLw0KY2hhaW5lZCBjb252ZXJ0ZXIgdGhhdCBpcyBh YmxlIHRvIHRyeSBhbGwgcGF0aHM/IChjZiAiUmU6IFtjb252ZXJ0XWNvbnZlcnNpb24NCndp dGggZGVmYXVsdCB2YWx1ZXMiIHRocmVhZCBpbiBjb21tb25zLWRldik8L2xpPg0KPC91bD4N Cjwvc2VjdGlvbj4NCg0KPC9ib2R5Pg0KPC9kb2N1bWVudD4NCg0K ------------89149478CB0CD Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org ------------89149478CB0CD--