{{!--
  This template is used both in our TypeDoc theme (for API reference) and in 11ty (for the rest of the site).
  Therefore: only use plain Handlebars code, no custom helpers etc.
--}}
    <footer class="ui bottom attached segment">
      <div class="ui container">
        <div class="ui equal height divided stackable grid">
          <div class="four wide column">
            <a class="ui left floated medium image" href="https://apache.org/" target="_blank">
              <img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="logo of the Apache Incubator" />
            </a>
            <p>
              <em>Copyright © 2016-2018 The Apache Software Foundation, Licensed under
              the <a href="https://www.apache.org/licenses/LICENSE-2.0" rel="license external">Apache License, Version 2.0</a>.
              |
              <a rel="external" href="https://www.apache.org/foundation/policies/privacy">Privacy Policy</a>
              </em>
            </p>
          </div>
          <div class="nine wide column">
            <p>
              <em>Apache Annotator is an effort undergoing incubation at <a target="_blank" href="https://apache.org/">The Apache Software Foundation (ASF)</a> sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</em></p>
            <p><em>Apache®, the names of Apache projects, and the feather logo are either <a rel="external" href="https://www.apache.org/foundation/marks/list/">registered trademarks or trademarks</a> of the Apache Software Foundation in the United States and/or other countries.</em></p>
          </div>
          <div class="three wide column">
            <h4 class="header">The <abbr title="Apache Software Foundation">ASF</abbr></h4>
            <div class="ui link list">
              <a class="item" rel="external" href="https://incubator.apache.org/">Apache Incubator</a>
              <a class="item" rel="external" href="https://www.apache.org/">About the ASF</a>
              <a class="item" rel="external" href="https://www.apache.org/events/current-event">Events</a>
              <a class="item" rel="external" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
              <a class="item" rel="external" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a>
              <a class="item" rel="external" href="https://www.apache.org/security/">Security</a>
              <a class="item" rel="external" href="https://www.apache.org/licenses/">License</a>
            </div>
          </div>
        </div>
      </div>
    </footer>
