<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  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 name="Whirr">
  <bannerLeft>
    <name>Whirr</name>
    <src>http://whirr.apache.org/images/whirr-logo.png</src>
    <href>http://whirr.apache.org/</href>
  </bannerLeft>
  <bannerRight>
    <src>http://www.apache.org/images/asf_logo_wide.png</src>
    <href>http://www.apache.org/</href>
  </bannerRight>

  <publishDate position="right"/>
  <version position="right"/>

  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-stylus-skin</artifactId>
    <version>1.2</version>
  </skin>

  <body>
    <links position="left">
      <item name="Wiki" href="https://cwiki.apache.org/confluence/display/WHIRR" />
      <item name="JIRA" href="https://issues.apache.org/jira/browse/WHIRR" />
      <item name="SVN" href="https://svn.apache.org/repos/asf/whirr/" />
    </links>

    <breadcrumbs position="left">
      <item name="Apache" href="http://www.apache.org/" />
      <item name="Whirr" href="http://whirr.apache.org/"/>
      <item name="0.9.0" href="http://whirr.apache.org/docs/0.9.0/"/>
    </breadcrumbs>

    <menu name="Whirr">
      <item name="About" href="http://whirr.apache.org/"/>
      <item name="Download" href="http://www.apache.org/dyn/closer.cgi/whirr/"/>
      <item name="Road Map" href="https://cwiki.apache.org/confluence/display/WHIRR/RoadMap" />
      <item name="Wiki" href="https://cwiki.apache.org/confluence/display/WHIRR" />
      <item name="FAQ" href="http://whirr.apache.org/faq.html"/>
    </menu>

    <menu name="Project Information">
      <item name="Summary" href="http://whirr.apache.org/project-info.html" />
      <item name="Mailing Lists" href="http://whirr.apache.org/mail-lists.html" />
      <item name="IRC" href="https://cwiki.apache.org/confluence/display/WHIRR/IRC+Channel" />
      <item name="Team" href="http://whirr.apache.org/team-list.html" />
      <item name="Issue Tracking" href="http://whirr.apache.org/issue-tracking.html" />
      <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" />
      <item name="Security" href="http://www.apache.org/security/" />
    </menu>

    <menu name="Documentation">
      <item name="Home" href="index.html"/>
      <item name="Whirr in 5 Minutes" href="whirr-in-5-minutes.html"/>
      <item name="Quick Start Guide" href="quick-start-guide.html"/>
      <item name="Configuration Guide" href="configuration-guide.html"/>
      <item name="API Guide" href="api-guide.html"/>
      <item name="Javadoc" href="apidocs/index.html"/>
      <item name="Release Notes" href="release-notes.html" />
      <item name="Known Limitations" href="known-limitations.html" />
      <item name="Supported Services and Clouds" href="supported-services-and-clouds.html" />
    </menu>

  </body>
</project>
