<?xml version="1.0" ?>
<!--
  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.
-->
<project xmlns="http://maven.apache.org/DECORATION/1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0 http://maven.apache.org/xsd/decoration-1.3.0.xsd"
         name="Apache Rat&trade;">
  <bannerRight>
    <title>The Apache Software Foundation</title>
    <name>The Apache Software Foundation</name>
    <src>http://www.apache.org/images/asf_logo_wide.jpg</src>
    <href>http://www.apache.org/</href>
  </bannerRight>
  <poweredBy>
      <logo name="Maven"
            href="http://maven.apache.org/"
            img="http://maven.apache.org/images/logos/maven-feather.png"/>

  </poweredBy>

  <body>
    <head>
      <link
            href='http://fonts.googleapis.com/css?family=Mate+SC'
            rel='stylesheet'
            type='text/css'/>
    </head>

    <breadcrumbs>
      <item name="Apache" href="http://www.apache.org/"/>
      <item name="Creadur" href="http://creadur.apache.org/"/>
      <item name="Rat" href="http://creadur.apache.org/rat/"/>
    </breadcrumbs>

    <menu name="Apache Rat&trade;" inherit="bottom">
      <item name="Introducing Rat" href="/index.html"/>
      <item name="Javadocs" href="/apidocs/index.html"/>
      <item name="Downloads" href="/download_rat.cgi"/>
      <item name="Changes" href="/RELEASE_NOTES.txt"/>
    </menu>

    <menu name="Running Rat" inherit="bottom">
      <item name="From The Command Line" href="apache-rat/index.html"/>
      <item name="With Ant" href="apache-rat-tasks/index.html"/>
      <item name="With Maven" href="apache-rat-plugin/index.html"/>
      <item name="With Gradle" href="apache-rat-gradle/index.html"/>
    </menu>

    <menu name="Apache Creadur&trade;" inherit="bottom">
      <item name='Creadur Project Home' href="http://creadur.apache.org"/>
      <item name='Apache Tentacles' href="http://creadur.apache.org/tentacles"/>
      <item name='Apache Whisker' href="http://creadur.apache.org/whisker"/>
      <item name='Security' href='http://www.apache.org/security/'/>
      <item name='License' href='http://www.apache.org/licenses/'/>
      <item name='Sponsorship' href='http://www.apache.org/foundation/sponsorship.html'/>
      <item name='Thanks' href='http://www.apache.org/foundation/thanks.html'/>
    </menu>

    <menu name="The Apache Software Foundation" inherit="bottom">
        <item name='About the Foundation'
            href="http://www.apache.org/foundation"/>
        <item name='The projects'
            href="http://projects.apache.org"/>
        <item name='The people'
            href="http://people.apache.org"/>
        <item name='How we work'
            href='http://www.apache.org/foundation/how-it-works.html'/>
        <item name='Our history'
            href='http://www.apache.org/foundation/how-it-works.html#history'/>
        <item name='News'
            href='http://blogs.apache.org/foundation/'/>
    </menu>

    <menu name="Contribute" inherit="bottom">
      <item name="Get Involved" href='http://www.apache.org/foundation/getinvolved.html'/>
    </menu>

    <menu name="Committer Info" inherit="bottom">
      <item name="Publish this site" href="site-publish.html"/>
      <item name="Committers' FAQ" href='http://www.apache.org/dev/committers.html'/>
      <item name='New Committers Guide' href='http://www.apache.org/dev/new-committers-guide.html'/>
      <item name='Plant Apache' href='http://planet.apache.org/committers/'/>
      <item name='Community' href='http://community.apache.org/'/>
      <item name='Legal' href='http://www.apache.org/legal/'/>
      <item name='Branding' href='http://www.apache.org/foundation/marks/'/>
      <item name='Media Relations' href='http://www.apache.org/press/'/>
    </menu>

    <menu ref="modules"/>
    <menu ref="reports"/>

    <footer>Copyright &#169; 2014 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
      Apache Creadur, Creadur, Apache Rat, Apache Tentacles, Apache Whisker, Apache and the Apache feather logo are trademarks
      of The Apache Software Foundation.
      Oracle and Java are registered trademarks of Oracle and/or its affiliates.
      All other marks mentioned may be trademarks or registered trademarks of their respective owners.</footer>

  </body>
</project>
