<div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    {% if current_page %}
    {% for doc in current_page.ancestors %}
        {% if doc.children[0].url and doc.children[0].url != current_page.url %}
          <li>&raquo; <a href="{{ doc.children[0].url|e }}">{{ doc.title }}</a></li>
        {% else %}
          <li>&raquo; {{ doc.title }}</li>
        {% endif %}
      {% endfor %}
      {% if current_page.title != "toc" %}
        <li>&raquo; {{ current_page.title }}</li>
      {% endif %}
    {% endif %}
    {% if repo_url %}
      <li class="wy-breadcrumbs-aside">
        {%- block repo %}
        {% if page and page.edit_url %}
          <a href="{{ page.edit_url }}"
          {%- if config.repo_name|lower == 'github' %}
            class="icon icon-github"
          {%- elif config.repo_name|lower == 'bitbucket' %}
            class="icon icon-bitbucket"
          {% endif %}> Edit on {{ config.repo_name }}</a>
        {% endif %}
        {%- endblock %}
      </li>
    {% endif %}
  </ul>
</div>
