<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
  <head>
    <title>{% block title %}{{ headers.title }}{% endblock %}</title>

    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <meta property="og:image" content="http://www.apache.org/images/asf_logo.gif" />

    <link rel="stylesheet" type="text/css" media="screen" href="http://www.apache.org/css/style.css">
    <link rel="stylesheet" type="text/css" media="screen" href="http://www.apache.org/css/code.css">

    </style>

    {% if headers.atom %}
      <link rel="alternate" href="{{ headers.atom.url }}"
            type="application/atom+xml" title="{{ headers.atom.title }}" />
    {% endif %}

    {% if headers.base %}<base href="{{ headers.base }}" />{% endif %}
    {% if headers.notice %}<!-- {{ headers.notice }} -->{% endif %}
  </head>

  <body>
    <div id="page" class="container_16">
      <div id="header" class="grid_8">
        <img src="http://www.apache.org/images/feather-small.gif" alt="The Apache Software Foundation">
        <h1>The Apache Software Foundation</h1>
        <h2>{% block tagline %}{{ headers.title }}{% endblock %}</h2>
      </div>
      <div id="nav" class="grid_8">
        <ul>
          <!-- <li><a href="/" title="Welcome!">Home</a></li> -->
          <li><a href="http://www.apache.org/foundation/" title="The Foundation">Foundation</a></li>
          <li><a href="http://projects.apache.org" title="The Projects">Projects</a></li>
          <li><a href="http://people.apache.org" title="The People">People</a></li>
          <li><a href="http://www.apache.org/foundation/getinvolved.html" title="Get Involved">Get Involved</a></li>
          <li><a href="http://www.apache.org/dyn/closer.cgi" title="Download">Download</a></li>
          <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Support Apache">Support Apache</a></li>
        </ul>
        <p>{{ breadcrumbs|safe }}</p>
        <form name="search" id="search" action="http://www.google.com/search" method="get">
          <input value="*.apache.org" name="sitesearch" type="hidden"/>
          <input type="text" name="q" id="query">
          <input type="submit" id="submit" value="Search">
        </form>
      </div>
      <div class="clear"></div>
      {% block content %}<div id="content" class="grid_16"><div class="section-content">{{ content|markdown }}</div></div>{% endblock %}
      <div class="clear"></div>
    </div>

    <div id="copyright" class="container_16">
      <p>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
    </div>
  </body>
</html>
