Product: Clover
License: Open Source License, 0.x, 1.x
Issued: Sun May 14 2006 21:59:13 CDT
Expiry: Never
Maintenance Expiry: Never
Key: 965016739f4031c43d67e61b0
Name: Jason Dillon
Org: Apache Geronimo
Certificate: AAAB8m+Ow8B7/zEbxOMqqKwwrdpP+a1COmJGHco7sCNLjHkHnajPF+dQW
Ct12PMy0uml0s9xuus5wKngJ9OFk5DFeh01dzQF66bhXH1HsO1TZPnKl85Q9hY8Obs0fxY
3jhJRbYV9eewtg+KPUM0ZP/Wbb5ulMfvsUoa5QDMxb37PP7IjS6Y7TILtnFKsWjcAJcnyM
vXutYDtZPvEOMbsyTHE4MzPomVPAGAjH+e37E9Xf7HnRSrmxtrGX+wdaBOlZFUIIcVHKT2
IaGToLZnx7FvfE3rzyQCYtS+r0E+H61c+dANzySy5PEH2JEyL8M9JrwgTFGTe9XehwbXSw
3rzyj+Do+A4z6GozKlpUiRgORCIov0TFUSq6wt++NrcqV32Gy0SsCE4DSqOEWMu1SNO6DC
F8+BHyh4o/psqn6UtttZTkr9KOX8eHcQusTwT8jtcgI6XS6UVJhZw2Jd66PWk0Mhyp9Mi1
qmEON/sx8i8b0E5YT8A57ClUEYf7rgAO7OaipoErnIrE60wdwc6jnI3eIBoIbgpn/TsS5o
fLvPWGsTvKKzIE5CuTSdkQjnPNbFwSOk7CYjrnUPpQTwCas/wc/Xvv86MdfjIJdfszTjZ+
cfU4QADOXEpG/GxthECSbXnVWPukoD6RpUQIQ+3LGIJIo5WKWiEEVLBK8QP6iPMkjQp7Wb
IcxJc1LFrkQARhwwvCBUEzAjEmJ9aCeL/yTEfQS3qvlAQOTfwcVt1NKZQrWZX9oBpB5OKU
fjIldlc5N0xGP3DWwWCl2oAarSEDMcO72MmBiLiW0OuDlBCD060e50Vc6ebOp0FGZ0X7bL
AfBmByN23P/6Z
License Agreement: CLOVER VERSION 1 (ONE) SOFTWARE LICENSE AGREEMENT

1. Licenses and Software

Cortex eBusiness Pty Ltd, an Australian Proprietary Limited Company
("CENQUA") hereby grants to the purchaser (the "LICENSEE") a limited,
revocable, worldwide, non-exclusive, non-transferable,
non-sublicensable license to use the Clover version 1 (one) software
(the "Software"), including any minor upgrades thereof during the Term
(hereinafter defined) up to, but not including the next major version
of the Software. The licensee shall not, or knowingly allow others to,
reverse engineer, decompile, disassemble, modify, adapt, create
derivative works from or otherwise attempt to derive source code from
the Software provided. And, in accordance with the terms and
conditions of this Software License Agreement (the "Agreement"), the
Software shall be used solely by the licensed users in accordance with
the following edition specific conditions:

a) Server Edition

A Server Edition license entitles the Licensee to execute one instance
of Clover Server Edition on one (1) machine for the purposes of
instrumenting source code and generating reports. There are no
limitations on the use of the instrumented source code or generated
reports produced by Server Edition.

b) Workstation Edition

A Workstation Edition license entitles the licensee to use Clover
Workstation Edition on one (1) machine by one (1) individual end
user. Workstation Edition does not permit the generation of reports
for distribution.

c) Team Edition

A Team Edition license entitles the licensee to use Clover Team
edition on any number of machines solely by the licensed number of
users. Reports generated by Clover Team Edition are strictly for use
only by the licensed number of individual end users.

2. License Fee

