{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Courier New;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\lang1033\f0\fs20            GOOGLE WEB TOOLKIT LICENSE INFORMATION\par
\par
March 3, 2008\par
\par
The Google Web Toolkit software and sample code developed by Google is \par
licensed under the Apache License, v. 2.0. Other software included in this \par
distribution is provided under other licenses, as listed in the Included \par
Software and Licenses section at the bottom of this page. Source code for \par
software included in this distribution is available from the Google Web \par
Toolkit project or as otherwise indicated at the bottom of this page. \par
\par
Please note that the executable version of the Google Web Toolkit \par
distributed by Google will communicate with Google's servers to check for \par
available updates. If updates are available, you will receive the option to \par
install them. \par
\par
=====\par
\par
Apache License\par
Version 2.0, January 2004\par
http://www.apache.org/licenses/ \par
\par
1. Definitions.\par
\par
"License" shall mean the terms and conditions for use, reproduction, and \par
distribution as defined by Sections 1 through 9 of this document. \par
\par
"Licensor" shall mean the copyright owner or entity authorized by the \par
copyright owner that is granting the License. \par
\par
"Legal Entity" shall mean the union of the acting entity and all other \par
entities that control, are controlled by, or are under common control with \par
that entity. For the purposes of this definition, "control" means (i) the \par
power, direct or indirect, to cause the direction or management of such \par
entity, whether by contract or otherwise, or (ii) ownership of fifty percent \par
(50%) or more of the outstanding shares, or (iii) beneficial ownership of \par
such entity. \par
\par
"You" (or "Your") shall mean an individual or Legal Entity exercising \par
permissions granted by this License. \par
\par
"Source" form shall mean the preferred form for making modifications, \par
including but not limited to software source code, documentation source, and \par
configuration files. \par
\par
"Object" form shall mean any form resulting from mechanical transformation \par
or translation of a Source form, including but not limited to compiled \par
object code, generated documentation, and conversions to other media types. \par
\par
"Work" shall mean the work of authorship, whether in Source or Object form, \par
made available under the License, as indicated by a copyright notice that is \par
included in or attached to the work (an example is provided in the Appendix \par
below). \par
\par
"Derivative Works" shall mean any work, whether in Source or Object form, \par
that is based on (or derived from) the Work and for which the editorial \par
revisions, annotations, elaborations, or other modifications represent, as a \par
whole, an original work of authorship. For the purposes of this License, \par
Derivative Works shall not include works that remain separable from, or \par
merely link (or bind by name) to the interfaces of, the Work and Derivative \par
Works thereof. \par
\par
"Contribution" shall mean any work of authorship, including the original \par
version of the Work and any modifications or additions to that Work or \par
Derivative Works thereof, that is intentionally submitted to Licensor for \par
inclusion in the Work by the copyright owner or by an individual or Legal \par
Entity authorized to submit on behalf of the copyright owner. For the \par
purposes of this definition, "submitted" means any form of electronic, \par
verbal, or written communication sent to the Licensor or its \par
representatives, including but not limited to communication on electronic \par
mailing lists, source code control systems, and issue tracking systems that \par
are managed by, or on behalf of, the Licensor for the purpose of discussing \par
and improving the Work, but excluding communication that is conspicuously \par
marked or otherwise designated in writing by the copyright owner as "Not a \par
Contribution." \par
\par
"Contributor" shall mean Licensor and any individual or Legal Entity on \par
behalf of whom a Contribution has been received by Licensor and subsequently \par
incorporated within the Work. \par
\par
2. Grant of Copyright License. Subject to the terms and conditions of this \par
License, each Contributor hereby grants to You a perpetual, worldwide, \par
non-exclusive, no-charge, royalty-free, irrevocable copyright license to \par
reproduce, prepare Derivative Works of, publicly display, publicly perform, \par
sublicense, and distribute the Work and such Derivative Works in Source or \par
Object form. \par
\par
3. Grant of Patent License. Subject to the terms and conditions of this \par
License, each Contributor hereby grants to You a perpetual, worldwide, \par
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in \par
this section) patent license to make, have made, use, offer to sell, sell, \par
import, and otherwise transfer the Work, where such license applies only to \par
those patent claims licensable by such Contributor that are necessarily \par
infringed by their Contribution(s) alone or by combination of their \par
Contribution(s) with the Work to which such Contribution(s) was submitted. \par
If You institute patent litigation against any entity (including a \par
cross-claim or counterclaim in a lawsuit) alleging that the Work or a \par
Contribution incorporated within the Work constitutes direct or contributory \par
patent infringement, then any patent licenses granted to You under this \par
License for that Work shall terminate as of the date such litigation is \par
filed. \par
\par
4. Redistribution. You may reproduce and distribute copies of the Work or \par
Derivative Works thereof in any medium, with or without modifications, and \par
in Source or Object form, provided that You meet the following conditions: \par
\par
a. You must give any other recipients of the Work or Derivative Works a copy \par
of this License; and \par
\par
b. You must cause any modified files to carry prominent notices stating that \par
You changed the files; and \par
\par
c. You must retain, in the Source form of any Derivative Works that You \par
distribute, all copyright, patent, trademark, and attribution notices from \par
the Source form of the Work, excluding those notices that do not pertain to \par
any part of the Derivative Works; and \par
\par
d. If the Work includes a "NOTICE" text file as part of its distribution, \par
then any Derivative Works that You distribute must include a readable copy \par
of the attribution notices contained within such NOTICE file, excluding \par
those notices that do not pertain to any part of the Derivative Works, in at \par
least one of the following places: within a NOTICE text file distributed as \par
part of the Derivative Works; within the Source form or documentation, if \par
provided along with the Derivative Works; or, within a display generated by \par
the Derivative Works, if and wherever such third-party notices normally \par
appear. The contents of the NOTICE file are for informational purposes only \par
and do not modify the License. You may add Your own attribution notices \par
within Derivative Works that You distribute, alongside or as an addendum to \par
the NOTICE text from the Work, provided that such additional attribution \par
notices cannot be construed as modifying the License.\par
\par
You may add Your own copyright statement to Your modifications and may \par
provide additional or different license terms and conditions for use, \par
reproduction, or distribution of Your modifications, or for any such \par
Derivative Works as a whole, provided Your use, reproduction, and \par
distribution of the Work otherwise complies with the conditions stated in \par
this License. \par
\par
5. Submission of Contributions. Unless You explicitly state otherwise, any \par
Contribution intentionally submitted for inclusion in the Work by You to the \par
Licensor shall be under the terms and conditions of this License, without \par
any additional terms or conditions. Notwithstanding the above, nothing \par
herein shall supersede or modify the terms of any separate license agreement \par
you may have executed with Licensor regarding such Contributions. \par
\par
6. Trademarks. This License does not grant permission to use the trade \par
names, trademarks, service marks, or product names of the Licensor, except \par
as required for reasonable and customary use in describing the origin of the \par
Work and reproducing the content of the NOTICE file. \par
\par
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in \par
writing, Licensor provides the Work (and each Contributor provides its \par
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY \par
KIND, either express or implied, including, without limitation, any \par
warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or \par
FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining \par
the appropriateness of using or redistributing the Work and assume any risks \par
associated with Your exercise of permissions under this License. \par
\par
8. Limitation of Liability. In no event and under no legal theory, whether \par
in tort (including negligence), contract, or otherwise, unless required by \par
applicable law (such as deliberate and grossly negligent acts) or agreed to \par
in writing, shall any Contributor be liable to You for damages, including \par
any direct, indirect, special, incidental, or consequential damages of any \par
character arising as a result of this License or out of the use or inability \par
to use the Work (including but not limited to damages for loss of goodwill, \par
work stoppage, computer failure or malfunction, or any and all other \par
commercial damages or losses), even if such Contributor has been advised of \par
the possibility of such damages. \par
\par
9. Accepting Warranty or Additional Liability. While redistributing the Work \par
or Derivative Works thereof, You may choose to offer, and charge a fee for, \par
acceptance of support, warranty, indemnity, or other liability obligations \par
and/or rights consistent with this License. However, in accepting such \par
obligations, You may act only on Your own behalf and on Your sole \par
responsibility, not on behalf of any other Contributor, and only if You \par
agree to indemnify, defend, and hold each Contributor harmless for any \par
liability incurred by, or claims asserted against, such Contributor by \par
reason of your accepting any such warranty or additional liability. \par
\par
===\par
\par
LICENSE INFORMATION REGARDING BUNDLED THIRD-PARTY SOFTWARE\par
\par
The following third party software is distributed with Google Web \par
Toolkit and is provided under other licenses and/or has source \par
available from other locations. Where "gwt-dev.jar" is listed, \par
substitute in the name of the jar corresponding to your platform, \par
e.g. "gwt-dev-linux.jar".\par
\par
* Apache Tomcat\par
  License: Apache License v. 2.0 (above)\par
  Source code availability: http://tomcat.apache.org\par
    modifications are at org/apache/tomcat/ within gwt-dev.jar\par
\par
* Apache Tapestry\par
  License: Apache License v. 2.0 (above)\par
  Source code availability: http://tapestry.apache.org\par
\par
* ASM 3.1\par
  License: (custom)\par
    http://asm.objectweb.org/license.html\par
  Source code availability: com/google/gwt/dev/asm/ within gwt-dev.jar\par
  \par
* Browser Detect v2.1.6\par
  License: Creative Commons Attribution 1.0\par
    http://creativecommons.org/licenses/by/1.0/\par
  Source code availability:\par
    http://google-web-toolkit.googlecode.com/svn/trunk/tools/benchmark-viewer/src/com/google/gwt/benchmarks/viewer/client/BrowserInfo.java\par
    (transliterated into Java source)\par
\par
* Eclipse Java Development Tools (JDT)\par
  License: Eclipse Public License v. 1.0 \par
    http://www.eclipse.org/legal/epl-v10.html\par
  Source code availability:\par
    http://archive.eclipse.org/eclipse/downloads/drops/R-3.3.1-200709211145/download.php?dropFile=eclipse-JDT-SDK-3.3.1.zip\par
\par
* Eclipse Standard Widget Toolkit (SWT)\par
  License: Eclipse Public License v. 1.0\par
    http://www.eclipse.org/legal/epl-v10.html\par
  Source code availability:\par
    Linux: http://download.eclipse.org/eclipse/downloads/drops/R-3.2.1-200609210945/download.php?dropFile=swt-3.2.1-gtk-linux-x86.zip\par
    Windows: http://download.eclipse.org/eclipse/downloads/drops/R-3.2.1-200609210945/download.php?dropFile=swt-3.2.1-win32-win32-x86.zip\par
    Mac: http://download.eclipse.org/eclipse/downloads/drops/R-3.2.1-200609210945/download.php?dropFile=swt-3.2.1-carbon-macosx.zip\par
    modifications are at org/eclipse/swt/ within gwt-dev.jar\par
\par
* Jetty\par
  License: Apache License v. 2.0 (above)\par
  Source code availability:\par
    http://mortbay.org/jetty/\par
\par
* JFreeChart\par
  License: GNU Lesser General Public License v. 2.1\par
    http://www.gnu.org/licenses/lgpl.html\par
  Source code availability: \par
    http://jfree.org/jfreechart/download.html\par
\par
* Mozilla Rhino\par
  License: Mozilla Public License v. 1.1\par
    http://www.mozilla.org/MPL/MPL-1.1.txt\par
  Source code availability: com/google/gwt/dev/js/rhino/ within gwt-dev.jar\par
\par
* Mozilla 1.7.12 (Linux only)\par
  License: Mozilla Public License v. 1.1\par
    http://www.mozilla.org/MPL/MPL-1.1.txt\par
  Source code availability: \par
    http://developer.mozilla.org/en/docs/Download_Mozilla_Source_Code\par
\par
\par
}
 