END-USER LICENSE AGREEMENT
 
 PLEASE READ CAREFULLY.  BY USING OR INSTALLING THIS SOFTWARE,
 OR BY PLACING OR COPYING THIS SOFTWARE ON YOUR COMPUTER
 HARDWARE, COMPUTER RAM OR OTHER STORAGE MEDIUM, YOU ARE
 AGREEING TO BE BOUND BY THE TERMS OF THIS LICENSE.
 IF YOU DO NOT AGREE TO THESE TERMS, PROMPTLY DISCONTINUE THE
 INSTALLATION PROCESS AND CEASE ALL USE OF THIS SOFTWARE.
 
 1.  Thanks.  Congratulations and thank you for licensing our 
 software.  We're sorry to cramp your style, but out lawyers tell 
 us that if we want to keep control and ownership of the cool 
 stuff we're developing, we have to make sure you understand and 
 agree that you are just getting a right to use it and that that 
 right is limited in certain ways.  So here's what follows is what 
 you need to know and agree to.  
 
 2.  License.  The server-only version of the software accompanying 
 this license and the related documentation (the "Server-Only 
 Software") are licensed for your use and gaming enjoyment, 
 subject to terms and limitations in this license agreement.  This 
 is not a full fledged version of the software; it is a Server-
 Only version.	    
 
 3.  Use Restrictions.	We want you to enjoy our products for years to 
 come, and we want to be able to continue to send you awesome 
 games, so you need to be aware that there are some things you 
 cannot do with the Server-Only Software.  The Server-Only 
 Software contains copyrighted material, trade secrets and other 
 proprietary material.	You may not decompile, modify, reverse 
 engineer, prepare derivative works based on the Server-Only 
 Software, or disassemble the Server-Only Software.  You may not 
 rent, sell, lease, barter, or sublicense the Server-Only 
 Software.  You may not delete the copyright notices or any other 
 proprietary legends on the original copy of the Server-Only 
 Software.  You may not offer the Server-Only Software on a 
 pay-per-play basis or otherwise commercially exploit the Server-
 Only Software or use the Server-Only Software for any commercial 
 purpose.  You may, however, exchange the Server-Only Software at 
 no charge among other end-users and distribute them to others 
 over the Internet, on magazine cover disks, or otherwise for 
 free.	You may not ship or export the Server-Only Software to any 
 country other than where you bought it, in violation of the U.S. 
 Export Administration Act (or any other law governing such 
 matters) and you will not utilize and will not authorize anyone 
 to utilize the Server-Only Software in violation of any 
 applicable law.  The Server-Only Software may not be downloaded 
 or otherwise exported into (or to a national or resident of) any 
 country to which the U.S. has embargoed goods or to anyone or 
 into any country who/which are prohibited by applicable law, from 
 receiving it.
 
 4.  Termination.  This license is effective until one of us terminate 
 it.  You may terminate this license at any time by destroying the 
 Server-Only Software and related documentation.  In the unlikely 
 event that you are naughty and fail to comply with any provision 
 of this license, this license will terminate immediately without 
 notice from us.  Upon termination, you must destroy the Server-
 Only Software and related documentation.  Please don't wait for 
 us to come after you; it would not be pleasant for either of us.  
 If we do have to come after you, we're going to expect you to pay 
 us for our troubles, including the cost of our lawyers.
 
 5.  Disclaimer of Warranty on Software.  You are aware and agree that 
 use of the Server-Only Software and the media on which it is 
 recorded at your sole risk.  The Server-Only Software, related 
 documentation and the media are provided "AS IS".  INFOGRAMES 
 (OUR PUBLISHER) AND EPIC GAMES, INC. ("EPIC") EXPRESSLY DISCLAIM 
 ALL OTHER WARRANTIES. EXPRESS OR IMPLIED, INCLUDING BUT NOT 
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
 FOR A PARTICULAR PURPOSE.  WE DO NOT WARRANT THAT THE FUNCTIONS 
 CONTAINED IN THE SERVER-ONLY SOFTWARE WILL MEET YOUR 
 REQUIREMENTS.	NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY 
 US OR ANY OF OUR AUTHORIZED REPRESENTATIVES SHALL CREATE A 
 WARRANTY OR IN ANY WAY INCREASE THE SCOPE OF THIS WARRANTY.  SOME 
 JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, 
 S0 THE ABOVE EXCLUSIONS MAY NOT APPLY TO YOU.
 
 6.  Limitation of Liability.  UNDER NO CIRCUMSTANCES, INCLUDING 
 WITHOUT LIMITATION, NEGLIGENCE, SHALL INFOGRAMES, EPIC OR ANY OF 
 THEIR RESPECTIVE OFFICERS, EMPLOYEES, DIRECTORS, AGENTS, 
 LICENSEES, SUBLICENSEE OR ASSIGNS BE LIABLE FOR ANY INCIDENTAL, 
 SPECIAL OR CONSEQUENTIAL DAMAGES THAT RESULT FROM THE USE OR 
 INABILITY TO USE THE SERVER-ONLY SOFTWARE OR RELATED 
 DOCUMENTATION, EVEN IF SUCH PARTIES HAVE BEEN ADVISED OF THE 
 POSSIBILITY OF THOSE DAMAGES.	SOME JURISDICTIONS DO NOT ALLOW 
 THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR 
 CONSEQUENTIAL DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY 
 NOT APPLY TO YOU.  In no event shall our total liability to you 
 for all damages, losses, and causes of action (whether in 
 contract, tort or otherwise) exceed the amount paid by you for 
 the Software.
 
 7.  Controlling Law and Severability.	This license is governed by 
 and construed in accordance with the laws of the State of North 
 Carolina, USA.  Exclusive venue for all litigation shall be in 
 Wake County, North Carolina.  If any provision of this license is 
 unenforceable, the rest of it shall remain in effect.
 
 8.  Complete Agreement.  This license constitutes the entire 
 agreement between the parties with respect to the use of the 
 Server-Only Software and the related documentation.  However, 
 Infogrames and Epic reserve the right to modify the terms of this 
 license from time to time and will post notice of material 
 changes somewhere within www.epicgames.com.  
 
 9.  Copyright.  The Server-Only Software and all copyrights, 
 trademarks and all other conceivable intellectual property rights 
 related to the Server-Only Software are owned by Infogrames, Epic 
 or such parties' licensors and are protected by United States 
 copyrights laws, international treaty provisions, an army of 
 clones, and all applicable law, such as the Lanham Act.  You must 
 treat the Server-Only Software like any other copyrighted 
 material, as required by 17 U.S.C. section 101 et seq. and other 
 applicable law.  This program you've licensed was produced 
 through the efforts of many people who earn their livelihood from 
 its lawful use.  
 
 10.  Enjoyment Requirements.  We are aware that there are rumblings 
 and grumblings within the gaming community about heavy handed, 
 legally onerous license agreements.  You have our word that this 
 one is as fair and even handed as it gets and, as you have read 
 this far, you know it to be true.  Now, be gone from this screen 
 and enjoy the Server-Only Software, and if you like it, be sure 
 to tell all your friends how great it is and make sure they try 
 it, too!