In exchange for the License(s), the Licensee shall pay to Cenqua a
one-time, up front, non-refundable license fee. At the sole discretion
of Cenqua this fee will be waived for non-commercial
projects. Notwithstanding the Licensee's payment of the License Fee,
Cenqua reserves the right to terminate the License if Cenqua discovers
that the Licensee and/or the Licensee's use of the Software is in
breach of this Agreement.

3. Proprietary Rights

Cenqua will retain all right, title and interest in and to the
Software, all copies thereof, and Cenqua website(s), software, and
other intellectual property, including, but not limited to, ownership
of all copyrights, look and feel, trademark rights, design rights,
trade secret rights and any and all other intellectual property and
other proprietary rights therein. The Licensee will not directly or
indirectly obtain or attempt to obtain at any time, any right, title
or interest by registration or otherwise in or to the trademarks,
service marks, copyrights, trade names, symbols, logos or designations
or other intellectual property rights owned or used by Cenqua. All
technical manuals or other information provided by Cenqua to the
Licensee shall be the sole property of Cenqua.

4. Term and Termination

Subject to the other provisions hereof, this Agreement shall commence
upon the Licensee's opting into this Agreement and continue until the
Licensee discontinues use of the Software or the Agreement terminates
automatically upon the Licensee's breach of any term or condition of
this Agreement (the "Term"). Upon any such termination, the Licensee
will delete the Software immediately.

5. Copying & Transfer

The Licensee may copy the Software for back-up purposes only. The
Licensee may not assign or otherwise transfer the Software to any
third party.

6. Specific Disclaimer of Warranty and Limitation of Liability

THE SOFTWARE IS PROVIDED WITHOUT WARRANTY OF ANY KIND. CENQUA
DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. CENQUA WILL NOT BE LIABLE FOR ANY DAMAGES
ASSOCIATED WITH THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ORDINARY,
INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING
BUT NOT LIMITED TO DAMAGES RELATING TO LOST DATA OR LOST PROFITS, EVEN
IF CENQUA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. Warranties and Representations

Licensee Indemnification. CENQUA agrees to indemnify, defend and hold
the Licensee harmless from and against any and all liabilities, 
damages, losses, claims, costs, and expenses (including reasonable 
legal fees) arising out of or resulting from the Software or the use 
thereof infringing upon, misappropriating or violating any patents, 
copyrights, trademarks, or trade secret rights or other proprietary 
rights of persons, firms or entities who are not parties to this 
Agreement.

CENQUA Indemnification. The Licensee warrants and represents that the 
Licensee's actions with regard to the Software will be in compliance 
with all applicable  laws; and the Licensee agrees to indemnify, 
defend, and hold CENQUA harmless  from and against any and all 
liabilities, damages, losses, claims, costs,  and expenses (including 
reasonable legal fees) arising out of or resulting  from the 
Licensee's failure to observe the use restrictions set forth herein.

8. Publicity

The Licensee grants permission for CENQUA to use Licensee's name 
solely in customer lists. CENQUA shall not, without prior consent in 
writing, use the Licensee's name, or that of its affiliates, in any 
form with the specific  exception of customer lists. CENQUA agrees to 
remove Licensee's name from  any and all materials within 7 days if 
notified by the Licensee in writing.

9. Governing Law

This Agreement shall be governed by the laws of New South Wales, 
Australia.

10. Independent Contractors

The parties are independent contractors with respect to each  other, 
and nothing in this Agreement shall be construed as creating an 
employer-employee  relationship, a partnership, agency relationship or 
a joint venture between  the parties.

11. Assignment

This Agreement is not assignable or transferable by the Licensee. 
CENQUA  in its sole discretion may transfer a license to a third party 
at the written  request of the Licensee.

12. Entire Agreement

This Agreement constitutes the entire agreement between the parties 
concerning  the Licensee's use of the Software. This Agreement 
supersedes any prior verbal understanding between the parties and any 
Licensee purchase order or other  ordering document, regardless of 
whether such document is received by CENQUA  before or after execution 
of this Agreement. This Agreement may be amended  only in writing by 
CENQUA.
