Jetty Project          
Corporate Contributor License Agreement V1.1
based on http://www.apache.org/licenses/

Thank you for your interest in the Jetty project by Mort Bay Consulting
Pty. Ltd. Australia ("MortBay").  In order to clarify the intellectual
property license granted with Contributions from any person or entity,
MortBay must have a Contributor License Agreement ("CLA") that has been
signed by each Contributor, indicating agreement to the license terms
below. This license is for your protection as a Contributor as well as
the protection of MortBay and its users; it does not change your rights
to use your own Contributions for any other purpose.

This version of the Agreement allows an entity (the "Corporation") to
submit Contributions to Mort Bay, to authorize Contributions submitted by
its designated employees to Mort Bay, and to grant copyright and patent
licenses thereto.

If you have not already done so, please complete this agreement and 
commit it to the Jetty repository at
svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty at
LICENSES/ccla-CORPORATE-NAME.txt. If you do not have commit privilege to the 
repository, please email the file to eclipse@eclipse.com. If possible, 
digitally sign the committed file, otherwise send a signed Agreement 
to MortBay.

Each developer covered by this agreement should have their name appended 
the Schedule A and the copy commited to LICENSES/ccla-CORPORATE-NAME.txt 
using their authenticated codehaus ssh login.  If possible, digitally sign
the committed file, otherwise send a signed Agreement to MortBay.

Please read this document carefully before signing and keep a copy for
your records.

  Corporation name:
  Mailing Address:

  Point of Contact:
  Full name: 
  E-Mail:   
  Fax:

You accept and agree to the following terms and conditions for Your
present and future Contributions submitted to MortBay. In return,
MortBay shall not use Your Contributions in a way that is contrary
to the software license in effect at the time of the Contribution.
Except for the license granted herein to MortBay and recipients of
software distributed by MortBay, You reserve all right, title, and
interest in and to Your Contributions.

1. Definitions.

   "You" (or "Your") shall mean the copyright owner or legal entity
   authorized by the copyright owner that is making this Agreement with
   MortBay. For legal entities, the entity making a Contribution and all
   other entities that control, are controlled by, or are under common
   control with that entity are considered to be a single Contributor. For
   the purposes of this definition, "control" means (i) the power, direct
   or indirect, to cause the direction or management of such entity,
   whether by contract or otherwise, or (ii) ownership of fifty percent
   (50%) or more of the outstanding shares, or (iii) beneficial ownership
   of such entity.

   "Contribution" shall mean any original work of authorship,
   including any modifications or additions to an existing work, that
   is intentionally submitted by You to MortBay for inclusion in, or
   documentation of, any of the products owned or managed by MortBay (the
   "Work"). For the purposes of this definition, "submitted" means any
   form of electronic, verbal, or written communication sent to MortBay
   or its representatives, including but not limited to communication
   on electronic mailing lists, source code control systems, and issue
   tracking systems that are managed by, or on behalf of, MortBay for
   the purpose of discussing and improving the Work, but excluding
   communication that is conspicuously marked or otherwise designated
   in writing by You as "Not a Contribution."

2. Grant of Copyright License. Subject to the terms and conditions
   of this Agreement, You hereby grant to MortBay and to recipients of
   software distributed by MortBay a perpetual, worldwide, non-exclusive,
   no-charge, royalty-free, irrevocable copyright license to reproduce,
   prepare derivative works of, publicly display, publicly perform,
   sublicense, and distribute Your Contributions and such derivative
   works.

3. Grant of Patent License. Subject to the terms and conditions of
   this Agreement, You hereby grant to MortBay and to recipients of
   software distributed by MortBay a perpetual, worldwide, non-exclusive,
   no-charge, royalty-free, irrevocable (except as stated in this section)
   patent license to make, have made, use, offer to sell, sell, import,
   and otherwise transfer the Work, where such license applies only to
   those patent claims licensable by You that are necessarily infringed by
   Your Contribution(s) alone or by combination of Your Contribution(s)
   with the Work to which such Contribution(s) were submitted. If any
   entity institutes patent litigation against You or any other entity
   (including a cross-claim or counterclaim in a lawsuit) alleging
   that your Contribution, or the Work to which you have contributed,
   constitutes direct or contributory patent infringement, then any
   patent licenses granted to that entity under this Agreement for that
   Contribution or Work shall terminate as of the date such litigation
   is filed.

4. You represent that You are legally entitled to grant the above
   license. You represent further that each employee of the Corporation
   designated on Schedule A below (or in a subsequent written modification
   to that Schedule) is authorized to submit Contributions on behalf of
   the Corporation.

5. You represent that each of Your Contributions is Your original creation
   (see section 7 for submissions on behalf of others).  You represent
   that Your Contribution submissions include complete details of any
   third-party license or other restriction (including, but not limited
   to, related patents and trademarks) of which you are personally aware
   and which are associated with any part of Your Contributions.

6. You are not expected to provide support for Your Contributions, except
   to the extent You desire to provide support. You may provide support
   for free, for a fee, or not at all. Unless required by applicable
   law or agreed to in writing, You provide Your Contributions on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
   express or implied, including, without limitation, any warranties or
   conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
   FOR A PARTICULAR PURPOSE.

7. Should You wish to submit work that is not Your original creation,
   You may submit it to MortBay separately from any Contribution,
   identifying the complete details of its source and of any license or
   other restriction (including, but not limited to, related patents,
   trademarks, and license agreements) of which you are personally
   aware, and conspicuously marking the work as "Submitted on behalf of
   a third-party: [named here]".

8. It is your responsibility to notify MortBay when any change is required
   to the list of designated employees authorized to submit Contributions
   on behalf of the Corporation, or to the Corporation's Point of Contact
   with MortBay.

Date: 

Signature:

Name:

Positions:



Schedule A

    Name                                     Date added

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

    ______________________________________   ________________

