summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile6
-rw-r--r--docs-src/content/functions/func_doc.md.tmpl4
-rw-r--r--docs-src/content/functions/sockaddr.yml11
-rw-r--r--docs/archetypes/default.md6
-rw-r--r--docs/config.toml65
-rw-r--r--docs/content/functions/_index.md72
-rw-r--r--docs/content/installing.md8
-rw-r--r--docs/content/search.md31
-rw-r--r--docs/content/syntax.md49
-rw-r--r--docs/layouts/_default/index.json5
-rw-r--r--docs/layouts/partials/custom-footer.html (renamed from docs/static/js/faro.js)5
-rw-r--r--docs/layouts/partials/footer.html74
-rw-r--r--docs/layouts/partials/footer_js.html91
-rw-r--r--docs/layouts/partials/header.html48
-rw-r--r--docs/layouts/partials/logo.html34
-rw-r--r--docs/layouts/partials/menu-footer.html20
-rw-r--r--docs/static/css/chroma-gomplate-dark.css86
-rw-r--r--docs/static/css/chroma-gomplate-light.css86
-rw-r--r--docs/static/css/theme-gomplate-dark.css59
-rw-r--r--docs/static/css/theme-gomplate-light.css61
-rw-r--r--docs/static/js/application.js1577
-rw-r--r--docs/static/js/buttons.js6
-rw-r--r--docs/static/js/search.js132
-rw-r--r--docs/static/stylesheets/application.css1386
-rw-r--r--docs/static/stylesheets/custom-palettes.css126
-rw-r--r--docs/static/stylesheets/search.css22
27 files changed, 492 insertions, 3579 deletions
diff --git a/.gitignore b/.gitignore
index ce7dd656..eb46f823 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ report.xml
*.cid
*.iid
*.out
+.netlify
diff --git a/Makefile b/Makefile
index be23be3c..06d623b2 100644
--- a/Makefile
+++ b/Makefile
@@ -200,10 +200,10 @@ gen-changelog:
docker run -it -v $(shell pwd):/app --workdir /app -e CHANGELOG_GITHUB_TOKEN hairyhenderson/github_changelog_generator \
github_changelog_generator --no-filter-by-milestone --exclude-labels duplicate,question,invalid,wontfix,admin
-docs/themes/hugo-material-docs:
- git clone https://github.com/digitalcraftsman/hugo-material-docs.git $@
+docs/themes/hugo-theme-relearn:
+ git clone --depth=1 https://github.com/McShelby/hugo-theme-relearn.git $@
-gen-docs: docs/themes/hugo-material-docs
+gen-docs: docs/themes/hugo-theme-relearn
cd docs/; hugo
docs/content/functions/%.md: docs-src/content/functions/%.yml docs-src/content/functions/func_doc.md.tmpl
diff --git a/docs-src/content/functions/func_doc.md.tmpl b/docs-src/content/functions/func_doc.md.tmpl
index 36adc712..9c87dd9f 100644
--- a/docs-src/content/functions/func_doc.md.tmpl
+++ b/docs-src/content/functions/func_doc.md.tmpl
@@ -3,11 +3,11 @@
{{- define "usage" }}### Usage
{{- $arguments := index . "arguments" | default coll.Slice }}
{{ if has . "rawUsage" }}{{ .rawUsage | strings.TrimSpace }}{{ else }}
-```go
+```
{{ .name }}{{ range $a := $arguments }} {{template "argName" $a }}{{end}}
```
{{- if (index . "pipeline" | default false) }}
-```go
+```
{{ $last := (sub (len $arguments) 1) -}}
{{ (index $arguments $last).name }} | {{ .name }}{{ range $i, $a := $arguments }}{{if not (eq $i $last)}} {{template "argName" $a }}{{end}}{{end}}
```
diff --git a/docs-src/content/functions/sockaddr.yml b/docs-src/content/functions/sockaddr.yml
index f50af477..5992910c 100644
--- a/docs-src/content/functions/sockaddr.yml
+++ b/docs-src/content/functions/sockaddr.yml
@@ -15,10 +15,15 @@ preamble: |
To demonstrate how this can be used, here's an example that lists all of the IPv4 addresses available on the system:
- ```console
- $ gomplate -i '{{ range (sockaddr.GetAllInterfaces | sockaddr.Include "type" "ipv4") -}}
+ _in.tmpl:_
+ ```
+ {{ range (sockaddr.GetAllInterfaces | sockaddr.Include "type" "ipv4") -}}
{{ . | sockaddr.Attr "address" }}
- {{end}}'
+ {{end}}
+ ```
+
+ ```console
+ $ gomplate -f in.tmpl
127.0.0.1
10.0.0.8
132.79.79.79
diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md
new file mode 100644
index 00000000..00e77bd7
--- /dev/null
+++ b/docs/archetypes/default.md
@@ -0,0 +1,6 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+draft: true
+---
+
diff --git a/docs/config.toml b/docs/config.toml
index 80ab8349..71e691bf 100644
--- a/docs/config.toml
+++ b/docs/config.toml
@@ -1,36 +1,51 @@
baseURL = "/"
languageCode = "en-us"
title = "gomplate documentation"
-theme = "hugo-material-docs"
+theme = "hugo-theme-relearn"
googleAnalytics = "UA-82637990-3"
[params]
+ alwaysopen = false
+ editURL = "https://github.com/hairyhenderson/gomplate/edit/main/docs/content/"
author = "hairyhenderson"
description = "gomplate documentation"
- copyright = "Released under the MIT license"
- provider = "GitHub"
- repo_url = "https://github.com/hairyhenderson/gomplate"
- logo = "images/gomplate-icon.svg"
- favicon = "favicon.ico"
- custom_css = [
- "stylesheets/search.css",
- "stylesheets/custom-palettes.css",
- ]
- custom_js = [
- "https://code.jquery.com/jquery-3.3.1.min.js",
- "https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.4.4/fuse.min.js",
- "https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js",
- "js/search.js",
- "js/faro.js"
- ]
+ showVisitedLinks = false
+ disableSearch = false
+ disableSearchHiddenPages = false
+ disableSeoHiddenPages = false
+ disableTagHiddenPages = false
+ disableAssetsBusting = false
+ disableGeneratorVersion = false
+ disableInlineCopyToClipBoard = true
+ disableShortcutsTitle = false
+ disableLandingPageButton = false
+ disableLanguageSwitchingButton = false
+ disableBreadcrumb = false
+ disableToc = false
+ disableMathJax = true
+ disableMermaid = true
+ disableSwagger = true
+ disableNextPrev = false
+ ordersectionsby = "weight"
+ themeVariantAuto = ["gomplate-light", "gomplate-dark"]
+ themeVariant = ["auto", "gomplate-light", "gomplate-dark"]
+ titleSeparator = "-"
+ collapsibleMenu = true
+ additionalContentLanguage = [ "en" ]
+ disableExplicitIndexURLs = true
+ externalLinkTarget = "_blank"
-[params.palette]
- primary = "spalding-gray"
- accent = "spalding-blue"
-
-[social]
- twitter = "hairyhenderson"
- github = "hairyhenderson"
+[markup]
+ [markup.highlight]
+ guessSyntax = false
+ noClasses = false
[outputs]
- home = ["HTML", "RSS", "JSON"]
+ home = [ "HTML", "RSS", "SEARCH", "SEARCHPAGE"]
+
+[privacy]
+ [privacy.googleAnalytics]
+ disable = false
+ anonymizeIP = true
+ respectDoNotTrack = true
+ useSessionStorage = false
diff --git a/docs/content/functions/_index.md b/docs/content/functions/_index.md
new file mode 100644
index 00000000..28593190
--- /dev/null
+++ b/docs/content/functions/_index.md
@@ -0,0 +1,72 @@
+---
+title: Functions
+---
+
+Almost all of gomplate's utility is provided as _functions._ These are key
+words that perform some action.
+
+For example, the [`base64.Encode`][] function will encode some input string as
+a base-64 string:
+
+```
+The word is {{ base64.Encode "swordfish" }}
+```
+renders as:
+```
+The word is c3dvcmRmaXNo
+```
+
+## Built-ins
+
+Go's [`text/template`][] language provides a number of built-in functions,
+operators, and actions that can be used in templates.
+
+### Built-in functions
+
+Here is a list of the built-in functions, but see [the documentation](https://golang.org/pkg/text/template/#hdr-Functions)
+for full details:
+
+- `and`, `or`, `not`: Returns boolean AND/OR/NOT of the argument(s).
+- `call`: Returns the result of calling a function argument.
+- `html`, `js`, `urlquery`: Safely escapes input for inclusion in HTML, JavaScript, and URL query strings.
+- `index`: Returns the referenced element of an array/slice, string, or map. See also [Arrays](#arrays) and [Maps](#maps).
+- `len`: Returns the length of the argument.
+- `print`, `printf`, `println`: Aliases for Go's [`fmt.Print`](https://golang.org/pkg/fmt/#Print),
+[`fmt.Printf`](https://golang.org/pkg/fmt/#Printf), and [`fmt.Println`](https://golang.org/pkg/fmt/#Println)
+functions. See the [format documentation](https://golang.org/pkg/fmt/#hdr-Printing)
+for details on `printf`'s format syntax.
+
+### Operators
+
+And the following comparison operators are also supported:
+
+- `eq`: Equal (`==`)
+- `ne`: Not-equal (`!=`)
+- `lt`: Less than (`<`)
+- `le`: Less than or equal to (`<=`)
+- `gt`: Greater than (`>`)
+- `ge`: Greater than or equal to (`>=`)
+
+### Actions
+
+There are also a few _actions_, which are used for control flow and other purposes. See [the documentation](https://golang.org/pkg/text/template/#hdr-Actions) for details on these:
+
+- `if`/`else`/`else if`: Conditional control flow.
+- `with`/`else`: Conditional execution with assignment.
+- `range`: Looping control flow. See discussion in the [Arrays](#arrays) and [Maps](#maps) sections.
+ - `break`: The innermost `range` loop is ended early, stopping the current iteration and bypassing all remaining iterations.
+ - `continue`: The current iteration of the innermost `range` loop is stopped, and the loop starts the next iteration.
+- `template`: Include the output of a named template. See the [Nested templates](#nested-templates) section for more details, and the [`tmpl`](../functions/tmpl) namespace for more flexible versions of `template`.
+- `define`: Define a named nested template. See the [Nested templates](#nested-templates) section for more details.
+- `block`: Shorthand for `define` followed immediately by `template`.
+
+## gomplate functions
+
+gomplate provides over 200 functions not found in the standard library. These
+are grouped into namespaces, and documented on the following pages:
+
+{{% children depth="3" description="false" %}}
+
+[`text/template`]: https://golang.org/pkg/text/template/
+[`base64.Encode`]: ../functions/base64#base64-encode
+[data sources]: ../datasources/
diff --git a/docs/content/installing.md b/docs/content/installing.md
index 144a3805..9b740ef1 100644
--- a/docs/content/installing.md
+++ b/docs/content/installing.md
@@ -27,7 +27,7 @@ On macOS, you can also install gomplate using [MacPorts](https://www.macports.or
$ sudo port install gomplate
```
-## [![Chocolatey](https://img.shields.io/chocolatey/v/gomplate.svg)](https://chocolatey.org/packages/gomplate) Windows with Chocolatey
+## Windows with Chocolatey
The simplest method for installing gomplate on Windows is to use [`choco`](https://community.chocolatey.org/packages/gomplate):
@@ -59,12 +59,11 @@ Of course, there are some drawbacks - any files to be used for [datasources][]
must be mounted and any environment variables to be used must be passed through:
```console
-$ echo 'My voice is my {{.Env.THING}}. {{(datasource "vault").value}}' \
- | docker run -i -e THING=passport -v /home/me/.vault-token:/root/.vault-token hairyhenderson/gomplate -d vault=vault:///secret/sneakers -f -
+$ echo 'My voice is my {{.Env.THING}}. {{(datasource "vault").value}}' | docker run -i -e THING=passport -v /home/me/.vault-token:/root/.vault-token hairyhenderson/gomplate -d vault=vault:///secret/sneakers -f -
My voice is my passport. Verify me.
```
-It can be pretty awkward to always type `docker run hairyhenderson/gomplate:stable`,
+It can be awkward to always type `docker run hairyhenderson/gomplate:stable`,
so this can be made simpler with a shell alias:
```console
@@ -145,6 +144,7 @@ $ sh <(curl https://tea.xyz) +gomplate.ca sh
$ gomplate --version
...
```
+
[releases]: https://github.com/hairyhenderson/gomplate/releases
[multi-stage builds]: https://docs.docker.com/develop/develop-images/multistage-build/
[hairyhenderson/gomplate]: https://hub.docker.com/r/hairyhenderson/gomplate/tags/
diff --git a/docs/content/search.md b/docs/content/search.md
deleted file mode 100644
index a8bf9610..00000000
--- a/docs/content/search.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: "Search Results"
-sitemap:
- priority : 0.1
----
-
-## Results for _"<span id="search-string"></span>"_
-
-<p>
-<em>Showing <span id="search-results-length"></span> results...</em>
-</p>
-
-<div>
-<div id="search-results">
-</div>
-</div>
-
-<!-- this template is sucked in by search.js and appended to the search-results div above. So editing here will adjust style -->
-<script id="search-result-template" type="text/x-js-template">
-
-<h3><a href="${link}">${title}</a></h3>
-<cite><a href="${ link }">${link}</a></cite>
-<div id="summary-${key}">
- <div class="search-result">
- ${snippet}&hellip;
- </div>
-${ isset tags }<p>Tags: ${tags}</p>${ end }
-${ isset categories }<p>Categories: ${categories}</p>${ end }
-
-</div>
-</script>
diff --git a/docs/content/syntax.md b/docs/content/syntax.md
index 5f2cd36c..f6593a39 100644
--- a/docs/content/syntax.md
+++ b/docs/content/syntax.md
@@ -244,54 +244,7 @@ Or if you need keys as well:
Almost all of gomplate's utility is provided as _functions._ These are key
words (like `print` in the previous examples) that perform some action.
-For example, the [`base64.Encode`][] function will encode some input string as
-a base-64 string:
-
-```
-The word is {{ base64.Encode "swordfish" }}
-```
-renders as:
-```
-The word is c3dvcmRmaXNo
-```
-
-Go's [`text/template`][] language provides a number of built-in functions,
-operators, and actions that can be used in templates.
-
-Here is a list of the built-in functions, but see [the documentation](https://golang.org/pkg/text/template/#hdr-Functions)
-for full details:
-
-- `and`, `or`, `not`: Returns boolean AND/OR/NOT of the argument(s).
-- `call`: Returns the result of calling a function argument.
-- `html`, `js`, `urlquery`: Safely escapes input for inclusion in HTML, JavaScript, and URL query strings.
-- `index`: Returns the referenced element of an array/slice, string, or map. See also [Arrays](#arrays) and [Maps](#maps).
-- `len`: Returns the length of the argument.
-- `print`, `printf`, `println`: Aliases for Go's [`fmt.Print`](https://golang.org/pkg/fmt/#Print),
-[`fmt.Printf`](https://golang.org/pkg/fmt/#Printf), and [`fmt.Println`](https://golang.org/pkg/fmt/#Println)
-functions. See the [format documentation](https://golang.org/pkg/fmt/#hdr-Printing)
-for details on `printf`'s format syntax.
-
-And the following comparison operators are also supported:
-
-- `eq`: Equal (`==`)
-- `ne`: Not-equal (`!=`)
-- `lt`: Less than (`<`)
-- `le`: Less than or equal to (`<=`)
-- `gt`: Greater than (`>`)
-- `ge`: Greater than or equal to (`>=`)
-
-There are also a few _actions_, which are used for control flow and other purposes. See [the documentation](https://golang.org/pkg/text/template/#hdr-Actions) for details on these:
-
-- `if`/`else`/`else if`: Conditional control flow.
-- `with`/`else`: Conditional execution with assignment.
-- `range`: Looping control flow. See discussion in the [Arrays](#arrays) and [Maps](#maps) sections.
- - `break`: The innermost `range` loop is ended early, stopping the current iteration and bypassing all remaining iterations.
- - `continue`: The current iteration of the innermost `range` loop is stopped, and the loop starts the next iteration.
-- `template`: Include the output of a named template. See the [Nested templates](#nested-templates) section for more details, and the [`tmpl`](../functions/tmpl) namespace for more flexible versions of `template`.
-- `define`: Define a named nested template. See the [Nested templates](#nested-templates) section for more details.
-- `block`: Shorthand for `define` followed immediately by `template`.
-
-See also gomplate's functions, defined to the left.
+See the [functions documentation](/functions/) for more information.
## The Context
diff --git a/docs/layouts/_default/index.json b/docs/layouts/_default/index.json
deleted file mode 100644
index c93f8057..00000000
--- a/docs/layouts/_default/index.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- $.Scratch.Add "index" slice -}}
-{{- range .Site.RegularPages -}}
- {{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "categories" .Params.categories "contents" .Plain "permalink" .Permalink) -}}
-{{- end -}}
-{{- $.Scratch.Get "index" | jsonify -}}
diff --git a/docs/static/js/faro.js b/docs/layouts/partials/custom-footer.html
index 662961a0..27f17922 100644
--- a/docs/static/js/faro.js
+++ b/docs/layouts/partials/custom-footer.html
@@ -1,8 +1,8 @@
+{{ template "_internal/google_analytics.html" . }}
+<script>
(function () {
var webSdkScript = document.createElement("script");
-
webSdkScript.src = "https://unpkg.com/@grafana/faro-web-sdk@^1.0.0/dist/bundle/faro-web-sdk.iife.js";
-
webSdkScript.onload = () => {
window.GrafanaFaroWebSdk.initializeFaro({
url: "https://faro-collector-prod-us-central-0.grafana.net/collect/d8b5652f5dd57fb1cfec9a1c32970fe0",
@@ -33,3 +33,4 @@
// Append the Web-SDK script script tag to the HTML page
document.head.appendChild(webSdkScript);
})();
+</script>
diff --git a/docs/layouts/partials/footer.html b/docs/layouts/partials/footer.html
deleted file mode 100644
index 70f391dc..00000000
--- a/docs/layouts/partials/footer.html
+++ /dev/null
@@ -1,74 +0,0 @@
-{{ if .IsPage }}
-{{ if .NextPage | or .PrevPage }}
-<nav class="pagination" aria-label="Footer">
- <div class="previous">
- {{ if .NextPage }}
- <a href="{{ .NextPage.Permalink }}" title="{{ .NextPage.Title }}">
- <span class="direction">
- Previous
- </span>
- <div class="page">
- <div class="button button-previous" role="button" aria-label="Previous">
- <i class="icon icon-back"></i>
- </div>
- <div class="stretch">
- <div class="title">
- {{ .NextPage.Title }}
- </div>
- </div>
- </div>
- </a>
- {{ end }}
- </div>
-
- <div class="next">
- {{ if .PrevPage }}
- <a href="{{ .PrevPage.Permalink }}" title="{{ .PrevPage.Title }}">
- <span class="direction">
- Next
- </span>
- <div class="page">
- <div class="stretch">
- <div class="title">
- {{ .PrevPage.Title }}
- </div>
- </div>
- <div class="button button-next" role="button" aria-label="Next">
- <i class="icon icon-forward"></i>
- </div>
- </div>
- </a>
- {{ end }}
- </div>
-</nav>
-{{ end }}
-{{ end }}
-
-{{ if .IsHome }}
-{{ if gt (len .Site.Pages) 2 }}
-<nav class="pagination" aria-label="Footer">
- <div class="previous">
- </div>
-
- {{ $title := (index (.Site.Pages.ByDate) 1).Title }}
- {{ $permalink := (index (.Site.Pages.ByDate) 1).Permalink }}
- <div class="next">
- <a href="{{ $permalink }}" title="{{ $title }}">
- <span class="direction">
- Next
- </span>
- <div class="page">
- <div class="stretch">
- <div class="title">
- {{ $title }}
- </div>
- </div>
- <div class="button button-next" role="button" aria-label="Next">
- <i class="icon icon-forward"></i>
- </div>
- </div>
- </a>
- </div>
-</nav>
-{{ end }}
-{{ end }}
diff --git a/docs/layouts/partials/footer_js.html b/docs/layouts/partials/footer_js.html
deleted file mode 100644
index 14a9acd7..00000000
--- a/docs/layouts/partials/footer_js.html
+++ /dev/null
@@ -1,91 +0,0 @@
- <script>
- {{ with .Scratch.Get "repo_id" }}
- var base_url = '{{ (printf "%s" $.Site.BaseURL) | safeJS }}';
- var repo_id = '{{ . | safeJS }}';
- {{ else }}
- var base_url = '';
- var repo_id = '';
- {{ end }}
- </script>
-
- <script src="{{ "js/application.js" | absURL }}"></script>
- {{ range .Site.Params.custom_js }}
- <script src="{{ . | absURL }}"></script>
- {{ end }}
-
- <script>
- {{ "/* Add headers to scrollspy */" | safeJS }}
- var headers = document.getElementsByTagName("h2");
- var scrollspy = document.getElementById('scrollspy');
-
- if(scrollspy) {
- if(headers.length > 0) {
- for(var i = 0; i < headers.length; i++) {
- var li = document.createElement("li");
- li.setAttribute("class", "anchor");
-
- var a = document.createElement("a");
- a.setAttribute("href", "#" + headers[i].id);
- a.setAttribute("title", headers[i].innerHTML);
- a.innerHTML = headers[i].innerHTML;
-
- li.appendChild(a)
- scrollspy.appendChild(li);
- }
- } else {
- scrollspy.parentElement.removeChild(scrollspy)
- }
-
-
- {{ "/* Add permanent link next to the headers */" | safeJS }}
- var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");
-
- for(var i = 0; i < headers.length; i++) {
- var a = document.createElement("a");
- a.setAttribute("class", "headerlink");
- a.setAttribute("href", "#" + headers[i].id);
- a.setAttribute("title", "Permanent link")
- a.innerHTML = {{ or .Site.Params.permalink "ΒΆ" }};
- headers[i].appendChild(a);
- }
- }
- </script>
-
- {{ with .Site.GoogleAnalytics }}
- <script>
- (function(i,s,o,g,r,a,m){
- i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||
- []).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;
- m.parentNode.insertBefore(a,m)
- })(window, document,
- 'script', '//www.google-analytics.com/analytics.js', 'ga');
- /* General initialization */
- ga('create', '{{ . }}', 'auto');
- ga('set', 'anonymizeIp', true);
- ga('send', 'pageview');
- /* Track outbound links */
- var buttons = document.querySelectorAll('a');
- Array.prototype.map.call(buttons, function(item) {
- if (item.host != document.location.host) {
- item.addEventListener('click', function() {
- var action = item.getAttribute('data-action') || 'follow';
- ga('send', 'event', 'outbound', action, item.href);
- });
- }
- });
- /* Register handler to log search on blur */
- var query = document.querySelector('.query');
- query.addEventListener('blur', function() {
- if (this.value) {
- var path = document.location.pathname;
- ga('send', 'pageview', path + '?q=' + this.value);
- }
- });
- </script>
- {{ end }}
-
- <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script>
- <script>hljs.initHighlightingOnLoad();</script>
- </body>
-</html>
diff --git a/docs/layouts/partials/header.html b/docs/layouts/partials/header.html
deleted file mode 100644
index 52e80239..00000000
--- a/docs/layouts/partials/header.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<nav aria-label="Header">
- <div class="bar default">
- <div class="button button-menu" role="button" aria-label="Menu">
- <label class="toggle-button icon icon-menu" for="toggle-drawer">
- <span></span>
- </label>
- </div>
- <div class="stretch">
- <div class="title">
- {{ .Title }}
- </div>
- </div>
-
- {{ with .Site.Social.twitter }}
- <div class="button button-twitter" role="button" aria-label="Twitter">
- <a href="https://twitter.com/{{ . }}" title="@{{ . }} on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
- </div>
- {{ end }}
-
- {{ with .Site.Social.github }}
- <div class="button button-github" role="button" aria-label="GitHub">
- <a href="https://github.com/{{ . }}" title="@{{ . }} on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
- </div>
- {{ end }}
-
- <div class="button button-search" role="button" aria-label="Search">
- <label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
- </div>
- </div>
- <div class="bar search">
- <div class="button button-close" role="button" aria-label="Close">
- <label class="toggle-button icon icon-back" for="toggle-search"></label>
- </div>
- <div class="stretch">
- <div class="field">
- <form action="{{ "search" | absURL }}">
- <input class="query" type="text"
- placeholder="Search..." autocapitalize="off"
- autocorrect="off" autocomplete="off" spellcheck
- id="search-query" name="s"/>
- </form>
- </div>
- </div>
- <div class="button button-reset" role="button" aria-label="Search">
- <button class="toggle-button icon icon-close" id="reset-search"></button>
- </div>
- </div>
-</nav>
diff --git a/docs/layouts/partials/logo.html b/docs/layouts/partials/logo.html
new file mode 100644
index 00000000..8ff1ac29
--- /dev/null
+++ b/docs/layouts/partials/logo.html
@@ -0,0 +1,34 @@
+<a id="logo" href="{{ partial "relLangPrettyUglyURL.hugo" (dict "to" .Site.Home) }}">
+
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
+ width="240px" height="64px"
+ viewBox="0 0 512 128">
+ <defs>
+ <style>
+ @font-face {
+ font-family: 'Source Sans Pro';
+ font-style: normal;
+ font-weight: 300;
+ src: url("data:application/font-woff2;charset=utf-8;base64,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");
+ }
+ text {
+ font-size: 100px;
+ }
+ .logo {
+ font-family:'Source Sans Pro',sans-serif;
+ font-weight: 300;
+ text-anchor: start;
+ fill: rgba(60, 64, 93, 0.75);
+ }
+ .icon {
+ font-family:'Source Sans Pro',sans-serif;
+ font-weight: 300;
+ text-anchor: end;
+ fill: rgba(0, 0, 0, 0.5);
+ }
+ </style>
+ </defs>
+ <text x="0px" y="92px" class="logo">gomplate</text>
+ <text x="456px" y="92px" class="icon">}}</text>
+</svg>
+</a>
diff --git a/docs/layouts/partials/menu-footer.html b/docs/layouts/partials/menu-footer.html
new file mode 100644
index 00000000..afd1fdeb
--- /dev/null
+++ b/docs/layouts/partials/menu-footer.html
@@ -0,0 +1,20 @@
+<style>
+ #footer {
+ font-size: .75rem;
+ height: 6.25rem;
+ margin-left: auto;
+ margin-right: auto;
+ padding: 1rem 1rem;
+ text-align: center;
+ min-width: 14.375rem;
+ max-width: 18.75rem;
+ }
+ #footer p {
+ margin: 0;
+ }
+</style>
+
+<a class="github-button" href="https://github.com/hairyhenderson/gomplate/releases/latest" data-icon="octicon-cloud-download" aria-label="Latest release">Latest</a>
+<a class="github-button" href="https://github.com/hairyhenderson/gomplate" data-icon="octicon-star" data-show-count="true" aria-label="Star hairyhenderson/gomplate on GitHub">Star</a>
+
+<script async src="{{"js/buttons.js" | relURL}}{{ if not .Site.Params.disableAssetsBusting }}?{{ now.Unix }}{{ end }}"></script>
diff --git a/docs/static/css/chroma-gomplate-dark.css b/docs/static/css/chroma-gomplate-dark.css
new file mode 100644
index 00000000..24168d48
--- /dev/null
+++ b/docs/static/css/chroma-gomplate-dark.css
@@ -0,0 +1,86 @@
+/* Background */ .bg { color: #c9d1d9; background-color: #0d1117; }
+/* PreWrapper */ .chroma { color: #c9d1d9; background-color: #0d1117; }
+/* Other */ .chroma .x { }
+/* Error */ .chroma .err { color: #f85149 }
+/* CodeLine */ .chroma .cl { }
+/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
+/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
+/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
+/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
+/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
+/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
+/* Line */ .chroma .line { display: flex; }
+/* Keyword */ .chroma .k { color: #ff7b72 }
+/* KeywordConstant */ .chroma .kc { color: #79c0ff }
+/* KeywordDeclaration */ .chroma .kd { color: #ff7b72 }
+/* KeywordNamespace */ .chroma .kn { color: #ff7b72 }
+/* KeywordPseudo */ .chroma .kp { color: #79c0ff }
+/* KeywordReserved */ .chroma .kr { color: #ff7b72 }
+/* KeywordType */ .chroma .kt { color: #ff7b72 }
+/* Name */ .chroma .n { }
+/* NameAttribute */ .chroma .na { }
+/* NameBuiltin */ .chroma .nb { }
+/* NameBuiltinPseudo */ .chroma .bp { }
+/* NameClass */ .chroma .nc { color: #f0883e; font-weight: bold }
+/* NameConstant */ .chroma .no { color: #79c0ff; font-weight: bold }
+/* NameDecorator */ .chroma .nd { color: #d2a8ff; font-weight: bold }
+/* NameEntity */ .chroma .ni { color: #ffa657 }
+/* NameException */ .chroma .ne { color: #f0883e; font-weight: bold }
+/* NameFunction */ .chroma .nf { color: #d2a8ff; font-weight: bold }
+/* NameFunctionMagic */ .chroma .fm { }
+/* NameLabel */ .chroma .nl { color: #79c0ff; font-weight: bold }
+/* NameNamespace */ .chroma .nn { color: #ff7b72 }
+/* NameOther */ .chroma .nx { }
+/* NameProperty */ .chroma .py { color: #79c0ff }
+/* NameTag */ .chroma .nt { color: #7ee787 }
+/* NameVariable */ .chroma .nv { color: #79c0ff }
+/* NameVariableClass */ .chroma .vc { }
+/* NameVariableGlobal */ .chroma .vg { }
+/* NameVariableInstance */ .chroma .vi { }
+/* NameVariableMagic */ .chroma .vm { }
+/* Literal */ .chroma .l { color: #a5d6ff }
+/* LiteralDate */ .chroma .ld { color: #79c0ff }
+/* LiteralString */ .chroma .s { color: #a5d6ff }
+/* LiteralStringAffix */ .chroma .sa { color: #79c0ff }
+/* LiteralStringBacktick */ .chroma .sb { color: #a5d6ff }
+/* LiteralStringChar */ .chroma .sc { color: #a5d6ff }
+/* LiteralStringDelimiter */ .chroma .dl { color: #79c0ff }
+/* LiteralStringDoc */ .chroma .sd { color: #a5d6ff }
+/* LiteralStringDouble */ .chroma .s2 { color: #a5d6ff }
+/* LiteralStringEscape */ .chroma .se { color: #79c0ff }
+/* LiteralStringHeredoc */ .chroma .sh { color: #79c0ff }
+/* LiteralStringInterpol */ .chroma .si { color: #a5d6ff }
+/* LiteralStringOther */ .chroma .sx { color: #a5d6ff }
+/* LiteralStringRegex */ .chroma .sr { color: #79c0ff }
+/* LiteralStringSingle */ .chroma .s1 { color: #a5d6ff }
+/* LiteralStringSymbol */ .chroma .ss { color: #a5d6ff }
+/* LiteralNumber */ .chroma .m { color: #a5d6ff }
+/* LiteralNumberBin */ .chroma .mb { color: #a5d6ff }
+/* LiteralNumberFloat */ .chroma .mf { color: #a5d6ff }
+/* LiteralNumberHex */ .chroma .mh { color: #a5d6ff }
+/* LiteralNumberInteger */ .chroma .mi { color: #a5d6ff }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #a5d6ff }
+/* LiteralNumberOct */ .chroma .mo { color: #a5d6ff }
+/* Operator */ .chroma .o { color: #ff7b72; font-weight: bold }
+/* OperatorWord */ .chroma .ow { color: #ff7b72; font-weight: bold }
+/* Punctuation */ .chroma .p { }
+/* Comment */ .chroma .c { color: #8b949e; font-style: italic }
+/* CommentHashbang */ .chroma .ch { color: #8b949e; font-style: italic }
+/* CommentMultiline */ .chroma .cm { color: #8b949e; font-style: italic }
+/* CommentSingle */ .chroma .c1 { color: #8b949e; font-style: italic }
+/* CommentSpecial */ .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic }
+/* CommentPreproc */ .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic }
+/* CommentPreprocFile */ .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic }
+/* Generic */ .chroma .g { }
+/* GenericDeleted */ .chroma .gd { color: #ffa198; background-color: #490202 }
+/* GenericEmph */ .chroma .ge { font-style: italic }
+/* GenericError */ .chroma .gr { color: #ffa198 }
+/* GenericHeading */ .chroma .gh { color: #79c0ff; font-weight: bold }
+/* GenericInserted */ .chroma .gi { color: #56d364; background-color: #0f5323 }
+/* GenericOutput */ .chroma .go { color: #8b949e }
+/* GenericPrompt */ .chroma .gp { color: #8b949e }
+/* GenericStrong */ .chroma .gs { font-weight: bold }
+/* GenericSubheading */ .chroma .gu { color: #79c0ff }
+/* GenericTraceback */ .chroma .gt { color: #ff7b72 }
+/* GenericUnderline */ .chroma .gl { text-decoration: underline }
+/* TextWhitespace */ .chroma .w { color: #6e7681 }
diff --git a/docs/static/css/chroma-gomplate-light.css b/docs/static/css/chroma-gomplate-light.css
new file mode 100644
index 00000000..9018df90
--- /dev/null
+++ b/docs/static/css/chroma-gomplate-light.css
@@ -0,0 +1,86 @@
+/* Background */ .bg { background-color: #ffffff; }
+/* PreWrapper */ .chroma { background-color: #ffffff; }
+/* Other */ .chroma .x { }
+/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
+/* CodeLine */ .chroma .cl { }
+/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
+/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
+/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
+/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
+/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
+/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
+/* Line */ .chroma .line { display: flex; }
+/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
+/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
+/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold }
+/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold }
+/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold }
+/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold }
+/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold }
+/* Name */ .chroma .n { }
+/* NameAttribute */ .chroma .na { color: #008080 }
+/* NameBuiltin */ .chroma .nb { color: #0086b3 }
+/* NameBuiltinPseudo */ .chroma .bp { color: #999999 }
+/* NameClass */ .chroma .nc { color: #445588; font-weight: bold }
+/* NameConstant */ .chroma .no { color: #008080 }
+/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold }
+/* NameEntity */ .chroma .ni { color: #800080 }
+/* NameException */ .chroma .ne { color: #990000; font-weight: bold }
+/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold }
+/* NameFunctionMagic */ .chroma .fm { }
+/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold }
+/* NameNamespace */ .chroma .nn { color: #555555 }
+/* NameOther */ .chroma .nx { }
+/* NameProperty */ .chroma .py { }
+/* NameTag */ .chroma .nt { color: #000080 }
+/* NameVariable */ .chroma .nv { color: #008080 }
+/* NameVariableClass */ .chroma .vc { color: #008080 }
+/* NameVariableGlobal */ .chroma .vg { color: #008080 }
+/* NameVariableInstance */ .chroma .vi { color: #008080 }
+/* NameVariableMagic */ .chroma .vm { }
+/* Literal */ .chroma .l { }
+/* LiteralDate */ .chroma .ld { }
+/* LiteralString */ .chroma .s { color: #dd1144 }
+/* LiteralStringAffix */ .chroma .sa { color: #dd1144 }
+/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 }
+/* LiteralStringChar */ .chroma .sc { color: #dd1144 }
+/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 }
+/* LiteralStringDoc */ .chroma .sd { color: #dd1144 }
+/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 }
+/* LiteralStringEscape */ .chroma .se { color: #dd1144 }
+/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 }
+/* LiteralStringInterpol */ .chroma .si { color: #dd1144 }
+/* LiteralStringOther */ .chroma .sx { color: #dd1144 }
+/* LiteralStringRegex */ .chroma .sr { color: #009926 }
+/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 }
+/* LiteralStringSymbol */ .chroma .ss { color: #990073 }
+/* LiteralNumber */ .chroma .m { color: #009999 }
+/* LiteralNumberBin */ .chroma .mb { color: #009999 }
+/* LiteralNumberFloat */ .chroma .mf { color: #009999 }
+/* LiteralNumberHex */ .chroma .mh { color: #009999 }
+/* LiteralNumberInteger */ .chroma .mi { color: #009999 }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 }
+/* LiteralNumberOct */ .chroma .mo { color: #009999 }
+/* Operator */ .chroma .o { color: #000000; font-weight: bold }
+/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold }
+/* Punctuation */ .chroma .p { }
+/* Comment */ .chroma .c { color: #999988; font-style: italic }
+/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic }
+/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic }
+/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic }
+/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic }
+/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic }
+/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic }
+/* Generic */ .chroma .g { }
+/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
+/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
+/* GenericError */ .chroma .gr { color: #aa0000 }
+/* GenericHeading */ .chroma .gh { color: #999999 }
+/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
+/* GenericOutput */ .chroma .go { color: #888888 }
+/* GenericPrompt */ .chroma .gp { color: #555555 }
+/* GenericStrong */ .chroma .gs { font-weight: bold }
+/* GenericSubheading */ .chroma .gu { color: #aaaaaa }
+/* GenericTraceback */ .chroma .gt { color: #aa0000 }
+/* GenericUnderline */ .chroma .gl { text-decoration: underline }
+/* TextWhitespace */ .chroma .w { color: #bbbbbb }
diff --git a/docs/static/css/theme-gomplate-dark.css b/docs/static/css/theme-gomplate-dark.css
new file mode 100644
index 00000000..8864a2a1
--- /dev/null
+++ b/docs/static/css/theme-gomplate-dark.css
@@ -0,0 +1,59 @@
+@import "chroma-gomplate-dark.css";
+
+/* my-custom-variant */
+:root {
+ --PRIMARY-color: rgb( 145, 132, 121); /* brand primary color */
+ --SECONDARY-color: rgb( 120, 133, 145 ); /* brand secondary color */
+ --ACCENT-color: #bb8550; /* brand accent color, used for search highlights */
+
+ --MAIN-LINK-HOVER-color: #93b0ff; /* hoverd link color of content */
+ --MAIN-BG-color: #202020; /* background color of content */
+ --MAIN-TEXT-color: #e0e0e0; /* text color of content and h1 titles */
+ --MAIN-TITLES-TEXT-color: #ffffff; /* text color of h2-h6 titles and transparent box titles */
+
+ --CODE-BLOCK-color: #f8f8f8; /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: rgb(43, 43, 43, 0.25); /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-INLINE-color: rgb( 145, 132, 121 ); /* text color of inline code */
+ --CODE-INLINE-BG-color: rgba(45, 45, 45, 0.25); /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgba( 0, 0, 0, 0 ); /* border color of inline code */
+
+ --BROWSER-theme: dark; /* name of the theme for browser scrollbars of the main section */
+ --MERMAID-theme: dark; /* name of the default Mermaid theme for this variant, can be overridden in config.toml */
+ --SWAGGER-theme: dark; /* name of the default Swagger theme for this variant, can be overridden in config.toml */
+
+ --MENU-HOME-LINK-color: rgba(0,0,0,0.5); /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: rgba(0,0,0,0.25); /* hoverd home button color if configured */
+
+ --MENU-SEARCH-color: rgba(224, 224, 224, 1.0); /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba(50, 50, 50, 0.8); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: rgba(255,255,255,0.25); /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: #2b2b2b; /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */
+ --MENU-SECTIONS-ACTIVE-BG-color: #323232; /* background color of the active menu section */
+ --MENU-SECTIONS-LINK-color: #bababa; /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: #ffffff; /* hoverd link color of menu topics */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgb( 145, 132, 121 ); /* text color of the displayed menu topic */
+ --MENU-SECTION-HR-color: #606060; /* separator color of menu footer */
+
+ --BOX-CAPTION-color: rgba( 240, 240, 240, 1 ); /* text color of colored box titles */
+ --BOX-BG-color: rgba( 20, 20, 20, 1 ); /* background color of colored boxes */
+ --BOX-TEXT-color: #e0e0e0; /* text color of colored box content */
+ --BOX-BLUE-color: rgb( 120, 133, 145 ); /* background color of blue boxes */
+ --BOX-ORANGE-color: #bb8550; /* background color of orange boxes */
+}
+
+/* I use inline code in some titles, but I don't want it to be rendered like
+ it is elsewhere */
+h2 code {
+ font-size: unset;
+ font-weight: unset;
+ color: unset;
+ background-color: unset;
+}
+
+nav code {
+ font-size: unset;
+ font-weight: unset;
+ color: unset;
+ background-color: unset;
+}
diff --git a/docs/static/css/theme-gomplate-light.css b/docs/static/css/theme-gomplate-light.css
new file mode 100644
index 00000000..fb15e2b1
--- /dev/null
+++ b/docs/static/css/theme-gomplate-light.css
@@ -0,0 +1,61 @@
+@import "chroma-gomplate-light.css";
+
+:root {
+ --PRIMARY-color: rgb( 145, 132, 121 ); /* brand primary color */
+ --SECONDARY-color: rgb( 120, 133, 145 ); /* brand secondary color */
+ --ACCENT-color: #bb8550; /* brand accent color, used for search highlights */
+
+ --MAIN-LINK-HOVER-color: #202891; /* hoverd link color of content */
+ --MAIN-BG-color: #ffffff; /* background color of content */
+ --MAIN-TEXT-color: #101010; /* text color of content and h1 titles */
+ --MAIN-TITLES-TEXT-color: #4a4a4a; /* text color of h2-h6 titles and transparent box titles */
+
+ --CODE-BLOCK-color: #000000; /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: #f8f8f8; /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BORDER-color: #d8d8d8; /* border color of block code */
+
+ --CODE-INLINE-color: #5e5e5e; /* text color of inline code */
+ --CODE-INLINE-BG-color: #fffae9; /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgb( 0, 0, 0, 0 ); /* border color of inline code */
+
+ --BROWSER-theme: light; /* name of the theme for browser scrollbars of the main section */
+ --MERMAID-theme: default; /* name of the default Mermaid theme for this variant, can be overridden in config.toml */
+ --SWAGGER-theme: light; /* name of the default Swagger theme for this variant, can be overridden in config.toml */
+
+ --MENU-HOME-LINK-color: #404040; /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: #000000; /* hoverd home button color if configured */
+
+ --MENU-SEARCH-color: #404040; /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba(255,255,255, 0.2); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: transparent; /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: #f4f4f4; /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */
+ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 255, 255, 255, .2 ); /* background color of the active menu section */
+ --MENU-SECTIONS-LINK-color: #323232; /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: #rgba( 255, 255, 255, .2 ); /* hoverd link color of menu topics */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: #323232; /* text color of the displayed menu topic */
+ --MENU-SECTION-HR-color: #606060; /* separator color of menu footer */
+
+ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* text color of colored box titles */
+ --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* background color of colored boxes */
+ --BOX-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of colored box content */
+ --BOX-BLUE-color: rgb( 120, 133, 145 ); /* background color of blue boxes */
+ --BOX-ORANGE-color: #bb8550; /* background color of orange boxes */
+}
+
+/* I use inline code in some titles, but I don't want it to be rendered like
+ it is elsewhere */
+ h2 code {
+ font-size: unset;
+ font-weight: unset;
+ color: unset;
+ background-color: unset;
+ }
+
+ nav code {
+ font-size: unset;
+ font-weight: unset;
+ color: unset;
+ background-color: unset;
+ }
+ \ No newline at end of file
diff --git a/docs/static/js/application.js b/docs/static/js/application.js
deleted file mode 100644
index 6245bb4f..00000000
--- a/docs/static/js/application.js
+++ /dev/null
@@ -1,1577 +0,0 @@
-function pegasus(t, e) {
- return (
- (e = new XMLHttpRequest()),
- e.open("GET", t),
- (t = []),
- (e.onreadystatechange = e.then = function (n, o, i, r) {
- if (
- (n && n.call && (t = [, n, o]),
- 4 == e.readyState && (i = t[0 | (e.status / 200)]))
- ) {
- try {
- r = JSON.parse(e.responseText);
- } catch (s) {
- r = null;
- }
- i(r, e);
- }
- }),
- e.send(),
- e
- );
-}
-if (
- ("document" in self &&
- ("classList" in document.createElement("_")
- ? !(function () {
- "use strict";
- var t = document.createElement("_");
- if ((t.classList.add("c1", "c2"), !t.classList.contains("c2"))) {
- var e = function (t) {
- var e = DOMTokenList.prototype[t];
- DOMTokenList.prototype[t] = function (t) {
- var n,
- o = arguments.length;
- for (n = 0; o > n; n++) (t = arguments[n]), e.call(this, t);
- };
- };
- e("add"), e("remove");
- }
- if ((t.classList.toggle("c3", !1), t.classList.contains("c3"))) {
- var n = DOMTokenList.prototype.toggle;
- DOMTokenList.prototype.toggle = function (t, e) {
- return 1 in arguments && !this.contains(t) == !e
- ? e
- : n.call(this, t);
- };
- }
- t = null;
- })()
- : !(function (t) {
- "use strict";
- if ("Element" in t) {
- var e = "classList",
- n = "prototype",
- o = t.Element[n],
- i = Object,
- r =
- String[n].trim ||
- function () {
- return this.replace(/^\s+|\s+$/g, "");
- },
- s =
- Array[n].indexOf ||
- function (t) {
- for (var e = 0, n = this.length; n > e; e++)
- if (e in this && this[e] === t) return e;
- return -1;
- },
- a = function (t, e) {
- (this.name = t),
- (this.code = DOMException[t]),
- (this.message = e);
- },
- c = function (t, e) {
- if ("" === e)
- throw new a(
- "SYNTAX_ERR",
- "An invalid or illegal string was specified"
- );
- if (/\s/.test(e))
- throw new a(
- "INVALID_CHARACTER_ERR",
- "String contains an invalid character"
- );
- return s.call(t, e);
- },
- l = function (t) {
- for (
- var e = r.call(t.getAttribute("class") || ""),
- n = e ? e.split(/\s+/) : [],
- o = 0,
- i = n.length;
- i > o;
- o++
- )
- this.push(n[o]);
- this._updateClassName = function () {
- t.setAttribute("class", this.toString());
- };
- },
- u = (l[n] = []),
- d = function () {
- return new l(this);
- };
- if (
- ((a[n] = Error[n]),
- (u.item = function (t) {
- return this[t] || null;
- }),
- (u.contains = function (t) {
- return (t += ""), -1 !== c(this, t);
- }),
- (u.add = function () {
- var t,
- e = arguments,
- n = 0,
- o = e.length,
- i = !1;
- do
- (t = e[n] + ""),
- -1 === c(this, t) && (this.push(t), (i = !0));
- while (++n < o);
- i && this._updateClassName();
- }),
- (u.remove = function () {
- var t,
- e,
- n = arguments,
- o = 0,
- i = n.length,
- r = !1;
- do
- for (t = n[o] + "", e = c(this, t); -1 !== e;)
- this.splice(e, 1), (r = !0), (e = c(this, t));
- while (++o < i);
- r && this._updateClassName();
- }),
- (u.toggle = function (t, e) {
- t += "";
- var n = this.contains(t),
- o = n ? e !== !0 && "remove" : e !== !1 && "add";
- return o && this[o](t), e === !0 || e === !1 ? e : !n;
- }),
- (u.toString = function () {
- return this.join(" ");
- }),
- i.defineProperty)
- ) {
- var h = { get: d, enumerable: !0, configurable: !0 };
- try {
- i.defineProperty(o, e, h);
- } catch (f) {
- -2146823252 === f.number &&
- ((h.enumerable = !1), i.defineProperty(o, e, h));
- }
- } else i[n].__defineGetter__ && o.__defineGetter__(e, d);
- }
- })(self)),
- (function () {
- "use strict";
- function t(e, o) {
- function i(t, e) {
- return function () {
- return t.apply(e, arguments);
- };
- }
- var r;
- if (
- ((o = o || {}),
- (this.trackingClick = !1),
- (this.trackingClickStart = 0),
- (this.targetElement = null),
- (this.touchStartX = 0),
- (this.touchStartY = 0),
- (this.lastTouchIdentifier = 0),
- (this.touchBoundary = o.touchBoundary || 10),
- (this.layer = e),
- (this.tapDelay = o.tapDelay || 200),
- (this.tapTimeout = o.tapTimeout || 700),
- !t.notNeeded(e))
- ) {
- for (
- var s = [
- "onMouse",
- "onClick",
- "onTouchStart",
- "onTouchMove",
- "onTouchEnd",
- "onTouchCancel"
- ],
- a = this,
- c = 0,
- l = s.length;
- l > c;
- c++
- )
- a[s[c]] = i(a[s[c]], a);
- n &&
- (e.addEventListener("mouseover", this.onMouse, !0),
- e.addEventListener("mousedown", this.onMouse, !0),
- e.addEventListener("mouseup", this.onMouse, !0)),
- e.addEventListener("click", this.onClick, !0),
- e.addEventListener("touchstart", this.onTouchStart, !1),
- e.addEventListener("touchmove", this.onTouchMove, !1),
- e.addEventListener("touchend", this.onTouchEnd, !1),
- e.addEventListener("touchcancel", this.onTouchCancel, !1),
- Event.prototype.stopImmediatePropagation ||
- ((e.removeEventListener = function (t, n, o) {
- var i = Node.prototype.removeEventListener;
- "click" === t
- ? i.call(e, t, n.hijacked || n, o)
- : i.call(e, t, n, o);
- }),
- (e.addEventListener = function (t, n, o) {
- var i = Node.prototype.addEventListener;
- "click" === t
- ? i.call(
- e,
- t,
- n.hijacked ||
- (n.hijacked = function (t) {
- t.propagationStopped || n(t);
- }),
- o
- )
- : i.call(e, t, n, o);
- })),
- "function" == typeof e.onclick &&
- ((r = e.onclick),
- e.addEventListener(
- "click",
- function (t) {
- r(t);
- },
- !1
- ),
- (e.onclick = null));
- }
- }
- var e = navigator.userAgent.indexOf("Windows Phone") >= 0,
- n = navigator.userAgent.indexOf("Android") > 0 && !e,
- o = /iP(ad|hone|od)/.test(navigator.userAgent) && !e,
- i = o && /OS 4_\d(_\d)?/.test(navigator.userAgent),
- r = o && /OS [6-7]_\d/.test(navigator.userAgent),
- s = navigator.userAgent.indexOf("BB10") > 0;
- (t.prototype.needsClick = function (t) {
- switch (t.nodeName.toLowerCase()) {
- case "button":
- case "select":
- case "textarea":
- if (t.disabled) return !0;
- break;
- case "input":
- if ((o && "file" === t.type) || t.disabled) return !0;
- break;
- case "label":
- case "iframe":
- case "video":
- return !0;
- }
- return /\bneedsclick\b/.test(t.className);
- }),
- (t.prototype.needsFocus = function (t) {
- switch (t.nodeName.toLowerCase()) {
- case "textarea":
- return !0;
- case "select":
- return !n;
- case "input":
- switch (t.type) {
- case "button":
- case "checkbox":
- case "file":
- case "image":
- case "radio":
- case "submit":
- return !1;
- }
- return !t.disabled && !t.readOnly;
- default:
- return /\bneedsfocus\b/.test(t.className);
- }
- }),
- (t.prototype.sendClick = function (t, e) {
- var n, o;
- document.activeElement &&
- document.activeElement !== t &&
- document.activeElement.blur(),
- (o = e.changedTouches[0]),
- (n = document.createEvent("MouseEvents")),
- n.initMouseEvent(
- this.determineEventType(t),
- !0,
- !0,
- window,
- 1,
- o.screenX,
- o.screenY,
- o.clientX,
- o.clientY,
- !1,
- !1,
- !1,
- !1,
- 0,
- null
- ),
- (n.forwardedTouchEvent = !0),
- t.dispatchEvent(n);
- }),
- (t.prototype.determineEventType = function (t) {
- return n && "select" === t.tagName.toLowerCase()
- ? "mousedown"
- : "click";
- }),
- (t.prototype.focus = function (t) {
- var e;
- o &&
- t.setSelectionRange &&
- 0 !== t.type.indexOf("date") &&
- "time" !== t.type &&
- "month" !== t.type
- ? ((e = t.value.length), t.setSelectionRange(e, e))
- : t.focus();
- }),
- (t.prototype.updateScrollParent = function (t) {
- var e, n;
- if (((e = t.fastClickScrollParent), !e || !e.contains(t))) {
- n = t;
- do {
- if (n.scrollHeight > n.offsetHeight) {
- (e = n), (t.fastClickScrollParent = n);
- break;
- }
- n = n.parentElement;
- } while (n);
- }
- e && (e.fastClickLastScrollTop = e.scrollTop);
- }),
- (t.prototype.getTargetElementFromEventTarget = function (t) {
- return t.nodeType === Node.TEXT_NODE ? t.parentNode : t;
- }),
- (t.prototype.onTouchStart = function (t) {
- var e, n, r;
- if (t.targetTouches.length > 1) return !0;
- if (
- ((e = this.getTargetElementFromEventTarget(t.target)),
- (n = t.targetTouches[0]),
- o)
- ) {
- if (((r = window.getSelection()), r.rangeCount && !r.isCollapsed))
- return !0;
- if (!i) {
- if (n.identifier && n.identifier === this.lastTouchIdentifier)
- return t.preventDefault(), !1;
- (this.lastTouchIdentifier = n.identifier),
- this.updateScrollParent(e);
- }
- }
- return (
- (this.trackingClick = !0),
- (this.trackingClickStart = t.timeStamp),
- (this.targetElement = e),
- (this.touchStartX = n.pageX),
- (this.touchStartY = n.pageY),
- t.timeStamp - this.lastClickTime < this.tapDelay &&
- t.preventDefault(),
- !0
- );
- }),
- (t.prototype.touchHasMoved = function (t) {
- var e = t.changedTouches[0],
- n = this.touchBoundary;
- return Math.abs(e.pageX - this.touchStartX) > n ||
- Math.abs(e.pageY - this.touchStartY) > n
- ? !0
- : !1;
- }),
- (t.prototype.onTouchMove = function (t) {
- return this.trackingClick
- ? ((this.targetElement !==
- this.getTargetElementFromEventTarget(t.target) ||
- this.touchHasMoved(t)) &&
- ((this.trackingClick = !1), (this.targetElement = null)),
- !0)
- : !0;
- }),
- (t.prototype.findControl = function (t) {
- return void 0 !== t.control
- ? t.control
- : t.htmlFor
- ? document.getElementById(t.htmlFor)
- : t.querySelector(
- "button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea"
- );
- }),
- (t.prototype.onTouchEnd = function (t) {
- var e,
- s,
- a,
- c,
- l,
- u = this.targetElement;
- if (!this.trackingClick) return !0;
- if (t.timeStamp - this.lastClickTime < this.tapDelay)
- return (this.cancelNextClick = !0), !0;
- if (t.timeStamp - this.trackingClickStart > this.tapTimeout) return !0;
- if (
- ((this.cancelNextClick = !1),
- (this.lastClickTime = t.timeStamp),
- (s = this.trackingClickStart),
- (this.trackingClick = !1),
- (this.trackingClickStart = 0),
- r &&
- ((l = t.changedTouches[0]),
- (u =
- document.elementFromPoint(
- l.pageX - window.pageXOffset,
- l.pageY - window.pageYOffset
- ) || u),
- (u.fastClickScrollParent = this.targetElement.fastClickScrollParent)),
- (a = u.tagName.toLowerCase()),
- "label" === a)
- ) {
- if ((e = this.findControl(u))) {
- if ((this.focus(u), n)) return !1;
- u = e;
- }
- } else if (this.needsFocus(u))
- return t.timeStamp - s > 100 ||
- (o && window.top !== window && "input" === a)
- ? ((this.targetElement = null), !1)
- : (this.focus(u),
- this.sendClick(u, t),
- (o && "select" === a) ||
- ((this.targetElement = null), t.preventDefault()),
- !1);
- return o &&
- !i &&
- ((c = u.fastClickScrollParent),
- c && c.fastClickLastScrollTop !== c.scrollTop)
- ? !0
- : (this.needsClick(u) || (t.preventDefault(), this.sendClick(u, t)),
- !1);
- }),
- (t.prototype.onTouchCancel = function () {
- (this.trackingClick = !1), (this.targetElement = null);
- }),
- (t.prototype.onMouse = function (t) {
- return this.targetElement
- ? t.forwardedTouchEvent
- ? !0
- : t.cancelable &&
- (!this.needsClick(this.targetElement) || this.cancelNextClick)
- ? (t.stopImmediatePropagation
- ? t.stopImmediatePropagation()
- : (t.propagationStopped = !0),
- t.stopPropagation(),
- t.preventDefault(),
- !1)
- : !0
- : !0;
- }),
- (t.prototype.onClick = function (t) {
- var e;
- return this.trackingClick
- ? ((this.targetElement = null), (this.trackingClick = !1), !0)
- : "submit" === t.target.type && 0 === t.detail
- ? !0
- : ((e = this.onMouse(t)), e || (this.targetElement = null), e);
- }),
- (t.prototype.destroy = function () {
- var t = this.layer;
- n &&
- (t.removeEventListener("mouseover", this.onMouse, !0),
- t.removeEventListener("mousedown", this.onMouse, !0),
- t.removeEventListener("mouseup", this.onMouse, !0)),
- t.removeEventListener("click", this.onClick, !0),
- t.removeEventListener("touchstart", this.onTouchStart, !1),
- t.removeEventListener("touchmove", this.onTouchMove, !1),
- t.removeEventListener("touchend", this.onTouchEnd, !1),
- t.removeEventListener("touchcancel", this.onTouchCancel, !1);
- }),
- (t.notNeeded = function (t) {
- var e, o, i, r;
- if ("undefined" == typeof window.ontouchstart) return !0;
- if ((o = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1])) {
- if (!n) return !0;
- if ((e = document.querySelector("meta[name=viewport]"))) {
- if (-1 !== e.content.indexOf("user-scalable=no")) return !0;
- if (
- o > 31 &&
- document.documentElement.scrollWidth <= window.outerWidth
- )
- return !0;
- }
- }
- if (
- s &&
- ((i = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/)),
- i[1] >= 10 &&
- i[2] >= 3 &&
- (e = document.querySelector("meta[name=viewport]")))
- ) {
- if (-1 !== e.content.indexOf("user-scalable=no")) return !0;
- if (document.documentElement.scrollWidth <= window.outerWidth)
- return !0;
- }
- return "none" === t.style.msTouchAction ||
- "manipulation" === t.style.touchAction
- ? !0
- : ((r = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1]),
- r >= 27 &&
- ((e = document.querySelector("meta[name=viewport]")),
- e &&
- (-1 !== e.content.indexOf("user-scalable=no") ||
- document.documentElement.scrollWidth <= window.outerWidth))
- ? !0
- : "none" === t.style.touchAction ||
- "manipulation" === t.style.touchAction
- ? !0
- : !1);
- }),
- (t.attach = function (e, n) {
- return new t(e, n);
- }),
- "function" == typeof define && "object" == typeof define.amd && define.amd
- ? define(function () {
- return t;
- })
- : "undefined" != typeof module && module.exports
- ? ((module.exports = t.attach), (module.exports.FastClick = t))
- : (window.FastClick = t);
- })(),
- (function () {
- var t = function (e) {
- var n = new t.Index();
- return (
- n.pipeline.add(t.trimmer, t.stopWordFilter, t.stemmer),
- e && e.call(n, n),
- n
- );
- };
- (t.version = "0.6.0"),
- (t.utils = {}),
- (t.utils.warn = (function (t) {
- return function (e) {
- t.console && console.warn && console.warn(e);
- };
- })(this)),
- (t.utils.asString = function (t) {
- return void 0 === t || null === t ? "" : t.toString();
- }),
- (t.EventEmitter = function () {
- this.events = {};
- }),
- (t.EventEmitter.prototype.addListener = function () {
- var t = Array.prototype.slice.call(arguments),
- e = t.pop(),
- n = t;
- if ("function" != typeof e)
- throw new TypeError("last argument must be a function");
- n.forEach(function (t) {
- this.hasHandler(t) || (this.events[t] = []), this.events[t].push(e);
- }, this);
- }),
- (t.EventEmitter.prototype.removeListener = function (t, e) {
- if (this.hasHandler(t)) {
- var n = this.events[t].indexOf(e);
- this.events[t].splice(n, 1),
- this.events[t].length || delete this.events[t];
- }
- }),
- (t.EventEmitter.prototype.emit = function (t) {
- if (this.hasHandler(t)) {
- var e = Array.prototype.slice.call(arguments, 1);
- this.events[t].forEach(function (t) {
- t.apply(void 0, e);
- });
- }
- }),
- (t.EventEmitter.prototype.hasHandler = function (t) {
- return t in this.events;
- }),
- (t.tokenizer = function (e) {
- return arguments.length && null != e && void 0 != e
- ? Array.isArray(e)
- ? e.map(function (e) {
- return t.utils.asString(e).toLowerCase();
- })
- : e
- .toString()
- .trim()
- .toLowerCase()
- .split(t.tokenizer.seperator)
- : [];
- }),
- (t.tokenizer.seperator = /[\s\-]+/),
- (t.Pipeline = function () {
- this._stack = [];
- }),
- (t.Pipeline.registeredFunctions = {}),
- (t.Pipeline.registerFunction = function (e, n) {
- n in this.registeredFunctions &&
- t.utils.warn("Overwriting existing registered function: " + n),
- (e.label = n),
- (t.Pipeline.registeredFunctions[e.label] = e);
- }),
- (t.Pipeline.warnIfFunctionNotRegistered = function (e) {
- var n = e.label && e.label in this.registeredFunctions;
- n ||
- t.utils.warn(
- "Function is not registered with pipeline. This may cause problems when serialising the index.\n",
- e
- );
- }),
- (t.Pipeline.load = function (e) {
- var n = new t.Pipeline();
- return (
- e.forEach(function (e) {
- var o = t.Pipeline.registeredFunctions[e];
- if (!o) throw new Error("Cannot load un-registered function: " + e);
- n.add(o);
- }),
- n
- );
- }),
- (t.Pipeline.prototype.add = function () {
- var e = Array.prototype.slice.call(arguments);
- e.forEach(function (e) {
- t.Pipeline.warnIfFunctionNotRegistered(e), this._stack.push(e);
- }, this);
- }),
- (t.Pipeline.prototype.after = function (e, n) {
- t.Pipeline.warnIfFunctionNotRegistered(n);
- var o = this._stack.indexOf(e);
- if (-1 == o) throw new Error("Cannot find existingFn");
- (o += 1), this._stack.splice(o, 0, n);
- }),
- (t.Pipeline.prototype.before = function (e, n) {
- t.Pipeline.warnIfFunctionNotRegistered(n);
- var o = this._stack.indexOf(e);
- if (-1 == o) throw new Error("Cannot find existingFn");
- this._stack.splice(o, 0, n);
- }),
- (t.Pipeline.prototype.remove = function (t) {
- var e = this._stack.indexOf(t);
- -1 != e && this._stack.splice(e, 1);
- }),
- (t.Pipeline.prototype.run = function (t) {
- for (
- var e = [], n = t.length, o = this._stack.length, i = 0;
- n > i;
- i++
- ) {
- for (
- var r = t[i], s = 0;
- o > s && ((r = this._stack[s](r, i, t)), void 0 !== r && "" !== r);
- s++
- );
- void 0 !== r && "" !== r && e.push(r);
- }
- return e;
- }),
- (t.Pipeline.prototype.reset = function () {
- this._stack = [];
- }),
- (t.Pipeline.prototype.toJSON = function () {
- return this._stack.map(function (e) {
- return t.Pipeline.warnIfFunctionNotRegistered(e), e.label;
- });
- }),
- (t.Vector = function () {
- (this._magnitude = null), (this.list = void 0), (this.length = 0);
- }),
- (t.Vector.Node = function (t, e, n) {
- (this.idx = t), (this.val = e), (this.next = n);
- }),
- (t.Vector.prototype.insert = function (e, n) {
- this._magnitude = void 0;
- var o = this.list;
- if (!o) return (this.list = new t.Vector.Node(e, n, o)), this.length++;
- if (e < o.idx)
- return (this.list = new t.Vector.Node(e, n, o)), this.length++;
- for (var i = o, r = o.next; void 0 != r;) {
- if (e < r.idx)
- return (i.next = new t.Vector.Node(e, n, r)), this.length++;
- (i = r), (r = r.next);
- }
- return (i.next = new t.Vector.Node(e, n, r)), this.length++;
- }),
- (t.Vector.prototype.magnitude = function () {
- if (this._magnitude) return this._magnitude;
- for (var t, e = this.list, n = 0; e;)
- (t = e.val), (n += t * t), (e = e.next);
- return (this._magnitude = Math.sqrt(n));
- }),
- (t.Vector.prototype.dot = function (t) {
- for (var e = this.list, n = t.list, o = 0; e && n;)
- e.idx < n.idx
- ? (e = e.next)
- : e.idx > n.idx
- ? (n = n.next)
- : ((o += e.val * n.val), (e = e.next), (n = n.next));
- return o;
- }),
- (t.Vector.prototype.similarity = function (t) {
- return this.dot(t) / (this.magnitude() * t.magnitude());
- }),
- (t.SortedSet = function () {
- (this.length = 0), (this.elements = []);
- }),
- (t.SortedSet.load = function (t) {
- var e = new this();
- return (e.elements = t), (e.length = t.length), e;
- }),
- (t.SortedSet.prototype.add = function () {
- var t, e;
- for (t = 0; t < arguments.length; t++)
- (e = arguments[t]),
- ~this.indexOf(e) || this.elements.splice(this.locationFor(e), 0, e);
- this.length = this.elements.length;
- }),
- (t.SortedSet.prototype.toArray = function () {
- return this.elements.slice();
- }),
- (t.SortedSet.prototype.map = function (t, e) {
- return this.elements.map(t, e);
- }),
- (t.SortedSet.prototype.forEach = function (t, e) {
- return this.elements.forEach(t, e);
- }),
- (t.SortedSet.prototype.indexOf = function (t) {
- for (
- var e = 0,
- n = this.elements.length,
- o = n - e,
- i = e + Math.floor(o / 2),
- r = this.elements[i];
- o > 1;
-
- ) {
- if (r === t) return i;
- t > r && (e = i),
- r > t && (n = i),
- (o = n - e),
- (i = e + Math.floor(o / 2)),
- (r = this.elements[i]);
- }
- return r === t ? i : -1;
- }),
- (t.SortedSet.prototype.locationFor = function (t) {
- for (
- var e = 0,
- n = this.elements.length,
- o = n - e,
- i = e + Math.floor(o / 2),
- r = this.elements[i];
- o > 1;
-
- )
- t > r && (e = i),
- r > t && (n = i),
- (o = n - e),
- (i = e + Math.floor(o / 2)),
- (r = this.elements[i]);
- return r > t ? i : t > r ? i + 1 : void 0;
- }),
- (t.SortedSet.prototype.intersect = function (e) {
- for (
- var n = new t.SortedSet(),
- o = 0,
- i = 0,
- r = this.length,
- s = e.length,
- a = this.elements,
- c = e.elements;
- ;
-
- ) {
- if (o > r - 1 || i > s - 1) break;
- a[o] !== c[i]
- ? a[o] < c[i]
- ? o++
- : a[o] > c[i] && i++
- : (n.add(a[o]), o++ , i++);
- }
- return n;
- }),
- (t.SortedSet.prototype.clone = function () {
- var e = new t.SortedSet();
- return (e.elements = this.toArray()), (e.length = e.elements.length), e;
- }),
- (t.SortedSet.prototype.union = function (t) {
- var e, n, o;
- return (
- this.length >= t.length
- ? ((e = this), (n = t))
- : ((e = t), (n = this)),
- (o = e.clone()),
- o.add.apply(o, n.toArray()),
- o
- );
- }),
- (t.SortedSet.prototype.toJSON = function () {
- return this.toArray();
- }),
- (t.Index = function () {
- (this._fields = []),
- (this._ref = "id"),
- (this.pipeline = new t.Pipeline()),
- (this.documentStore = new t.Store()),
- (this.tokenStore = new t.TokenStore()),
- (this.corpusTokens = new t.SortedSet()),
- (this.eventEmitter = new t.EventEmitter()),
- (this._idfCache = {}),
- this.on(
- "add",
- "remove",
- "update",
- function () {
- this._idfCache = {};
- }.bind(this)
- );
- }),
- (t.Index.prototype.on = function () {
- var t = Array.prototype.slice.call(arguments);
- return this.eventEmitter.addListener.apply(this.eventEmitter, t);
- }),
- (t.Index.prototype.off = function (t, e) {
- return this.eventEmitter.removeListener(t, e);
- }),
- (t.Index.load = function (e) {
- e.version !== t.version &&
- t.utils.warn(
- "version mismatch: current " + t.version + " importing " + e.version
- );
- var n = new this();
- return (
- (n._fields = e.fields),
- (n._ref = e.ref),
- (n.documentStore = t.Store.load(e.documentStore)),
- (n.tokenStore = t.TokenStore.load(e.tokenStore)),
- (n.corpusTokens = t.SortedSet.load(e.corpusTokens)),
- (n.pipeline = t.Pipeline.load(e.pipeline)),
- n
- );
- }),
- (t.Index.prototype.field = function (t, e) {
- var e = e || {},
- n = { name: t, boost: e.boost || 1 };
- return this._fields.push(n), this;
- }),
- (t.Index.prototype.ref = function (t) {
- return (this._ref = t), this;
- }),
- (t.Index.prototype.add = function (e, n) {
- var o = {},
- i = new t.SortedSet(),
- r = e[this._ref],
- n = void 0 === n ? !0 : n;
- this._fields.forEach(function (n) {
- var r = this.pipeline.run(t.tokenizer(e[n.name]));
- (o[n.name] = r), t.SortedSet.prototype.add.apply(i, r);
- }, this),
- this.documentStore.set(r, i),
- t.SortedSet.prototype.add.apply(this.corpusTokens, i.toArray());
- for (var s = 0; s < i.length; s++) {
- var a = i.elements[s],
- c = this._fields.reduce(function (t, e) {
- var n = o[e.name].length;
- if (!n) return t;
- var i = o[e.name].filter(function (t) {
- return t === a;
- }).length;
- return t + (i / n) * e.boost;
- }, 0);
- this.tokenStore.add(a, { ref: r, tf: c });
- }
- n && this.eventEmitter.emit("add", e, this);
- }),
- (t.Index.prototype.remove = function (t, e) {
- var n = t[this._ref],
- e = void 0 === e ? !0 : e;
- if (this.documentStore.has(n)) {
- var o = this.documentStore.get(n);
- this.documentStore.remove(n),
- o.forEach(function (t) {
- this.tokenStore.remove(t, n);
- }, this),
- e && this.eventEmitter.emit("remove", t, this);
- }
- }),
- (t.Index.prototype.update = function (t, e) {
- var e = void 0 === e ? !0 : e;
- this.remove(t, !1),
- this.add(t, !1),
- e && this.eventEmitter.emit("update", t, this);
- }),
- (t.Index.prototype.idf = function (t) {
- var e = "@" + t;
- if (Object.prototype.hasOwnProperty.call(this._idfCache, e))
- return this._idfCache[e];
- var n = this.tokenStore.count(t),
- o = 1;
- return (
- n > 0 && (o = 1 + Math.log(this.documentStore.length / n)),
- (this._idfCache[e] = o)
- );
- }),
- (t.Index.prototype.search = function (e) {
- var n = this.pipeline.run(t.tokenizer(e)),
- o = new t.Vector(),
- i = [],
- r = this._fields.reduce(function (t, e) {
- return t + e.boost;
- }, 0),
- s = n.some(function (t) {
- return this.tokenStore.has(t);
- }, this);
- if (!s) return [];
- n.forEach(function (e, n, s) {
- var a = (1 / s.length) * this._fields.length * r,
- c = this,
- l = this.tokenStore.expand(e).reduce(function (n, i) {
- var r = c.corpusTokens.indexOf(i),
- s = c.idf(i),
- l = 1,
- u = new t.SortedSet();
- if (i !== e) {
- var d = Math.max(3, i.length - e.length);
- l = 1 / Math.log(d);
- }
- r > -1 && o.insert(r, a * s * l);
- for (
- var h = c.tokenStore.get(i),
- f = Object.keys(h),
- p = f.length,
- m = 0;
- p > m;
- m++
- )
- u.add(h[f[m]].ref);
- return n.union(u);
- }, new t.SortedSet());
- i.push(l);
- }, this);
- var a = i.reduce(function (t, e) {
- return t.intersect(e);
- });
- return a
- .map(function (t) {
- return { ref: t, score: o.similarity(this.documentVector(t)) };
- }, this)
- .sort(function (t, e) {
- return e.score - t.score;
- });
- }),
- (t.Index.prototype.documentVector = function (e) {
- for (
- var n = this.documentStore.get(e),
- o = n.length,
- i = new t.Vector(),
- r = 0;
- o > r;
- r++
- ) {
- var s = n.elements[r],
- a = this.tokenStore.get(s)[e].tf,
- c = this.idf(s);
- i.insert(this.corpusTokens.indexOf(s), a * c);
- }
- return i;
- }),
- (t.Index.prototype.toJSON = function () {
- return {
- version: t.version,
- fields: this._fields,
- ref: this._ref,
- documentStore: this.documentStore.toJSON(),
- tokenStore: this.tokenStore.toJSON(),
- corpusTokens: this.corpusTokens.toJSON(),
- pipeline: this.pipeline.toJSON()
- };
- }),
- (t.Index.prototype.use = function (t) {
- var e = Array.prototype.slice.call(arguments, 1);
- e.unshift(this), t.apply(this, e);
- }),
- (t.Store = function () {
- (this.store = {}), (this.length = 0);
- }),
- (t.Store.load = function (e) {
- var n = new this();
- return (
- (n.length = e.length),
- (n.store = Object.keys(e.store).reduce(function (n, o) {
- return (n[o] = t.SortedSet.load(e.store[o])), n;
- }, {})),
- n
- );
- }),
- (t.Store.prototype.set = function (t, e) {
- this.has(t) || this.length++ , (this.store[t] = e);
- }),
- (t.Store.prototype.get = function (t) {
- return this.store[t];
- }),
- (t.Store.prototype.has = function (t) {
- return t in this.store;
- }),
- (t.Store.prototype.remove = function (t) {
- this.has(t) && (delete this.store[t], this.length--);
- }),
- (t.Store.prototype.toJSON = function () {
- return { store: this.store, length: this.length };
- }),
- (t.stemmer = (function () {
- var t = {
- ational: "ate",
- tional: "tion",
- enci: "ence",
- anci: "ance",
- izer: "ize",
- bli: "ble",
- alli: "al",
- entli: "ent",
- eli: "e",
- ousli: "ous",
- ization: "ize",
- ation: "ate",
- ator: "ate",
- alism: "al",
- iveness: "ive",
- fulness: "ful",
- ousness: "ous",
- aliti: "al",
- iviti: "ive",
- biliti: "ble",
- logi: "log"
- },
- e = {
- icate: "ic",
- ative: "",
- alize: "al",
- iciti: "ic",
- ical: "ic",
- ful: "",
- ness: ""
- },
- n = "[^aeiou]",
- o = "[aeiouy]",
- i = n + "[^aeiouy]*",
- r = o + "[aeiou]*",
- s = "^(" + i + ")?" + r + i,
- a = "^(" + i + ")?" + r + i + "(" + r + ")?$",
- c = "^(" + i + ")?" + r + i + r + i,
- l = "^(" + i + ")?" + o,
- u = new RegExp(s),
- d = new RegExp(c),
- h = new RegExp(a),
- f = new RegExp(l),
- p = /^(.+?)(ss|i)es$/,
- m = /^(.+?)([^s])s$/,
- v = /^(.+?)eed$/,
- g = /^(.+?)(ed|ing)$/,
- y = /.$/,
- w = /(at|bl|iz)$/,
- S = new RegExp("([^aeiouylsz])\\1$"),
- k = new RegExp("^" + i + o + "[^aeiouwxy]$"),
- E = /^(.+?[^aeiou])y$/,
- x = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,
- b = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,
- T = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,
- C = /^(.+?)(s|t)(ion)$/,
- L = /^(.+?)e$/,
- _ = /ll$/,
- A = new RegExp("^" + i + o + "[^aeiouwxy]$"),
- O = function (n) {
- var o, i, r, s, a, c, l;
- if (n.length < 3) return n;
- if (
- ((r = n.substr(0, 1)),
- "y" == r && (n = r.toUpperCase() + n.substr(1)),
- (s = p),
- (a = m),
- s.test(n)
- ? (n = n.replace(s, "$1$2"))
- : a.test(n) && (n = n.replace(a, "$1$2")),
- (s = v),
- (a = g),
- s.test(n))
- ) {
- var O = s.exec(n);
- (s = u), s.test(O[1]) && ((s = y), (n = n.replace(s, "")));
- } else if (a.test(n)) {
- var O = a.exec(n);
- (o = O[1]),
- (a = f),
- a.test(o) &&
- ((n = o),
- (a = w),
- (c = S),
- (l = k),
- a.test(n)
- ? (n += "e")
- : c.test(n)
- ? ((s = y), (n = n.replace(s, "")))
- : l.test(n) && (n += "e"));
- }
- if (((s = E), s.test(n))) {
- var O = s.exec(n);
- (o = O[1]), (n = o + "i");
- }
- if (((s = x), s.test(n))) {
- var O = s.exec(n);
- (o = O[1]), (i = O[2]), (s = u), s.test(o) && (n = o + t[i]);
- }
- if (((s = b), s.test(n))) {
- var O = s.exec(n);
- (o = O[1]), (i = O[2]), (s = u), s.test(o) && (n = o + e[i]);
- }
- if (((s = T), (a = C), s.test(n))) {
- var O = s.exec(n);
- (o = O[1]), (s = d), s.test(o) && (n = o);
- } else if (a.test(n)) {
- var O = a.exec(n);
- (o = O[1] + O[2]), (a = d), a.test(o) && (n = o);
- }
- if (((s = L), s.test(n))) {
- var O = s.exec(n);
- (o = O[1]),
- (s = d),
- (a = h),
- (c = A),
- (s.test(o) || (a.test(o) && !c.test(o))) && (n = o);
- }
- return (
- (s = _),
- (a = d),
- s.test(n) && a.test(n) && ((s = y), (n = n.replace(s, ""))),
- "y" == r && (n = r.toLowerCase() + n.substr(1)),
- n
- );
- };
- return O;
- })()),
- t.Pipeline.registerFunction(t.stemmer, "stemmer"),
- (t.generateStopWordFilter = function (t) {
- var e = t.reduce(function (t, e) {
- return (t[e] = e), t;
- }, {});
- return function (t) {
- return t && e[t] !== t ? t : void 0;
- };
- }),
- (t.stopWordFilter = t.generateStopWordFilter([
- "a",
- "able",
- "about",
- "across",
- "after",
- "all",
- "almost",
- "also",
- "am",
- "among",
- "an",
- "and",
- "any",
- "are",
- "as",
- "at",
- "be",
- "because",
- "been",
- "but",
- "by",
- "can",
- "cannot",
- "could",
- "dear",
- "did",
- "do",
- "does",
- "either",
- "else",
- "ever",
- "every",
- "for",
- "from",
- "get",
- "got",
- "had",
- "has",
- "have",
- "he",
- "her",
- "hers",
- "him",
- "his",
- "how",
- "however",
- "i",
- "if",
- "in",
- "into",
- "is",
- "it",
- "its",
- "just",
- "least",
- "let",
- "like",
- "likely",
- "may",
- "me",
- "might",
- "most",
- "must",
- "my",
- "neither",
- "no",
- "nor",
- "not",
- "of",
- "off",
- "often",
- "on",
- "only",
- "or",
- "other",
- "our",
- "own",
- "rather",
- "said",
- "say",
- "says",
- "she",
- "should",
- "since",
- "so",
- "some",
- "than",
- "that",
- "the",
- "their",
- "them",
- "then",
- "there",
- "these",
- "they",
- "this",
- "tis",
- "to",
- "too",
- "twas",
- "us",
- "wants",
- "was",
- "we",
- "were",
- "what",
- "when",
- "where",
- "which",
- "while",
- "who",
- "whom",
- "why",
- "will",
- "with",
- "would",
- "yet",
- "you",
- "your"
- ])),
- t.Pipeline.registerFunction(t.stopWordFilter, "stopWordFilter"),
- (t.trimmer = function (t) {
- return t.replace(/^\W+/, "").replace(/\W+$/, "");
- }),
- t.Pipeline.registerFunction(t.trimmer, "trimmer"),
- (t.TokenStore = function () {
- (this.root = { docs: {} }), (this.length = 0);
- }),
- (t.TokenStore.load = function (t) {
- var e = new this();
- return (e.root = t.root), (e.length = t.length), e;
- }),
- (t.TokenStore.prototype.add = function (t, e, n) {
- var n = n || this.root,
- o = t.charAt(0),
- i = t.slice(1);
- return (
- o in n || (n[o] = { docs: {} }),
- 0 === i.length
- ? ((n[o].docs[e.ref] = e), void (this.length += 1))
- : this.add(i, e, n[o])
- );
- }),
- (t.TokenStore.prototype.has = function (t) {
- if (!t) return !1;
- for (var e = this.root, n = 0; n < t.length; n++) {
- if (!e[t.charAt(n)]) return !1;
- e = e[t.charAt(n)];
- }
- return !0;
- }),
- (t.TokenStore.prototype.getNode = function (t) {
- if (!t) return {};
- for (var e = this.root, n = 0; n < t.length; n++) {
- if (!e[t.charAt(n)]) return {};
- e = e[t.charAt(n)];
- }
- return e;
- }),
- (t.TokenStore.prototype.get = function (t, e) {
- return this.getNode(t, e).docs || {};
- }),
- (t.TokenStore.prototype.count = function (t, e) {
- return Object.keys(this.get(t, e)).length;
- }),
- (t.TokenStore.prototype.remove = function (t, e) {
- if (t) {
- for (var n = this.root, o = 0; o < t.length; o++) {
- if (!(t.charAt(o) in n)) return;
- n = n[t.charAt(o)];
- }
- delete n.docs[e];
- }
- }),
- (t.TokenStore.prototype.expand = function (t, e) {
- var n = this.getNode(t),
- o = n.docs || {},
- e = e || [];
- return (
- Object.keys(o).length && e.push(t),
- Object.keys(n).forEach(function (n) {
- "docs" !== n && e.concat(this.expand(t + n, e));
- }, this),
- e
- );
- }),
- (t.TokenStore.prototype.toJSON = function () {
- return { root: this.root, length: this.length };
- }),
- (function (t, e) {
- "function" == typeof define && define.amd
- ? define(e)
- : "object" == typeof exports
- ? (module.exports = e())
- : (t.lunr = e());
- })(this, function () {
- return t;
- });
- })(),
- (String.prototype.truncate = function (t) {
- if (this.length > t) {
- for (; " " != this[t] && --t > 0;);
- return this.substring(0, t) + "&hellip;";
- }
- return this;
- }),
- (HTMLElement.prototype.wrap = function (t) {
- t.length || (t = [t]);
- for (var e = t.length - 1; e >= 0; e--) {
- var n = e > 0 ? this.cloneNode(!0) : this,
- o = t[e],
- i = o.parentNode,
- r = o.nextSibling;
- n.appendChild(o), r ? i.insertBefore(n, r) : i.appendChild(n);
- }
- }),
- document.addEventListener("DOMContentLoaded", function () {
- "use strict";
- Modernizr.addTest("ios", function () {
- return !!navigator.userAgent.match(/(iPad|iPhone|iPod)/g);
- }),
- Modernizr.addTest("standalone", function () {
- return !!navigator.standalone;
- }),
- FastClick.attach(document.body);
- var t = document.getElementById("toggle-search"),
- e = (document.getElementById("reset-search"),
- document.querySelector(".drawer")),
- n = document.querySelectorAll(".anchor"),
- o = document.querySelector(".search .field"),
- i = document.querySelector(".query"),
- r = document.querySelector(".results .meta");
- Array.prototype.forEach.call(n, function (t) {
- t.querySelector("a").addEventListener("click", function () {
- (document.getElementById("toggle-drawer").checked = !1),
- document.body.classList.remove("toggle-drawer");
- });
- });
- var s = window.pageYOffset,
- a = function () {
- var t = window.pageYOffset + window.innerHeight,
- n = Math.max(0, window.innerHeight - e.offsetHeight);
- t > document.body.clientHeight - (96 - n)
- ? "absolute" != e.style.position &&
- ((e.style.position = "absolute"),
- (e.style.top = null),
- (e.style.bottom = 0))
- : e.offsetHeight < window.innerHeight
- ? "fixed" != e.style.position &&
- ((e.style.position = "fixed"),
- (e.style.top = 0),
- (e.style.bottom = null))
- : "fixed" != e.style.position
- ? t > e.offsetTop + e.offsetHeight
- ? ((e.style.position = "fixed"),
- (e.style.top = null),
- (e.style.bottom = "-96px"))
- : window.pageYOffset < e.offsetTop &&
- ((e.style.position = "fixed"),
- (e.style.top = 0),
- (e.style.bottom = null))
- : window.pageYOffset > s
- ? e.style.top &&
- ((e.style.position = "absolute"),
- (e.style.top = Math.max(0, s) + "px"),
- (e.style.bottom = null))
- : e.style.bottom &&
- ((e.style.position = "absolute"),
- (e.style.top = t - e.offsetHeight + "px"),
- (e.style.bottom = null)),
- (s = Math.max(0, window.pageYOffset));
- },
- c = function () {
- var t = document.querySelector(".main");
- window.removeEventListener("scroll", a),
- matchMedia("only screen and (max-width: 959px)").matches
- ? ((e.style.position = null),
- (e.style.top = null),
- (e.style.bottom = null))
- : e.offsetHeight + 96 < t.offsetHeight &&
- (window.addEventListener("scroll", a), a());
- };
- Modernizr.ios || (window.addEventListener("resize", c), c());
- var u = 0;
- t.addEventListener("click", function (t) {
- var e = document.body.classList,
- n = !matchMedia("only screen and (min-width: 960px)").matches;
- e.contains("locked")
- ? (e.remove("locked"),
- n &&
- setTimeout(function () {
- window.scrollTo(0, u);
- }, 100))
- : ((u = window.scrollY),
- n &&
- setTimeout(function () {
- window.scrollTo(0, 0);
- }, 400),
- setTimeout(
- function () {
- this.checked &&
- (n && e.add("locked"),
- setTimeout(function () {
- i.focus();
- }, 200));
- }.bind(this),
- 450
- ));
- }),
- o.addEventListener("touchstart", function () {
- i.focus();
- }),
- window.addEventListener("keyup", function (e) {
- var n = e.keyCode || e.which;
- 27 == n &&
- (i.blur(),
- document.body.classList.remove("toggle-search"),
- document.body.classList.remove("locked"),
- (t.checked = !1));
- });
- var d = document.getElementById("reset-search");
- d.addEventListener("click", function () {
- for (var t = document.querySelector(".results .list"); t.firstChild;)
- t.removeChild(t.firstChild);
- var e = document.querySelector(".bar.search");
- e.classList.remove("non-empty"),
- (r.innerHTML = ""),
- (i.value = ""),
- i.focus();
- });
- var h = document.querySelectorAll("h2");
- h = Array.prototype.map.call(h, function (t) {
- return t.offsetTop;
- });
- var f = null;
- document.addEventListener("scroll", function () {
- for (
- var t = window.scrollY + window.innerHeight / 3,
- e = h.length - 1,
- o = 0;
- e > o;
- o++
- )
- t < h[o + 1] && (e = o);
- e != f &&
- ((f = e),
- Array.prototype.forEach.call(n, function (t, e) {
- var n = t.querySelector("a");
- (e != f || n.classList.add("current")) &&
- n.classList.remove("current");
- }));
- });
- var p = document.querySelectorAll(".n + .p");
- Array.prototype.forEach.call(p, function (t) {
- var e = t.innerText || t.textContent;
- e && "(" == e[0] && t.previousSibling.classList.add("f");
- });
- var m = document.querySelectorAll("table");
- if (
- (Array.prototype.forEach.call(m, function (t) {
- var e = document.createElement("div");
- e.classList.add("data"), e.wrap(t);
- }),
- Modernizr.ios)
- ) {
- var v = document.querySelectorAll(".scrollable, .standalone .article");
- Array.prototype.forEach.call(v, function (t) {
- t.addEventListener("touchstart", function () {
- var t = this.scrollTop;
- 0 == t
- ? (this.scrollTop = 1)
- : t + this.offsetHeight == this.scrollHeight &&
- (this.scrollTop = t - 1);
- });
- });
- }
- var g = document.querySelectorAll(".project, .overlay, .header");
- Array.prototype.forEach.call(g, function (t) {
- t.addEventListener("touchmove", function (t) {
- t.preventDefault();
- });
- });
- var y = document.querySelectorAll(".toggle");
- Array.prototype.forEach.call(y, function (t) {
- t.addEventListener("click", function () {
- document.body.classList.toggle(this.id);
- });
- }),
- repo_id &&
- pegasus("https://api.github.com/repos/" + repo_id).then(
- function (t, e) {
- var n = t.stargazers_count;
- n > 1e4
- ? (n = (n / 1e3).toFixed(0) + "k")
- : n > 1e3 && (n = (n / 1e3).toFixed(1) + "k");
- var o = document.querySelector(".repo-stars .count");
- o.innerHTML = n;
- },
- function (t, e) {
- console.error(t, e.status);
- }
- );
- }),
- "standalone" in window.navigator && window.navigator.standalone)
-) {
- var node,
- remotes = !1;
- document.addEventListener(
- "click",
- function (t) {
- for (node = t.target; "A" !== node.nodeName && "HTML" !== node.nodeName;)
- node = node.parentNode;
- "href" in node &&
- -1 !== node.href.indexOf("http") &&
- (-1 !== node.href.indexOf(document.location.host) || remotes) &&
- (t.preventDefault(), (document.location.href = node.href));
- },
- !1
- );
-}
diff --git a/docs/static/js/buttons.js b/docs/static/js/buttons.js
new file mode 100644
index 00000000..e6d0703d
--- /dev/null
+++ b/docs/static/js/buttons.js
@@ -0,0 +1,6 @@
+/*!
+ * github-buttons v2.21.1
+ * (c) 2021 γͺ぀き
+ * @license BSD-2-Clause
+ */
+!function(){"use strict";var e=window.document,o=e.location,t=window.Math,r=window.HTMLElement,a=window.XMLHttpRequest,n="github-button",i="https://buttons.github.io/buttons.html",c="github.com",l=a&&"prototype"in a&&"withCredentials"in a.prototype,d=l&&r&&"attachShadow"in r.prototype&&!("prototype"in r.prototype.attachShadow),s=function(e,o){for(var t=0,r=e.length;t<r;t++)o(e[t])},u=function(e){return function(o,t,r){var a=e.createElement(o);if(null!=t)for(var n in t){var i=t[n];null!=i&&(null!=a[n]?a[n]=i:a.setAttribute(n,i))}return null!=r&&s(r,(function(o){a.appendChild("string"==typeof o?e.createTextNode(o):o)})),a}},h=u(e),g=function(e){var o;return function(){o||(o=1,e.apply(this,arguments))}},f=function(e,o){return{}.hasOwnProperty.call(e,o)},b=function(e){return(""+e).toLowerCase()},p=function(e,o,t,r){null==o&&(o="&"),null==t&&(t="="),null==r&&(r=window.decodeURIComponent);var a={};return s(e.split(o),(function(e){if(""!==e){var o=e.split(t);a[r(o[0])]=null!=o[1]?r(o.slice(1).join(t)):void 0}})),a},m=function(e,o,t){e.addEventListener?e.addEventListener(o,t,!1):e.attachEvent("on"+o,t)},v=function(e,o,t){e.removeEventListener?e.removeEventListener(o,t,!1):e.detachEvent("on"+o,t)},w=function(e,o,t){var r=function(){return v(e,o,r),t.apply(this,arguments)};m(e,o,r)},k=function(e,o,t){if(null!=e.readyState){var r="readystatechange",a=function(){if(o.test(e.readyState))return v(e,r,a),t.apply(this,arguments)};m(e,r,a)}},x={light:".btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #f6f8fa, #ebf0f4 90%);background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FFF6F8FA', endColorstr='#FFEAEFF3')}:root .btn{filter:none}.btn:focus,.btn:hover{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #f3f4f6, #e9ebef 90%);background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FFF3F4F6', endColorstr='#FFE8EAEE')}:root .btn:focus,:root .btn:hover{filter:none}.btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.social-count:focus,.social-count:hover{color:#0969da}.octicon-heart{color:#bf3989}",light_high_contrast:".btn{color:#0e1116;background-color:#e7ecf0;border-color:#2f3237;border-color:rgba(1,4,9,.8);background-image:none;filter:none}.btn:focus,.btn:hover{background-color:#c4cdd5;background-position:0 -0.5em;border-color:#282c32;border-color:rgba(1,4,9,.8);background-image:none;filter:none}.btn:active{background-color:#d8dde1;border-color:#2c2f34;border-color:rgba(1,4,9,.8);box-shadow:inset 0 .15em .3em rgba(1,4,9,.15)}.social-count{color:#0e1116;background-color:#fff;border-color:#34363a;border-color:rgba(1,4,9,.8)}.social-count:focus,.social-count:hover{color:#0349b4}.octicon-heart{color:#971368}",dark:".btn{color:#c9d1d9;background-color:#1a1e23;border-color:#2f3439;border-color:rgba(240,246,252,.1);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2321262d'/%3e%3cstop offset='90%25' stop-color='%231a1e23'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #21262d, #1a1e23 90%);background-image:linear-gradient(180deg, #21262d, #1a1e23 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF21262D', endColorstr='#FF191D22')}:root .btn{filter:none}.btn:focus,.btn:hover{background-color:#292e33;background-position:0 -0.5em;border-color:#8b949e;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2330363d'/%3e%3cstop offset='90%25' stop-color='%23292e33'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #30363d, #292e33 90%);background-image:linear-gradient(180deg, #30363d, #292e33 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF30363D', endColorstr='#FF282D32')}:root .btn:focus,:root .btn:hover{filter:none}.btn:active{background-color:#161719;border-color:#8b949e;box-shadow:inset 0 .15em .3em rgba(1,4,9,.15);background-image:none;filter:none}.social-count{color:#c9d1d9;background-color:#0d1117;border-color:#24282e;border-color:rgba(240,246,252,.1)}.social-count:focus,.social-count:hover{color:#58a6ff}.octicon-heart{color:#db61a2}",dark_dimmed:".btn{color:#adbac7;background-color:#30363d;border-color:#40464e;border-color:rgba(205,217,229,.1);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23373e47'/%3e%3cstop offset='90%25' stop-color='%2330363d'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #373e47, #30363d 90%);background-image:linear-gradient(180deg, #373e47, #30363d 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF373E47', endColorstr='#FF2F353C')}:root .btn{filter:none}.btn:focus,.btn:hover{background-color:#3c444d;background-position:0 -0.5em;border-color:#768390;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23444c56'/%3e%3cstop offset='90%25' stop-color='%233c444d'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #444c56, #3c444d 90%);background-image:linear-gradient(180deg, #444c56, #3c444d 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF444C56', endColorstr='#FF3B434C')}:root .btn:focus,:root .btn:hover{filter:none}.btn:active{background-color:#2e3031;border-color:#768390;box-shadow:inset 0 .15em .3em rgba(28,33,40,.15);background-image:none;filter:none}.social-count{color:#adbac7;background-color:#22272e;border-color:#333940;border-color:rgba(205,217,229,.1)}.social-count:focus,.social-count:hover{color:#539bf5}.octicon-heart{color:#c96198}",dark_high_contrast:".btn{color:#f0f3f6;background-color:#272b33;border-color:#7a828e;background-image:none;filter:none}.btn:focus,.btn:hover{background-color:#4a515b;background-position:0 -0.5em;border-color:#bdc4cc;background-image:none;filter:none}.btn:active{background-color:#1d1d1f;border-color:#bdc4cc;box-shadow:inset 0 .15em .3em rgba(1,4,9,.15)}.social-count{color:#f0f3f6;background-color:#0a0c10;border-color:#7a828e}.social-count:focus,.social-count:hover{color:#71b7ff}.octicon-heart{color:#ef6eb1}"},z=function(e,o){return"@media(prefers-color-scheme:"+e+"){"+x[f(x,o)?o:e]+"}"},y={"comment-discussion":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M1.5 2.75a.25.25 0 01.25-.25h8.5a.25.25 0 01.25.25v5.5a.25.25 0 01-.25.25h-3.5a.75.75 0 00-.53.22L3.5 11.44V9.25a.75.75 0 00-.75-.75h-1a.25.25 0 01-.25-.25v-5.5zM1.75 1A1.75 1.75 0 000 2.75v5.5C0 9.216.784 10 1.75 10H2v1.543a1.457 1.457 0 002.487 1.03L7.061 10h3.189A1.75 1.75 0 0012 8.25v-5.5A1.75 1.75 0 0010.25 1h-8.5zM14.5 4.75a.25.25 0 00-.25-.25h-.5a.75.75 0 110-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0114.25 12H14v1.543a1.457 1.457 0 01-2.487 1.03L9.22 12.28a.75.75 0 111.06-1.06l2.22 2.22v-2.19a.75.75 0 01.75-.75h1a.25.25 0 00.25-.25v-5.5z"></path>'}}},download:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"></path>'}}},eye:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path>'}}},heart:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z"></path>'}}},"issue-opened":{heights:{16:{width:16,path:'<path d="M8 9.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path><path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zM1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0z"></path>'}}},"mark-github":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>'}}},package:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M8.878.392a1.75 1.75 0 00-1.756 0l-5.25 3.045A1.75 1.75 0 001 4.951v6.098c0 .624.332 1.2.872 1.514l5.25 3.045a1.75 1.75 0 001.756 0l5.25-3.045c.54-.313.872-.89.872-1.514V4.951c0-.624-.332-1.2-.872-1.514L8.878.392zM7.875 1.69a.25.25 0 01.25 0l4.63 2.685L8 7.133 3.245 4.375l4.63-2.685zM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432L2.5 5.677zm6.25 8.271l4.625-2.683a.25.25 0 00.125-.216V5.677L8.75 8.432v5.516z"></path>'}}},play:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path>'}}},"repo-forked":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>'}}},"repo-template":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M6 .75A.75.75 0 016.75 0h2.5a.75.75 0 010 1.5h-2.5A.75.75 0 016 .75zm5 0a.75.75 0 01.75-.75h1.5a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V1.5h-.75A.75.75 0 0111 .75zM4.992.662a.75.75 0 01-.636.848c-.436.063-.783.41-.846.846a.75.75 0 01-1.485-.212A2.501 2.501 0 014.144.025a.75.75 0 01.848.637zM2.75 4a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 012.75 4zm10.5 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5a.75.75 0 01.75-.75zM2.75 8a.75.75 0 01.75.75v.268A1.72 1.72 0 013.75 9h.5a.75.75 0 010 1.5h-.5a.25.25 0 00-.25.25v.75c0 .28.114.532.3.714a.75.75 0 01-1.05 1.072A2.495 2.495 0 012 11.5V8.75A.75.75 0 012.75 8zm10.5 0a.75.75 0 01.75.75v4.5a.75.75 0 01-.75.75h-2.5a.75.75 0 010-1.5h1.75v-2h-.75a.75.75 0 010-1.5h.75v-.25a.75.75 0 01.75-.75zM6 9.75A.75.75 0 016.75 9h2.5a.75.75 0 010 1.5h-2.5A.75.75 0 016 9.75zm-1 2.5v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>'}}},star:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>'}}}},C=function(e,o){e=b(e).replace(/^octicon-/,""),f(y,e)||(e="mark-github");var t=o>=24&&24 in y[e].heights?24:16,r=y[e].heights[t];return'<svg viewBox="0 0 '+r.width+" "+t+'" width="'+o*r.width/t+'" height="'+o+'" class="octicon octicon-'+e+'" aria-hidden="true">'+r.path+"</svg>"},M={},A=function(e,o){var t=M[e]||(M[e]=[]);if(!(t.push(o)>1)){var r=g((function(){for(delete M[e];o=t.shift();)o.apply(null,arguments)}));if(l){var n=new a;m(n,"abort",r),m(n,"error",r),m(n,"load",(function(){var e;try{e=JSON.parse(this.responseText)}catch(e){return void r(e)}r(200!==this.status,e)})),n.open("GET",e),n.send()}else{var i=this||window;i._=function(e){i._=null,r(200!==e.meta.status,e.data)};var c=u(i.document)("script",{async:!0,src:e+(-1!==e.indexOf("?")?"&":"?")+"callback=_"}),d=function(){i._&&i._({meta:{}})};m(c,"load",d),m(c,"error",d),k(c,/de|m/,d),i.document.getElementsByTagName("head")[0].appendChild(c)}}},F=function(e,o,t){var r=u(e.ownerDocument),a=e.appendChild(r("style",{type:"text/css"})),n="body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;display:inline-flex;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:16px;padding:5px 10px;font-size:12px;line-height:16px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor;overflow:visible}"+function(e){if(null==e)return x.light;if(f(x,e))return x[e];var o=p(e,";",":",(function(e){return e.replace(/^[ \t\n\f\r]+|[ \t\n\f\r]+$/g,"")}));return x[f(x,o["no-preference"])?o["no-preference"]:"light"]+z("light",o.light)+z("dark",o.dark)}(o["data-color-scheme"]);a.styleSheet?a.styleSheet.cssText=n:a.appendChild(e.ownerDocument.createTextNode(n));var i="large"===b(o["data-size"]),l=r("a",{className:"btn",href:o.href,rel:"noopener",target:"_blank",title:o.title||void 0,"aria-label":o["aria-label"]||void 0,innerHTML:C(o["data-icon"],i?16:14)+"&nbsp;"},[r("span",{},[o["data-text"]||""])]),d=e.appendChild(r("div",{className:"widget"+(i?" widget-lg":"")},[l])),s=l.hostname.replace(/\.$/,"");if(("."+s).substring(s.length-c.length)!=="."+c)return l.removeAttribute("href"),void t(d);var h=(" /"+l.pathname).split(/\/+/);if(((s===c||s==="gist."+c)&&"archive"===h[3]||s===c&&"releases"===h[3]&&("download"===h[4]||"latest"===h[4]&&"download"===h[5])||s==="codeload."+c)&&(l.target="_top"),"true"===b(o["data-show-count"])&&s===c&&"marketplace"!==h[1]&&"sponsors"!==h[1]&&"orgs"!==h[1]&&"users"!==h[1]&&"-"!==h[1]){var g,m;if(!h[2]&&h[1])m="followers",g="?tab=followers";else if(!h[3]&&h[2])m="stargazers_count",g="/stargazers";else if(h[4]||"subscription"!==h[3])if(h[4]||"fork"!==h[3]){if("issues"!==h[3])return void t(d);m="open_issues_count",g="/issues"}else m="forks_count",g="/network/members";else m="subscribers_count",g="/watchers";var v=h[2]?"/repos/"+h[1]+"/"+h[2]:"/users/"+h[1];A.call(this,"https://api.github.com"+v,(function(e,o){if(!e){var a=o[m];d.appendChild(r("a",{className:"social-count",href:o.html_url+g,rel:"noopener",target:"_blank","aria-label":a+" "+m.replace(/_count$/,"").replace("_"," ").slice(0,a<2?-1:void 0)+" on GitHub"},[(""+a).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}t(d)}))}else t(d)},L=window.devicePixelRatio||1,_=function(e){return(L>1?t.ceil(t.round(e*L)/L*2)/2:t.ceil(e))||0},E=function(e,o){e.style.width=o[0]+"px",e.style.height=o[1]+"px"},G=function(o,r){if(null!=o&&null!=r)if(o.getAttribute&&(o=function(e){var o={href:e.href,title:e.title,"aria-label":e.getAttribute("aria-label")};return s(["icon","color-scheme","text","size","show-count"],(function(t){var r="data-"+t;o[r]=e.getAttribute(r)})),null==o["data-text"]&&(o["data-text"]=e.textContent||e.innerText),o}(o)),d){var a=h("span");F(a.attachShadow({mode:"closed"}),o,(function(){r(a)}))}else{var n=h("iframe",{src:"javascript:0",title:o.title||void 0,allowtransparency:!0,scrolling:"no",frameBorder:0});E(n,[0,0]),n.style.border="none";var c=function(){var a,l=n.contentWindow;try{a=l.document.body}catch(o){return void e.body.appendChild(n.parentNode.removeChild(n))}v(n,"load",c),F.call(l,a,o,(function(e){var a=function(e){var o=e.offsetWidth,r=e.offsetHeight;if(e.getBoundingClientRect){var a=e.getBoundingClientRect();o=t.max(o,_(a.width)),r=t.max(r,_(a.height))}return[o,r]}(e);n.parentNode.removeChild(n),w(n,"load",(function(){E(n,a)})),n.src=i+"#"+(n.name=function(e,o,t,r){null==o&&(o="&"),null==t&&(t="="),null==r&&(r=window.encodeURIComponent);var a=[];for(var n in e){var i=e[n];null!=i&&a.push(r(n)+t+r(i))}return a.join(o)}(o)),r(n)}))};m(n,"load",c),e.body.appendChild(n)}};o.protocol+"//"+o.host+o.pathname===i?F(e.body,p(window.name||o.hash.replace(/^#/,"")),(function(){})):function(o){if("complete"===e.readyState||"loading"!==e.readyState&&!e.documentElement.doScroll)setTimeout(o);else if(e.addEventListener){var t=g(o);w(e,"DOMContentLoaded",t),w(window,"load",t)}else k(e,/m/,o)}((function(){var o,t=e.querySelectorAll?e.querySelectorAll("a."+n):(o=[],s(e.getElementsByTagName("a"),(function(e){-1!==(" "+e.className+" ").replace(/[ \t\n\f\r]+/g," ").indexOf(" github-button ")&&o.push(e)})),o);s(t,(function(e){G(e,(function(o){e.parentNode.replaceChild(o,e)}))}))}))}();
diff --git a/docs/static/js/search.js b/docs/static/js/search.js
deleted file mode 100644
index 4f1bbdd9..00000000
--- a/docs/static/js/search.js
+++ /dev/null
@@ -1,132 +0,0 @@
-var summaryInclude = 100
-
-var fuseOptions = {
- shouldSort: true,
- includeMatches: true,
- threshold: 0.0,
- tokenize: true,
- location: 0,
- distance: 100,
- maxPatternLength: 32,
- minMatchCharLength: 2,
- keys: [
- { name: "title", weight: 0.8 },
- { name: "tags", weight: 0.3 },
- { name: "categories", weight: 0.3 },
- { name: "contents", weight: 0.7 }
- ]
-}
-
-var searchQuery = param("s")
-if (searchQuery) {
- $("#search-query").val(searchQuery)
- executeSearch(searchQuery)
-} else {
- $("#search-string").replaceWith(searchQuery)
- $("#search-results-length").replaceWith(0)
-}
-
-function executeSearch(searchQuery) {
- $.getJSON("/index.json", function(data) {
- var pages = data
- var fuse = new Fuse(pages, fuseOptions)
- var result = fuse.search(searchQuery)
- console.log({ matches: result })
- $("#search-string").replaceWith(searchQuery)
- $("#search-results-length").replaceWith(result.length)
- if (result.length > 0) {
- populateResults(result)
- } else {
- $("#search-results").append("<p>No matches found</p>")
- }
- })
-}
-
-function populateResults(result) {
- $.each(result, function(key, value) {
- var contents = value.item.contents
- var snippet = ""
- var snippetHighlights = []
- var tags = []
- if (fuseOptions.tokenize) {
- snippetHighlights.push(searchQuery)
- } else {
- $.each(value.matches, function(matchKey, mvalue) {
- if (mvalue.key == "tags" || mvalue.key == "categories") {
- snippetHighlights.push(mvalue.value)
- } else if (mvalue.key == "contents") {
- let startIdx = mvalue.indices[0][0]
- let endIdx = mvalue.indices[0][1]
- let start = 0
- if (startIdx - summaryInclude > 0) {
- start = startIdx - summaryInclude
- }
- let end = contents.length
- if (endIdx + summaryInclude < contents.length) {
- endIdx + summaryInclude
- }
- snippet += contents.substring(start, end)
- snippetHighlights.push(
- mvalue.value.substring(
- startIdx,
- endIdx - startIdx + 1
- )
- )
- }
- })
- }
-
- if (snippet.length < 1) {
- snippet += contents.substring(0, summaryInclude * 2)
- }
- //pull template from hugo template definition
- var templateDefinition = $("#search-result-template").html()
- //replace values
- var output = render(templateDefinition, {
- key: key,
- title: value.item.title,
- link: value.item.permalink,
- tags: value.item.tags,
- categories: value.item.categories,
- snippet: snippet
- })
- $("#search-results").append(output)
-
- $.each(snippetHighlights, function(snipkey, snipvalue) {
- $("#summary-" + key).mark(snipvalue)
- })
- })
-}
-
-function param(name) {
- return decodeURIComponent(
- (location.search.split(name + "=")[1] || "").split("&")[0]
- ).replace(/\+/g, " ")
-}
-
-function render(templateString, data) {
- var conditionalMatches, conditionalPattern, copy
- conditionalPattern = /\$\{\s*isset ([a-zA-Z]*) \s*\}(.*)\$\{\s*end\s*}/g
- //since loop below depends on re.lastInxdex, we use a copy to capture any manipulations whilst inside the loop
- copy = templateString
- while (
- (conditionalMatches = conditionalPattern.exec(templateString)) !== null
- ) {
- if (data[conditionalMatches[1]]) {
- //valid key, remove conditionals, leave contents.
- copy = copy.replace(conditionalMatches[0], conditionalMatches[2])
- } else {
- //not valid, remove entire section
- copy = copy.replace(conditionalMatches[0], "")
- }
- }
- templateString = copy
- //now any conditionals removed we can do simple substitution
- var key, find, re
- for (key in data) {
- find = "\\$\\{\\s*" + key + "\\s*\\}"
- re = new RegExp(find, "g")
- templateString = templateString.replace(re, data[key])
- }
- return templateString
-}
diff --git a/docs/static/stylesheets/application.css b/docs/static/stylesheets/application.css
deleted file mode 100644
index 96ed4805..00000000
--- a/docs/static/stylesheets/application.css
+++ /dev/null
@@ -1,1386 +0,0 @@
-html {
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
-}
-*,
-:after,
-:before {
- box-sizing: inherit;
- -moz-box-sizing: inherit;
- -webkit-box-sizing: inherit;
-}
-html {
- font-size: 62.5%;
- -webkit-text-size-adjust: none;
- -ms-text-size-adjust: none;
- text-size-adjust: none;
-}
-
-a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl,
-dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, main, mark, menu, nav, object, ol, output, p,
-pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video {
- margin: 0;
- padding: 0;
- border: 0;
-}
-
-main {
- display: block;
-}
-ul {
- list-style: none;
-}
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-td {
- text-align: left;
- font-weight: 400;
- vertical-align: middle;
-}
-button {
- outline: 0;
- padding: 0;
- background: transparent;
- border: none;
- font-size: inherit;
-}
-input {
- -webkit-appearance: none;
- -moz-appearance: none;
- -ms-appearance: none;
- -o-appearance: none;
- appearance: none;
- outline: none;
- border: none;
-}
-a {
- text-decoration: none;
- color: inherit;
-}
-a,
-button,
-input,
-label {
- -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
- -webkit-tap-highlight-color: transparent;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-weight: inherit;
-}
-pre {
- background: rgba(0, 0, 0, 0.05);
-}
-pre,
-pre code {
- color: rgba(0, 0, 0, 0.87);
-}
-.c,
-.c1,
-.cm,
-.o {
- color: rgba(0, 0, 0, 0.54);
-}
-.k,
-.kn {
- color: #a71d5d;
-}
-.kd,
-.kt {
- color: #0086b3;
-}
-.n.f,
-.nf {
- color: #795da3;
-}
-.nx {
- color: #0086b3;
-}
-.s,
-.s1 {
- color: #183691;
-}
-.bp,
-.mi {
- color: #9575cd;
-}
-.icon {
- font-family: Icon;
- speak: none;
- font-style: normal;
- font-weight: 400;
- font-variant: normal;
- text-transform: none;
- line-height: 1;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-.icon-search:before {
- content: "\e600";
-}
-.icon-back:before {
- content: "\e601";
-}
-.icon-link:before {
- content: "\e602";
-}
-.icon-close:before {
- content: "\e603";
-}
-.icon-menu:before {
- content: "\e604";
-}
-.icon-forward:before {
- content: "\e605";
-}
-.icon-twitter:before {
- content: "\e606";
-}
-.icon-github:before {
- content: "\e607";
-}
-.icon-download:before {
- content: "\e608";
-}
-.icon-star:before {
- content: "\e609";
-}
-.icon-warning:before {
- content: "\e610";
-}
-.icon-note:before {
- content: "\e611";
-}
-a {
- -webkit-transition: color 0.25s;
- transition: color 0.25s;
-}
-.overlay {
- -webkit-transition: opacity 0.25s, width 0s 0.25s, height 0s 0.25s;
- transition: opacity 0.25s, width 0s 0.25s, height 0s 0.25s;
-}
-#toggle-drawer:checked ~ .overlay,
-.toggle-drawer .overlay {
- -webkit-transition: opacity 0.25s, width 0s, height 0s;
- transition: opacity 0.25s, width 0s, height 0s;
-}
-.js .header {
- -webkit-transition: background 0.6s, color 0.6s;
- transition: background 0.6s, color 0.6s;
-}
-.js .header:before {
- -webkit-transition: background 0.6s;
- transition: background 0.6s;
-}
-.button .icon {
- -webkit-transition: background 0.25s;
- transition: background 0.25s;
-}
-body {
- color: rgba(0, 0, 0, 0.87);
-}
-@supports (-webkit-appearance: none) {
- body {
- background: #e84e40;
- }
-}
-.ios body {
- background: #fff;
-}
-hr {
- border: 0;
- border-top: 1px solid rgba(0, 0, 0, 0.12);
-}
-.toggle-button {
- cursor: pointer;
- color: inherit;
-}
-.backdrop,
-.backdrop-paper:after {
- background: #fff;
-}
-.overlay {
- background: rgba(0, 0, 0, 0.54);
- opacity: 0;
-}
-#toggle-drawer:checked ~ .overlay,
-.toggle-drawer .overlay {
- opacity: 1;
-}
-.header {
- box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05);
- background: #e84e40;
- color: #fff;
-}
-.ios.standalone .header:before {
- background: rgba(0, 0, 0, 0.12);
-}
-.bar .path {
- color: hsla(0, 0%, 100%, 0.7);
-}
-.button .icon {
- border-radius: 100%;
-}
-.button .icon:active {
- background: hsla(0, 0%, 100%, 0.12);
-}
-html {
- height: 100%;
-}
-body {
- position: relative;
- min-height: 100%;
-}
-hr {
- display: block;
- height: 1px;
- padding: 0;
- margin: 0;
-}
-.locked {
- height: 100%;
- overflow: hidden;
-}
-.scrollable {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- overflow: auto;
- -webkit-overflow-scrolling: touch;
-}
-.scrollable .wrapper {
- height: 100%;
-}
-.ios .scrollable .wrapper {
- margin-bottom: 2px;
-}
-.toggle {
- display: none;
-}
-.toggle-button {
- display: block;
-}
-.backdrop {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: -1;
-}
-.backdrop-paper {
- max-width: 1200px;
- height: 100%;
- margin-left: auto;
- margin-right: auto;
-}
-.backdrop-paper:after {
- content: " ";
- display: block;
- height: 100%;
- margin-left: 262px;
-}
-.overlay {
- width: 0;
- height: 0;
- z-index: 3;
-}
-.header,
-.overlay {
- position: fixed;
- top: 0;
-}
-.header {
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- left: 0;
- z-index: 2;
- height: 56px;
- padding: 4px;
- overflow: hidden;
-}
-.ios.standalone .header {
- position: absolute;
-}
-.bar {
- display: table;
- max-width: 1184px;
- margin-left: auto;
- margin-right: auto;
-}
-.bar a {
- display: block;
-}
-.no-js .bar .button-search {
- display: none;
-}
-.bar .path .icon:before {
- vertical-align: -1.5px;
-}
-.button {
- display: table-cell;
- vertical-align: top;
- width: 1%;
-}
-.button button {
- margin: 0;
- padding: 0;
-}
-.button button:active:before {
- position: relative;
- top: 0;
- left: 0;
-}
-.button .icon {
- display: inline-block;
- font-size: 24px;
- padding: 8px;
- margin: 4px;
-}
-.stretch {
- display: table;
- table-layout: fixed;
- width: 100%;
-}
-.header .stretch {
- padding: 0 20px;
-}
-.stretch .title {
- display: table-cell;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-.header .stretch .title {
- font-size: 18px;
- padding: 13px 0;
-}
-.main {
- max-width: 1200px;
- margin-left: auto;
- margin-right: auto;
-}
-body,
-input {
- font-weight: 400;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-.no-fontface body,
-.no-fontface input,
-body,
-input {
- font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
-}
-.no-fontface code,
-.no-fontface kbd,
-.no-fontface pre,
-code,
-kbd,
-pre {
- font-family: Courier New, Courier, monospace;
-}
-#toggle-drawer:checked ~ .main .drawer,
-.toggle-drawer .drawer {
- -webkit-transform: translateZ(0);
- transform: translateZ(0);
-}
-.no-csstransforms3d #toggle-drawer:checked ~ .main .drawer,
-.no-csstransforms3d .toggle-drawer .drawer {
- display: block;
-}
-.project {
- -webkit-transition: none;
- transition: none;
-}
-.project .logo img {
- -webkit-transition: box-shadow 0.4s;
- transition: box-shadow 0.4s;
-}
-.repo a {
- -webkit-transition: box-shadow 0.4s, opacity 0.4s;
- transition: box-shadow 0.4s, opacity 0.4s;
-}
-.drawer .toc a.current,
-.drawer .toc a:focus,
-.drawer .toc a:hover {
- color: #e84e40;
-}
-.drawer .anchor a {
- border-left: 2px solid #e84e40;
-}
-.drawer .section {
- color: rgba(0, 0, 0, 0.54);
-}
-.ios.standalone .project:before {
- background: rgba(0, 0, 0, 0.12);
-}
-.project .logo img {
- background: #fff;
- border-radius: 100%;
-}
-.project:focus .logo img,
-.project:hover .logo img {
- box-shadow: 0 4px 7px rgba(0, 0, 0, 0.23), 0 8px 25px rgba(0, 0, 0, 0.05);
-}
-.repo a {
- background: #00bfa5;
- color: #fff;
- border-radius: 3px;
-}
-.repo a:focus,
-.repo a:hover {
- box-shadow: 0 4px 7px rgba(0, 0, 0, 0.23), 0 8px 25px rgba(0, 0, 0, 0.05);
- opacity: 0.8;
-}
-.repo a .count {
- background: rgba(0, 0, 0, 0.26);
- color: #fff;
- border-radius: 0 3px 3px 0;
-}
-.repo a .count:before {
- border-width: 15px 5px 15px 0;
- border-color: transparent rgba(0, 0, 0, 0.26);
- border-style: solid;
-}
-.drawer {
- width: 262px;
- font-size: 13px;
- line-height: 1em;
-}
-.ios .drawer {
- overflow: scroll;
- -webkit-overflow-scrolling: touch;
-}
-.drawer .toc li a {
- display: block;
- padding: 14.5px 24px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.drawer .toc li.anchor a {
- margin-left: 12px;
- padding: 10px 24px 10px 12px;
-}
-.drawer .toc li ul {
- margin-left: 12px;
-}
-.drawer .current + ul {
- margin-bottom: 9px;
-}
-.drawer .section {
- display: block;
- padding: 14.5px 24px;
-}
-.drawer .scrollable {
- top: 104px;
- z-index: -1;
-}
-.drawer .scrollable .wrapper {
- height: auto;
- min-height: 100%;
-}
-.drawer .scrollable .wrapper hr {
- margin: 12px 0;
- margin-right: auto;
-}
-.drawer .scrollable .wrapper .toc {
- margin: 12px 0;
-}
-.project {
- display: block;
-}
-.project .banner {
- display: table;
- width: 100%;
- height: 104px;
- padding: 20px;
-}
-.project .logo {
- display: table-cell;
- width: 64px;
- padding-right: 12px;
-}
-.project .logo img {
- display: block;
- width: 64px;
- height: 64px;
-}
-.project .name {
- display: table-cell;
- padding-left: 4px;
- font-size: 14px;
- line-height: 1.25em;
- vertical-align: middle;
-}
-.project .logo + .name {
- font-size: 12px;
-}
-.repo {
- margin: 24px 0;
- text-align: center;
-}
-.repo li {
- display: inline-block;
- padding-right: 12px;
- white-space: nowrap;
-}
-.repo li:last-child {
- padding-right: 0;
-}
-.repo a {
- display: inline-block;
- padding: 0 10px 0 6px;
- font-size: 12px;
- line-height: 30px;
- height: 30px;
-}
-.repo a .icon {
- font-size: 18px;
- vertical-align: -3px;
-}
-.repo a .count {
- display: inline-block;
- position: relative;
- padding: 0 8px 0 4px;
- margin: 0 -10px 0 8px;
- font-size: 12px;
-}
-.repo a .count:before {
- content: " ";
- display: block;
- position: absolute;
- top: 0;
- left: -5px;
-}
-.no-js .repo a .count {
- display: none;
-}
-.drawer .toc li a {
- font-weight: 700;
-}
-.drawer .toc li.anchor a {
- font-weight: 400;
-}
-.drawer .section,
-.repo a {
- font-weight: 700;
-}
-.repo a {
- text-transform: uppercase;
-}
-.repo a .count {
- text-transform: none;
- font-weight: 700;
-}
-pre span {
- -webkit-transition: color 0.25s;
- transition: color 0.25s;
-}
-.copyright a {
- -webkit-transition: color 0.25s;
- transition: color 0.25s;
-}
-.ios.standalone .article {
- background: -webkit-linear-gradient(top, #fff 50%, #e84e40 0);
- background: linear-gradient(180deg, #fff 50%, #e84e40 0);
-}
-.ios.standalone .article .wrapper {
- background: -webkit-linear-gradient(top, #fff 50%, #fff 0);
- background: linear-gradient(180deg, #fff 50%, #fff 0);
-}
-.article a,
-.article h1,
-.article h2 {
- color: #e84e40;
-}
-.article code {
- background: #eee;
-}
-.article kbd {
- color: #555;
- background-color: #fcfcfc;
- border: 1px solid #ccc;
- border-bottom-color: #bbb;
- border-radius: 3px;
- box-shadow: inset 0 -1px 0 #bbb;
-}
-.article h1 {
- border-bottom: 1px solid rgba(0, 0, 0, 0.12);
-}
-.article a {
- border-bottom: 1px dotted;
-}
-.article a:focus,
-.article a:hover {
- color: #00bfa5;
-}
-.article .headerlink {
- color: rgba(0, 0, 0, 0.26);
- border: none;
-}
-.article table {
- box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05);
- border-radius: 3px;
-}
-.article table th {
- background: #ee7a70;
- color: #fff;
-}
-.article table td {
- border-top: 1px solid rgba(0, 0, 0, 0.05);
-}
-.article blockquote {
- border-left: 2px solid rgba(0, 0, 0, 0.54);
- color: rgba(0, 0, 0, 0.54);
-}
-.footer {
- background: #e84e40;
- color: #fff;
-}
-.footer a {
- border: none;
-}
-.copyright {
- color: rgba(0, 0, 0, 0.54);
-}
-.pagination a .button,
-.pagination a .title {
- color: #fff;
-}
-.pagination .direction {
- color: hsla(0, 0%, 100%, 0.7);
-}
-.admonition {
- background: #29b6f6;
- color: #fff;
-}
-.admonition pre {
- background: hsla(0, 0%, 100%, 0.3);
-}
-.admonition.warning {
- background: #e84e40;
-}
-.admonition a,
-.admonition a:hover {
- color: #fff;
-}
-.article {
- font-size: 14px;
- line-height: 1.7em;
-}
-.article:after {
- content: " ";
- display: block;
- clear: both;
-}
-.article .wrapper {
- padding: 116px 16px 92px;
-}
-.ios.standalone .article {
- position: absolute;
- top: 56px;
- right: 0;
- bottom: 0;
- left: 0;
- overflow: auto;
- -webkit-overflow-scrolling: touch;
-}
-.ios.standalone .article .wrapper {
- position: relative;
- min-height: 100%;
- padding-top: 60px;
- margin-bottom: 2px;
-}
-.article h1 {
- font-size: 24px;
- line-height: 1.333334em;
- padding: 20px 0 42px;
-}
-.article h2 {
- font-size: 20px;
- line-height: 1.4em;
- padding-top: 92px;
- margin-top: -56px;
-}
-.ios.standalone .article h2 {
- padding-top: 36px;
- margin: 0;
-}
-.article h3,
-.article h4 {
- font-size: 14px;
- padding-top: 76px;
- margin-top: -56px;
-}
-.ios.standalone .article h3,
-.ios.standalone .article h4 {
- padding-top: 20px;
- margin-top: 0;
-}
-.article .headerlink {
- float: right;
- margin-left: 20px;
- font-size: 14px;
-}
-h1 .article .headerlink {
- display: none;
-}
-.article ol,
-.article p,
-.article ul {
- margin-top: 1.5em;
-}
-.article li,
-.article li ol,
-.article li ul {
- margin-top: 0.75em;
-}
-.article li {
- margin-left: 18px;
-}
-.article li p {
- display: inline;
-}
-.article ul > li:before {
- content: "\e602";
- display: block;
- float: left;
- font-family: Icon;
- font-size: 16px;
- width: 1.2em;
- margin-left: -1.2em;
- vertical-align: -0.1em;
-}
-.article p > code {
- white-space: nowrap;
- padding: 2px 4px;
-}
-.article kbd {
- display: inline-block;
- padding: 3px 5px;
- line-height: 10px;
-}
-.article hr {
- margin-top: 1.5em;
-}
-.article img {
- max-width: 100%;
-}
-.article pre {
- padding: 16px;
- margin: 1.5em -16px 0;
- line-height: 1.5em;
- overflow: auto;
- -webkit-overflow-scrolling: touch;
-}
-.article table {
- margin: 3em 0 1.5em;
- font-size: 13px;
- overflow: hidden;
-}
-.no-js .article table {
- display: inline-block;
- max-width: 100%;
- overflow: auto;
- -webkit-overflow-scrolling: touch;
-}
-.article table th {
- min-width: 100px;
- font-size: 12px;
- text-align: left;
-}
-.article table td,
-.article table th {
- padding: 12px 16px;
- vertical-align: top;
-}
-.article blockquote {
- padding-left: 16px;
-}
-.article .data {
- margin: 1.5em -16px;
- padding: 1.5em 0;
- overflow: auto;
- -webkit-overflow-scrolling: touch;
- text-align: center;
-}
-.article .data table {
- display: inline-block;
- margin: 0 16px;
- text-align: left;
-}
-.footer {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- padding: 0 4px;
-}
-.copyright {
- margin: 1.5em 0;
-}
-.pagination {
- max-width: 1184px;
- height: 92px;
- padding: 4px 0;
- margin-left: auto;
- margin-right: auto;
- overflow: hidden;
-}
-.pagination a {
- display: block;
- height: 100%;
-}
-.pagination .next,
-.pagination .previous {
- position: relative;
- float: left;
- height: 100%;
-}
-.pagination .previous {
- width: 25%;
-}
-.pagination .previous .direction,
-.pagination .previous .stretch {
- display: none;
-}
-.pagination .next {
- width: 75%;
- text-align: right;
-}
-.pagination .page {
- display: table;
- position: absolute;
- bottom: 4px;
-}
-.pagination .direction {
- display: block;
- position: absolute;
- bottom: 40px;
- width: 100%;
- font-size: 15px;
- line-height: 20px;
- padding: 0 52px;
-}
-.pagination .stretch {
- padding: 0 4px;
-}
-.pagination .stretch .title {
- font-size: 18px;
- padding: 11px 0 13px;
-}
-.admonition {
- margin: 20px -16px 0;
- padding: 20px 16px;
-}
-.admonition > :first-child {
- margin-top: 0;
-}
-.admonition .admonition-title {
- font-size: 20px;
-}
-.admonition .admonition-title:before {
- content: "\e611";
- display: block;
- float: left;
- font-family: Icon;
- font-size: 24px;
- vertical-align: -0.1em;
- margin-right: 5px;
-}
-.admonition.warning .admonition-title:before {
- content: "\e610";
-}
-.article h3 {
- font-weight: 700;
-}
-.article h4 {
- font-weight: 400;
- font-style: italic;
-}
-.article h2 a,
-.article h3 a,
-.article h4 a,
-.article h5 a,
-.article h6 a {
- font-weight: 400;
- font-style: normal;
-}
-.bar {
- -webkit-transform: translateZ(0);
- transform: translateZ(0);
- -webkit-transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1),
- -webkit-transform 0.4s cubic-bezier(0.75, 0, 0.25, 1);
- transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1),
- -webkit-transform 0.4s cubic-bezier(0.75, 0, 0.25, 1);
- transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1),
- transform 0.4s cubic-bezier(0.75, 0, 0.25, 1);
- transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1),
- transform 0.4s cubic-bezier(0.75, 0, 0.25, 1),
- -webkit-transform 0.4s cubic-bezier(0.75, 0, 0.25, 1);
-}
-#toggle-search:checked ~ .header .bar,
-.toggle-search .bar {
- -webkit-transform: translate3d(0, -56px, 0);
- transform: translate3d(0, -56px, 0);
-}
-.bar.search .button-reset {
- -webkit-transform: scale(0.5);
- transform: scale(0.5);
- -webkit-transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1),
- -webkit-transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1);
- transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1),
- -webkit-transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1);
- transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1),
- transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1);
- transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1),
- transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1),
- -webkit-transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1);
- opacity: 0;
-}
-.bar.search.non-empty .button-reset {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 1;
-}
-.results {
- -webkit-transition: opacity 0.3s 0.1s, width 0s 0.4s, height 0s 0.4s;
- transition: opacity 0.3s 0.1s, width 0s 0.4s, height 0s 0.4s;
-}
-#toggle-search:checked ~ .main .results,
-.toggle-search .results {
- -webkit-transition: opacity 0.4s, width 0s, height 0s;
- transition: opacity 0.4s, width 0s, height 0s;
-}
-.results .list a {
- -webkit-transition: background 0.25s;
- transition: background 0.25s;
-}
-.no-csstransforms3d .bar.default {
- display: table;
-}
-.no-csstransforms3d .bar.search {
- display: none;
- margin-top: 0;
-}
-.no-csstransforms3d #toggle-search:checked ~ .header .bar.default,
-.no-csstransforms3d .toggle-search .bar.default {
- display: none;
-}
-.no-csstransforms3d #toggle-search:checked ~ .header .bar.search,
-.no-csstransforms3d .toggle-search .bar.search {
- display: table;
-}
-.bar.search {
- opacity: 0;
-}
-.bar.search .query {
- background: transparent;
- color: rgba(0, 0, 0, 0.87);
-}
-.bar.search .query::-webkit-input-placeholder {
- color: rgba(0, 0, 0, 0.26);
-}
-.bar.search .query:-moz-placeholder,
-.bar.search .query::-moz-placeholder {
- color: rgba(0, 0, 0, 0.26);
-}
-.bar.search .query:-ms-input-placeholder {
- color: rgba(0, 0, 0, 0.26);
-}
-.bar.search .button .icon:active {
- background: rgba(0, 0, 0, 0.12);
-}
-.results {
- box-shadow: 0 4px 7px rgba(0, 0, 0, 0.23), 0 8px 25px rgba(0, 0, 0, 0.05);
- background: #fff;
- color: rgba(0, 0, 0, 0.87);
- opacity: 0;
-}
-#toggle-search:checked ~ .main .results,
-.toggle-search .results {
- opacity: 1;
-}
-.results .meta {
- background: #e84e40;
- color: #fff;
-}
-.results .list a {
- border-bottom: 1px solid rgba(0, 0, 0, 0.12);
-}
-.results .list a:last-child {
- border-bottom: none;
-}
-.results .list a:active {
- background: rgba(0, 0, 0, 0.12);
-}
-.result span {
- color: rgba(0, 0, 0, 0.54);
-}
-#toggle-search:checked ~ .header,
-.toggle-search .header {
- background: #fff;
- color: rgba(0, 0, 0, 0.54);
-}
-#toggle-search:checked ~ .header:before,
-.toggle-search .header:before {
- background: rgba(0, 0, 0, 0.54);
-}
-#toggle-search:checked ~ .header .bar.default,
-.toggle-search .header .bar.default {
- opacity: 0;
-}
-#toggle-search:checked ~ .header .bar.search,
-.toggle-search .header .bar.search {
- opacity: 1;
-}
-.bar.search {
- margin-top: 8px;
-}
-.bar.search .query {
- font-size: 18px;
- padding: 13px 0;
- margin: 0;
- width: 100%;
- height: 48px;
-}
-.bar.search .query::-ms-clear {
- display: none;
-}
-.results {
- position: fixed;
- top: 0;
- left: 0;
- width: 0;
- height: 100%;
- z-index: 1;
- overflow-y: scroll;
- -webkit-overflow-scrolling: touch;
-}
-.results .scrollable {
- top: 56px;
-}
-#toggle-search:checked ~ .main .results,
-.toggle-search .results {
- width: 100%;
- overflow-y: visible;
-}
-.results .meta {
- font-weight: 700;
-}
-.results .meta strong {
- display: block;
- font-size: 11px;
- max-width: 1200px;
- margin-left: auto;
- margin-right: auto;
- padding: 16px;
-}
-.results .list a {
- display: block;
-}
-.result {
- max-width: 1200px;
- margin-left: auto;
- margin-right: auto;
- padding: 12px 16px 16px;
-}
-.result h1 {
- line-height: 24px;
-}
-.result h1,
-.result span {
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
-}
-.result span {
- font-size: 12px;
-}
-.no-csstransforms3d .results {
- display: none;
-}
-.no-csstransforms3d #toggle-search:checked ~ .main .results,
-.no-csstransforms3d .toggle-search .results {
- display: block;
- overflow: auto;
-}
-.meta {
- text-transform: uppercase;
- font-weight: 700;
-}
-@media only screen and (min-width: 960px) {
- .backdrop {
- background: #f2f2f2;
- }
- .backdrop-paper:after {
- box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05);
- }
- .button-menu {
- display: none;
- }
- .drawer {
- float: left;
- height: auto;
- margin-bottom: 96px;
- padding-top: 80px;
- }
- .drawer,
- .drawer .scrollable {
- position: static;
- }
- .article {
- margin-left: 262px;
- }
- .footer {
- z-index: 4;
- }
- .copyright {
- margin-bottom: 64px;
- }
- .results {
- height: auto;
- top: 64px;
- }
- .results .scrollable {
- position: static;
- max-height: 413px;
- }
-}
-@media only screen and (max-width: 959px) {
- #toggle-drawer:checked ~ .overlay,
- .toggle-drawer .overlay {
- width: 100%;
- height: 100%;
- }
- .drawer {
- -webkit-transform: translate3d(-262px, 0, 0);
- transform: translate3d(-262px, 0, 0);
- -webkit-transition: -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
- transition: -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1),
- -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
- }
- .no-csstransforms3d .drawer {
- display: none;
- }
- .drawer {
- background: #fff;
- }
- .project {
- box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05);
- background: #e84e40;
- color: #fff;
- }
- .drawer {
- position: fixed;
- z-index: 4;
- }
- #toggle-search:checked ~ .main .results,
- .drawer,
- .toggle-search .results {
- height: 100%;
- }
-}
-@media only screen and (min-width: 720px) {
- .header {
- height: 64px;
- padding: 8px;
- }
- .header .stretch {
- padding: 0 16px;
- }
- .header .stretch .title {
- font-size: 20px;
- padding: 12px 0;
- }
- .project .name {
- margin: 26px 0 0 5px;
- }
- .article .wrapper {
- padding: 128px 24px 96px;
- }
- .article .data {
- margin: 1.5em -24px;
- }
- .article .data table {
- margin: 0 24px;
- }
- .article h2 {
- padding-top: 100px;
- margin-top: -64px;
- }
- .ios.standalone .article h2 {
- padding-top: 28px;
- margin-top: 8px;
- }
- .article h3,
- .article h4 {
- padding-top: 84px;
- margin-top: -64px;
- }
- .ios.standalone .article h3,
- .ios.standalone .article h4 {
- padding-top: 20px;
- margin-top: 0;
- }
- .article pre {
- padding: 1.5em 24px;
- margin: 1.5em -24px 0;
- }
- .footer {
- padding: 0 8px;
- }
- .pagination {
- height: 96px;
- padding: 8px 0;
- }
- .pagination .direction {
- padding: 0 56px;
- bottom: 40px;
- }
- .pagination .stretch {
- padding: 0 8px;
- }
- .admonition {
- margin: 20px -24px 0;
- padding: 20px 24px;
- }
- .bar.search .query {
- font-size: 20px;
- padding: 12px 0;
- }
- .results .scrollable {
- top: 64px;
- }
- .results .meta strong {
- padding: 16px 24px;
- }
- .result {
- padding: 16px 24px 20px;
- }
-}
-@media only screen and (min-width: 1200px) {
- .header {
- width: 100%;
- }
- .drawer .scrollable .wrapper hr {
- width: 48px;
- }
-}
-@media only screen and (orientation: portrait) {
- .ios.standalone .header {
- height: 76px;
- padding-top: 24px;
- }
- .ios.standalone .header:before {
- content: " ";
- position: absolute;
- top: 0;
- left: 0;
- z-index: 3;
- width: 100%;
- height: 20px;
- }
- .ios.standalone .drawer .scrollable {
- top: 124px;
- }
- .ios.standalone .project {
- padding-top: 20px;
- }
- .ios.standalone .project:before {
- content: " ";
- position: absolute;
- top: 0;
- left: 0;
- z-index: 3;
- width: 100%;
- height: 20px;
- }
- .ios.standalone .article {
- position: absolute;
- top: 76px;
- right: 0;
- bottom: 0;
- left: 0;
- }
- .ios.standalone .results .scrollable {
- top: 76px;
- }
-}
-@media only screen and (orientation: portrait) and (min-width: 720px) {
- .ios.standalone .header {
- height: 84px;
- padding-top: 28px;
- }
- .ios.standalone .results .scrollable {
- top: 84px;
- }
-}
-@media only screen and (max-width: 719px) {
- .bar .path {
- display: none;
- }
-}
-@media only screen and (max-width: 479px) {
- .button-github,
- .button-twitter {
- display: none;
- }
-}
-@media only screen and (min-width: 720px) and (max-width: 959px) {
- .header .stretch {
- padding: 0 24px;
- }
-}
-@media only screen and (min-width: 480px) {
- .pagination .next,
- .pagination .previous {
- width: 50%;
- }
- .pagination .previous .direction {
- display: block;
- }
- .pagination .previous .stretch {
- display: table;
- }
-}
-@media print {
- .drawer,
- .footer,
- .header,
- .headerlink {
- display: none;
- }
- .article .wrapper {
- padding-top: 0;
- }
- .article pre,
- .article pre * {
- color: rgba(0, 0, 0, 0.87) !important;
- }
- .article pre {
- border: 1px solid rgba(0, 0, 0, 0.12);
- }
- .article table {
- border-radius: none;
- box-shadow: none;
- }
- .article table th {
- color: #e84e40;
- }
-}
diff --git a/docs/static/stylesheets/custom-palettes.css b/docs/static/stylesheets/custom-palettes.css
deleted file mode 100644
index ad7e2a2f..00000000
--- a/docs/static/stylesheets/custom-palettes.css
+++ /dev/null
@@ -1,126 +0,0 @@
-@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400');
-
-@supports (-webkit-appearance:none) {
- .palette-primary-spalding-gray {
- background: rgb(145, 132, 121)
- }
-}
-
-.palette-primary-spalding-gray .footer,
-.palette-primary-spalding-gray .header {
- background: rgb(145, 132, 121)
-}
-
-.palette-primary-spalding-gray .drawer .toc a.current,
-.palette-primary-spalding-gray .drawer .toc a:focus,
-.palette-primary-spalding-gray .drawer .toc a:hover {
- color: rgb(145, 132, 121)
-}
-
-.palette-primary-spalding-gray .drawer .anchor a {
- border-left: 2px solid rgb(145, 132, 121);
-}
-
-.ios.standalone .palette-primary-spalding-gray .article {
- background: -webkit-linear-gradient(top, #fff 50%, rgb(145, 132, 121) 0);
- background: linear-gradient(180deg, #fff 50%, rgb(145, 132, 121) 0);
-}
-
-.palette-primary-spalding-gray .article a,
-.palette-primary-spalding-gray .article code,
-.palette-primary-spalding-gray .article h1,
-.palette-primary-spalding-gray .article h2 {
- color: rgb(145, 132, 121)
-}
-
-.palette-primary-spalding-gray .article .headerlink {
- color: rgba(0, 0, 0, .26)
-}
-
-.palette-primary-spalding-gray .article table th {
- background: #6d6259;
-}
-
-.palette-primary-spalding-gray .results .meta {
- background: rgb(145, 132, 121)
-}
-
-.palette-accent-spalding-gray .article a:focus,
-.palette-accent-spalding-gray .article a:hover {
- color: #bb8550;
-}
-
-.palette-accent-spalding-gray .repo a {
- background: #bb8550;
-}
-
-@media only screen and (max-width:959px) {
- .palette-primary-spalding-gray .project {
- background: rgb(145, 132, 121)
- }
-}
-
-@supports (-webkit-appearance:none) {
- .palette-primary-spalding-blue {
- background: rgb(120, 133, 145);
- }
-}
-
-.palette-primary-spalding-blue .footer,
-.palette-primary-spalding-blue .header {
- background: rgb(120, 133, 145);
-}
-
-.palette-primary-spalding-blue .drawer .toc a.current,
-.palette-primary-spalding-blue .drawer .toc a:focus,
-.palette-primary-spalding-blue .drawer .toc a:hover {
- color: rgb(120, 133, 145);
-}
-
-.palette-primary-spalding-blue .drawer .anchor a {
- border-left: 2px solid rgb(120, 133, 145);
-}
-
-.ios.standalone .palette-primary-spalding-blue .article {
- background: -webkit-linear-gradient(top, #fff 50%, rgb(120, 133, 145) 0);
- background: linear-gradient(180deg, #fff 50%, rgb(120, 133, 145) 0);
-}
-
-.palette-primary-spalding-blue .article a,
-.palette-primary-spalding-blue .article code,
-.palette-primary-spalding-blue .article h1,
-.palette-primary-spalding-blue .article h2 {
- color: rgb(120, 133, 145);
-}
-
-.palette-primary-spalding-blue .article .headerlink {
- color: rgba(0, 0, 0, .26)
-}
-
-.palette-primary-spalding-blue .article table th {
- background: #596d63;
-}
-
-.palette-primary-spalding-blue .results .meta {
- background: rgb(120, 133, 145);
-}
-
-.palette-accent-spalding-blue .article a:focus,
-.palette-accent-spalding-blue .article a:hover {
- color: #787991;
-}
-
-.palette-accent-spalding-blue .repo a {
- background: #596d63;
-}
-
-@media only screen and (max-width:959px) {
- .palette-primary-spalding-blue .project {
- background: rgb(120, 133, 145);
- }
-}
-
-header .title {
- font-family: 'Source Sans Pro', 'Roboto', Helvetica, Arial, sans-serif;
- font-weight: 300;
-}
diff --git a/docs/static/stylesheets/search.css b/docs/static/stylesheets/search.css
deleted file mode 100644
index ad9ef77c..00000000
--- a/docs/static/stylesheets/search.css
+++ /dev/null
@@ -1,22 +0,0 @@
-#search-results cite a {
- text-decoration: none;
- border-bottom: 0px solid;
- color: rgb(120, 133, 145);
- font-style: normal;
- font-size: 85%;
-}
-
-#search-results h3 a {
- text-decoration: none;
- border-bottom: 0px solid;
-}
-
-#search-results .search-result {
- /* background-color: rgba(120, 133, 145, 0.1); */
- color: rgb(72, 66, 60);
-}
-
-mark{
- background: rgb(255, 207, 155);
- color: black;
-}