
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. 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.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor 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, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You 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 the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You 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 such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its 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. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

----------------
Apache Forrest includes a number of accompanying products with separate
copyright notices and license terms. Your use of the source code for
these products is subject to the terms and conditions of the relevant
licenses. For more information, see: http://www.apache.org/legal/

----------------
These supporting products are licensed: Apache License, Version 2.0
license: lib/core/avalon-logkit-2.1.jar.license.txt
license: lib/core/batik-license.txt
license: lib/core/cocoon.license.txt
license: lib/core/commons-cli.license.txt
license: lib/core/commons-collections.license.txt
license: lib/core/commons-httpclient-2.0.2.jar.license.txt
license: lib/core/commons-io.LICENSE.txt
license: lib/core/commons-jci-r306555.jar.license.txt
license: lib/core/commons-jexl-1.0.jar.license.txt
license: lib/core/commons-jxpath.license.txt
license: lib/core/commons-lang.license.txt
license: lib/core/commons-logging.LICENSE.txt
license: lib/core/excalibur-component-2.1.jar.license.txt
license: lib/core/excalibur-instrument-api-2.1.jar.license.txt
license: lib/core/excalibur-logger-2.1.jar.license.txt
license: lib/core/excalibur-pool-api-2.1.jar.license.txt
license: lib/core/excalibur-pool-impl-2.1.jar.license.txt
license: lib/core/excalibur-pool-instrumented-2.1.jar.license.txt
license: lib/core/excalibur-sourceresolve-2.2.3.jar.license.txt
license: lib/core/excalibur-store-2.1.jar.license.txt
license: lib/core/excalibur-xmlutil-2.1.jar.license.txt
license: lib/core/jcs-1.2.5-dev-20050313.jar.license.txt
license: lib/core/log4j-LICENSE.txt
license: lib/core/lucene-1.4.3.jar.license.txt
license: lib/core/xml-commons-resolver.license.txt
license: lib/core/xmlbeans-1.0.3.jar.license.txt
license: lib/core/xmlgraphics-commons.LICENSE.txt
license: lib/endorsed/jakarta-regexp-1.5.jar.license.txt
license: lib/endorsed/xalan-2.7.1.jar.license.txt
license: lib/endorsed/xercesImpl.license.txt
license: lib/endorsed/xml-apis.license.txt
license: plugins/org.apache.forrest.plugin.output.pdf/lib/fop.license.txt
license: tools/ant/lib/ant.license.txt
license: tools/ant/lib/ant-contrib-1.0b2.jar.license.txt
license: tools/ant/lib/apache-jakarta-commons-net-1.4.1.jar.license.txt
license: tools/ant/lib/apache-jakarta-oro-2.0.8.jar.license.txt
license: tools/ant/lib/xml-commons-resolver-1.1.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/commons-logging-1.0.4.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/jasper-compiler.LICENSE.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/jasper-runtime.LICENSE.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/log4j-1.2.9.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/org.mortbay.jetty.LICENSE.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/commons-httpclient-2.0-rc2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/commons-logging-1.0.3.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/concurrent-1.3.2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/daisy-repository-api-1.2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/daisy-repository-client-impl-1.2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/daisy-repository-common-impl-1.2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/daisy-repository-spi-1.2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/daisy-repository-xmlschema-bindings-1.2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/xbean-20040211.jar.license.txt
license: tools/jetty/jetty-6.1.26.jar.license.txt
license: tools/jetty/jetty-util-6.1.26.jar.license.txt
license: tools/forrestbot/lib/ant-contrib-1.0b2.jar.license.txt
license: whiteboard/f9/lib/commons-io.license.txt
license: whiteboard/f9/lib/jetty.license.txt
license: whiteboard/plugins/org.apache.forrest.plugin.Database/lib/excalibur-datasource-1.1.1.jar.license.txt
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/axiom-api-LICENSE.txt
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/axiom-impl-LICENSE.txt
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/commons-io.LICENSE.txt
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/geronimo-stax-api.license.txt
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/wstx-asl.jar.license.txt

See the license text displayed above for Apache License, Version 2.0

----------------
These supporting products are licensed: based on Apache License, Version 2.0
license: lib/core/ehcache-core.license.txt

