  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.


  This is excludes file for Apache RAT tool run by ASF Buildbot,
  http://creadur.apache.org/rat/

  The following files are excluded:

  - log files and other temporary files generated during testing

  - *.html files in documentation are generated from XML sources

  - *.md5, *.sha/*.sha1 files are generated and cannot contain license

  - *.manifest, MANIFEST.MF JAR manifest files cannot contain license

  - package-list files in API documentation (javadoc) are generated

  - other test files, such as trivial textual files containing only "OK' string,
    files in unusual encodings or compressed files are also excluded.

  - JSON files (RFC7159) are data and cannot contain comments

  - local build configuration files

  - file fragments that are combined during the build process and therefore can
    not contain a license header in every fragment

  - JavaEE XML schemas that are CDDL licensed

  - Checkstyle configuration file that defines how to check for the presence of
    ALv2 headers

  - files used simply to ensure directories are not empty

  - *.bmp, *.dia files are binary
    (*.gif, *.jpg are also binary, but are automatically detected by RAT as
    ones, so no explicit configuration is needed)

  - unused modules

  - Markdown files for display in ther GitHub UI

  - Temporary cache files used by Checkstle


output/build/logs/*
output/test-tmp/**

output/build/webapps/docs/**/*.html
output/dist/webapps/docs/**/*.html
output/deployer/deployer-howto.html

**/*.md5
**/*.sha1

**/MANIFEST.MF
**/*.manifest

output/dist/webapps/docs/*/package-list

output/dist/src/test/webapp/index.html.br
output/dist/src/test/webapp/bug49nnn/bug49464-cp1252.txt
output/dist/src/test/webapp/bug49nnn/bug49464-ibm850.txt
output/dist/src/test/webapp/bug49nnn/bug49464-iso-8859-1.txt
output/dist/src/test/webapp/bug49nnn/bug49464-utf-8-bom.txt
output/dist/src/test/webapp/bug49nnn/bug49464-utf-8.txt
output/dist/src/test/webapp/bug53257/*.txt
output/dist/src/test/webapp-fragments/WEB-INF/classes/*.txt
test/webapp/index.html.br
test/webapp/bug49nnn/bug49464-cp1252.txt
test/webapp/bug49nnn/bug49464-ibm850.txt
test/webapp/bug49nnn/bug49464-iso-8859-1.txt
test/webapp/bug49nnn/bug49464-utf-8-bom.txt
test/webapp/bug49nnn/bug49464-utf-8.txt
test/webapp/bug53257/*.txt
test/webapp-fragments/WEB-INF/classes/*.txt

**/*.json

build.properties

output/dist/confinstall/tomcat-users_2.xml
output/dist/src/res/confinstall/tomcat-users_2.xml
res/confinstall/tomcat-users_2.xml

java/javax/servlet/resources/javaee_5.xsd
java/javax/servlet/resources/javaee_6.xsd
java/javax/servlet/resources/javaee_7.xsd
java/javax/servlet/resources/javaee_web_services_1_2.xsd
java/javax/servlet/resources/javaee_web_services_1_3.xsd
java/javax/servlet/resources/javaee_web_services_1_4.xsd
java/javax/servlet/resources/javaee_web_services_client_1_2.xsd
java/javax/servlet/resources/javaee_web_services_client_1_3.xsd
java/javax/servlet/resources/javaee_web_services_client_1_4.xsd
java/javax/servlet/resources/jsp_2_2.xsd
java/javax/servlet/resources/jsp_2_3.xsd
java/javax/servlet/resources/web-app_3_0.xsd
java/javax/servlet/resources/web-app_3_1.xsd
java/javax/servlet/resources/web-common_3_0.xsd
java/javax/servlet/resources/web-common_3_1.xsd
java/javax/servlet/resources/web-fragment_3_0.xsd
java/javax/servlet/resources/web-fragment_3_1.xsd
output/classes/javax/servlet/resources/javaee_5.xsd
output/classes/javax/servlet/resources/javaee_6.xsd
output/classes/javax/servlet/resources/javaee_7.xsd
output/classes/javax/servlet/resources/javaee_web_services_1_2.xsd
output/classes/javax/servlet/resources/javaee_web_services_1_3.xsd
output/classes/javax/servlet/resources/javaee_web_services_1_4.xsd
output/classes/javax/servlet/resources/javaee_web_services_client_1_2.xsd
output/classes/javax/servlet/resources/javaee_web_services_client_1_3.xsd
output/classes/javax/servlet/resources/javaee_web_services_client_1_4.xsd
output/classes/javax/servlet/resources/jsp_2_2.xsd
output/classes/javax/servlet/resources/jsp_2_3.xsd
output/classes/javax/servlet/resources/web-app_3_0.xsd
output/classes/javax/servlet/resources/web-app_3_1.xsd
output/classes/javax/servlet/resources/web-common_3_0.xsd
output/classes/javax/servlet/resources/web-common_3_1.xsd
output/classes/javax/servlet/resources/web-fragment_3_0.xsd
output/classes/javax/servlet/resources/web-fragment_3_1.xsd
output/dist/src/java/javax/servlet/resources/javaee_5.xsd
output/dist/src/java/javax/servlet/resources/javaee_6.xsd
output/dist/src/java/javax/servlet/resources/javaee_7.xsd
output/dist/src/java/javax/servlet/resources/javaee_web_services_1_2.xsd
output/dist/src/java/javax/servlet/resources/javaee_web_services_1_3.xsd
output/dist/src/java/javax/servlet/resources/javaee_web_services_1_4.xsd
output/dist/src/java/javax/servlet/resources/javaee_web_services_client_1_2.xsd
output/dist/src/java/javax/servlet/resources/javaee_web_services_client_1_3.xsd
output/dist/src/java/javax/servlet/resources/javaee_web_services_client_1_4.xsd
output/dist/src/java/javax/servlet/resources/jsp_2_2.xsd
output/dist/src/java/javax/servlet/resources/jsp_2_3.xsd
output/dist/src/java/javax/servlet/resources/web-app_3_0.xsd
output/dist/src/java/javax/servlet/resources/web-app_3_1.xsd
output/dist/src/java/javax/servlet/resources/web-common_3_0.xsd
output/dist/src/java/javax/servlet/resources/web-common_3_1.xsd
output/dist/src/java/javax/servlet/resources/web-fragment_3_0.xsd
output/dist/src/java/javax/servlet/resources/web-fragment_3_1.xsd

output/dist/src/res/checkstyle/header-al2.txt
res/checkstyle/header-al2.txt

output/dist/temp/safeToDelete.tmp

**/*.bmp
**/*.dia

modules/bayeux/**
modules/tomcat-lite/**

**/*.md

output/res/checkstyle/*
