<?xml version="1.0" encoding="UTF-8"?>

<!--
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.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd">
  <bannerLeft>
    <name>${project.name}</name>
    <src>https://maven.apache.org/images/apache-maven-project.png</src>
    <href>https://www.apache.org/</href>
  </bannerLeft>

  <bannerRight>
    <src>https://maven.apache.org/images/maven-logo-black-on-white.png</src>
    <href>https://maven.apache.org/</href>
  </bannerRight>

  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-fluido-skin</artifactId>
    <version>1.5</version>
  </skin>

  <googleAnalyticsAccountId>UA-140879-1</googleAnalyticsAccountId>

  <custom>
    <fluidoSkin>
      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
      <googlePlusOne />
      <googleSearch>
        <sitesearch/>
      </googleSearch>
    </fluidoSkin>
  </custom>

  <publishDate format="yyyy-MM-dd" position="right" />
  <version position="right" />

  <body>

    <!-- Breadcrumbs that every project will inherit -->
    <breadcrumbs>
      <item name="Apache" href="https://www.apache.org/" />
      <item name="Maven"  href="https://maven.apache.org/index.html" />
    </breadcrumbs>

    <!-- Menus that every project will inherit -->
    <menu ref="reports" inherit="bottom" />

    <menu name="Maven Projects" inherit="bottom">
      <item name="Archetype"         href="https://maven.apache.org/archetype/index.html" />
      <item name="Artifact Resolver" href="https://maven.apache.org/resolver/index.html" />
      <item name="Doxia"             href="https://maven.apache.org/doxia/index.html" />
      <item name="JXR"               href="https://maven.apache.org/jxr/index.html" />
      <item name="Maven"             href="https://maven.apache.org/ref/current" />
      <item name="Parent POMs"       href="https://maven.apache.org/pom/index.html" />
      <item name="Plugins"           href="https://maven.apache.org/plugins/index.html" />
      <item name="Plugin Testing"    href="https://maven.apache.org/plugin-testing/index.html" />
      <item name="Plugin Tools"      href="https://maven.apache.org/plugin-tools/index.html" />
      <item name="Resource Bundles"  href="https://maven.apache.org/apache-resource-bundles/index.html" />
      <item name="SCM"               href="https://maven.apache.org/scm/index.html" />
      <item name="Shared Components" href="https://maven.apache.org/shared/index.html" />
      <item name="Skins"             href="https://maven.apache.org/skins/index.html" />
      <item name="Surefire"          href="https://maven.apache.org/surefire/index.html" />
      <item name="Wagon"             href="https://maven.apache.org/wagon/index.html" />
    </menu>
    <menu name="ASF" inherit="bottom">
      <item name="How Apache Works"  href="https://www.apache.org/foundation/how-it-works.html"/> 
      <item name="Foundation"        href="https://www.apache.org/foundation/"/>
      <item name="Sponsoring Apache" href="https://www.apache.org/foundation/sponsorship.html"/>
      <item name="Thanks"            href="https://www.apache.org/foundation/thanks.html"/>
    </menu>

  </body>
</project>