----------------
These supporting products are licensed: Apache Software License, Version 1.1
license: lib/core/avalon-framework-api-4.3.jar.license.txt
license: lib/core/avalon-framework-impl-4.3.jar.license.txt
license: lib/core/excalibur-i18n-1.1.jar.license.txt
license: lib/core/excalibur-io-1.1.jar.license.txt
license: lib/core/excalibur-naming-1.0.jar.license.txt
license: lib/core/logkit-1.2.2.jar.license.txt
license: lib/endorsed/jakarta-bcel-20040329.jar.license.txt
license: plugins/org.apache.forrest.plugin.input.dtdx/lib/xerces-xniWriter.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest/lib/log4j_LICENSE.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/commons-cli-1.0.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/javax.servlet.LICENSE.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/servlet-2.3.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/xercesImpl-2.6.2.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/xml-apis.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.repository.daisy/lib/avalon-framework-api-4.1.5.jar.license.txt

----------------
These supporting products are licensed: based on Apache Software License, Version 1.1
license: lib/core/chaperon-20040205.jar.license.txt
license: whiteboard/plugins/org.apache.forrest.plugin.output.Chart/lib/krysalis.LICENSE.txt
license: whiteboard/plugins/rtf-output/WEB-INF/lib/jfor-0.7.2rc1.jar.license.txt

----------------
These supporting products are licensed: CyberNeko Software License, Version 1.0 (which is similar to Apache Software License 1.1)
license: lib/core/nekopull-0.2.4.jar.license.txt
license: plugins/org.apache.forrest.plugin.input.dtdx/lib/nekodtd-0.1.11.jar.license.txt

----------------
These supporting products are licensed: OpenSymphony Software License, Version 1.0 (which is similar to Apache Software License 1.1)
license: tools/forrestbot/webapp/lib/oscore-2.2.2.jar.license.txt
license: tools/forrestbot/webapp/lib/osuser-1.0-dev.jar.license.txt
license: tools/forrestbot/webapp/lib/propertyset-1.2.jar.license.txt

----------------
These supporting products are licensed: BSD License (3 clauses)
license: lib/core/jing-20091111.jar.license.txt
license: tools/ant/lib/jsch.license.txt
license: whiteboard/plugins/org.apache.forrest.plugin.Database/lib/hsqldb_LICENSE.txt
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/jaxen-LICENSE.txt
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/junit-hamcrest-LICENSE.txt
license: whiteboard/plugins/org.apache.forrest.plugin.output.htmlArea/tools/htmlArea-license.txt

----------------
These supporting products are licensed: BSD License (5 clauses)
license: lib/core/castor-0.9.6-xml.jar.license.txt
license: whiteboard/plugins/org.apache.forrest.plugin.output.Chart/lib/jaxen.license.txt
license: whiteboard/plugins/org.apache.forrest.plugin.output.Chart/lib/saxpath.license.txt

----------------
These supporting products are licensed: Creative Commons - Attribution-Share Alike
license: main/webapp/resources/stylesheets/exslt/exslt-license.txt

----------------
These supporting products are licensed: W3C Document Notice and License
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/XMLParserAPIs-dom-documentation.LICENSE.txt

----------------
These supporting products are licensed: W3C Software Notice and License
license: main/webapp/resources/schema/w3c-dtd/w3c-license.txt
license: main/webapp/resources/schema/relaxng/WD-xhtml2-20050527/w3c-license.txt
license: lib/core/jtidy-04aug2000r7-dev.jar.license.txt
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/XMLParserAPIs-dom-software.LICENSE.txt

----------------
These supporting products are licensed: The MIT License
license: lib/core/slf4j-LICENSE.txt
license: main/webapp/skins/fleece-dev/licenses/bootstrap-3.3.6.license.txt
license: main/webapp/skins/fleece-dev/licenses/glyphicons.license.txt
license: main/webapp/skins/fleece-dev/licenses/jquery-1.11.1.license.txt
license: main/webapp/skins/fleece-dev/licenses/normalize-3.0.3.license.txt

----------------
These supporting products are licensed: Common Development and Distribution License (CDDL) Version 1.0
license: tools/jetty/servlet-api-2.5-6.1.5.jar.license.txt
license: whiteboard/f9/lib/servlet-api.license.txt

----------------
These supporting products are licensed: Common Public License Version 1.0
license: whiteboard/plugins/org.apache.forrest.plugin.internal.DevTools/lib/jdtcore-3.1.0.jar.license.html
license: whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/lib/junit.license.txt

----------------
These supporting products are licensed: Mozilla Public License Version 1.1
license: lib/core/rhino-1.6R5.jar.license.txt

----------------
These supporting products are licensed: Public Domain
license: tools/eclipse/plugins/org.apache.forrest.eclipse.servletEngine/lib/XMLParserAPIs-sax.LICENSE.txt
license: lib/core/concurrent-1.3.4.jar.license.txt

----------------
Others not yet classified ...

lib/core/oreilly.permission.txt
? whiteboard/cocoon-2.2-blocks/*/pom.xml (See FOR-1192)
------------------------------------------------------------------------
