<!--
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.
-->
{% if page.seo_title %}
    {% assign page_title = page.seo_title %}
{% else if page.title %}
    {% assign page_title = page.title %}
{% else %}
    {% assign page_title = site.title %}
{% endif %}

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    {% include head/favicon.html %}
    <title>{{ page_title }}</title>
    <link href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i" rel="stylesheet">
    <link rel="stylesheet" href="{{ site.github.url }}/css/main-v1.css?v=1.13">
    <!-- Load Index, Menu & collapsible support -->
    <script type="text/javascript">
        {% include index/index.js %}
    </script>
  </head>
  <!-- Once all page elements are included, register event hooks -->
  <body onload="applyCollapsible()">
    <script src="js/main.min.js"></script>
    {% include partial/site-header.html %}
    {{ content }}
    {% include partial/site-footer.html %}
  </body>
</html>
