<!doctype html>
<!--
    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

         https://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.
-->
<html lang="en" prefix="og: https://ogp.me/ns#">
  <head>
      <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Apache Template - Tweets</title>


    <!-- Below Meta Tags Generated via https://www.opengraph.xyz -->
    <!-- If you don't care about social media then remove this section -->
    <!-- Values are set in pelicanconf.py -->
    <!-- HTML Meta Tags -->
    <meta name="description" content="Provides a template for projects wishing to use the Pelican ASF static content system">
    <!-- Facebook Meta Tags -->
    <meta property="og:url" content="https://template.apache.org">
    <meta property="og:type" content="website">
    <meta property="og:title" content="Apache Template">
    <meta property="og:description" content="Provides a template for projects wishing to use the Pelican ASF static content system">
    <meta property="og:image" content="https://template.apache.org/images/logo.png">
    <!-- Twitter Meta Tags -->
    <meta name="twitter:card" content="summary_large_image">
    <meta property="twitter:domain" content="template.apache.org">
    <meta property="twitter:url" content="https://template.apache.org">
    <meta name="twitter:title" content="Apache Template">
    <meta name="twitter:description" content="Provides a template for projects wishing to use the Pelican ASF static content system">
    <meta name="twitter:image" content="https://template.apache.org/images/logo.png">
    <!-- Above Meta Tags Generated via https://www.opengraph.xyz -->

    <!-- Start favicon styles - use apache feather -->
    <link rel="shortcut icon" href="https://www.apache.org/favicons/favicon.ico">
    <link rel="apple-touch-icon" sizes="57x57" href="https://www.apache.org/favicons/apple-touch-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="https://www.apache.org/favicons/apple-touch-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="https://www.apache.org/favicons/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="https://www.apache.org/favicons/apple-touch-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="https://www.apache.org/favicons/apple-touch-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="https://www.apache.org/favicons/apple-touch-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="https://www.apache.org/favicons/apple-touch-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="https://www.apache.org/favicons/apple-touch-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="https://www.apache.org/favicons/apple-touch-icon-180x180.png">
    <link rel="icon" type="image/png" href="https://www.apache.org/favicons/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="https://www.apache.org/favicons/favicon-194x194.png" sizes="194x194">
    <link rel="icon" type="image/png" href="https://www.apache.org/favicons/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="https://www.apache.org/favicons/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="https://www.apache.org/favicons/favicon-16x16.png" sizes="16x16">
    <!--<link rel="manifest" href="https://www.apache.org/favicons/manifest.json" crossorigin="anonymous">-->
    <meta name="msapplication-TileColor" content="#603cba">
    <meta name="msapplication-TileImage" content="https://www.apache.org/favicons/mstile-144x144.png">
    <meta name="msapplication-config" content="https://www.apache.org/favicons/browserconfig.xml">
    <meta name="theme-color" content="#282661">
    <!-- End favicon styles - use apache feather -->

    <!-- Start load of stylesheets (will need to upgrade periodically) -->
    <link rel="stylesheet"
      href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
      integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
      crossorigin="anonymous">
    <link rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/3.0.1/github-markdown.min.css"
      crossorigin="anonymous">
    <!-- Override css for this site. You can do this inline as shown here or with a site asset. See comment.-->
    <style>
