<?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.
   ====================================================================

   This software consists of voluntary contributions made by many
   individuals on behalf of the Apache Software Foundation.  For more
   information on the Apache Software Foundation, please see
   <http://www.apache.org/>.
 -->

<project name="HttpClient">
  <bannerLeft>
    <name>Apache</name>
    <src>http://www.apache.org/images/asf_logo_wide.gif</src>
    <href>http://www.apache.org/</href>
  </bannerLeft>

  <bannerRight>
    <name>HttpComponents</name>
    <src>http://hc.apache.org/images/logos/httpcomponents.png</src>
    <href>http://hc.apache.org/</href>
  </bannerRight>

  <body>
    <menu name="HttpComponents">
      <item name="Home" href=".."/>
    </menu>
    <menu name="HttpAsyncClient Overview">
      <item name="Description" href="index.html"/>
      <item name="Download" href="download.html"/>
      <item name="Quick Start" href="quickstart.html"/>
    </menu>
    <menu name="Documentation">
      <item name="Examples" href="examples.html"/>
    </menu>
    <menu name="Modules">
      <item name="HttpAsyncClient" href="httpasyncclient/index.html"/>
    </menu>
    <!-- Reports don't really apply at this level; in particular the dependecy report is misleading -->
    <!-- menu ref="reports"/-->
  </body>
</project>
