End User License Agreement
YOU SHOULD CAREFULLY READ THE FOLLOWING END USER LICENSE AGREEMENT
BEFORE INSTALLING THIS SOFTWARE PROGRAM. BY INSTALLING OR OTHERWISE
USING THE SOFTWARE PROGRAM, YOU AGREE TO BE BOUND BY THE TERMS OF THIS
AGREEMENT.

This software program (the "Program"), any printed materials, any
on-line or electronic documentation (the "Manuals"), and any and all
copies and derivative works of such software program are the
copyrighted work of Linux Game Publishing LTD and its licensors. All
rights reserved, except as expressly stated herein. All use of the
Program is governed by the terms of this End User License Agreement
("License Agreement"). The Program is solely for use by end users
according to the terms of the Licence Agreement. Any use, reproduction
or redistribution of the Program not in accordance with the terms of
the Licence Agreement is expressly prohibited.

1. Limited Use License. Linux Game Publishing ("LGP") hereby grants,
and by installing the Program you thereby accept, a limited,
non-exclusive license and right to install and use one (1) copy of the
Program for your use on either a home, business, or portable
computer. The Program is licensed not sold. Your license confers no
title or ownership in the Program.

2. Ownership. All title, ownership rights and intellectual property
rights in and to the Program and any and all copies thereof (including
but not limited to any titles, computer code, themes, objects,
characters, character names, stories, dialog, catch phrases,
locations, concepts, artwork, animations, sounds, musical
compositions, audio-visual effects, methods of operation, moral
rights, and any related documentation, and "applets" incorporated into
the Program) are owned by LGP and its licensors. The Program is
protected by the copyright laws of the United Kingdom, international
copyright treaties and conventions and other laws. All rights are
reserved. The Program contains certain licensed materials and LGP's
licensors may protect their rights in the event of any violation of
this Agreement.

3. Responsibilities of End User.
A. Subject to the Grant of License hereinabove, you may not, in whole
or in part, copy, photocopy, reproduce, translate, reverse engineer,
derive source code, modify, disassemble, decompile, create derivative
works based on the Program, or remove any proprietary notices or
labels on the Program without the prior written consent of LGP.
B. The Program is licensed to you as a single product. Its component
parts may not be separated for use on more than one computer.
C. You are entitled to use the Program for your own use, but you are
not entitled to: (i) sell, grant a security interest in or transfer
reproductions of the Program to other parties in any way, nor to rent,
lease or license the Program to others without the prior written
consent of LGP; or (ii) exploit the Program or any of its parts for
any commercial purpose including, but not limited to, use at a cyber
cafe, computer gaming center or any other location-based site. LGP may
offer a separate Site License Agreement to permit you to make the
Program available for commercial use. Contact LGP for details.

4. Program Transfer. You may transfer all of your rights
under this License Agreement, provided the recipient agrees to the
terms of this License Agreement.

5. Termination. The License Agreement is effective until
terminated. You may terminate the License Agreement at any time by
destroying the Program. LGP may, at its discretion, terminate this
License Agreement in the event that you fail to comply with the terms
and conditions contained herein. In such event, you must immediately
destroy the Program.

6. Export Controls. The program may not be re-exported, downloaded,
otherwise exported into (or to a national or resident of) any country
to whom it would be illegal to export the Program under UK law.

7. Limited Warranty. Except as expressly and unambiguously set forth
in this paragraph 7, LGP and its licensors disclaim any warranty for
the Program, Editor and Manual(s). The Program, Editor and Manual(s)
are provided "as is" without any warranty of any kind, either express
or implied, including, without limitation, the implied warranties of
merchantability, fitness for a particular purpose, or
noninfringement. The entire risk arising out of use or performance of
the Program, Editor, and Manual(s) remains with the User, however LGP
warrants up to and including 90 days from the date of your purchase of
the Program that the media containing the Program shall be free from
defects in material and workmanship. In the event that the media
proves to be defective during that time period, and upon presentation
to LGP of proof of purchase of the defective Program, LGP will at its
option: (i) correct any defect; (ii) provide a replacement copy of the
same product; or (iii) refund your money.

8. Limitation of Liability. NEITHER LGP, ITS LICENSORS NOR ANY PARENT,
SUBSIDIARY OR AFFILIATE OF THE FOREGOING SHALL BE LIABLE IN ANY WAY
FOR LOSS OR DAMAGE OF ANY KIND RESULTING FROM THE USE OF THE PROGRAM,
EDITOR, AND MANUAL(S) INCLUDING, WITHOUT LIMITATION, LOSS OF GOODWILL,
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
COMMERCIAL DAMAGES OR LOSSES.

9. Equitable Remedies. You hereby agree that LGP would be irreparably
damaged if the terms of this License Agreement were not specifically
enforced, and therefore you agree that LGP shall be entitled, without
bond, other security, or proof of damages, to appropriate equitable
remedies with respect to breaches of this License Agreement, in
addition to such other remedies as LGP may otherwise have available to
it under applicable laws. In the event that any litigation is brought
by either party in connection with this License Agreement, the
prevailing party in such litigation shall be entitled to recover from
the other party all the costs, attorney's fees and other expenses
incurred by such prevailing party in the litigation.

10. Limitations on License. Nothing in this License Agreement shall
preclude you from making or authorizing the making of copies of
the Program provided, however, that all copies are complete and exact
copies of the original, including this license.

11. Miscellaneous. This License Agreement shall be deemed to have been
made and executed in the United Kingdom and any dispute arising
hereunder shall be resolved in accordance with the laws of the UK. You
agree that any claim asserted in any legal proceeding by one of the
parties against the other shall be commenced and maintained in the
appropriate court located in Nottingham, England, having subject
matter jurisdiction with respect to the dispute between the
parties. This License Agreement may be amended, altered or modified
only by an instrument in writing, specifying such amendment,
alteration or modification, executed by both parties. In the event
that any provision of this License Agreement shall be held by a court
or other tribunal of competent jurisdiction shall be unenforceable,
such provision will be enforced to the maximum extent permissible and
the remaining portions of this License Agreement shall remain in full
force and effect. This License Agreement constituted and contains the
entire agreement between the parties with respect to the subject
matter hereof and supersedes any prior oral or written agreements. You
hereby acknowledge that you have read and understand the forgoing
License Agreement and agree that the action of installing the Program
is an express acknowledgment of your agreement to be bound by the
terms and conditions of this License Agreement. You also acknowledge
and agree that this License Agreement is the complete and exclusive
statement of the agreement between you and LGP and that this License
Agreement supersedes any prior or contemporaneous agreement, either
oral or written, and any other communications between you and LGP.

Linux Game Publishing LTD
17 Rossington Road
Nottingham, NG2 4HX, England