html {
  font-size: 18px;
}
body {
  font-family: 'Montserrat', 'Source Sans Pro','Helvetica Neue', Helvetica, Arial, sans-serif;
  font-weight: 300;
  background-color: #fff;
}
.markdown-body {
  box-sizing: border-box;
  min-width: 200px;
  max-width: 980px;
  margin: 0 auto;
  padding: 45px;
}
@media (max-width: 767px) {
  .markdown-body {
    padding: 15px;
  }
}
.footer {
  border-top: 1px solid black;
  padding-top: 3px;
}
.right-align {
  text-align: right;
}
.center-align {
  text-align: center;
}
blockquote {
  background: bisque;
}
.bg-primary {
  background-color: #005bff!important;
}
a {
  font-weight: 400;
  color: #4643aa;
#  color: #005bff;
}
#li {
#  line-height: 2;
#}
.h1, h1 {
  font-size: 1.5rem;
}
.h2, h2 {
  font-size: 1.4rem;
}
.h3, h3 {
  font-size: 1.3rem;
}
.h4, h4 {
  font-size: 1.2rem;
}
.h5, h5 {
  font-size: 1.1rem;
}
.headerlink {
  visibility: hidden;
}
h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}
    </style>
    <!--<link rel="stylesheet" href="/styles/styles.css">-->
    <!-- End stylesheets -->
  </head>

  <body id="index" class="home">
    <!-- Start branding and top navigation -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-primary">
      <img src="https://www.apache.org/foundation/press/kit/feather.svg"
        width="30" height="30" class="d-inline-block align-top"
        alt="Apache Feather">
      <a class="navbar-brand" href="/">Apache Template</a>
      <button class="navbar-toggler" type="button"
        data-toggle="collapse" data-target="#navbarSupportedContent"
        aria-controls="navbarSupportedContent" aria-expanded="false"
        aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>

      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item active">
            <a class="nav-link" href="/index.html">Home</a>
          </li>
          <li class="nav-item active dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="exampleDropdown"
              role="button" data-toggle="dropdown" aria-expanded="false">Examples</a>
            <ul class="dropdown-menu" aria-labelledby="exampleDropdown">
              <li><a class="dropdown-item" href="/board.html">Board</a></li>
              <li><a class="dropdown-item" href="/featured.html/">Featured</a></li>
              <li><a class="dropdown-item" href="/committees.html">Committees</a></li>
              <li><a class="dropdown-item" href="/projects.html">Projects</a></li>
              <li><a class="dropdown-item" href="/project_list.html">Project Columns</a></li>
              <li><hr class="dropdown-divider"></li>
              <li><a class="dropdown-item" href="/eccn.html">Site Data</a></li>
              <li><a class="dropdown-item" href="/tweets.html">Tweets</a></li>
              <li><a class="dropdown-item" href="/blogs.html">Blogs</a></li>
            </ul>
          </li>
          <li class="nav-item active">
            <a class="nav-link" href="/downloads.html">Downloads</a>
          </li>
          <li class="nav-item active">
            <a class="nav-link" href="/faq.html">FAQ</a>
          </li>
        </ul>
        <div class="navbar-nav">
          <div class="nav-item dropdown dropdown-menu-right active">
            <a class="nav-link dropdown-toggle" href="#"
              role="button" data-toggle="dropdown" aria-haspopup="true"
              aria-expanded="false">About</a>
            <div class="dropdown-menu dropdown-menu-right">
              <a class="dropdown-item" href="https://www.apache.org/">Foundation</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item"
                href="https://www.apache.org/licenses/">License</a>
              <a class="dropdown-item"
                href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
              <a class="dropdown-item"
                href="https://www.apache.org/foundation/thanks.html">Thanks</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item"
                href="https://www.apache.org/security/">Security</a>
            </div>
          </div>
        </div>
      </div>
    </nav>
    <!-- End branding and top navigation -->

    <!-- Start main content area -->
    <div class="container">
      <p><a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="#">Tweets</a></p>
    <h1>Tweets</h1>
    

    <!-- Licensed under ALv2 -->


    </div>
    <!-- End main content area -->

    <!-- Start footer -->
    <footer class="navbar-expand-lg navbar-light bg-light">
      <div class="footer" id="footer">
        <div class="row container-fluid">
          <div class="col-sm">
            <a href="https://www.apache.org/">
              <img src="https://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" style="border: 0; margin-top: 2px" width="200">
            </a>
          </div>
          <div class="col-sm center-align">
            <a href="https://www.apache.org/foundation/contributing.html">
              <img src="https://www.apache.org/images/SupportApache-small.png" alt="Support The ASF" height="80" width="80">
            </a>
          </div>
          <div class="col-sm right-align">
            <a class="acevent" data-format="wide" data-mode="light" data-event="random"></a>
          </div>
        </div>

        <div class="container-fluid">
          Copyright &copy; 2022 The Apache Software Foundation,
          Licensed under the
          <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0.</a>
          <br/>
          Apache, the Apache feather logo, and "Project" are trademarks or registered trademarks of <a href="https://www.apache.org/">The Apache Software Foundation.</a>
        </div><!-- #container-fluid -->

      </div>
    </footer>
    <!-- End footer -->

    <!-- Start the loading of javascript frameworks (will need to upgrade periodically) -->
    <script src="https://www.apachecon.com/event-images/snippet.js"></script>
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js"
      integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A=="
      crossorigin="anonymous"></script>
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
      integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
      crossorigin="anonymous"></script>
    <script
      src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
      integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
      crossorigin="anonymous"></script>
    <!-- End the loading of javascript frameworks -->

    <!-- Source: tweets.ezmd; Template: page; Url: pages/.html -->
  </body>
</html>