Copyright (c) 2006, EllisLab, Inc.
All rights reserved.

This license is a legal agreement between you and EllisLab Inc. for the use
of CodeIgniter Software (the "Software").  By obtaining the Software you
agree to comply with the terms and conditions of this license.

PERMITTED USE
You are permitted to use, copy, modify, and distribute the Software and its
documentation, with or without modification, for any purpose, provided that
the following conditions are met:

1. A copy of this license agreement must be included with the distribution.

2. Redistributions of source code must retain the above copyright notice in
   all source code files.

3. Redistributions in binary form must reproduce the above copyright notice
   in the documentation and/or other materials provided with the distribution.

4. Any files that have been modified must carry notices stating the nature
   of the change and the names of those who changed them.

5. Products derived from the Software must include an acknowledgment that
   they are derived from CodeIgniter in their documentation and/or other
   materials provided with the distribution.

6. Products derived from the Software may not be called "CodeIgniter",
   nor may "CodeIgniter" appear in their name, without prior written
   permission from EllisLab, Inc.


INDEMNITY
You agree to indemnify and hold harmless the authors of the Software and
any contributors for any direct, indirect, incidental, or consequential
third-party claims, actions or suits, as well as any related expenses,
liabilities, damages, settlements or fees arising from your use or misuse
of the Software, or a violation of any terms of this license.

DISCLAIMER OF WARRANTY
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF QUALITY, PERFORMANCE,
NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.

LIMITATIONS OF LIABILITY
YOU ASSUME ALL RISK ASSOCIATED WITH THE INSTALLATION AND USE OF THE SOFTWARE.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS OF THE SOFTWARE BE LIABLE
FOR CLAIMS, DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION
WITH THE SOFTWARE. LICENSE HOLDERS ARE SOLELY RESPONSIBLE FOR DETERMINING THE
APPROPRIATENESS OF USE AND ASSUME ALL RISKS ASSOCIATED WITH ITS USE, INCLUDING
BUT NOT LIMITED TO THE RISKS OF PROGRAM ERRORS, DAMAGE TO EQUIPMENT, LOSS OF
DATA OR SOFTWARE PROGRAMS, OR UNAVAILABILITY OR INTERRUPTION OF OPERATIONS.
