From 2d1af427040421774d0e91cc74a291b127074d81 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 10 Sep 2024 13:02:36 +0000
Subject: [PATCH] Deploy to GitHub pages
---
404.html | 184 +
background/_benchmarks/index.html | 522 ++
background/_changelog/index.html | 968 +++
background/architecture/index.html | 363 +
background/benchmarks/index.html | 538 ++
background/changelog/index.html | 967 +++
background/design/index.html | 292 +
background/index.html | 231 +
background/index.xml | 45 +
categories/index.html | 222 +
categories/index.xml | 11 +
css/auto-complete.css | 66 +
css/cards.css | 39 +
css/chroma-auto.css | 2 +
css/chroma-github-dark.css | 86 +
css/chroma-github.css | 86 +
css/chroma-learn.css | 87 +
css/chroma-neon.css | 93 +
css/chroma-relearn-dark.css | 87 +
css/chroma-relearn-light.css | 87 +
css/fontawesome-all.min.css | 5 +
css/fonts.css | 39 +
css/format-print.css | 174 +
css/ie.css | 926 +++
css/nucleus.css | 262 +
css/perfect-scrollbar.min.css | 1 +
css/print.css | 1 +
css/style.css | 40 +
css/swagger-dark.css | 2045 +++++
css/swagger-light.css | 0
css/swagger.css | 311 +
css/tags.css | 50 +
css/theme-auto.css | 2 +
css/theme-blue.css | 41 +
css/theme-dark.css | 21 +
css/theme-green.css | 41 +
css/theme-learn.css | 49 +
css/theme-light.css | 17 +
css/theme-neon.css | 311 +
css/theme-red.css | 41 +
css/theme-relearn-bright.css | 52 +
css/theme-relearn-dark.css | 43 +
css/theme-relearn-light.css | 41 +
css/theme-relearn.css | 3 +
css/theme-zen-dark.css | 59 +
css/theme-zen-light.css | 59 +
css/theme.css | 2287 ++++++
css/variant-internal.css | 115 +
css/variant.css | 505 ++
fonts/WorkSans-Bold.woff | Bin 0 -> 105088 bytes
fonts/WorkSans-Bold.woff2 | Bin 0 -> 75876 bytes
fonts/WorkSans-ExtraLight.woff | Bin 0 -> 103992 bytes
fonts/WorkSans-ExtraLight.woff2 | Bin 0 -> 74504 bytes
fonts/WorkSans-Light.woff | Bin 0 -> 103552 bytes
fonts/WorkSans-Light.woff2 | Bin 0 -> 73820 bytes
fonts/WorkSans-Medium.woff | Bin 0 -> 105508 bytes
fonts/WorkSans-Medium.woff2 | Bin 0 -> 76068 bytes
fonts/WorkSans-Regular.woff | Bin 0 -> 98800 bytes
fonts/WorkSans-Regular.woff2 | Bin 0 -> 71416 bytes
go.mod | 9 +
go.sum | 8 +
guide/apis/api_test.go | 46 +
guide/apis/index.html | 718 ++
guide/batch-ops/batch_test.go | 181 +
guide/batch-ops/index.html | 5489 +++++++++++++
guide/entities/entities_test.go | 181 +
guide/entities/index.html | 7270 +++++++++++++++++
guide/events/events_listener_test.go | 38 +
guide/events/events_test.go | 74 +
guide/events/index.html | 1349 +++
guide/filters/filters_test.go | 155 +
guide/filters/index.html | 5013 ++++++++++++
guide/index.html | 250 +
guide/index.xml | 129 +
guide/performance/index.html | 358 +
guide/queries/index.html | 2391 ++++++
guide/queries/queries_test.go | 118 +
guide/relations/index.html | 5983 ++++++++++++++
guide/relations/relations_example_test.go | 69 +
guide/relations/relations_test.go | 192 +
guide/resources/index.html | 1672 ++++
guide/resources/resources_test.go | 80 +
guide/stats/index.html | 474 ++
guide/stats/stats_test.go | 30 +
guide/tools/index.html | 244 +
guide/world-access/access_test.go | 82 +
guide/world-access/index.html | 1776 ++++
guide/world/index.html | 754 ++
guide/world/world_test.go | 35 +
images/arche-logo-text.svg | 87 +
images/arche-logo.svg | 86 +
images/background/archetype-graph-dark.svg | 529 ++
images/background/archetype-graph.svg | 531 ++
images/favicon.svg | 86 +
images/logo-dark.svg | 64 +
images/logo-light.svg | 64 +
images/social.png | Bin 0 -> 28513 bytes
images/social.svg | 89 +
index.html | 288 +
index.search.js | 194 +
index.xml | 46 +
js/auto-complete.js | 288 +
js/clipboard.min.js | 7 +
js/d3/d3-color.min.js | 2 +
js/d3/d3-dispatch.min.js | 2 +
js/d3/d3-drag.min.js | 2 +
js/d3/d3-ease.min.js | 2 +
js/d3/d3-interpolate.min.js | 2 +
js/d3/d3-selection.min.js | 2 +
js/d3/d3-timer.min.js | 2 +
js/d3/d3-transition.min.js | 2 +
js/d3/d3-zoom.min.js | 2 +
js/js-yaml.min.js | 2 +
js/lunr/lunr.ar.min.js | 1 +
js/lunr/lunr.da.min.js | 18 +
js/lunr/lunr.de.min.js | 18 +
js/lunr/lunr.du.min.js | 18 +
js/lunr/lunr.en.min.js | 7 +
js/lunr/lunr.es.min.js | 18 +
js/lunr/lunr.fi.min.js | 18 +
js/lunr/lunr.fr.min.js | 18 +
js/lunr/lunr.hi.min.js | 1 +
js/lunr/lunr.hu.min.js | 18 +
js/lunr/lunr.it.min.js | 18 +
js/lunr/lunr.ja.min.js | 1 +
js/lunr/lunr.jp.min.js | 1 +
js/lunr/lunr.ko.min.js | 1 +
js/lunr/lunr.min.js | 6 +
js/lunr/lunr.multi.min.js | 1 +
js/lunr/lunr.nl.min.js | 18 +
js/lunr/lunr.no.min.js | 18 +
js/lunr/lunr.pt.min.js | 18 +
js/lunr/lunr.ro.min.js | 18 +
js/lunr/lunr.ru.min.js | 18 +
js/lunr/lunr.stemmer.support.min.js | 1 +
js/lunr/lunr.sv.min.js | 18 +
js/lunr/lunr.ta.min.js | 1 +
js/lunr/lunr.th.min.js | 1 +
js/lunr/lunr.tr.min.js | 18 +
js/lunr/lunr.vi.min.js | 1 +
js/lunr/lunr.zh.min.js | 1 +
js/lunr/tinyseg.js | 206 +
js/lunr/wordcut.js | 6708 +++++++++++++++
js/mathjax/a11y/assistive-mml.js | 1 +
js/mathjax/a11y/complexity.js | 1 +
js/mathjax/a11y/explorer.js | 1 +
js/mathjax/a11y/semantic-enrich.js | 1 +
js/mathjax/adaptors/liteDOM.js | 1 +
js/mathjax/core.js | 1 +
js/mathjax/input/asciimath.js | 1 +
js/mathjax/input/mml.js | 1 +
js/mathjax/input/mml/entities.js | 1 +
js/mathjax/input/mml/extensions/mml3.js | 1 +
js/mathjax/input/mml/extensions/mml3.sef.json | 1 +
js/mathjax/input/tex-base.js | 1 +
js/mathjax/input/tex-full.js | 34 +
js/mathjax/input/tex.js | 1 +
js/mathjax/input/tex/extensions/action.js | 1 +
.../input/tex/extensions/all-packages.js | 34 +
js/mathjax/input/tex/extensions/ams.js | 1 +
js/mathjax/input/tex/extensions/amscd.js | 1 +
js/mathjax/input/tex/extensions/autoload.js | 1 +
js/mathjax/input/tex/extensions/bbox.js | 1 +
js/mathjax/input/tex/extensions/boldsymbol.js | 1 +
js/mathjax/input/tex/extensions/braket.js | 1 +
js/mathjax/input/tex/extensions/bussproofs.js | 1 +
js/mathjax/input/tex/extensions/cancel.js | 1 +
js/mathjax/input/tex/extensions/centernot.js | 1 +
js/mathjax/input/tex/extensions/color.js | 1 +
js/mathjax/input/tex/extensions/colortbl.js | 1 +
js/mathjax/input/tex/extensions/colorv2.js | 1 +
.../input/tex/extensions/configmacros.js | 1 +
js/mathjax/input/tex/extensions/enclose.js | 1 +
js/mathjax/input/tex/extensions/extpfeil.js | 1 +
js/mathjax/input/tex/extensions/gensymb.js | 1 +
js/mathjax/input/tex/extensions/html.js | 1 +
js/mathjax/input/tex/extensions/mathtools.js | 1 +
js/mathjax/input/tex/extensions/mhchem.js | 34 +
js/mathjax/input/tex/extensions/newcommand.js | 1 +
js/mathjax/input/tex/extensions/noerrors.js | 1 +
.../input/tex/extensions/noundefined.js | 1 +
js/mathjax/input/tex/extensions/physics.js | 1 +
js/mathjax/input/tex/extensions/require.js | 1 +
js/mathjax/input/tex/extensions/setoptions.js | 1 +
js/mathjax/input/tex/extensions/tagformat.js | 1 +
js/mathjax/input/tex/extensions/textcomp.js | 1 +
js/mathjax/input/tex/extensions/textmacros.js | 1 +
js/mathjax/input/tex/extensions/unicode.js | 1 +
js/mathjax/input/tex/extensions/upgreek.js | 1 +
js/mathjax/input/tex/extensions/verb.js | 1 +
js/mathjax/latest.js | 1 +
js/mathjax/loader.js | 1 +
js/mathjax/mml-chtml.js | 1 +
js/mathjax/mml-svg.js | 1 +
js/mathjax/node-main.js | 1 +
js/mathjax/output/chtml.js | 1 +
js/mathjax/output/chtml/fonts/tex.js | 1 +
.../fonts/woff-v2/MathJax_AMS-Regular.woff | Bin 0 -> 40808 bytes
.../woff-v2/MathJax_Calligraphic-Bold.woff | Bin 0 -> 9908 bytes
.../woff-v2/MathJax_Calligraphic-Regular.woff | Bin 0 -> 9600 bytes
.../fonts/woff-v2/MathJax_Fraktur-Bold.woff | Bin 0 -> 22340 bytes
.../woff-v2/MathJax_Fraktur-Regular.woff | Bin 0 -> 21480 bytes
.../fonts/woff-v2/MathJax_Main-Bold.woff | Bin 0 -> 34464 bytes
.../fonts/woff-v2/MathJax_Main-Italic.woff | Bin 0 -> 20832 bytes
.../fonts/woff-v2/MathJax_Main-Regular.woff | Bin 0 -> 34160 bytes
.../woff-v2/MathJax_Math-BoldItalic.woff | Bin 0 -> 19776 bytes
.../fonts/woff-v2/MathJax_Math-Italic.woff | Bin 0 -> 19360 bytes
.../fonts/woff-v2/MathJax_Math-Regular.woff | Bin 0 -> 19288 bytes
.../fonts/woff-v2/MathJax_SansSerif-Bold.woff | Bin 0 -> 15944 bytes
.../woff-v2/MathJax_SansSerif-Italic.woff | Bin 0 -> 14628 bytes
.../woff-v2/MathJax_SansSerif-Regular.woff | Bin 0 -> 12660 bytes
.../fonts/woff-v2/MathJax_Script-Regular.woff | Bin 0 -> 11852 bytes
.../fonts/woff-v2/MathJax_Size1-Regular.woff | Bin 0 -> 5792 bytes
.../fonts/woff-v2/MathJax_Size2-Regular.woff | Bin 0 -> 5464 bytes
.../fonts/woff-v2/MathJax_Size3-Regular.woff | Bin 0 -> 3244 bytes
.../fonts/woff-v2/MathJax_Size4-Regular.woff | Bin 0 -> 5148 bytes
.../woff-v2/MathJax_Typewriter-Regular.woff | Bin 0 -> 17604 bytes
.../fonts/woff-v2/MathJax_Vector-Bold.woff | Bin 0 -> 1116 bytes
.../fonts/woff-v2/MathJax_Vector-Regular.woff | Bin 0 -> 1136 bytes
.../chtml/fonts/woff-v2/MathJax_Zero.woff | Bin 0 -> 1368 bytes
js/mathjax/output/svg.js | 1 +
js/mathjax/output/svg/fonts/tex.js | 1 +
js/mathjax/sre/mathmaps/de.js | 125 +
js/mathjax/sre/mathmaps/en.js | 131 +
js/mathjax/sre/mathmaps/es.js | 122 +
js/mathjax/sre/mathmaps/fr.js | 125 +
js/mathjax/sre/mathmaps/hi.js | 125 +
js/mathjax/sre/mathmaps/it.js | 125 +
js/mathjax/sre/mathmaps/nemeth.js | 113 +
js/mathjax/sre/sre-node.js | 11 +
js/mathjax/sre/sre_browser.js | 999 +++
js/mathjax/startup.js | 1 +
js/mathjax/tex-chtml-full.js | 34 +
js/mathjax/tex-chtml.js | 1 +
js/mathjax/tex-mml-chtml.js | 1 +
js/mathjax/tex-mml-svg.js | 1 +
js/mathjax/tex-svg-full.js | 34 +
js/mathjax/tex-svg.js | 1 +
js/mathjax/ui/lazy.js | 1 +
js/mathjax/ui/menu.js | 1 +
js/mathjax/ui/safe.js | 1 +
js/mermaid.min.js | 1646 ++++
js/perfect-scrollbar.min.js | 20 +
js/search.js | 314 +
js/swagger-ui/swagger-ui-bundle.js | 3 +
js/swagger-ui/swagger-ui-standalone-preset.js | 3 +
js/swagger-ui/swagger-ui.css | 3 +
js/theme.js | 1675 ++++
js/url.js | 430 +
js/variant.js | 644 ++
made_with/index.html | 249 +
made_with/index.xml | 11 +
quickstart/example_test.go | 59 +
quickstart/index.html | 335 +
quickstart/index.xml | 11 +
sitemap.xml | 75 +
tags/index.html | 222 +
tags/index.xml | 11 +
webfonts/fa-brands-400.eot | Bin 0 -> 134294 bytes
webfonts/fa-brands-400.svg | 3717 +++++++++
webfonts/fa-brands-400.ttf | Bin 0 -> 133988 bytes
webfonts/fa-brands-400.woff | Bin 0 -> 89988 bytes
webfonts/fa-brands-400.woff2 | Bin 0 -> 76736 bytes
webfonts/fa-regular-400.eot | Bin 0 -> 34034 bytes
webfonts/fa-regular-400.svg | 801 ++
webfonts/fa-regular-400.ttf | Bin 0 -> 33736 bytes
webfonts/fa-regular-400.woff | Bin 0 -> 16276 bytes
webfonts/fa-regular-400.woff2 | Bin 0 -> 13224 bytes
webfonts/fa-solid-900.eot | Bin 0 -> 203030 bytes
webfonts/fa-solid-900.svg | 5034 ++++++++++++
webfonts/fa-solid-900.ttf | Bin 0 -> 202744 bytes
webfonts/fa-solid-900.woff | Bin 0 -> 101648 bytes
webfonts/fa-solid-900.woff2 | Bin 0 -> 78268 bytes
273 files changed, 74642 insertions(+)
create mode 100644 404.html
create mode 100644 background/_benchmarks/index.html
create mode 100644 background/_changelog/index.html
create mode 100644 background/architecture/index.html
create mode 100644 background/benchmarks/index.html
create mode 100644 background/changelog/index.html
create mode 100644 background/design/index.html
create mode 100644 background/index.html
create mode 100644 background/index.xml
create mode 100644 categories/index.html
create mode 100644 categories/index.xml
create mode 100644 css/auto-complete.css
create mode 100644 css/cards.css
create mode 100644 css/chroma-auto.css
create mode 100644 css/chroma-github-dark.css
create mode 100644 css/chroma-github.css
create mode 100644 css/chroma-learn.css
create mode 100644 css/chroma-neon.css
create mode 100644 css/chroma-relearn-dark.css
create mode 100644 css/chroma-relearn-light.css
create mode 100644 css/fontawesome-all.min.css
create mode 100644 css/fonts.css
create mode 100644 css/format-print.css
create mode 100644 css/ie.css
create mode 100644 css/nucleus.css
create mode 100644 css/perfect-scrollbar.min.css
create mode 100644 css/print.css
create mode 100644 css/style.css
create mode 100644 css/swagger-dark.css
create mode 100644 css/swagger-light.css
create mode 100644 css/swagger.css
create mode 100644 css/tags.css
create mode 100644 css/theme-auto.css
create mode 100644 css/theme-blue.css
create mode 100644 css/theme-dark.css
create mode 100644 css/theme-green.css
create mode 100644 css/theme-learn.css
create mode 100644 css/theme-light.css
create mode 100644 css/theme-neon.css
create mode 100644 css/theme-red.css
create mode 100644 css/theme-relearn-bright.css
create mode 100644 css/theme-relearn-dark.css
create mode 100644 css/theme-relearn-light.css
create mode 100644 css/theme-relearn.css
create mode 100644 css/theme-zen-dark.css
create mode 100644 css/theme-zen-light.css
create mode 100644 css/theme.css
create mode 100644 css/variant-internal.css
create mode 100644 css/variant.css
create mode 100644 fonts/WorkSans-Bold.woff
create mode 100644 fonts/WorkSans-Bold.woff2
create mode 100644 fonts/WorkSans-ExtraLight.woff
create mode 100644 fonts/WorkSans-ExtraLight.woff2
create mode 100644 fonts/WorkSans-Light.woff
create mode 100644 fonts/WorkSans-Light.woff2
create mode 100644 fonts/WorkSans-Medium.woff
create mode 100644 fonts/WorkSans-Medium.woff2
create mode 100644 fonts/WorkSans-Regular.woff
create mode 100644 fonts/WorkSans-Regular.woff2
create mode 100644 go.mod
create mode 100644 go.sum
create mode 100644 guide/apis/api_test.go
create mode 100644 guide/apis/index.html
create mode 100644 guide/batch-ops/batch_test.go
create mode 100644 guide/batch-ops/index.html
create mode 100644 guide/entities/entities_test.go
create mode 100644 guide/entities/index.html
create mode 100644 guide/events/events_listener_test.go
create mode 100644 guide/events/events_test.go
create mode 100644 guide/events/index.html
create mode 100644 guide/filters/filters_test.go
create mode 100644 guide/filters/index.html
create mode 100644 guide/index.html
create mode 100644 guide/index.xml
create mode 100644 guide/performance/index.html
create mode 100644 guide/queries/index.html
create mode 100644 guide/queries/queries_test.go
create mode 100644 guide/relations/index.html
create mode 100644 guide/relations/relations_example_test.go
create mode 100644 guide/relations/relations_test.go
create mode 100644 guide/resources/index.html
create mode 100644 guide/resources/resources_test.go
create mode 100644 guide/stats/index.html
create mode 100644 guide/stats/stats_test.go
create mode 100644 guide/tools/index.html
create mode 100644 guide/world-access/access_test.go
create mode 100644 guide/world-access/index.html
create mode 100644 guide/world/index.html
create mode 100644 guide/world/world_test.go
create mode 100644 images/arche-logo-text.svg
create mode 100644 images/arche-logo.svg
create mode 100644 images/background/archetype-graph-dark.svg
create mode 100644 images/background/archetype-graph.svg
create mode 100644 images/favicon.svg
create mode 100644 images/logo-dark.svg
create mode 100644 images/logo-light.svg
create mode 100644 images/social.png
create mode 100644 images/social.svg
create mode 100644 index.html
create mode 100644 index.search.js
create mode 100644 index.xml
create mode 100644 js/auto-complete.js
create mode 100644 js/clipboard.min.js
create mode 100644 js/d3/d3-color.min.js
create mode 100644 js/d3/d3-dispatch.min.js
create mode 100644 js/d3/d3-drag.min.js
create mode 100644 js/d3/d3-ease.min.js
create mode 100644 js/d3/d3-interpolate.min.js
create mode 100644 js/d3/d3-selection.min.js
create mode 100644 js/d3/d3-timer.min.js
create mode 100644 js/d3/d3-transition.min.js
create mode 100644 js/d3/d3-zoom.min.js
create mode 100644 js/js-yaml.min.js
create mode 100644 js/lunr/lunr.ar.min.js
create mode 100644 js/lunr/lunr.da.min.js
create mode 100644 js/lunr/lunr.de.min.js
create mode 100644 js/lunr/lunr.du.min.js
create mode 100644 js/lunr/lunr.en.min.js
create mode 100644 js/lunr/lunr.es.min.js
create mode 100644 js/lunr/lunr.fi.min.js
create mode 100644 js/lunr/lunr.fr.min.js
create mode 100644 js/lunr/lunr.hi.min.js
create mode 100644 js/lunr/lunr.hu.min.js
create mode 100644 js/lunr/lunr.it.min.js
create mode 100644 js/lunr/lunr.ja.min.js
create mode 100644 js/lunr/lunr.jp.min.js
create mode 100644 js/lunr/lunr.ko.min.js
create mode 100644 js/lunr/lunr.min.js
create mode 100644 js/lunr/lunr.multi.min.js
create mode 100644 js/lunr/lunr.nl.min.js
create mode 100644 js/lunr/lunr.no.min.js
create mode 100644 js/lunr/lunr.pt.min.js
create mode 100644 js/lunr/lunr.ro.min.js
create mode 100644 js/lunr/lunr.ru.min.js
create mode 100644 js/lunr/lunr.stemmer.support.min.js
create mode 100644 js/lunr/lunr.sv.min.js
create mode 100644 js/lunr/lunr.ta.min.js
create mode 100644 js/lunr/lunr.th.min.js
create mode 100644 js/lunr/lunr.tr.min.js
create mode 100644 js/lunr/lunr.vi.min.js
create mode 100644 js/lunr/lunr.zh.min.js
create mode 100644 js/lunr/tinyseg.js
create mode 100644 js/lunr/wordcut.js
create mode 100644 js/mathjax/a11y/assistive-mml.js
create mode 100644 js/mathjax/a11y/complexity.js
create mode 100644 js/mathjax/a11y/explorer.js
create mode 100644 js/mathjax/a11y/semantic-enrich.js
create mode 100644 js/mathjax/adaptors/liteDOM.js
create mode 100644 js/mathjax/core.js
create mode 100644 js/mathjax/input/asciimath.js
create mode 100644 js/mathjax/input/mml.js
create mode 100644 js/mathjax/input/mml/entities.js
create mode 100644 js/mathjax/input/mml/extensions/mml3.js
create mode 100644 js/mathjax/input/mml/extensions/mml3.sef.json
create mode 100644 js/mathjax/input/tex-base.js
create mode 100644 js/mathjax/input/tex-full.js
create mode 100644 js/mathjax/input/tex.js
create mode 100644 js/mathjax/input/tex/extensions/action.js
create mode 100644 js/mathjax/input/tex/extensions/all-packages.js
create mode 100644 js/mathjax/input/tex/extensions/ams.js
create mode 100644 js/mathjax/input/tex/extensions/amscd.js
create mode 100644 js/mathjax/input/tex/extensions/autoload.js
create mode 100644 js/mathjax/input/tex/extensions/bbox.js
create mode 100644 js/mathjax/input/tex/extensions/boldsymbol.js
create mode 100644 js/mathjax/input/tex/extensions/braket.js
create mode 100644 js/mathjax/input/tex/extensions/bussproofs.js
create mode 100644 js/mathjax/input/tex/extensions/cancel.js
create mode 100644 js/mathjax/input/tex/extensions/centernot.js
create mode 100644 js/mathjax/input/tex/extensions/color.js
create mode 100644 js/mathjax/input/tex/extensions/colortbl.js
create mode 100644 js/mathjax/input/tex/extensions/colorv2.js
create mode 100644 js/mathjax/input/tex/extensions/configmacros.js
create mode 100644 js/mathjax/input/tex/extensions/enclose.js
create mode 100644 js/mathjax/input/tex/extensions/extpfeil.js
create mode 100644 js/mathjax/input/tex/extensions/gensymb.js
create mode 100644 js/mathjax/input/tex/extensions/html.js
create mode 100644 js/mathjax/input/tex/extensions/mathtools.js
create mode 100644 js/mathjax/input/tex/extensions/mhchem.js
create mode 100644 js/mathjax/input/tex/extensions/newcommand.js
create mode 100644 js/mathjax/input/tex/extensions/noerrors.js
create mode 100644 js/mathjax/input/tex/extensions/noundefined.js
create mode 100644 js/mathjax/input/tex/extensions/physics.js
create mode 100644 js/mathjax/input/tex/extensions/require.js
create mode 100644 js/mathjax/input/tex/extensions/setoptions.js
create mode 100644 js/mathjax/input/tex/extensions/tagformat.js
create mode 100644 js/mathjax/input/tex/extensions/textcomp.js
create mode 100644 js/mathjax/input/tex/extensions/textmacros.js
create mode 100644 js/mathjax/input/tex/extensions/unicode.js
create mode 100644 js/mathjax/input/tex/extensions/upgreek.js
create mode 100644 js/mathjax/input/tex/extensions/verb.js
create mode 100644 js/mathjax/latest.js
create mode 100644 js/mathjax/loader.js
create mode 100644 js/mathjax/mml-chtml.js
create mode 100644 js/mathjax/mml-svg.js
create mode 100644 js/mathjax/node-main.js
create mode 100644 js/mathjax/output/chtml.js
create mode 100644 js/mathjax/output/chtml/fonts/tex.js
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff
create mode 100644 js/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff
create mode 100644 js/mathjax/output/svg.js
create mode 100644 js/mathjax/output/svg/fonts/tex.js
create mode 100644 js/mathjax/sre/mathmaps/de.js
create mode 100644 js/mathjax/sre/mathmaps/en.js
create mode 100644 js/mathjax/sre/mathmaps/es.js
create mode 100644 js/mathjax/sre/mathmaps/fr.js
create mode 100644 js/mathjax/sre/mathmaps/hi.js
create mode 100644 js/mathjax/sre/mathmaps/it.js
create mode 100644 js/mathjax/sre/mathmaps/nemeth.js
create mode 100644 js/mathjax/sre/sre-node.js
create mode 100644 js/mathjax/sre/sre_browser.js
create mode 100644 js/mathjax/startup.js
create mode 100644 js/mathjax/tex-chtml-full.js
create mode 100644 js/mathjax/tex-chtml.js
create mode 100644 js/mathjax/tex-mml-chtml.js
create mode 100644 js/mathjax/tex-mml-svg.js
create mode 100644 js/mathjax/tex-svg-full.js
create mode 100644 js/mathjax/tex-svg.js
create mode 100644 js/mathjax/ui/lazy.js
create mode 100644 js/mathjax/ui/menu.js
create mode 100644 js/mathjax/ui/safe.js
create mode 100644 js/mermaid.min.js
create mode 100644 js/perfect-scrollbar.min.js
create mode 100644 js/search.js
create mode 100644 js/swagger-ui/swagger-ui-bundle.js
create mode 100644 js/swagger-ui/swagger-ui-standalone-preset.js
create mode 100644 js/swagger-ui/swagger-ui.css
create mode 100644 js/theme.js
create mode 100644 js/url.js
create mode 100644 js/variant.js
create mode 100644 made_with/index.html
create mode 100644 made_with/index.xml
create mode 100644 quickstart/example_test.go
create mode 100644 quickstart/index.html
create mode 100644 quickstart/index.xml
create mode 100644 sitemap.xml
create mode 100644 tags/index.html
create mode 100644 tags/index.xml
create mode 100644 webfonts/fa-brands-400.eot
create mode 100644 webfonts/fa-brands-400.svg
create mode 100644 webfonts/fa-brands-400.ttf
create mode 100644 webfonts/fa-brands-400.woff
create mode 100644 webfonts/fa-brands-400.woff2
create mode 100644 webfonts/fa-regular-400.eot
create mode 100644 webfonts/fa-regular-400.svg
create mode 100644 webfonts/fa-regular-400.ttf
create mode 100644 webfonts/fa-regular-400.woff
create mode 100644 webfonts/fa-regular-400.woff2
create mode 100644 webfonts/fa-solid-900.eot
create mode 100644 webfonts/fa-solid-900.svg
create mode 100644 webfonts/fa-solid-900.ttf
create mode 100644 webfonts/fa-solid-900.woff
create mode 100644 webfonts/fa-solid-900.woff2
diff --git a/404.html b/404.html
new file mode 100644
index 00000000..1efdaecc
--- /dev/null
+++ b/404.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 404 Page not found :: Arche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4 4
+ Not found
+
+ Woops. Looks like this page doesn't exist ¯\_(ツ)_/¯.
+
+ Go to homepage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/_benchmarks/index.html b/background/_benchmarks/index.html
new file mode 100644
index 00000000..582b9027
--- /dev/null
+++ b/background/_benchmarks/index.html
@@ -0,0 +1,522 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Last run: Tue, 10 Sep 2024 12:59:48 UTC
+Query
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Query.Next
+1.0 ns
+
+
+
+Query.Next + 1x Query.Get
+1.6 ns
+
+
+
+Query.Next + 2x Query.Get
+1.9 ns
+
+
+
+Query.Next + 5x Query.Get
+4.4 ns
+
+
+
+Query.Next + Query.Entity
+1.3 ns
+
+
+
+Query.Next + Query.Relation
+2.2 ns
+
+
+
+Query.EntityAt, 1 arch
+12.0 ns
+
+
+
+Query.EntityAt, 1 arch
+2.8 ns
+registered filter
+
+
+Query.EntityAt, 5 arch
+31.3 ns
+
+
+
+Query.EntityAt, 5 arch
+4.3 ns
+registered filter
+
+
+World.Query
+44.8 ns
+
+
+
+World.Query
+34.6 ns
+registered filter
+
+
+
+World access
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+World.Get
+2.1 ns
+random, 1000 entities
+
+
+World.GetUnchecked
+1.5 ns
+random, 1000 entities
+
+
+World.Has
+1.3 ns
+random, 1000 entities
+
+
+World.HasUnchecked
+0.7 ns
+random, 1000 entities
+
+
+World.Alive
+0.6 ns
+random, 1000 entities
+
+
+World.Relations.Get
+3.5 ns
+random, 1000 entities
+
+
+World.Relations.GetUnchecked
+0.8 ns
+random, 1000 entities
+
+
+
+Entities
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Entity.IsZero
+0.2 ns
+
+
+
+World.NewEntity
+16.6 ns
+memory already allocated
+
+
+World.NewEntity w/ 1 Comp
+33.2 ns
+memory already allocated
+
+
+World.NewEntity w/ 5 Comps
+47.1 ns
+memory already allocated
+
+
+World.RemoveEntity
+15.1 ns
+
+
+
+World.RemoveEntity w/ 1 Comp
+26.3 ns
+
+
+
+World.RemoveEntity w/ 5 Comps
+55.2 ns
+
+
+
+
+Entities, batched
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Builder.NewBatch
+10.4 ns
+1000, memory already allocated
+
+
+Builder.NewBatch w/ 1 Comp
+10.5 ns
+1000, memory already allocated
+
+
+Builder.NewBatch w/ 5 Comps
+10.1 ns
+1000, memory already allocated
+
+
+Batch.RemoveEntities
+7.3 ns
+1000
+
+
+Batch.RemoveEntities w/ 1 Comp
+7.1 ns
+1000
+
+
+Batch.RemoveEntities w/ 5 Comps
+7.5 ns
+1000
+
+
+
+Components
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+World.Add 1 Comp
+76.4 ns
+memory already allocated
+
+
+World.Add 5 Comps
+90.4 ns
+memory already allocated
+
+
+World.Remove 1 Comp
+82.2 ns
+
+
+
+World.Remove 5 Comps
+127.2 ns
+
+
+
+World.Exchange 1 Comp
+79.0 ns
+memory already allocated
+
+
+
+Components, batched
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Batch.Add 1 Comp
+8.6 ns
+1000, memory already allocated
+
+
+Batch.Add 5 Comps
+8.8 ns
+1000, memory already allocated
+
+
+Batch.Remove 1 Comp
+9.5 ns
+1000
+
+
+Batch.Remove 5 Comps
+15.0 ns
+1000
+
+
+Batch.Exchange 1 Comp
+10.3 ns
+1000, memory already allocated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/_changelog/index.html b/background/_changelog/index.html
new file mode 100644
index 00000000..ad72d74f
--- /dev/null
+++ b/background/_changelog/index.html
@@ -0,0 +1,968 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation
+
+Adds an example for World.Mask
, showing how to check whether a filter “contains” an entity (#428)
+
+
+Bugfixes
+
+Ensure Assign() copies components before notifying listeners (#426, g-getsov )
+
+
+Bugfixes
+
+Fixes dispatch listener bug that did not clear component restriction (#424, g-getsov )
+
+
+Features
+
+Adds function ResourceTypeID
to register/get a resource ID from a reflect.Type
(#420)
+
+Other
+
+Fix component type in examples/base (#419)
+
+
+Features
+
+Adds Entity.ID()
and Entity.Generation()
(#408, delaneyj )
+
+Documentation
+
+Adds a showcase chapter “Made with Arche” to the documentation page (#411)
+
+
+
+Re-arrange struct fields to save memory in a few places (#413)
+
+Bugfixes
+
+Fix crash caused by extending layouts of an inactive archetype (#416, reported in #415)
+
+First-time contributors
+
+
+Highlights
+Arche now has a dedicated documentation site
+with a structured user guide and background information.
+We hope that this will lower the barrier to entrance significantly.
+Further, Arche got a few new features:
+
+Query.EntityAt
was added for random access to query entities.
+Generic filters now support Exclusive
, like ID-based filters.
+Build tag debug
improves error messages in a few places where we rely on standard library panics for performance.
+
+Breaking changes
+
+Renames types in ecs.stats
to follow Go standards.
+stats.WorldStats
-> stats.World
, stats.NodeStats
-> stats.Node
, … (#388)
+
+Features
+
+Adds method Query.EntityAt()
, useful for things like random sampling of entities (#358)
+Adds build tag debug
to improve error messages in a few places where we rely on standard library panics for performance (#377)
+Adds method FilterX.Exclusive()
to all generic filters (#381)
+
+Documentation
+
+Adds a dedicated Arche User Guide web site (#380, #382, #383, #384, #385)
+Adds BENCHMARKS.md benchmarks for a tabular overview of the runtime cost of typical Arche ECS operations (#367, #372)
+Link benchmarking code in README.md
and benchmarking tables (#375)
+Documents build tags tiny
and debug
in package docs of ecs
(#377)
+Adds examples to demonstrate the use of non-ECS data structures together with ECS (#379)
+
+Bugfixes
+
+Prevents using the same component multiple times in any operations, through panic (#357)
+
+
+
+Generic filters use Mask
instead of slower MaskFilter
if no components are excluded (#381)
+
+Other
+
+Improves error messages for running out of world locks, components or resources, and on unbalanced unlock (#363)
+Adds benchmarks for query creation (#366)
+Upgrade to Go 1.22 in CI (#376)
+Renames directory examples
to _examples
to accommodate changed test coverage behaviour of Go 1.22 (#376)
+In unit tests, error messages of all panics are asserted (#377)
+
+
+Bugfixes
+
+Fix IsRelation check to allow for non-struct components, like type aliases (#354)
+
+Other
+
+
+Highlights
+
+Arche supports full world serialization and deserialization, in conjunction with arche-serde (#319)
+Supports 256 instead of 128 component types as well as resource types and engine locks (#313)
+Generic API supports up to 12 instead of 8 component types (#324)
+Reworked event system with granular subscription to different event types and components (#333, #334, #335, #337, #340)
+
+Breaking changes
+
+MaskTotalBits
changed from 128 to 256 (#313)
+Removes Mask.Lo
and Mask.Hi
, internal mask representation is now private (#313)
+Filter.Matches(Mask)
became Filter.Matches(*Mask)
; same for all Filter
implementations (#313)
+This change was necessary to get the same performance as before, despite the more heavyweight implementation of the now 256 bits Mask
.
+Component and resource IDs are now opaque types instead of type aliases for uint8
(#330)
+Restructures EntityEvent
to remove redundant information and better handle relation changes (#333)
+World event listener changed from a simple function to a Listener
interface (#334)
+Removes World.ComponentType(ID)
, use function ComponentInfo(ID)
instead (#341)
+
+Features
+
+Adds functions ComponentInfo(*World, ID)
and ResourceType(*World, ResID)
(#315, #318)
+Adds methods World.Ids(Entity)
and Query.Ids()
to get component IDs for an entity (#315, #325)
+Entities support JSON marshalling and unmarshalling (#319)
+The world’s entity state can be extracted and re-established via World.DumpEntities()
and World.LoadEntities()
(#319, #326)
+Adds functions ComponentIDs(*World)
and ResourceIDs(*World)
to get all registered IDs (#330)
+Adds methods Mask.And
, Mask.Or
and Mask.Xor
(#335)
+Adds build tag tiny
to restrict to 64 components for an extra bit of performance (#338)
+Adds methods Relations.Exchange()
, Relations.ExchangeBatch()
, Relations.ExchangeBatchQ()
for exchange with relation target (#342)
+Generic API adds Exchange.WithRelation()
and optional target argument for operations with relation target (#342)
+Generic API adds MapX.AddBatch()
, MapX.AddBatchQ()
, MapX.RemoveBatch()
and MapX.RemoveBatchQ()
(#342)
+Generic API adds optional relation target argument to most MapX
methods (#342)
+Generic API adds FilterX.Filter()
to get an ecs.Filter
from a generic one (#342)
+Generic API adds Map.SetRelationBatch()
and Map.SetRelationBatchQ()
(#344)
+All batch operations (except entity creation) return the number of affected entities (#348)
+
+
+
+Reduces archetype memory footprint by using a dynamically sized slice for storage lookup (#327)
+Reduces event listener overhead through granular subscriptions and elimination of a heap allocation (#333, #334, #335, #337, #340)
+
+Documentation
+
+Adds an overview to packages ecs
and generic
on how to achieve ECS manipulation operations (#345)
+
+Other
+
+Entity generation data type changed from uint16
to uint32
(#317)
+Adds unitoftime/ecs to competition benchmarks (#311)
+Adds competition benchmarks for accessing 10 components (#328)
+
+
+Infrastructure
+
+Upgraded to Go 1.21 toolchain (#308)
+
+
+Documentation
+
+Emphasize in Entity
and World
docs that entities are intended to be stored and passed by copy, not by pointer (#306)
+
+
+Highlights
+Entity relations were added as a first-class feature (#231, #271)
+Relations are used to represent graphs of entities, e.g. hierarchies.
+They can be added, removed and queried just like normal components.
+The new feature offers ergonomic handling of entity relations,
+and provides relation queries with native performance.
+Breaking changes
+
+Removed World.Batch
for entity batch creation, use Builder
instead (#239)
+Rework of generic entity creation API, use MapX.New
, MapX.NewWith
, MapX.NewBatch
and MapX.NewQuery
(#239, #252)
+Stats object WorldStats
etc. adapted for new structure of archetypes nested in nodes (#258)
+Removed generic filter method FilterX.Filter
(#271)
+Method Batch.NewQuery
renamed to Batch.NewBatchQ
(#298)
+
+Features
+
+Relation archetypes are removed when they are empty and the target entity is dead (#238, #242)
+Support an unlimited number of cached filters, instead of 128 (#245)
+WorldStats
contains the number of cached filters (#247)
+Archetypes with entity relations are removed on World.Reset
(#247)
+Capacity increment can be configured separately for relation archetypes (#257)
+Adds methods for faster, unchecked entity relation access (#259)
+Re-introduce World.Batch
for batch-processing of entities (add/remove/exchange) (#264)
+New method Builder.Add
for adding components with a target to entities (#264)
+New method Batch.SetRelation
for batch-setting entity relations (#265)
+New methods Builder.AddQ
, Builder.RemoveQ
etc. to get a query over batch-processed entities (#297)
+Sends an EntityEvent
to the world listener on relation target changes (#265)
+
+
+
+Reduce memory footprint of archetypes by moving properties to nodes (#237)
+Queries iterate archetype graph nodes in an outer loop, potentially skipping nested relation archetypes (#248)
+Relation archetypes are recycled in archetype graph nodes (#248)
+Already empty archetypes are not zeroed on reset (#248)
+Optimize RelationFilter
: get archetype directly instead of iterating complete node (#251)
+Cached filters use swap-remove when removing an archetype (#253)
+Speed up generic query re-compilation after changing the relation target (#255)
+Speed up archetype and node iteration to be as fast as before the new nested structure (#270, #288)
+Filter cache stores archetype graph nodes instead of archetypes (#276) (#288)
+Use uint32
instead of uintptr
for indices and query iteration counter (#283)
+Cached filters use a map for faster removal of archetypes (#289)
+Speed up iterating through many archetypes by approx. 10% (#301)
+
+Documentation
+
+Adds an example for creating and querying entity relations (#256)
+Adds a section on entity relations to the ARCHITECTURE.md
document (#256)
+Replace Aos benchmarks plot in README for pointer iteration fix #284 (#285)
+Adds a plot for entity relation benchmarks to ARCHITECTURE.md (#290)
+Adds an outline of the most important types and functions to each sub-package (#295)
+
+Other
+
+Remove go-gameengine-ecs from Arche benchmarks (but not from competition!) (#228)
+Reduce memory size of Query
and internal archetype list by 8 bytes (#230)
+Generic filters are locked when registered for caching (#241)
+Adds benchmarks for getting and setting entity relations (#259)
+Arche now has an official logo (#273)
+Use for loop with counter in AoS competition benchmarks, to allow for pointers (#284)
+
+
+Documentation
+
+Tweak/improve example batch_ops
(#222)
+Adds an example for running simulations in parallel (#223)
+
+Other
+
+Adds benchmarks for world component access with shuffled entities (#224)
+
+
+Features
+
+Adds method World.ComponentType(ID)
to get the reflect.Type
for component IDs (#215)
+Adds methods World.GetUnchecked
and World.HasUnchecked
as optimized variants for known static entities (#217, #219)
+Adds method MapX.GetUnchecked
to all generic mappers, as equivalent to previous point (#217, #219)
+Adds methods Map.GetUnchecked
and Map.HasUnchecked
to generic Map
, as equivalent to previous points (#217, #219)
+
+
+
+Optimize World.Alive(Entity)
by only checking the entity generation, but not id == 0
(#220)
+
+Bugfixes
+
+All world methods with an entity as argument panic on a dead/recycled entity; causes 0.5ns slower World.Get(Entity)
(#216)
+
+
+Documentation
+
+Minor README and docstring tweaks (#211, #213)
+
+Other
+
+Use coveralls.io for test coverage, add respective badge (#212)
+
+
+
+
+Speed up generating world stats by factor 10, by re-using stats object (#210)
+
+
+Documentation
+
+Extend documentation and benchmarks for Entity
(#201)
+Add a section with links to the Arche tools arche-model and arche-pixel (#202)
+
+
+Arche v0.6.0 features fast batch entity creation and deletion, cached filters, and many internal optimizations.
+Highlights
+
+Batch creation and deletion of entities, with up to 4x and 10x speedup, respectively. Even more when combined with World.Reset()
.
+Cached filters for handling many archetypes and complex queries without slowdown.
+A lot of internal performance optimizations.
+
+Breaking changes
+
+Generic mappers do no longer return all components when creating entities or components (#145)
+Resources API moved out of the world, to a helper to get by World.Resources()
(#150)
+World.Reset()
does no longer remove the component change listener (#157)
+Removes methods filter.ALL.Not()
and filter.ANY.Not()
, use NoneOf()
and AnyNot()
instead (#160)
+World listener function takes a pointer to the EntityEvent
instead of a copy as argument (#162)
+
+Features
+
+Adds method World.Reset()
, to allow for more efficient systematic simulations (#138)
+Adds World.Batch()
helper for performing optimized batch-creation and batch-removal of entities (#149)
+Adds method Mask.Exclusive()
to create a filter matching an exact component composition (#149, #188)
+Generic mappers (Map1
, …) have methods NewEntities
, NewEntitiesWith
and RemoveEntities
for batch operations (#151)
+Batch-creation methods (ID-based and generic) have variants like NewEntitiesQuery
that return a query over the created entities (#152)
+Notification during batch-creation is delayed until the resp. query is closed (#157)
+Batch-remove methods (RemoveEntities()
) return the number of removed entities (#173)
+Filters can be cached and tracked by the World
to speed up queries when there are many archetypes (#178)
+Function AddResource[T](*World)
returns the ID of the resource (#183)
+
+
+
+Speedup of archetype mask checks by 10% by checking mask before empty archetype (#139)
+Speedup of generic queries and mappers to come closer to ID-based access (#144)
+Speedup of archetype mask checks by casting filter interface to concrete type when possible (#148)
+Optimized batch creation of entities (#159)
+More efficiently clear the memory of removed components, with 2-3x speedup (#165)
+Do not clear memory when adding entities to archetypes, not required anymore as of #147 (#165)
+Speed up copying entity to archetype by getting entity pointer without reflection (#166)
+Avoid slice allocations in generic mapper methods (#170)
+Avoid type checks in query when iterating archetypes (#179)
+Speed up counting entities in queries with a cached filter (#182)
+Implements a fast and memory-efficient lookup data structure for components ID keys, to reduce the memory footprint of archetypes and the archetype graph (#192)
+Speedup of archetype creation by 40% by using a const
for archetype storage page sizes (#197)
+
+Bugfixes
+
+Archetype storage buffers are “zeroed” when removing entities, to allow GC on pointers and slices in components (#147)
+Use slices instead of arrays inside paged archetype list to ensure pointer persistence (#184)
+
+Documentation
+
+Adds an example for batch-creation and batch-removal of entities (#173)
+Adds code examples to most public types, methods and functions (#183, #189)
+
+Other
+
+Restructure and extend benchmarks (#146, #153, #155, #156)
+Add an ECS competition benchmark for adding and removing components (#170)
+Add benchmarks for different ways to implement parent-child relations between entities (#194, #195)
+
+
+
+
+Speedup of archetype access by 5-10% by merging storages into archetypes (#137)
+
+Documentation
+
+Document all private functions, types and methods (#136)
+Adds a section and plot on benchmarks against other Go ECS implementations to the README (#138)
+
+Other
+
+Internal code refactoring (#136)
+
+Move method nextArchetype
from World
to Query
.
+Remove internal type queryIter
.
+Move repetitive pointer copying code in storage
into a private method.
+Move repetitive entity creation code in World
into a private method.
+
+
+
+
+Feature release. Does not break v0.4.x projects.
+Features
+
+The World handles ECS resources, i.e. component-like global data (#132)
+Generic access to world resources (#132)
+
+Documentation
+
+Adds an example for the use of resources (#132)
+
+
+
+
+Speedup archetype access by 10%, by elimination of bounds checks (#126)
+Speedup entity access from queries by 50% by using a component storage for them (#131)
+Minor optimizations of component storage (#128)
+
+Documentation
+
+Adds an example to demonstrate how to implement classical ECS systems (#129)
+
+
+Features
+
+Adds memory per entity to archetype stats (#124)
+
+Other
+
+Adds benchmarks of Arche vs. Array of Structs (AoS) and Array of Pointers (AoP), for different memory per entity and number of entities (#123)
+
+
+Features
+
+Query
has methods Count()
and Step(int)
, primarily for effective random sampling (#119)
+
+Documentation
+
+Adds example random_sampling
to demonstrate usage of Query.Count()
and Query.Step(int)
(#119)
+
+Bugfixes
+
+Query.Next
, Query.Get
, etc. now always panic when called on a closed query (#117)
+
+Other
+
+Update to go-gameengine-ecs v0.9.0 in benchmarks (#116)
+Remove internal wrapper structs in generic queries and maps (#120)
+
+
+Bugfixes
+
+EntityEvent
has more consistent values when an entity is removed (#115)
+
+EntityEvent.NewMask
is zero
+EntityEvent.Removed
is contains all former components
+EntityEvent.Current
is nil
+
+
+
+
+
+
+Avoid creation of unused archetypes by splitting the archetype graph out of the actual archetypes (#113)
+Use slice instead of fixed-size array for type lookup in component registry (#113)
+Avoid copying entityIndex
structs by using pointers (#114)
+
+
+Bugfixes
+
+Fix units symbol for bytes from b
to B
in string formatting of world statistics (#111)
+
+Other
+
+
+API revision, split out generics and filters into separate packages.
+Features
+
+Generic queries support optional, additional and excluded components (#53, #56, #58, #59, #60, #63)
+Logic filters for complex queries (#54, #58, #61)
+Query
and World
have a method Mask(Entity)
to access archetype masks (#65)
+Generic query Get
method returns all queried components (#83)
+Added method World.Stats()
for inspecting otherwise inaccessible world statistics (#67)
+Entities can be initialized with components, via ID as well as using generics (#76)
+A listener function can be registered to the world, for notification on entity changes (#77)
+Support for up to 128 distinct component types per world (was limited to 64 before) (#78)
+Generic entity manipulation through types Map1
, Map2
, … and Exchange
(#79, #84, #87)
+
+
+
+Generic queries are compiled to masks and cached on first build (#62)
+Optimization of adding/removing components, with 2-3x speedup and vast reduction of (number of) allocations (#93)
+Speed up component world access by use of nil pointer check instead of bitmask (#96)
+
+Other
+
+Overhaul of the module structure, with generics and filters in separate packages (#55, #57, #61, #64)
+Boilerplate code for generic filters and queries is auto-generated with go generate
(#64)
+Ensure 100% test coverage by adding a CI check for it (#68)
+World.RemEntity(Entity)
is now World.RemoveEntity(Entity)
(#87)
+More examples as user documentation (#83, #95)
+General API cleanup with renaming of several types and methods (#100)
+
+
+Other
+
+
+Features
+
+Added a layer of generic access as alternative for using component IDs, for type safety and ergonomics (#47, #48)
+
+Generic queries like Query1[T]
, Query2[T, U]
, … (#47)
+Generic add, assign and remove (Add[T]()
, Add2[T, U](), ...
) (#47)
+Generic get, has, and set through component mapper Map[T]
(#47)
+
+
+
+
+
+Use of an archetype graph to speed up finding the target archetype for component addition/removal (#42)
+Minor optimization of component access by queries (#50)
+
+Other
+
+Reduced dependencies by moving profiling and benchmarking to sub-modules (#46)
+Smaller integer type for component identifiers (#47)
+
+
+Features
+
+World
has method Exchange
to add and remove components in one go (#38)
+World
has method Assign
add and assign components in one go (#38)
+World
has method AssignN
add and assign multiple components in one go (#38)
+
+
+
+Optimization of Query
iteration, avoids allocations and makes it approx. 30% faster (#35)
+Much smaller archetype data structure at the cost of one more index lookup (#37)
+
+Other
+
+Removed method Query.Count()
, as it was a by-product of the allocations in the above point (#35)
+Archetypes are stored in a paged collection to use more efficient access by pointers (#36)
+
+
+Documentation
+
+Extended and improved documentation (#34)
+
+
+Features
+
+Add Config
to allow for configuration of the world (currently only storage capacity increment) (#28)
+Query
has a method Count()
, reporting the total number of matching entities (#30)
+
+
+Other
+
+Use aligned item size in component storage for faster query iteration (#25)
+Queries lock the World, and automatically unlock it after iteration (#26)
+
+
+Other
+
+Avoid allocation in World.Has(entity, compID)
(#16)
+World.RemEntity(entity)
panics on dead entity, like all other World
methods (#18)
+Reserve zero value Entity
to serve as nil/undefined value (#23)
+
+
+Initial release.
+Basic ECS implementation.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/architecture/index.html b/background/architecture/index.html
new file mode 100644
index 00000000..6dbc7094
--- /dev/null
+++ b/background/architecture/index.html
@@ -0,0 +1,363 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Architecture :: Arche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Architecture
+
+Arche uses an archetype-based architecture. Therefore the name 😉.
+This chapter explains the concept and Arche’s take on it.
+
+
+
+Archetypes
+The ASCII graph below illustrates the approach.
+Components for entities are stored in so-called archetypes. Archetypes represent unique combinations of components. This means that component data for all entities with exactly the same component is stored in the same archetype.
+In the illustration below, the first archetype holds entities with (only/exactly) the components A, B and C,
+as well as their components.
+Similarly, the second archetype contains all entities with A and C, and their components.
+ 1 Entities Archetypes Bit masks Queries
+ 2
+ 3 E E Comps
+ 4 |0| |2|A|B|C| 111... <-. <---.
+ 5 |1|---. |8|A|B|C| | |
+ 6 |2| '-->|1|A|B|C| | |
+ 7 |3| |3|A|B|C| |--Q(A,C) |
+ 8 |4| | 101... |
+ 9 |6| .-->|7|A|C| 101... <-' |--Q(B)
+ 10 |7|---' |6|A|C| | 010...
+ 11 |8| |4|A|C| |
+ 12 |9|---. |
+ 13 |.| | |5|B|C| 011... <---'
+ 14 |.| '-->|9|B|C|
+ 15 |.|
+ 16 |.| <===> [Entity pool]
Illustration of Arche’s archetype-based architecture.
+The exact component composition of each archetype is encoded in a bitmask for fast comparison.
+Thus, queries can easily identify their relevant archetypes, and then simply iterate entities linearly, which is very fast
+and cache-friendly. Components can be accessed through a query in a very efficiently (≈1ns).
+World entity access
+For getting components by entity, e.g. for hierarchies, the world contains a list that is indexed by the entity ID (left-most in the figure). For each entity, it references its current archetype and the position of the entity in the archetype. This way, getting components for entities (i.e. random access) is fast, although not as fast as in queries (≈2ns vs. 1ns).
+Note that the entities list also contains entities that are currently not alive,
+because they were removed.
+These entities are recycled when new entities are requested from the
+
+ ecs.World
+
+ .
+Therefore, besides the ID shown in the illustration, each entity also has a generation
+variable. It is incremented on each “reincarnation” of an entity.
+Thus, it allows to distinguish recycled from dead entities, as well as from previous or later “incarnations”.
+
+Obviously, archetypes are an optimization for iteration speed.
+But they also come with a downside. Adding or removing components to/from an entity requires moving all the components of the entity to another archetype.
+This takes roughly 10-20ns per involved component.
+To reduce the number of archetype changes, it is recommended to add/remove/exchange multiple components at the same time rather than one after the other.
+However, as the benchmarks on the repo README illustrate,
+Arche seems to be the fastest Go ECS available.
+Not only in terms of iteration speed, which is particularly tailored for.
+Even when it comes to entity manipulation (adding, removing components etc.),
+where sparse-set ECS implementations should shine, Arche leads the field.
+For more numbers on performance, see chapter Benchmarks .
+Details
+Actually, the explanation above is quite simplified.
+Particularly it leaves out Entity Relations and the archetypes graph and nodes .
+Archetype graph
+When components are added to or removed from an entity, it is necessary to find its new archetype.
+To accelerate the search, a graph of archetype nodes (or just nodes ) is used.
+The figure below illustrates the concept.
+Each arrow represents the transition between two archetypes when a single component is added (solid arrow head)
+or removed (empty arrow head).
+Following these transitions, the archetype resulting from addition and/or removal of an arbitrary number
+of components can be found easily.
+
+
+
+
+
+Illustration of the archetype graph. Letters represent components. Boxes represent archetype nodes.
+Arrows represent transitions when a single component is added or removed.
+Nodes and connections are created as needed. When searching for an archetype, the algorithm proceeds transition by transition.
+When looking for the next archetype, established transitions are checked first.
+If this is not successful, the resulting component mask is used to search through all nodes.
+On success, a new connection is established.
+If the required node was still not found, a new node is created.
+Then, the next transition it processed and so on, until the final node is found.
+Only then, an archetype is created for the node.
+As a result, the graph will in most cases not be fully connected.
+There will also not be all possible nodes (combinations of components) present.
+Nodes that are only traversed by the search but never receive entities contain no archetype and are called inactive.
+The graph stabilizes quickly.
+Then, only the fast following of transitions is required to find an archetype when components are added or removed.
+Transitions are stored in the nodes with lookup approx. 10 times faster than Go’s map
.
+Entity relations
+The archetype nodes explained above are utilized to implement Arche’s Entity Relations feature.
+When an archetype contains a relation components, the respective node contains an archetype “table”
+for each entity that is a target of that relation.
+As an example, we have components A
, B
and R
, where R
is a relation.
+Further, we have two parent entities E1
and E2
.
+When you create some entities with components A B R(E1)
and A B R(E2)
, i.e. with relation targets E1
and E2
,
+the following node is created:
+ 1 Node [ A B R ]
+ 2 |
+ 3 |--- E1 E Comps
+ 4 | |3|A|B|R|
+ 5 | |6|A|B|R|
+ 6 | |7|A|B|R|
+ 7 |
+ 8 '--- E2 E Comps
+ 9 |4|A|B|R|
+ 10 |5|A|B|R|
When querying without specifying a target, the “inner” archetypes are simply iterated if the node matches the filter.
+When querying with a relation target (and the node matches), the archetype for the target entity is looked up in a standard Go map
.
+Archetype removal
+Normal archetypes without a relation are never removed, because they are not a temporary thing.
+For relation archetypes, however, things are different.
+Once a target entity dies, it will never appear again (actually it could, after dying another 4294967294 times).
+In Arche, empty archetypes with a dead target are recycled.
+They are deactivated, but their allocated memory for entities and components is retained.
+When an archetype in the same node, but for another target entity is requested, it is reused.
+To be able to efficiently detect whether an archetype can be removed,
+a bitset is used to keep track of entities that are the target of a relation.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/benchmarks/index.html b/background/benchmarks/index.html
new file mode 100644
index 00000000..50a553b3
--- /dev/null
+++ b/background/benchmarks/index.html
@@ -0,0 +1,538 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Benchmarks :: Arche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Benchmarks
+
+This chapter gives an overview of the runtime cost of typical Arche operations.
+All time information is per entity.
+Batch operations are performed in batches of 1000 entities.
+Absolute numbers are not really meaningful, as they heavily depend on the hardware.
+However, all benchmarks run in the CI in the same job and hence on the same machine, and can be compared.
+Benchmark code: benchmark/table in the GitHub repository .
+Benchmarks are run automatically in the GitHub CI, and are updated on this page on every merge into the main
branch.
+They always reflect the latest development state of Arche, but may change depending on the hardware the CI runs on.
+For a benchmark comparison with other ECS implementations, see the benchmarks on the repo README .
+
+
+
+Last run: Tue, 10 Sep 2024 12:59:48 UTC
+Query
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Query.Next
+1.0 ns
+
+
+
+Query.Next + 1x Query.Get
+1.6 ns
+
+
+
+Query.Next + 2x Query.Get
+1.9 ns
+
+
+
+Query.Next + 5x Query.Get
+4.4 ns
+
+
+
+Query.Next + Query.Entity
+1.3 ns
+
+
+
+Query.Next + Query.Relation
+2.2 ns
+
+
+
+Query.EntityAt, 1 arch
+12.0 ns
+
+
+
+Query.EntityAt, 1 arch
+2.8 ns
+registered filter
+
+
+Query.EntityAt, 5 arch
+31.3 ns
+
+
+
+Query.EntityAt, 5 arch
+4.3 ns
+registered filter
+
+
+World.Query
+44.8 ns
+
+
+
+World.Query
+34.6 ns
+registered filter
+
+
+
+World access
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+World.Get
+2.1 ns
+random, 1000 entities
+
+
+World.GetUnchecked
+1.5 ns
+random, 1000 entities
+
+
+World.Has
+1.3 ns
+random, 1000 entities
+
+
+World.HasUnchecked
+0.7 ns
+random, 1000 entities
+
+
+World.Alive
+0.6 ns
+random, 1000 entities
+
+
+World.Relations.Get
+3.5 ns
+random, 1000 entities
+
+
+World.Relations.GetUnchecked
+0.8 ns
+random, 1000 entities
+
+
+
+Entities
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Entity.IsZero
+0.2 ns
+
+
+
+World.NewEntity
+16.6 ns
+memory already allocated
+
+
+World.NewEntity w/ 1 Comp
+33.2 ns
+memory already allocated
+
+
+World.NewEntity w/ 5 Comps
+47.1 ns
+memory already allocated
+
+
+World.RemoveEntity
+15.1 ns
+
+
+
+World.RemoveEntity w/ 1 Comp
+26.3 ns
+
+
+
+World.RemoveEntity w/ 5 Comps
+55.2 ns
+
+
+
+
+Entities, batched
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Builder.NewBatch
+10.4 ns
+1000, memory already allocated
+
+
+Builder.NewBatch w/ 1 Comp
+10.5 ns
+1000, memory already allocated
+
+
+Builder.NewBatch w/ 5 Comps
+10.1 ns
+1000, memory already allocated
+
+
+Batch.RemoveEntities
+7.3 ns
+1000
+
+
+Batch.RemoveEntities w/ 1 Comp
+7.1 ns
+1000
+
+
+Batch.RemoveEntities w/ 5 Comps
+7.5 ns
+1000
+
+
+
+Components
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+World.Add 1 Comp
+76.4 ns
+memory already allocated
+
+
+World.Add 5 Comps
+90.4 ns
+memory already allocated
+
+
+World.Remove 1 Comp
+82.2 ns
+
+
+
+World.Remove 5 Comps
+127.2 ns
+
+
+
+World.Exchange 1 Comp
+79.0 ns
+memory already allocated
+
+
+
+Components, batched
+
+
+
+Operation
+Time
+Remark
+
+
+
+
+Batch.Add 1 Comp
+8.6 ns
+1000, memory already allocated
+
+
+Batch.Add 5 Comps
+8.8 ns
+1000, memory already allocated
+
+
+Batch.Remove 1 Comp
+9.5 ns
+1000
+
+
+Batch.Remove 5 Comps
+15.0 ns
+1000
+
+
+Batch.Exchange 1 Comp
+10.3 ns
+1000, memory already allocated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/changelog/index.html b/background/changelog/index.html
new file mode 100644
index 00000000..73580ebe
--- /dev/null
+++ b/background/changelog/index.html
@@ -0,0 +1,967 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog :: Arche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Changelog
+
+
+Documentation
+
+Adds an example for World.Mask
, showing how to check whether a filter “contains” an entity (#428)
+
+
+Bugfixes
+
+Ensure Assign() copies components before notifying listeners (#426, g-getsov )
+
+
+Bugfixes
+
+Fixes dispatch listener bug that did not clear component restriction (#424, g-getsov )
+
+
+Features
+
+Adds function ResourceTypeID
to register/get a resource ID from a reflect.Type
(#420)
+
+Other
+
+Fix component type in examples/base (#419)
+
+
+Features
+
+Adds Entity.ID()
and Entity.Generation()
(#408, delaneyj )
+
+Documentation
+
+Adds a showcase chapter “Made with Arche” to the documentation page (#411)
+
+
+
+Re-arrange struct fields to save memory in a few places (#413)
+
+Bugfixes
+
+Fix crash caused by extending layouts of an inactive archetype (#416, reported in #415)
+
+First-time contributors
+
+
+Highlights
+Arche now has a dedicated documentation site
+with a structured user guide and background information.
+We hope that this will lower the barrier to entrance significantly.
+Further, Arche got a few new features:
+
+Query.EntityAt
was added for random access to query entities.
+Generic filters now support Exclusive
, like ID-based filters.
+Build tag debug
improves error messages in a few places where we rely on standard library panics for performance.
+
+Breaking changes
+
+Renames types in ecs.stats
to follow Go standards.
+stats.WorldStats
-> stats.World
, stats.NodeStats
-> stats.Node
, … (#388)
+
+Features
+
+Adds method Query.EntityAt()
, useful for things like random sampling of entities (#358)
+Adds build tag debug
to improve error messages in a few places where we rely on standard library panics for performance (#377)
+Adds method FilterX.Exclusive()
to all generic filters (#381)
+
+Documentation
+
+Adds a dedicated Arche User Guide web site (#380, #382, #383, #384, #385)
+Adds BENCHMARKS.md benchmarks for a tabular overview of the runtime cost of typical Arche ECS operations (#367, #372)
+Link benchmarking code in README.md
and benchmarking tables (#375)
+Documents build tags tiny
and debug
in package docs of ecs
(#377)
+Adds examples to demonstrate the use of non-ECS data structures together with ECS (#379)
+
+Bugfixes
+
+Prevents using the same component multiple times in any operations, through panic (#357)
+
+
+
+Generic filters use Mask
instead of slower MaskFilter
if no components are excluded (#381)
+
+Other
+
+Improves error messages for running out of world locks, components or resources, and on unbalanced unlock (#363)
+Adds benchmarks for query creation (#366)
+Upgrade to Go 1.22 in CI (#376)
+Renames directory examples
to _examples
to accommodate changed test coverage behaviour of Go 1.22 (#376)
+In unit tests, error messages of all panics are asserted (#377)
+
+
+Bugfixes
+
+Fix IsRelation check to allow for non-struct components, like type aliases (#354)
+
+Other
+
+
+Highlights
+
+Arche supports full world serialization and deserialization, in conjunction with arche-serde (#319)
+Supports 256 instead of 128 component types as well as resource types and engine locks (#313)
+Generic API supports up to 12 instead of 8 component types (#324)
+Reworked event system with granular subscription to different event types and components (#333, #334, #335, #337, #340)
+
+Breaking changes
+
+MaskTotalBits
changed from 128 to 256 (#313)
+Removes Mask.Lo
and Mask.Hi
, internal mask representation is now private (#313)
+Filter.Matches(Mask)
became Filter.Matches(*Mask)
; same for all Filter
implementations (#313)
+This change was necessary to get the same performance as before, despite the more heavyweight implementation of the now 256 bits Mask
.
+Component and resource IDs are now opaque types instead of type aliases for uint8
(#330)
+Restructures EntityEvent
to remove redundant information and better handle relation changes (#333)
+World event listener changed from a simple function to a Listener
interface (#334)
+Removes World.ComponentType(ID)
, use function ComponentInfo(ID)
instead (#341)
+
+Features
+
+Adds functions ComponentInfo(*World, ID)
and ResourceType(*World, ResID)
(#315, #318)
+Adds methods World.Ids(Entity)
and Query.Ids()
to get component IDs for an entity (#315, #325)
+Entities support JSON marshalling and unmarshalling (#319)
+The world’s entity state can be extracted and re-established via World.DumpEntities()
and World.LoadEntities()
(#319, #326)
+Adds functions ComponentIDs(*World)
and ResourceIDs(*World)
to get all registered IDs (#330)
+Adds methods Mask.And
, Mask.Or
and Mask.Xor
(#335)
+Adds build tag tiny
to restrict to 64 components for an extra bit of performance (#338)
+Adds methods Relations.Exchange()
, Relations.ExchangeBatch()
, Relations.ExchangeBatchQ()
for exchange with relation target (#342)
+Generic API adds Exchange.WithRelation()
and optional target argument for operations with relation target (#342)
+Generic API adds MapX.AddBatch()
, MapX.AddBatchQ()
, MapX.RemoveBatch()
and MapX.RemoveBatchQ()
(#342)
+Generic API adds optional relation target argument to most MapX
methods (#342)
+Generic API adds FilterX.Filter()
to get an ecs.Filter
from a generic one (#342)
+Generic API adds Map.SetRelationBatch()
and Map.SetRelationBatchQ()
(#344)
+All batch operations (except entity creation) return the number of affected entities (#348)
+
+
+
+Reduces archetype memory footprint by using a dynamically sized slice for storage lookup (#327)
+Reduces event listener overhead through granular subscriptions and elimination of a heap allocation (#333, #334, #335, #337, #340)
+
+Documentation
+
+Adds an overview to packages ecs
and generic
on how to achieve ECS manipulation operations (#345)
+
+Other
+
+Entity generation data type changed from uint16
to uint32
(#317)
+Adds unitoftime/ecs to competition benchmarks (#311)
+Adds competition benchmarks for accessing 10 components (#328)
+
+
+Infrastructure
+
+Upgraded to Go 1.21 toolchain (#308)
+
+
+Documentation
+
+Emphasize in Entity
and World
docs that entities are intended to be stored and passed by copy, not by pointer (#306)
+
+
+Highlights
+Entity relations were added as a first-class feature (#231, #271)
+Relations are used to represent graphs of entities, e.g. hierarchies.
+They can be added, removed and queried just like normal components.
+The new feature offers ergonomic handling of entity relations,
+and provides relation queries with native performance.
+Breaking changes
+
+Removed World.Batch
for entity batch creation, use Builder
instead (#239)
+Rework of generic entity creation API, use MapX.New
, MapX.NewWith
, MapX.NewBatch
and MapX.NewQuery
(#239, #252)
+Stats object WorldStats
etc. adapted for new structure of archetypes nested in nodes (#258)
+Removed generic filter method FilterX.Filter
(#271)
+Method Batch.NewQuery
renamed to Batch.NewBatchQ
(#298)
+
+Features
+
+Relation archetypes are removed when they are empty and the target entity is dead (#238, #242)
+Support an unlimited number of cached filters, instead of 128 (#245)
+WorldStats
contains the number of cached filters (#247)
+Archetypes with entity relations are removed on World.Reset
(#247)
+Capacity increment can be configured separately for relation archetypes (#257)
+Adds methods for faster, unchecked entity relation access (#259)
+Re-introduce World.Batch
for batch-processing of entities (add/remove/exchange) (#264)
+New method Builder.Add
for adding components with a target to entities (#264)
+New method Batch.SetRelation
for batch-setting entity relations (#265)
+New methods Builder.AddQ
, Builder.RemoveQ
etc. to get a query over batch-processed entities (#297)
+Sends an EntityEvent
to the world listener on relation target changes (#265)
+
+
+
+Reduce memory footprint of archetypes by moving properties to nodes (#237)
+Queries iterate archetype graph nodes in an outer loop, potentially skipping nested relation archetypes (#248)
+Relation archetypes are recycled in archetype graph nodes (#248)
+Already empty archetypes are not zeroed on reset (#248)
+Optimize RelationFilter
: get archetype directly instead of iterating complete node (#251)
+Cached filters use swap-remove when removing an archetype (#253)
+Speed up generic query re-compilation after changing the relation target (#255)
+Speed up archetype and node iteration to be as fast as before the new nested structure (#270, #288)
+Filter cache stores archetype graph nodes instead of archetypes (#276) (#288)
+Use uint32
instead of uintptr
for indices and query iteration counter (#283)
+Cached filters use a map for faster removal of archetypes (#289)
+Speed up iterating through many archetypes by approx. 10% (#301)
+
+Documentation
+
+Adds an example for creating and querying entity relations (#256)
+Adds a section on entity relations to the ARCHITECTURE.md
document (#256)
+Replace Aos benchmarks plot in README for pointer iteration fix #284 (#285)
+Adds a plot for entity relation benchmarks to ARCHITECTURE.md (#290)
+Adds an outline of the most important types and functions to each sub-package (#295)
+
+Other
+
+Remove go-gameengine-ecs from Arche benchmarks (but not from competition!) (#228)
+Reduce memory size of Query
and internal archetype list by 8 bytes (#230)
+Generic filters are locked when registered for caching (#241)
+Adds benchmarks for getting and setting entity relations (#259)
+Arche now has an official logo (#273)
+Use for loop with counter in AoS competition benchmarks, to allow for pointers (#284)
+
+
+Documentation
+
+Tweak/improve example batch_ops
(#222)
+Adds an example for running simulations in parallel (#223)
+
+Other
+
+Adds benchmarks for world component access with shuffled entities (#224)
+
+
+Features
+
+Adds method World.ComponentType(ID)
to get the reflect.Type
for component IDs (#215)
+Adds methods World.GetUnchecked
and World.HasUnchecked
as optimized variants for known static entities (#217, #219)
+Adds method MapX.GetUnchecked
to all generic mappers, as equivalent to previous point (#217, #219)
+Adds methods Map.GetUnchecked
and Map.HasUnchecked
to generic Map
, as equivalent to previous points (#217, #219)
+
+
+
+Optimize World.Alive(Entity)
by only checking the entity generation, but not id == 0
(#220)
+
+Bugfixes
+
+All world methods with an entity as argument panic on a dead/recycled entity; causes 0.5ns slower World.Get(Entity)
(#216)
+
+
+Documentation
+
+Minor README and docstring tweaks (#211, #213)
+
+Other
+
+Use coveralls.io for test coverage, add respective badge (#212)
+
+
+
+
+Speed up generating world stats by factor 10, by re-using stats object (#210)
+
+
+Documentation
+
+Extend documentation and benchmarks for Entity
(#201)
+Add a section with links to the Arche tools arche-model and arche-pixel (#202)
+
+
+Arche v0.6.0 features fast batch entity creation and deletion, cached filters, and many internal optimizations.
+Highlights
+
+Batch creation and deletion of entities, with up to 4x and 10x speedup, respectively. Even more when combined with World.Reset()
.
+Cached filters for handling many archetypes and complex queries without slowdown.
+A lot of internal performance optimizations.
+
+Breaking changes
+
+Generic mappers do no longer return all components when creating entities or components (#145)
+Resources API moved out of the world, to a helper to get by World.Resources()
(#150)
+World.Reset()
does no longer remove the component change listener (#157)
+Removes methods filter.ALL.Not()
and filter.ANY.Not()
, use NoneOf()
and AnyNot()
instead (#160)
+World listener function takes a pointer to the EntityEvent
instead of a copy as argument (#162)
+
+Features
+
+Adds method World.Reset()
, to allow for more efficient systematic simulations (#138)
+Adds World.Batch()
helper for performing optimized batch-creation and batch-removal of entities (#149)
+Adds method Mask.Exclusive()
to create a filter matching an exact component composition (#149, #188)
+Generic mappers (Map1
, …) have methods NewEntities
, NewEntitiesWith
and RemoveEntities
for batch operations (#151)
+Batch-creation methods (ID-based and generic) have variants like NewEntitiesQuery
that return a query over the created entities (#152)
+Notification during batch-creation is delayed until the resp. query is closed (#157)
+Batch-remove methods (RemoveEntities()
) return the number of removed entities (#173)
+Filters can be cached and tracked by the World
to speed up queries when there are many archetypes (#178)
+Function AddResource[T](*World)
returns the ID of the resource (#183)
+
+
+
+Speedup of archetype mask checks by 10% by checking mask before empty archetype (#139)
+Speedup of generic queries and mappers to come closer to ID-based access (#144)
+Speedup of archetype mask checks by casting filter interface to concrete type when possible (#148)
+Optimized batch creation of entities (#159)
+More efficiently clear the memory of removed components, with 2-3x speedup (#165)
+Do not clear memory when adding entities to archetypes, not required anymore as of #147 (#165)
+Speed up copying entity to archetype by getting entity pointer without reflection (#166)
+Avoid slice allocations in generic mapper methods (#170)
+Avoid type checks in query when iterating archetypes (#179)
+Speed up counting entities in queries with a cached filter (#182)
+Implements a fast and memory-efficient lookup data structure for components ID keys, to reduce the memory footprint of archetypes and the archetype graph (#192)
+Speedup of archetype creation by 40% by using a const
for archetype storage page sizes (#197)
+
+Bugfixes
+
+Archetype storage buffers are “zeroed” when removing entities, to allow GC on pointers and slices in components (#147)
+Use slices instead of arrays inside paged archetype list to ensure pointer persistence (#184)
+
+Documentation
+
+Adds an example for batch-creation and batch-removal of entities (#173)
+Adds code examples to most public types, methods and functions (#183, #189)
+
+Other
+
+Restructure and extend benchmarks (#146, #153, #155, #156)
+Add an ECS competition benchmark for adding and removing components (#170)
+Add benchmarks for different ways to implement parent-child relations between entities (#194, #195)
+
+
+
+
+Speedup of archetype access by 5-10% by merging storages into archetypes (#137)
+
+Documentation
+
+Document all private functions, types and methods (#136)
+Adds a section and plot on benchmarks against other Go ECS implementations to the README (#138)
+
+Other
+
+Internal code refactoring (#136)
+
+Move method nextArchetype
from World
to Query
.
+Remove internal type queryIter
.
+Move repetitive pointer copying code in storage
into a private method.
+Move repetitive entity creation code in World
into a private method.
+
+
+
+
+Feature release. Does not break v0.4.x projects.
+Features
+
+The World handles ECS resources, i.e. component-like global data (#132)
+Generic access to world resources (#132)
+
+Documentation
+
+Adds an example for the use of resources (#132)
+
+
+
+
+Speedup archetype access by 10%, by elimination of bounds checks (#126)
+Speedup entity access from queries by 50% by using a component storage for them (#131)
+Minor optimizations of component storage (#128)
+
+Documentation
+
+Adds an example to demonstrate how to implement classical ECS systems (#129)
+
+
+Features
+
+Adds memory per entity to archetype stats (#124)
+
+Other
+
+Adds benchmarks of Arche vs. Array of Structs (AoS) and Array of Pointers (AoP), for different memory per entity and number of entities (#123)
+
+
+Features
+
+Query
has methods Count()
and Step(int)
, primarily for effective random sampling (#119)
+
+Documentation
+
+Adds example random_sampling
to demonstrate usage of Query.Count()
and Query.Step(int)
(#119)
+
+Bugfixes
+
+Query.Next
, Query.Get
, etc. now always panic when called on a closed query (#117)
+
+Other
+
+Update to go-gameengine-ecs v0.9.0 in benchmarks (#116)
+Remove internal wrapper structs in generic queries and maps (#120)
+
+
+Bugfixes
+
+EntityEvent
has more consistent values when an entity is removed (#115)
+
+EntityEvent.NewMask
is zero
+EntityEvent.Removed
is contains all former components
+EntityEvent.Current
is nil
+
+
+
+
+
+
+Avoid creation of unused archetypes by splitting the archetype graph out of the actual archetypes (#113)
+Use slice instead of fixed-size array for type lookup in component registry (#113)
+Avoid copying entityIndex
structs by using pointers (#114)
+
+
+Bugfixes
+
+Fix units symbol for bytes from b
to B
in string formatting of world statistics (#111)
+
+Other
+
+
+API revision, split out generics and filters into separate packages.
+Features
+
+Generic queries support optional, additional and excluded components (#53, #56, #58, #59, #60, #63)
+Logic filters for complex queries (#54, #58, #61)
+Query
and World
have a method Mask(Entity)
to access archetype masks (#65)
+Generic query Get
method returns all queried components (#83)
+Added method World.Stats()
for inspecting otherwise inaccessible world statistics (#67)
+Entities can be initialized with components, via ID as well as using generics (#76)
+A listener function can be registered to the world, for notification on entity changes (#77)
+Support for up to 128 distinct component types per world (was limited to 64 before) (#78)
+Generic entity manipulation through types Map1
, Map2
, … and Exchange
(#79, #84, #87)
+
+
+
+Generic queries are compiled to masks and cached on first build (#62)
+Optimization of adding/removing components, with 2-3x speedup and vast reduction of (number of) allocations (#93)
+Speed up component world access by use of nil pointer check instead of bitmask (#96)
+
+Other
+
+Overhaul of the module structure, with generics and filters in separate packages (#55, #57, #61, #64)
+Boilerplate code for generic filters and queries is auto-generated with go generate
(#64)
+Ensure 100% test coverage by adding a CI check for it (#68)
+World.RemEntity(Entity)
is now World.RemoveEntity(Entity)
(#87)
+More examples as user documentation (#83, #95)
+General API cleanup with renaming of several types and methods (#100)
+
+
+Other
+
+
+Features
+
+Added a layer of generic access as alternative for using component IDs, for type safety and ergonomics (#47, #48)
+
+Generic queries like Query1[T]
, Query2[T, U]
, … (#47)
+Generic add, assign and remove (Add[T]()
, Add2[T, U](), ...
) (#47)
+Generic get, has, and set through component mapper Map[T]
(#47)
+
+
+
+
+
+Use of an archetype graph to speed up finding the target archetype for component addition/removal (#42)
+Minor optimization of component access by queries (#50)
+
+Other
+
+Reduced dependencies by moving profiling and benchmarking to sub-modules (#46)
+Smaller integer type for component identifiers (#47)
+
+
+Features
+
+World
has method Exchange
to add and remove components in one go (#38)
+World
has method Assign
add and assign components in one go (#38)
+World
has method AssignN
add and assign multiple components in one go (#38)
+
+
+
+Optimization of Query
iteration, avoids allocations and makes it approx. 30% faster (#35)
+Much smaller archetype data structure at the cost of one more index lookup (#37)
+
+Other
+
+Removed method Query.Count()
, as it was a by-product of the allocations in the above point (#35)
+Archetypes are stored in a paged collection to use more efficient access by pointers (#36)
+
+
+Documentation
+
+Extended and improved documentation (#34)
+
+
+Features
+
+Add Config
to allow for configuration of the world (currently only storage capacity increment) (#28)
+Query
has a method Count()
, reporting the total number of matching entities (#30)
+
+
+Other
+
+Use aligned item size in component storage for faster query iteration (#25)
+Queries lock the World, and automatically unlock it after iteration (#26)
+
+
+Other
+
+Avoid allocation in World.Has(entity, compID)
(#16)
+World.RemEntity(entity)
panics on dead entity, like all other World
methods (#18)
+Reserve zero value Entity
to serve as nil/undefined value (#23)
+
+
+Initial release.
+Basic ECS implementation.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/design/index.html b/background/design/index.html
new file mode 100644
index 00000000..719af30a
--- /dev/null
+++ b/background/design/index.html
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Design Philosophy :: Arche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Design Philosophy
+
+Unlike most other ECS implementations, Arche is designed for the development of scientific,
+individual-based models rather than for game development.
+This motivates some design decisions, with an emphasis on simplicity, safety and performance.
+Nevertheless, Arche can also be used for game development.
+
+
+
+Simple core API
+The
+
+ ecs.World
+
+ object is a pure and simple ECS implementation in the sense of a data store
+for entities and components, with query and iteration capabilities.
+More advanced features like batch operations or entity relations are provided through separate objects.
+There is neither an update loop nor systems.
+These should be implemented by the user.
+For a batteries-included implementation, see module arche-model .
+The packages
+
+ filter
+
+ and
+
+ generic
+
+
+provide a layer around the core for richer resp. generic queries and manipulation.
+They are built on top of the
+
+ ecs
+
+ package, so they could also be implemented by a user.
+Determinism
+Iteration order in Arche is deterministic and reproducible.
+This does not mean that entities are iterated in their order of insertion, nor in the same order in successive iterations.
+However, given the same operations on the
+
+ ecs.World
+
+ , iteration order will always be the same.
+Strict and panic
+Arche puts an emphasis on safety and on avoiding undefined behavior.
+It panics on unexpected operations, like removing a dead entity,
+adding a component that is already present, or attempting to change a locked world.
+This may not seem idiomatic for Go.
+However, explicit error handling in performance hotspots is not an option.
+Neither is silent failure, given the scientific background.
+Limitations
+
+The number of component types per World
is limited to 256. This is mainly a performance decision.
+The number of entities alive at any one time is limited to just under 5 billion (uint32
ID).
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/index.html b/background/index.html
new file mode 100644
index 00000000..b06ba003
--- /dev/null
+++ b/background/index.html
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Background :: Arche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Arche > Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/background/index.xml b/background/index.xml
new file mode 100644
index 00000000..ea20ebf2
--- /dev/null
+++ b/background/index.xml
@@ -0,0 +1,45 @@
+
+
+
+ Background on Arche
+ https://mlange-42.github.io/arche/background/index.html
+ Recent content in Background on Arche
+ Hugo -- gohugo.io
+ en-us
+
+ -
+
Design Philosophy
+ https://mlange-42.github.io/arche/background/design/index.html
+ Mon, 01 Jan 0001 00:00:00 +0000
+ https://mlange-42.github.io/arche/background/design/index.html
+ Unlike most other ECS implementations, Arche is designed for the development of scientific, individual-based models rather than for game development. This motivates some design decisions, with an emphasis on simplicity, safety and performance. Nevertheless, Arche can also be used for game development.
+Simple core API Determinism Strict and panic Limitations Simple core API The ecs.World object is a pure and simple ECS implementation in the sense of a data store for entities and components, with query and iteration capabilities.
+
+ -
+
Architecture
+ https://mlange-42.github.io/arche/background/architecture/index.html
+ Mon, 01 Jan 0001 00:00:00 +0000
+ https://mlange-42.github.io/arche/background/architecture/index.html
+ Arche uses an archetype-based architecture. Therefore the name 😉.
+This chapter explains the concept and Arche’s take on it.
+Archetypes World entity access Performance Details Archetype graph Entity relations Archetype removal Archetypes The ASCII graph below illustrates the approach. Components for entities are stored in so-called archetypes. Archetypes represent unique combinations of components. This means that component data for all entities with exactly the same component is stored in the same archetype.
+
+ -
+
Benchmarks
+ https://mlange-42.github.io/arche/background/benchmarks/index.html
+ Mon, 01 Jan 0001 00:00:00 +0000
+ https://mlange-42.github.io/arche/background/benchmarks/index.html
+ This chapter gives an overview of the runtime cost of typical Arche operations. All time information is per entity. Batch operations are performed in batches of 1000 entities.
+Absolute numbers are not really meaningful, as they heavily depend on the hardware. However, all benchmarks run in the CI in the same job and hence on the same machine, and can be compared.
+Benchmark code: benchmark/table in the GitHub repository.
+Benchmarks are run automatically in the GitHub CI, and are updated on this page on every merge into the main branch.
+
+ -
+
Changelog
+ https://mlange-42.github.io/arche/background/changelog/index.html
+ Mon, 01 Jan 0001 00:00:00 +0000
+ https://mlange-42.github.io/arche/background/changelog/index.html
+ [unpublished] Documentation Adds an example for World.Mask, showing how to check whether a filter “contains” an entity (#428) [v0.13.2] Bugfixes Ensure Assign() copies components before notifying listeners (#426, g-getsov) [v0.13.1] Bugfixes Fixes dispatch listener bug that did not clear component restriction (#424, g-getsov) [v0.13.0] Features Adds function ResourceTypeID to register/get a resource ID from a reflect.Type (#420) Other Fix component type in examples/base (#419) [v0.12.0] Features Adds Entity.ID() and Entity.Generation() (#408, delaneyj) Documentation Adds a showcase chapter “Made with Arche” to the documentation page (#411) Performance Re-arrange struct fields to save memory in a few places (#413) Bugfixes Fix crash caused by extending layouts of an inactive archetype (#416, reported in #415) First-time contributors delaneyj [v0.
+
+
+
\ No newline at end of file
diff --git a/categories/index.html b/categories/index.html
new file mode 100644
index 00000000..6078615e
--- /dev/null
+++ b/categories/index.html
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Categories :: Arche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Arche > Categories
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/categories/index.xml b/categories/index.xml
new file mode 100644
index 00000000..8c8afa9a
--- /dev/null
+++ b/categories/index.xml
@@ -0,0 +1,11 @@
+
+
+
+ Categories on Arche
+ https://mlange-42.github.io/arche/categories/index.html
+ Recent content in Categories on Arche
+ Hugo -- gohugo.io
+ en-us
+
+
+
\ No newline at end of file
diff --git a/css/auto-complete.css b/css/auto-complete.css
new file mode 100644
index 00000000..337547aa
--- /dev/null
+++ b/css/auto-complete.css
@@ -0,0 +1,66 @@
+.autocomplete-suggestions {
+ text-align: start;
+ color-scheme: only light; /* set browser scrollbar color */
+ cursor: default;
+ border: 1px solid rgba( 204, 204, 204, 1 );
+ border-top: 0;
+ background: rgba( 255, 255, 255, 1 );
+ box-shadow: -1px 1px 3px rgba( 0, 0, 0, .1 );
+
+ /* core styles should not be changed */
+ position: absolute;
+ display: none;
+ z-index: 9999;
+ max-height: 10em;
+ max-height: calc( 100vh - 10em );
+ overflow: hidden;
+ overflow-y: auto;
+ box-sizing: border-box;
+}
+.autocomplete-suggestion {
+ position: relative;
+ cursor: pointer;
+ padding: .46em;
+ line-height: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: rgba( 40, 40, 40, 1 );
+}
+
+.autocomplete-suggestion b {
+ font-weight: normal;
+ color: rgba( 31, 141, 214, 1 );
+}
+
+.autocomplete-suggestion.selected {
+ background: rgba( 40, 40, 40, 1 );
+ color: rgba( 255, 255, 255, 1 );
+}
+
+.autocomplete-suggestion:hover,
+.autocomplete-suggestion:focus,
+.autocomplete-suggestion:active,
+.autocomplete-suggestion:hover > .context,
+.autocomplete-suggestion:focus > .context,
+.autocomplete-suggestion:active > .context,
+#R-searchresults .autocomplete-suggestion:hover > .context,
+#R-searchresults .autocomplete-suggestion:focus > .context,
+#R-searchresults .autocomplete-suggestion:active > .context {
+ background: rgba( 56, 56, 56, 1 );
+ color: rgba( 255, 255, 255, 1 );
+}
+
+.autocomplete-suggestion > .breadcrumbs {
+ font-size: .7869em;
+ margin-inline-start: 1em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.autocomplete-suggestion > .context {
+ font-size: .7869em;
+ margin-inline-start: 1em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
diff --git a/css/cards.css b/css/cards.css
new file mode 100644
index 00000000..98bb9738
--- /dev/null
+++ b/css/cards.css
@@ -0,0 +1,39 @@
+
+/* Float four columns side by side */
+.column {
+ float: left;
+ width: 33%;
+ padding: 0 10px 20px 10px;
+}
+
+/* Remove extra left and right margins, due to padding in columns */
+.row {margin: 0 -5px;}
+
+/* Clear floats after the columns */
+.row:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+/* Style the counter cards */
+.card {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.3); /* this adds the "card" effect */
+ padding: 16px;
+ text-align: center;
+ background-color: rgba( 134, 134, 134, .066 );
+}
+
+/* Responsive columns - one column layout (vertical) on small screens */
+@media screen and (max-width: 800px) {
+ .column {
+ width: 50%;
+ }
+}
+
+/* Responsive columns - one column layout (vertical) on small screens */
+@media screen and (max-width: 500px) {
+ .column {
+ width: 100%;
+ }
+}
diff --git a/css/chroma-auto.css b/css/chroma-auto.css
new file mode 100644
index 00000000..26ffb480
--- /dev/null
+++ b/css/chroma-auto.css
@@ -0,0 +1,2 @@
+@import "chroma-github.css" screen and (prefers-color-scheme: light);
+@import "chroma-github-dark.css" screen and (prefers-color-scheme: dark);
diff --git a/css/chroma-github-dark.css b/css/chroma-github-dark.css
new file mode 100644
index 00000000..939823f6
--- /dev/null
+++ b/css/chroma-github-dark.css
@@ -0,0 +1,86 @@
+/* Background */ .bg { color: #e6edf3; background-color: #0d1117; }
+/* PreWrapper */ .chroma { color: #e6edf3; 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 { color: #6e7681 }
+/* 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: #737679 }
+/* 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/css/chroma-github.css b/css/chroma-github.css
new file mode 100644
index 00000000..be0dc376
--- /dev/null
+++ b/css/chroma-github.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: #e5e5e5 }
+/* 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/css/chroma-learn.css b/css/chroma-learn.css
new file mode 100644
index 00000000..21ba092c
--- /dev/null
+++ b/css/chroma-learn.css
@@ -0,0 +1,87 @@
+/* based on base16-snazzy */
+/* Background */ .bg { color: #e2e4e5; background-color: #282a36; }
+/* PreWrapper */ .chroma { color: #e2e4e5; background-color: #282a36; }
+/* Other */ .chroma .x { }
+/* Error */ .chroma .err { color: #ff5c57 }
+/* 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: #505050 }
+/* 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: #ff6ac1 }
+/* KeywordConstant */ .chroma .kc { color: #ff6ac1 }
+/* KeywordDeclaration */ .chroma .kd { color: #ff5c57 }
+/* KeywordNamespace */ .chroma .kn { color: #ff6ac1 }
+/* KeywordPseudo */ .chroma .kp { color: #ff6ac1 }
+/* KeywordReserved */ .chroma .kr { color: #ff6ac1 }
+/* KeywordType */ .chroma .kt { color: #9aedfe }
+/* Name */ .chroma .n { }
+/* NameAttribute */ .chroma .na { color: #57c7ff }
+/* NameBuiltin */ .chroma .nb { color: #ff5c57 }
+/* NameBuiltinPseudo */ .chroma .bp { }
+/* NameClass */ .chroma .nc { color: #f3f99d }
+/* NameConstant */ .chroma .no { color: #ff9f43 }
+/* NameDecorator */ .chroma .nd { color: #ff9f43 }
+/* NameEntity */ .chroma .ni { }
+/* NameException */ .chroma .ne { }
+/* NameFunction */ .chroma .nf { color: #57c7ff }
+/* NameFunctionMagic */ .chroma .fm { }
+/* NameLabel */ .chroma .nl { color: #ff5c57 }
+/* NameNamespace */ .chroma .nn { }
+/* NameOther */ .chroma .nx { }
+/* NameProperty */ .chroma .py { }
+/* NameTag */ .chroma .nt { color: #ff6ac1 }
+/* NameVariable */ .chroma .nv { color: #ff5c57 }
+/* NameVariableClass */ .chroma .vc { color: #ff5c57 }
+/* NameVariableGlobal */ .chroma .vg { color: #ff5c57 }
+/* NameVariableInstance */ .chroma .vi { color: #ff5c57 }
+/* NameVariableMagic */ .chroma .vm { }
+/* Literal */ .chroma .l { }
+/* LiteralDate */ .chroma .ld { }
+/* LiteralString */ .chroma .s { color: #5af78e }
+/* LiteralStringAffix */ .chroma .sa { color: #5af78e }
+/* LiteralStringBacktick */ .chroma .sb { color: #5af78e }
+/* LiteralStringChar */ .chroma .sc { color: #5af78e }
+/* LiteralStringDelimiter */ .chroma .dl { color: #5af78e }
+/* LiteralStringDoc */ .chroma .sd { color: #5af78e }
+/* LiteralStringDouble */ .chroma .s2 { color: #5af78e }
+/* LiteralStringEscape */ .chroma .se { color: #5af78e }
+/* LiteralStringHeredoc */ .chroma .sh { color: #5af78e }
+/* LiteralStringInterpol */ .chroma .si { color: #5af78e }
+/* LiteralStringOther */ .chroma .sx { color: #5af78e }
+/* LiteralStringRegex */ .chroma .sr { color: #5af78e }
+/* LiteralStringSingle */ .chroma .s1 { color: #5af78e }
+/* LiteralStringSymbol */ .chroma .ss { color: #5af78e }
+/* LiteralNumber */ .chroma .m { color: #ff9f43 }
+/* LiteralNumberBin */ .chroma .mb { color: #ff9f43 }
+/* LiteralNumberFloat */ .chroma .mf { color: #ff9f43 }
+/* LiteralNumberHex */ .chroma .mh { color: #ff9f43 }
+/* LiteralNumberInteger */ .chroma .mi { color: #ff9f43 }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #ff9f43 }
+/* LiteralNumberOct */ .chroma .mo { color: #ff9f43 }
+/* Operator */ .chroma .o { color: #ff6ac1 }
+/* OperatorWord */ .chroma .ow { color: #ff6ac1 }
+/* Punctuation */ .chroma .p { }
+/* Comment */ .chroma .c { color: #78787e }
+/* CommentHashbang */ .chroma .ch { color: #78787e }
+/* CommentMultiline */ .chroma .cm { color: #78787e }
+/* CommentSingle */ .chroma .c1 { color: #78787e }
+/* CommentSpecial */ .chroma .cs { color: #78787e }
+/* CommentPreproc */ .chroma .cp { color: #78787e }
+/* CommentPreprocFile */ .chroma .cpf { color: #78787e }
+/* Generic */ .chroma .g { }
+/* GenericDeleted */ .chroma .gd { color: #ff5c57 }
+/* GenericEmph */ .chroma .ge { text-decoration: underline }
+/* GenericError */ .chroma .gr { color: #ff5c57 }
+/* GenericHeading */ .chroma .gh { font-weight: bold }
+/* GenericInserted */ .chroma .gi { font-weight: bold }
+/* GenericOutput */ .chroma .go { color: #43454f }
+/* GenericPrompt */ .chroma .gp { }
+/* GenericStrong */ .chroma .gs { font-style: italic }
+/* GenericSubheading */ .chroma .gu { font-weight: bold }
+/* GenericTraceback */ .chroma .gt { }
+/* GenericUnderline */ .chroma .gl { text-decoration: underline }
+/* TextWhitespace */ .chroma .w { }
diff --git a/css/chroma-neon.css b/css/chroma-neon.css
new file mode 100644
index 00000000..e6746bdf
--- /dev/null
+++ b/css/chroma-neon.css
@@ -0,0 +1,93 @@
+/* this variant does not work well if we use fallback styles for IE11 so better
+ ignore this variant in IE completely */
+@supports not (-ms-high-contrast:none) {
+
+/* based on rrt */
+/* Background */ .bg { color: #f8f8f2; background-color: #000000; }
+/* PreWrapper */ .chroma { color: #f8f8f2; background-color: #000000; }
+/* Other */ .chroma .x { }
+/* Error */ .chroma .err { }
+/* 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: #363638 }
+/* 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: #7c7c79 }
+/* 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: #7c7c79 }
+/* Line */ .chroma .line { display: flex; }
+/* Keyword */ .chroma .k { color: #ff0000 }
+/* KeywordConstant */ .chroma .kc { color: #ff0000 }
+/* KeywordDeclaration */ .chroma .kd { color: #ff0000 }
+/* KeywordNamespace */ .chroma .kn { color: #ff0000 }
+/* KeywordPseudo */ .chroma .kp { color: #ff0000 }
+/* KeywordReserved */ .chroma .kr { color: #ff0000 }
+/* KeywordType */ .chroma .kt { color: #ee82ee }
+/* Name */ .chroma .n { }
+/* NameAttribute */ .chroma .na { }
+/* NameBuiltin */ .chroma .nb { }
+/* NameBuiltinPseudo */ .chroma .bp { }
+/* NameClass */ .chroma .nc { }
+/* NameConstant */ .chroma .no { color: #7fffd4 }
+/* NameDecorator */ .chroma .nd { }
+/* NameEntity */ .chroma .ni { }
+/* NameException */ .chroma .ne { }
+/* NameFunction */ .chroma .nf { color: #ffff00 }
+/* NameFunctionMagic */ .chroma .fm { }
+/* NameLabel */ .chroma .nl { }
+/* NameNamespace */ .chroma .nn { }
+/* NameOther */ .chroma .nx { }
+/* NameProperty */ .chroma .py { }
+/* NameTag */ .chroma .nt { }
+/* NameVariable */ .chroma .nv { color: #eedd82 }
+/* NameVariableClass */ .chroma .vc { }
+/* NameVariableGlobal */ .chroma .vg { }
+/* NameVariableInstance */ .chroma .vi { }
+/* NameVariableMagic */ .chroma .vm { }
+/* Literal */ .chroma .l { }
+/* LiteralDate */ .chroma .ld { }
+/* LiteralString */ .chroma .s { color: #87ceeb }
+/* LiteralStringAffix */ .chroma .sa { color: #87ceeb }
+/* LiteralStringBacktick */ .chroma .sb { color: #87ceeb }
+/* LiteralStringChar */ .chroma .sc { color: #87ceeb }
+/* LiteralStringDelimiter */ .chroma .dl { color: #87ceeb }
+/* LiteralStringDoc */ .chroma .sd { color: #87ceeb }
+/* LiteralStringDouble */ .chroma .s2 { color: #87ceeb }
+/* LiteralStringEscape */ .chroma .se { color: #87ceeb }
+/* LiteralStringHeredoc */ .chroma .sh { color: #87ceeb }
+/* LiteralStringInterpol */ .chroma .si { color: #87ceeb }
+/* LiteralStringOther */ .chroma .sx { color: #87ceeb }
+/* LiteralStringRegex */ .chroma .sr { color: #87ceeb }
+/* LiteralStringSingle */ .chroma .s1 { color: #87ceeb }
+/* LiteralStringSymbol */ .chroma .ss { color: #ff6600 }
+/* LiteralNumber */ .chroma .m { color: #ff6600 }
+/* LiteralNumberBin */ .chroma .mb { color: #ff6600 }
+/* LiteralNumberFloat */ .chroma .mf { color: #ff6600 }
+/* LiteralNumberHex */ .chroma .mh { color: #ff6600 }
+/* LiteralNumberInteger */ .chroma .mi { color: #ff6600 }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #ff6600 }
+/* LiteralNumberOct */ .chroma .mo { color: #ff6600 }
+/* Operator */ .chroma .o { }
+/* OperatorWord */ .chroma .ow { }
+/* Punctuation */ .chroma .p { }
+/* Comment */ .chroma .c { color: #00ff00 }
+/* CommentHashbang */ .chroma .ch { color: #00ff00 }
+/* CommentMultiline */ .chroma .cm { color: #00ff00 }
+/* CommentSingle */ .chroma .c1 { color: #00ff00 }
+/* CommentSpecial */ .chroma .cs { color: #00ff00 }
+/* CommentPreproc */ .chroma .cp { color: #e5e5e5 }
+/* CommentPreprocFile */ .chroma .cpf { color: #e5e5e5 }
+/* Generic */ .chroma .g { }
+/* GenericDeleted */ .chroma .gd { }
+/* GenericEmph */ .chroma .ge { }
+/* GenericError */ .chroma .gr { }
+/* GenericHeading */ .chroma .gh { }
+/* GenericInserted */ .chroma .gi { }
+/* GenericOutput */ .chroma .go { }
+/* GenericPrompt */ .chroma .gp { }
+/* GenericStrong */ .chroma .gs { }
+/* GenericSubheading */ .chroma .gu { }
+/* GenericTraceback */ .chroma .gt { }
+/* GenericUnderline */ .chroma .gl { }
+/* TextWhitespace */ .chroma .w { }
+
+}
diff --git a/css/chroma-relearn-dark.css b/css/chroma-relearn-dark.css
new file mode 100644
index 00000000..5872f7e1
--- /dev/null
+++ b/css/chroma-relearn-dark.css
@@ -0,0 +1,87 @@
+/* based on monokai */
+/* Background */ .bg { color: #f8f8f2; background-color: #2b2b2b; }
+/* PreWrapper */ .chroma { color: #f8f8f2; background-color: #2b2b2b; }
+/* Other */ .chroma .x { }
+/* Error */ .chroma .err { color: #cc66cc; }
+/* 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: #404042 }
+/* 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: #66d9ef }
+/* KeywordConstant */ .chroma .kc { color: #66d9ef }
+/* KeywordDeclaration */ .chroma .kd { color: #66d9ef }
+/* KeywordNamespace */ .chroma .kn { color: #f92672 }
+/* KeywordPseudo */ .chroma .kp { color: #66d9ef }
+/* KeywordReserved */ .chroma .kr { color: #66d9ef }
+/* KeywordType */ .chroma .kt { color: #66d9ef }
+/* Name */ .chroma .n { }
+/* NameAttribute */ .chroma .na { color: #a6e22e }
+/* NameBuiltin */ .chroma .nb { }
+/* NameBuiltinPseudo */ .chroma .bp { }
+/* NameClass */ .chroma .nc { color: #a6e22e }
+/* NameConstant */ .chroma .no { color: #66d9ef }
+/* NameDecorator */ .chroma .nd { color: #a6e22e }
+/* NameEntity */ .chroma .ni { }
+/* NameException */ .chroma .ne { color: #a6e22e }
+/* NameFunction */ .chroma .nf { color: #a6e22e }
+/* NameFunctionMagic */ .chroma .fm { }
+/* NameLabel */ .chroma .nl { }
+/* NameNamespace */ .chroma .nn { }
+/* NameOther */ .chroma .nx { color: #a6e22e }
+/* NameProperty */ .chroma .py { }
+/* NameTag */ .chroma .nt { color: #f92672 }
+/* NameVariable */ .chroma .nv { }
+/* NameVariableClass */ .chroma .vc { }
+/* NameVariableGlobal */ .chroma .vg { }
+/* NameVariableInstance */ .chroma .vi { }
+/* NameVariableMagic */ .chroma .vm { }
+/* Literal */ .chroma .l { color: #ae81ff }
+/* LiteralDate */ .chroma .ld { color: #e6db74 }
+/* LiteralString */ .chroma .s { color: #e6db74 }
+/* LiteralStringAffix */ .chroma .sa { color: #e6db74 }
+/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 }
+/* LiteralStringChar */ .chroma .sc { color: #e6db74 }
+/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 }
+/* LiteralStringDoc */ .chroma .sd { color: #e6db74 }
+/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 }
+/* LiteralStringEscape */ .chroma .se { color: #ae81ff }
+/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 }
+/* LiteralStringInterpol */ .chroma .si { color: #e6db74 }
+/* LiteralStringOther */ .chroma .sx { color: #e6db74 }
+/* LiteralStringRegex */ .chroma .sr { color: #e6db74 }
+/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 }
+/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 }
+/* LiteralNumber */ .chroma .m { color: #ae81ff }
+/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
+/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
+/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
+/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
+/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
+/* Operator */ .chroma .o { color: #f92672 }
+/* OperatorWord */ .chroma .ow { color: #f92672 }
+/* Punctuation */ .chroma .p { }
+/* Comment */ .chroma .c { color: #75715e }
+/* CommentHashbang */ .chroma .ch { color: #75715e }
+/* CommentMultiline */ .chroma .cm { color: #75715e }
+/* CommentSingle */ .chroma .c1 { color: #75715e }
+/* CommentSpecial */ .chroma .cs { color: #75715e }
+/* CommentPreproc */ .chroma .cp { color: #75715e }
+/* CommentPreprocFile */ .chroma .cpf { color: #75715e }
+/* Generic */ .chroma .g { }
+/* GenericDeleted */ .chroma .gd { color: #f92672 }
+/* GenericEmph */ .chroma .ge { font-style: italic }
+/* GenericError */ .chroma .gr { }
+/* GenericHeading */ .chroma .gh { }
+/* GenericInserted */ .chroma .gi { color: #a6e22e }
+/* GenericOutput */ .chroma .go { }
+/* GenericPrompt */ .chroma .gp { }
+/* GenericStrong */ .chroma .gs { font-weight: bold }
+/* GenericSubheading */ .chroma .gu { color: #75715e }
+/* GenericTraceback */ .chroma .gt { }
+/* GenericUnderline */ .chroma .gl { }
+/* TextWhitespace */ .chroma .w { }
diff --git a/css/chroma-relearn-light.css b/css/chroma-relearn-light.css
new file mode 100644
index 00000000..98667eed
--- /dev/null
+++ b/css/chroma-relearn-light.css
@@ -0,0 +1,87 @@
+/* based on monokailight */
+/* Background */ .bg { color: #272822; background-color: #fafafa; }
+/* PreWrapper */ .chroma { color: #272822; background-color: #fafafa; }
+/* Other */ .chroma .x { }
+/* Error */ .chroma .err { color: #960050; }
+/* 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: #e1e1e1 }
+/* 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: #00a8c8 }
+/* KeywordConstant */ .chroma .kc { color: #00a8c8 }
+/* KeywordDeclaration */ .chroma .kd { color: #00a8c8 }
+/* KeywordNamespace */ .chroma .kn { color: #f92672 }
+/* KeywordPseudo */ .chroma .kp { color: #00a8c8 }
+/* KeywordReserved */ .chroma .kr { color: #00a8c8 }
+/* KeywordType */ .chroma .kt { color: #00a8c8 }
+/* Name */ .chroma .n { color: #111111 }
+/* NameAttribute */ .chroma .na { color: #75af00 }
+/* NameBuiltin */ .chroma .nb { color: #111111 }
+/* NameBuiltinPseudo */ .chroma .bp { color: #111111 }
+/* NameClass */ .chroma .nc { color: #75af00 }
+/* NameConstant */ .chroma .no { color: #00a8c8 }
+/* NameDecorator */ .chroma .nd { color: #75af00 }
+/* NameEntity */ .chroma .ni { color: #111111 }
+/* NameException */ .chroma .ne { color: #75af00 }
+/* NameFunction */ .chroma .nf { color: #75af00 }
+/* NameFunctionMagic */ .chroma .fm { color: #111111 }
+/* NameLabel */ .chroma .nl { color: #111111 }
+/* NameNamespace */ .chroma .nn { color: #111111 }
+/* NameOther */ .chroma .nx { color: #75af00 }
+/* NameProperty */ .chroma .py { color: #111111 }
+/* NameTag */ .chroma .nt { color: #f92672 }
+/* NameVariable */ .chroma .nv { color: #111111 }
+/* NameVariableClass */ .chroma .vc { color: #111111 }
+/* NameVariableGlobal */ .chroma .vg { color: #111111 }
+/* NameVariableInstance */ .chroma .vi { color: #111111 }
+/* NameVariableMagic */ .chroma .vm { color: #111111 }
+/* Literal */ .chroma .l { color: #ae81ff }
+/* LiteralDate */ .chroma .ld { color: #d88200 }
+/* LiteralString */ .chroma .s { color: #d88200 }
+/* LiteralStringAffix */ .chroma .sa { color: #d88200 }
+/* LiteralStringBacktick */ .chroma .sb { color: #d88200 }
+/* LiteralStringChar */ .chroma .sc { color: #d88200 }
+/* LiteralStringDelimiter */ .chroma .dl { color: #d88200 }
+/* LiteralStringDoc */ .chroma .sd { color: #d88200 }
+/* LiteralStringDouble */ .chroma .s2 { color: #d88200 }
+/* LiteralStringEscape */ .chroma .se { color: #8045ff }
+/* LiteralStringHeredoc */ .chroma .sh { color: #d88200 }
+/* LiteralStringInterpol */ .chroma .si { color: #d88200 }
+/* LiteralStringOther */ .chroma .sx { color: #d88200 }
+/* LiteralStringRegex */ .chroma .sr { color: #d88200 }
+/* LiteralStringSingle */ .chroma .s1 { color: #d88200 }
+/* LiteralStringSymbol */ .chroma .ss { color: #d88200 }
+/* LiteralNumber */ .chroma .m { color: #ae81ff }
+/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
+/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
+/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
+/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
+/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
+/* Operator */ .chroma .o { color: #f92672 }
+/* OperatorWord */ .chroma .ow { color: #f92672 }
+/* Punctuation */ .chroma .p { color: #111111 }
+/* Comment */ .chroma .c { color: #a7a187 }
+/* CommentHashbang */ .chroma .ch { color: #a7a187 }
+/* CommentMultiline */ .chroma .cm { color: #a7a187 }
+/* CommentSingle */ .chroma .c1 { color: #a7a187 }
+/* CommentSpecial */ .chroma .cs { color: #a7a187 }
+/* CommentPreproc */ .chroma .cp { color: #a7a187 }
+/* CommentPreprocFile */ .chroma .cpf { color: #a7a187 }
+/* Generic */ .chroma .g { }
+/* GenericDeleted */ .chroma .gd { }
+/* GenericEmph */ .chroma .ge { font-style: italic }
+/* GenericError */ .chroma .gr { }
+/* GenericHeading */ .chroma .gh { }
+/* GenericInserted */ .chroma .gi { }
+/* GenericOutput */ .chroma .go { }
+/* GenericPrompt */ .chroma .gp { }
+/* GenericStrong */ .chroma .gs { font-weight: bold }
+/* GenericSubheading */ .chroma .gu { }
+/* GenericTraceback */ .chroma .gt { }
+/* GenericUnderline */ .chroma .gl { }
+/* TextWhitespace */ .chroma .w { }
diff --git a/css/fontawesome-all.min.css b/css/fontawesome-all.min.css
new file mode 100644
index 00000000..ac76ff19
--- /dev/null
+++ b/css/fontawesome-all.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
\ No newline at end of file
diff --git a/css/fonts.css b/css/fonts.css
new file mode 100644
index 00000000..e0962ae5
--- /dev/null
+++ b/css/fonts.css
@@ -0,0 +1,39 @@
+@font-face {
+ font-family: 'Work Sans';
+ font-style: normal;
+ font-weight: 200;
+ src: url("../fonts/WorkSans-ExtraLight.woff") format("woff2"), url("../fonts/WorkSans-ExtraLight.woff") format("woff");
+ font-display: swap;
+}
+
+@font-face {
+ font-family: 'Work Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: url("../fonts/WorkSans-Light.woff2") format("woff2"), url("../fonts/WorkSans-Light.woff") format("woff");
+ font-display: swap;
+}
+
+@font-face {
+ font-family: 'Work Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url("../fonts/WorkSans-Regular.woff2") format("woff2"), url("../fonts/WorkSans-Regular.woff") format("woff");
+ font-display: swap;
+}
+
+@font-face {
+ font-family: 'Work Sans';
+ font-style: normal;
+ font-weight: 500;
+ src: url("../fonts/WorkSans-Medium.woff2") format("woff2"), url("../fonts/WorkSans-Medium.woff") format("woff");
+ font-display: swap;
+}
+
+@font-face {
+ font-family: 'Work Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: url("../fonts/WorkSans-Bold.woff2") format("woff2"), url("../fonts/WorkSans-Bold.woff") format("woff");
+ font-display: swap;
+}
diff --git a/css/format-print.css b/css/format-print.css
new file mode 100644
index 00000000..a9d2aefe
--- /dev/null
+++ b/css/format-print.css
@@ -0,0 +1,174 @@
+@import "theme-relearn-light.css";
+@import "chroma-relearn-light.css";
+
+#R-sidebar {
+ display: none;
+}
+#R-body {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ min-width: 100% !important;
+ max-width: 100% !important;
+ width: 100% !important;
+}
+#R-body #navigation {
+ display: none;
+}
+html{
+ font-size: 8.763pt;
+}
+body {
+ background-color: rgba( 255, 255, 255, 1 );
+}
+code.copy-to-clipboard-code {
+ border-start-end-radius: 2px;
+ border-end-end-radius: 2px;
+ border-inline-end-width: 1px;
+}
+pre:not(.mermaid) {
+ border: 1px solid rgba( 204, 204, 204, 1 );
+}
+#R-body #R-topbar{
+ background-color: rgba( 255, 255, 255, 1 ); /* avoid background bleeding*/
+ border-bottom: 1px solid rgba( 221, 221, 221, 1 );
+ border-radius: 0;
+ color: rgba( 119, 119, 119, 1 );
+ padding-left: 0; /* for print, we want to align with the footer to ease the layout */
+ padding-right: 0;
+}
+#R-body .topbar-button {
+ /* we don't need the buttons while printing */
+ /* we need !important to turn off JS topbar button handling setting element styles */
+ display: none !important;
+}
+@media screen and (max-width: 47.999rem) {
+ #R-body .topbar-breadcrumbs {
+ visibility: visible;
+ }
+}
+#R-body .copy-to-clipboard-button {
+ display: none;
+}
+
+#R-body .svg-reset-button {
+ display: none;
+}
+
+#R-body h1, #R-body h2, #R-body h3, #R-body .article-subheading, #R-body h4, #R-body h5, #R-body h6 {
+ /* better contrast for colored elements */
+ color: rgba( 0, 0, 0, 1 );
+}
+#R-body th, #R-body td,
+#R-body code, #R-body strong, #R-body b,
+#R-body li, #R-body dd, #R-body dt,
+#R-body p,
+#R-body a, #R-body button, #R-body .badge .badge-content {
+ /* better contrast for colored elements */
+ color: rgba( 0, 0, 0, 1 );
+}
+#R-body .anchor{
+ display: none;
+}
+#R-body pre:not(.mermaid),
+#R-body code {
+ background-color: rgba( 255, 255, 255, 1 );
+ border-color: rgba( 221, 221, 221, 1 );
+}
+
+hr{
+ border-bottom: 1px solid rgba( 221, 221, 221, 1 );
+}
+#R-body #R-body-inner {
+ overflow: visible; /* turn off limitations for perfect scrollbar */
+ /* reset paddings for chapters in screen */
+ padding: 0 3.25rem 4rem 3.25rem;
+}
+
+#R-body #R-body-inner h1 {
+ border-bottom: 1px solid rgba( 221, 221, 221, 1 );
+ margin-bottom: 2rem;
+ padding-bottom: .75rem;
+}
+#R-body-inner .chapter h3:first-of-type {
+ margin-top: 2rem;
+}
+
+/* Children shortcode */
+.children p,
+.children-li p,
+.children-h2 p,
+.children-h3 p {
+ font-size: 1rem;
+}
+
+.footline {
+ /* in print mode show footer line to signal reader the end of document */
+ border-top: 1px solid rgba( 221, 221, 221, 1 );
+ color: rgba( 119, 119, 119, 1 );
+ margin-top: 1.5rem;
+ padding-top: .75rem;
+}
+
+h1 + .footline{
+ /* if we have no content in the page we remove the footer as it is of no real value in print */
+ display: none;
+}
+
+#R-body #R-body-inner .headline a,
+#R-body #R-body-inner .footline a,
+#R-body #R-body-inner .btn a {
+ text-decoration: none;
+}
+#R-body #R-body-inner a {
+ /* in print we want to distinguish links in our content from
+ normal text even if printed black/white;
+ don't use a.highlight in selector to also get links that are
+ put as HTML into markdown */
+ text-decoration-line: underline;
+}
+#R-topbar{
+ /* the header is sticky which is not suitable for print; */
+ position: inherit; /* IE11 doesn't know "initial" here */
+}
+#R-topbar > .topbar-wrapper {
+ background-color: rgba( 255, 255, 255, 1 ); /* IE11 doesn't know "initial" here */
+}
+#R-body .topbar-sidebar-divider {
+ border-width: 0;
+}
+.term-list {
+ display: none;
+}
+mark {
+ background: inherit;
+ color: inherit;
+}
+.mermaid.zoom:hover {
+ border-color: transparent;
+}
+div.box > .box-content {
+ background-color: rgba( 255, 255, 255, 1 );
+}
+
+.btn,
+#R-body .tab-nav-button {
+ color: rgba( 0, 0, 0, 1 );
+}
+#R-body .tab-nav-button.active {
+ border-bottom-color: rgba( 255, 255, 255, 1 );
+ color: rgba( 0, 0, 0, 1 );
+}
+#R-body .tab-nav-button.active > .tab-nav-text {
+ background-color: rgba( 255, 255, 255, 1 );
+}
+#R-body .tab-content-text {
+ background-color: rgba( 255, 255, 255, 1 ) ;
+ color: rgba( 0, 0, 0, 1 );
+}
+
+article {
+ break-before: page;
+}
+#R-body-inner > * > article:first-of-type {
+ break-before: avoid;
+}
diff --git a/css/ie.css b/css/ie.css
new file mode 100644
index 00000000..4902425c
--- /dev/null
+++ b/css/ie.css
@@ -0,0 +1,926 @@
+@media all and (-ms-high-contrast:none) {
+ /* ----------------------------------------------- */
+ /* turn off LTR support as it is dependend on CSS properties that aren't supported by IE11 */
+ html {
+ direction: ltr !important;
+ }
+ /* nucleus */
+ th {
+ text-align: left;
+ }
+ input[type="checkbox"], input[type="radio"] {
+ margin-right: 0.425rem;
+ }
+ blockquote {
+ padding-left: 0.85rem;
+ }
+ /* theme */
+ #R-sidebar {
+ left: 0;
+ min-width: 18.75rem;
+ max-width: 18.75rem;
+ width: 18.75rem;
+ }
+ #R-header {
+ border-right: 1px solid transparent;
+ }
+ .searchbox > :first-child {
+ left: .5rem;
+ }
+ .searchbox > :last-child {
+ right: .5rem;
+ }
+ .searchbox input {
+ padding-left: 1.8rem;
+ padding-right: 1.6rem;
+ }
+ #R-sidebar ul li.visited + span {
+ margin-right: 1rem;
+ }
+ #R-sidebar ul li .read-icon {
+ right: 1rem;
+ }
+ #R-sidebar .nav-title {
+ padding-left: 1rem;
+ }
+ #R-body {
+ margin-left: 18.75rem;
+ min-width: calc( 100% - 18.75rem );
+ max-width: calc( 100% - 18.75rem );
+ width: calc( 100% - 18.75rem );
+ }
+ #R-body .flex-block-wrapper {
+ max-width: calc( 81.25rem - 18.75rem - 2 * 3.25rem );
+ }
+ body:not(.print) #R-body .narrow .flex-block-wrapper {
+ max-width: calc( 81.25rem - 18.75rem - 2 * 9.75rem );
+ }
+ /* we limit width if we have large screens */
+ @media screen and ( min-width: 81.25rem ){ /* #R-sidebar/width + ./max-width */
+ #R-body .flex-block-wrapper {
+ width: calc( 81.25rem - 18.75rem - 2 * 3.25rem );
+ }
+ body:not(.print) #R-body .narrow .flex-block-wrapper {
+ width: calc( 81.25rem - 18.75rem - 2 * 9.75rem );
+ }
+ }
+ h2, h3, h4, h5, h6 {
+ padding-right: 2rem;
+ }
+ blockquote {
+ border-left: .6rem solid rgba( 134, 134, 134, .4 );
+ }
+ blockquote cite {
+ text-align: right;
+ }
+ div.attachments .box-content {
+ padding-left: 1.75rem;
+ }
+ #R-body-inner ul.children-h2,
+ #R-body-inner ul.children-h3,
+ #R-body-inner ul.children-h4,
+ #R-body-inner ul.children-h5,
+ #R-body-inner ul.children-h6 {
+ /* if we display children with style=h2 but without a containerstyle
+ a ul will be used for structuring; we remove default indention for uls
+ in this case */
+ padding-left: 0;
+ }
+ code.copy-to-clipboard-code {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+ border-right-width: 0;
+ }
+ .topbar-wrapper > .topbar-area-start > .topbar-button > .topbar-control {
+ border-right: 1px solid rgba( 134, 134, 134, .333 );
+ }
+ .topbar-wrapper > .topbar-area-end > .topbar-button > .topbar-control {
+ border-left: 1px solid rgba( 134, 134, 134, .333 );
+ }
+ #R-body .topbar-sidebar-divider {
+ border-left-style: solid;
+ border-left-width: 1px;
+ margin-right: -1px;
+ }
+ html[dir="rtl"] .topbar-button-prev i,
+ html[dir="rtl"] .topbar-button-next i {
+ transform: scaleX(1);
+ }
+ .topbar-content {
+ left: 1rem;
+ }
+ @media screen and (max-width: 59.999rem) {
+ #R-sidebar {
+ min-width: 14.375rem;
+ max-width: 14.375rem;
+ width: 14.375rem;
+ }
+ #R-body {
+ margin-left: 14.375rem;
+ min-width: calc( 100% - 14.375rem );
+ max-width: calc( 100% - 14.375rem );
+ width: calc( 100% - 14.375rem );
+ }
+ }
+ @media screen and (max-width: 47.999rem) {
+ .mobile-support #R-sidebar {
+ left: -14.375rem;
+ }
+ .mobile-support #R-body {
+ margin-left: 0;
+ }
+ .mobile-support.sidebar-flyout #R-sidebar {
+ left: 0;
+ }
+ .mobile-support.sidebar-flyout #R-body {
+ margin-left: 14.375rem;
+ }
+ }
+ .copy-to-clipboard-button {
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+ }
+ span > .copy-to-clipboard-button {
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+ }
+ .disableInlineCopyToClipboard span > code.copy-to-clipboard-code {
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-right-width: 1px;
+ }
+ .expand > label {
+ left: 0;
+ }
+ .expand > .expand-content {
+ margin-left: 1rem;
+ }
+ html[dir="rtl"] .expand > .expand-label > i.fa-chevron-right {
+ transform: scaleX(1);
+ }
+ .headline i,
+ .footline i{
+ margin-left: .5rem;
+ }
+ .headline i:first-child,
+ .footline i:first-child{
+ margin-left: 0;
+ }
+ .anchor {
+ margin-left: .66em;
+ }
+ html[dir="rtl"] .menu-control i,
+ html[dir="rtl"] .menu-control span {
+ float: left;
+ }
+ .menu-control > button {
+ text-align: left;
+ }
+ .searchform input {
+ margin-right: .5rem;
+ }
+ .badge > .badge-title {
+ border-right: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ .badge.badge-with-title > .badge-content {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ article ul > li:has(> input[type="checkbox"]) {
+ margin-left: -1rem;
+ }
+ /* tabs */
+ #R-body .tab-nav-button {
+ margin-left: .6rem;
+ }
+ #R-body .tab-content{
+ margin-top: -1px;
+ }
+ /* auto-complete */
+ .autocomplete-suggestions {
+ text-align: left;
+ }
+ .autocomplete-suggestion > .breadcrumbs {
+ margin-left: 1em;
+ }
+ .autocomplete-suggestion > .context {
+ margin-left: 1em;
+ }
+ /* menu */
+ #R-sidebar ul ul {
+ padding-left: 1rem;
+ }
+ #R-sidebar ul.collapsible-menu > li > label {
+ left: 0;
+ padding-left: .125rem;
+ }
+ html[dir="rtl"] #R-sidebar ul.collapsible-menu > li > label > i.fa-chevron-right {
+ transform: scaleX(1);
+ }
+
+ #R-header-topbar {
+ border-right-style: solid;
+ border-right-width: 1px;
+ }
+
+ #R-header-wrapper,
+ #R-homelinks,
+ #R-content-wrapper > * {
+ border-right-style: solid;
+ border-right-width: 1px;
+ }
+
+ /* ----------------------------------------------- */
+ /* set default colors as in variant.css for IE11 */
+ html {
+ color-scheme: only light;
+ }
+ body {
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */
+ color: rgba( 0, 0, 0, 1 ); /* var(--MAIN-TEXT-color) */
+ font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; /* var(--MAIN-font) */
+ }
+
+ a,
+ .anchor,
+ .topbar-button button,
+ #R-searchresults .autocomplete-suggestion {
+ color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */
+ }
+
+ #R-body .topbar-sidebar-divider {
+ border-left-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-TOPBAR-SEPARATOR-color) */
+ }
+ @media screen and (max-width: 47.999rem) {
+ #R-body .topbar-sidebar-divider {
+ border-left-color: transparent;
+ }
+ }
+
+ a:hover,
+ a:active,
+ a:focus,
+ .anchor:hover,
+ .anchor:active,
+ .anchor:focus,
+ .topbar-button button:hover,
+ .topbar-button button:active,
+ .topbar-button button:focus{
+ color: rgba( 32, 40, 145, 1 ); /* var(--MAIN-LINK-HOVER-color) */
+ }
+
+ #R-sidebar {
+ background: rgba( 40, 40, 40, 1 ); /* var(--MENU-SECTIONS-BG-color) */
+ }
+
+ #R-header-wrapper {
+ /* initially use section background to avoid flickering on load when a
+ non default variant is active */
+ background-color: rgba( 0, 0, 0, 0 ); /* var(--MENU-SECTIONS-BG-color) */
+ color: rgba( 224, 224, 224, 1 ); /* var(--MENU-SEARCH-color) */
+ }
+
+ .searchbox {
+ border-color: rgba( 224, 224, 224, 1 ); /* var(--MENU-SEARCH-BORDER-color) */
+ background-color: rgba( 50, 50, 50, 1 ); /* var(--MENU-SEARCH-BG-color) */
+ }
+
+ .searchbox input:-ms-input-placeholder {
+ color: rgba( 224, 224, 224, 1 ); /* var(--INTERNAL-MENU-SEARCH-color) */
+ opacity: .45;
+ }
+
+ #R-sidebar .searchbox > :first-child,
+ #R-sidebar .searchbox > :last-child {
+ color: rgba( 224, 224, 224, 1 ); /* var(--INTERNAL-MENU-SEARCH-color) */
+ }
+
+ .searchform input:-ms-input-placeholder {
+ color: rgba( 134, 134, 134, 1 );
+ opacity: .666;
+ }
+
+ #R-sidebar .collapsible-menu label,
+ #R-sidebar .menu-control,
+ #R-sidebar :is( a, span ) {
+ color: rgba( 186, 186, 186, 1 ); /* var(--MENU-SECTIONS-LINK-color) */
+ }
+
+ #R-sidebar select:hover,
+ #R-sidebar .collapsible-menu li:not(.active) > label:hover,
+ #R-sidebar .menu-control:hover,
+ #R-sidebar a:hover {
+ color: rgba( 255, 255, 255, 1 ); /* var(--MENU-SECTIONS-LINK-HOVER-color) */
+ }
+
+ #R-sidebar ul.enlarge > li.parent,
+ #R-sidebar ul.enlarge > li.active {
+ background-color: rgba( 0, 0, 0, .166 ); /* var(--MENU-SECTIONS-ACTIVE-BG-color) */
+ }
+
+ #R-sidebar li.active > label,
+ #R-sidebar li.active > a {
+ color: rgba( 68, 68, 68, 1 ); /* var(--MENU-SECTION-ACTIVE-CATEGORY-color) */
+ }
+
+ #R-sidebar li.active > a {
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color) */
+ }
+
+ #R-sidebar ul li > a .read-icon {
+ color: rgba( 72, 106, 201, 1 ); /* var(--MENU-VISITED-color) */
+ }
+
+ #R-sidebar .nav-title {
+ color: rgba( 186, 186, 186, 1 ); /* var(--MENU-SECTIONS-LINK-color) */
+ }
+
+ #R-content-wrapper hr {
+ border-color: rgba( 96, 96, 96, 1 ); /* var(--MENU-SECTION-SEPARATOR-color) */
+ }
+
+ #R-footer {
+ color: rgba( 186, 186, 186, 1 ); /* var(--MENU-SECTIONS-LINK-color) */
+ }
+
+ mark {
+ background-color: rgba( 255, 255, 0, 1 );
+ }
+
+ h1 {
+ color: rgba( 0, 0, 0, 1 ); /* var(--MAIN-TEXT-color) */
+ font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; /* var(--MAIN-font) */
+ }
+
+ h2, h3, .article-subheading, h4, h5, h6 {
+ color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TITLES-TEXT-color) */
+ font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; /* var(--MAIN-TITLES-TEXT-font) */
+ }
+
+ .expand > label {
+ color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */
+ }
+
+ .expand > label:hover,
+ .expand > label:active,
+ .expand > label:focus,
+ .expand > input:hover + label,
+ .expand > input:active + label,
+ .expand > input:focus + label{
+ color: rgba( 32, 40, 145, 1 ); /* var(--MAIN-LINK-HOVER-color) */
+ }
+
+ div.box {
+ background-color: rgba( 128, 128, 128, 1 ); /* var(--INTERNAL-BOX-NEUTRAL-color) */
+ border-color: rgba( 128, 128, 128, 1 ); /* var(--INTERNAL-BOX-NEUTRAL-color) */
+ }
+
+ div.box > .box-label {
+ color: rgba( 255, 255, 255, 1 ); /* var(--BOX-CAPTION-color) */
+ }
+
+ div.box > .box-content {
+ background-color: rgba( 255, 255, 255, .833 ); /* var(--BOX-BG-color) */
+ color: rgba( 16, 16, 16, 1 ); /* var(--BOX-TEXT-color) */
+ }
+
+ div.box.info {
+ background-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-INFO-color) */
+ border-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-INFO-color) */
+ }
+
+ div.box.info > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-INFO-TEXT-color) */
+ }
+
+ div.box.warning {
+ background-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-WARNING-color) */
+ border-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-WARNING-color) */
+ }
+
+ div.box.warning > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-WARNING-TEXT-color) */
+ }
+
+ div.box.note {
+ background-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-NOTE-color) */
+ border-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-NOTE-color) */
+ }
+
+ div.box.note > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-NOTE-TEXT-color) */
+ }
+
+ div.box.tip {
+ background-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-TIP-color) */
+ border-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-TIP-color) */
+ }
+
+ div.box.tip > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-TIP-TEXT-color) */
+ }
+
+ div.box.primary {
+ background-color: rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */
+ border-color: rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */
+ }
+
+ div.box.primary > .box-content {
+ color: rgba( 0, 0, 0, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */
+ }
+
+ div.box.secondary {
+ background-color: rgba( 72, 106, 201, 1 ); /* var(--INTERNAL-SECONDARY-color) */
+ border-color: rgba( 72, 106, 201, 1 ); /* var(--INTERNAL-SECONDARY-color) */
+ }
+
+ div.box.secondary > .box-content {
+ color: rgba( 0, 0, 0, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */
+ }
+
+ div.box.accent {
+ background-color: rgba( 255, 136, 255, 1 ); /* var(--INTERNAL-ACCENT-color) */
+ border-color: rgba( 255, 136, 255, 1 ); /* var(--INTERNAL-ACCENT-color) */
+ }
+
+ div.box.accent > .box-content {
+ color: rgba( 0, 0, 0, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */
+ }
+
+ div.box.blue {
+ background-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-BLUE-color) */
+ border-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-BLUE-color) */
+ }
+
+ div.box.blue > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-BLUE-TEXT-color) */
+ }
+
+ div.box.green {
+ background-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-GREEN-color) */
+ border-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-GREEN-color) */
+ }
+
+ div.box.green > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-GREEN-TEXT-color) */
+ }
+
+ div.box.grey {
+ background-color: rgba( 160, 160, 160, 1 ); /* var(--INTERNAL-BOX-GREY-color) */
+ border-color: rgba( 160, 160, 160, 1 ); /* var(--INTERNAL-BOX-GREY-color) */
+ }
+
+ div.box.grey > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-GREY-TEXT-color) */
+ }
+
+ div.box.orange {
+ background-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-ORANGE-color) */
+ border-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-ORANGE-color) */
+ }
+
+ div.box.orange > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-ORANGE-TEXT-color) */
+ }
+
+ div.box.red {
+ background-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-RED-color) */
+ border-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-RED-color) */
+ }
+
+ div.box.red > .box-content {
+ color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-BOX-RED-TEXT-color) */
+ }
+
+ div.box.transparent {
+ background-color: transparent;
+ border-color: transparent;
+ }
+
+ div.box.transparent > .box-label {
+ color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TITLES-TEXT-color) */
+ }
+
+ div.box.transparent > .box-content {
+ background-color: transparent;
+ color: rgba( 0, 0, 0, 1 ); /* var(--MAIN-TEXT-color) */
+ }
+
+ code,
+ kbd,
+ pre:not(.mermaid),
+ samp {
+ font-family: "Consolas", menlo, monospace; /* var(--CODE-font) */
+ }
+
+ code {
+ background-color: rgba( 255, 250, 233, 1 ); /* var(--CODE-INLINE-BG-color) */
+ border-color: rgba( 248, 232, 200, 1 ); /* var(--CODE-INLINE-BORDER-color) */
+ color: rgba( 94, 94, 94, 1 ); /* var(--CODE-INLINE-color) */
+ }
+
+ pre:not(.mermaid) {
+ background-color: rgba( 250, 250, 250, 1 ); /* var(--CODE-BLOCK-BG-color) */
+ border-color: rgba( 216, 216, 216, 1 ); /* var(--CODE-BLOCK-BORDER-color) */
+ color: rgba( 39, 40, 34, 1 ); /* var(--CODE-BLOCK-color) */
+ }
+
+ div.highlight > div {
+ background-color: rgba( 250, 250, 250, 1 ); /* var(--CODE-BLOCK-BG-color) */
+ border-color: rgba( 216, 216, 216, 1 ); /* var(--CODE-BLOCK-BORDER-color) */
+ }
+
+ table {
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--INTERNAL-MAIN-BG-color) */
+ }
+
+ .lightbox-back img{
+ background-color: rgba( 255, 255, 255, 1 ) /* var(--INTERNAL-MAIN-BG-color); */
+ }
+
+ #R-topbar {
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */
+ }
+
+ #R-body a[aria-disabled="true"],
+ #R-searchresults .autocomplete-suggestion > .context {
+ color: rgba( 0, 0, 0, 1 ); /* var(--MAIN-TEXT-color) - inherit is not processed correctly in Chrome */
+ }
+
+ #R-searchresults .autocomplete-suggestion > .breadcrumbs {
+ color: rgba( 125, 201, 3, 1 ); /* var(--PRIMARY-color) */
+ }
+
+ .copy-to-clipboard-button {
+ background-color: rgba( 255, 250, 233, 1 ); /* var(--CODE-INLINE-BG-color) */
+ border-color: rgba( 248, 232, 200, 1 ); /* var(--CODE-INLINE-BORDER-color) */
+ color: rgba( 94, 94, 94, 1 ); /* var(--CODE-INLINE-color) */
+ font-family: "Consolas", menlo, monospace; /* var(--CODE-font) */
+ }
+
+ .copy-to-clipboard-button:hover {
+ background-color: rgba( 94, 94, 94, 1 ); /* var(--CODE-INLINE-color) */
+ color: rgba( 255, 250, 233, 1 ); /* var(--CODE-INLINE-BG-color) */
+ }
+
+ div.highlight > div table + .copy-to-clipboard-button,
+ div.highlight pre:not(.mermaid) + .copy-to-clipboard-button,
+ pre:not(.mermaid) .copy-to-clipboard-button {
+ border-color: rgba( 216, 216, 216, 1 ); /* var(--CODE-BLOCK-BORDER-color) */
+ color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */
+ }
+
+ div.highlight > div table + .copy-to-clipboard-button:hover,
+ div.highlight pre:not(.mermaid) + .copy-to-clipboard-button:hover,
+ pre:not(.mermaid) .copy-to-clipboard-button:hover {
+ background-color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */
+ border-color: #486ac9; /* var(--MAIN-LINK-color) */
+ color: rgba( 250, 250, 250, 1 ); /* var(--CODE-BLOCK-BG-color) */
+ }
+
+ .svg-reset-button {
+ border-color: rgba( 216, 216, 216, 1 ); /* var(--CODE-BLOCK-BORDER-color) */
+ color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */
+ }
+ .svg-reset-button:hover {
+ background-color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */
+ border-color: #486ac9; /* var(--MAIN-LINK-color) */
+ color: rgba( 250, 250, 250, 1 ); /* var(--CODE-BLOCK-BG-color) */
+ }
+
+ #R-homelinks {
+ background-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-BORDER-color) */
+ }
+
+ #R-homelinks a {
+ color: rgba( 64, 64, 64, 1 ) /* var(--MENU-HOME-LINK-color) */
+ }
+
+ #R-homelinks a:hover {
+ color: rgba( 128, 128, 128, 1 ) /* var(--MENU-HOME-LINK-HOVER-color) */;
+ }
+
+ #R-homelinks hr {
+ border-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-SEPARATOR-color) */
+ }
+
+ .topbar-content {
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */
+ }
+
+ .btn {
+ background-color: rgba( 128, 128, 128, 1 ); /* var(--BOX-NEUTRAL-color) */
+ }
+
+ .btn > * {
+ border-color: rgba( 128, 128, 128, 1 ); /* var(--BOX-NEUTRAL-color) */
+ color: rgba( 255, 255, 255, 1 ); /* var(--BOX-CAPTION-color) */
+ }
+
+ .btn.interactive > *:hover,
+ .btn.interactive > *:active,
+ .btn.interactive > *:focus {
+ background-color: rgba( 255, 255, 255, .833 ); /* var(--BOX-BG-color) */
+ color: rgba( 16, 16, 16, 1 ); /* var(--BOX-NEUTRAL-TEXT-color) */
+ }
+
+ .btn.cstyle.info {
+ background-color: rgba( 48, 117, 229, 1 ); /* var(--BOX-INFO-color) */
+ }
+
+ .btn.cstyle.info > * {
+ border-color: rgba( 48, 117, 229, 1 ); /* var(--BOX-INFO-color) */
+ }
+
+ .btn.cstyle.note {
+ background-color: rgba( 237, 153, 9, 1 ); /* var(--BOX-NOTE-color) */
+ }
+
+ .btn.cstyle.note > * {
+ border-color: rgba( 237, 153, 9, 1 ); /* var(--BOX-NOTE-color) */
+ }
+
+ .btn.cstyle.tip {
+ background-color: rgba( 42, 178, 24, 1 ); /* var(--BOX-TIP-color) */
+ }
+
+ .btn.cstyle.tip > * {
+ border-color: rgba( 42, 178, 24, 1 ); /* var(--BOX-TIP-color) */
+ }
+
+ .btn.cstyle.warning {
+ background-color: rgba( 224, 62, 62, 1 ); /* var(--BOX-WARNING-color) */
+ }
+
+ .btn.cstyle.warning > * {
+ border-color: rgba( 224, 62, 62, 1 ); /* var(--BOX-WARNING-color) */
+ }
+
+ .btn.cstyle.primary {
+ background-color: rgba( 125, 201, 3, 1 ); /* var(--PRIMARY-color) */
+ }
+
+ .btn.cstyle.primary > * {
+ border-color: rgba( 125, 201, 3, 1 ); /* var(--PRIMARY-color) */
+ }
+
+ .btn.cstyle.secondary {
+ background-color: rgba( 72, 106, 201, 1 ); /* var(--SECONDARY-color) */
+ }
+
+ .btn.cstyle.secondary > * {
+ border-color: rgba( 72, 106, 201, 1 ); /* var(--SECONDARY-color) */
+ }
+
+ .btn.cstyle.accent {
+ background-color: rgba( 255, 136, 255, 1 ); /* var(--ACCENT-color) */
+ }
+
+ .btn.cstyle.accent > * {
+ border-color: rgba( 255, 136, 255, 1 ); /* var(--ACCENT-color) */
+ }
+
+ .btn.cstyle.blue {
+ background-color: rgba( 48, 117, 229, 1 ); /* var(--BOX-BLUE-color) */
+ }
+
+ .btn.cstyle.blue > * {
+ border-color: rgba( 48, 117, 229, 1 ); /* var(--BOX-BLUE-color) */
+ }
+
+ .btn.cstyle.green {
+ background-color: rgba( 42, 178, 24, 1 ); /* var(--BOX-GREEN-color) */
+ }
+
+ .btn.cstyle.green > * {
+ border-color: rgba( 42, 178, 24, 1 ); /* var(--BOX-GREEN-color) */
+ }
+
+ .btn.cstyle.grey {
+ background-color: rgba( 160, 160, 160, 1 ); /* var(--BOX-GREY-color) */
+ }
+
+ .btn.cstyle.grey > * {
+ border-color: rgba( 160, 160, 160, 1 ); /* var(--BOX-GREY-color) */
+ }
+
+ .btn.cstyle.orange {
+ background-color: rgba( 237, 153, 9, 1 ); /* var(--BOX-ORANGE-color) */
+ }
+
+ .btn.cstyle.orange > * {
+ border-color: rgba( 237, 153, 9, 1 ); /* var(--BOX-ORANGE-color) */
+ }
+
+ .btn.cstyle.red {
+ background-color: rgba( 224, 62, 62, 1 ); /* var(--BOX-RED-color) */
+ }
+
+ .btn.cstyle.red > * {
+ border-color: rgba( 224, 62, 62, 1 ); /* var(--BOX-RED-color) */
+ }
+
+ .btn.cstyle.transparent {
+ background-color: transparent;
+ color: rgba( 0, 0, 0, 1 ); /* var(--MAIN-TEXT-color) */
+ }
+
+ .btn.cstyle.interactive.transparent:hover,
+ .btn.cstyle.interactive.transparent:focus,
+ .btn.cstyle.interactive.transparent:active {
+ background-color: rgba( 128, 128, 128, 1 ); /* var(--BOX-NEUTRAL-color) */
+ }
+
+ .btn.cstyle.transparent > * {
+ color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TITLES-TEXT-color) */
+ }
+
+ #R-body .tags a.term-link {
+ background-color: rgba( 125, 201, 3, 1 ); /* var(--TAG-BG-color) */
+ color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */
+ margin-right: 16px;
+ }
+
+ #R-body .tags a.term-link:before {
+ border-right-color: rgba( 125, 201, 3, 1 ); /* var(--TAG-BG-color) */
+ }
+
+ #R-body .tags a.term-link:after {
+ background: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */
+ }
+
+ .badge > * {
+ border-color: rgba( 16, 16, 16, 1 ); /* var(--BOX-TEXT-color) */
+ }
+
+ .badge > .badge-content {
+ background-color: rgba( 128, 128, 128, 1 ); /* var(--INTERNAL-BOX-NEUTRAL-color) */
+ color: rgba( 255, 255, 255, 1 ); /* var(--BOX-CAPTION-color) */
+ }
+
+ .badge.info > .badge-content {
+ background-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-INFO-color) */
+ }
+
+ .badge.warning > .badge-content {
+ background-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-WARNING-color) */
+ }
+
+ .badge.note > .badge-content {
+ background-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-NOTE-color) */
+ }
+
+ .badge.tip > .badge-content {
+ background-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-TIP-color) */
+ }
+
+ .badge.primary > .badge-content {
+ background-color: rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */
+ }
+
+ .badge.secondary > .badge-content {
+ background-color: rgba( 72, 106, 201, 1 ); /* var(--INTERNAL-SECONDARY-color) */
+ }
+
+ .badge.accent > .badge-content {
+ background-color: rgba( 255, 136, 255, 1 ); /* var(--INTERNAL-ACCENT-color) */
+ }
+
+ .badge.blue > .badge-content {
+ background-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-BLUE-color) */
+ }
+
+ .badge.green > .badge-content {
+ background-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-GREEN-color) */
+ }
+
+ .badge.grey > .badge-content {
+ background-color: rgba( 160, 160, 160, 1 ); /* var(--INTERNAL-BOX-GREY-color) */
+ }
+
+ .badge.orange > .badge-content {
+ background-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-ORANGE-color) */
+ }
+
+ .badge.red > .badge-content {
+ background-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-RED-color) */
+ }
+
+ .badge.transparent > .badge-content {
+ background-color: transparent;
+ color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TITLES-TEXT-color) */
+ }
+
+ article ul > li > input[type="checkbox"] {
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--INTERNAL-MAIN-BG-color); */
+ color: rgba( 0, 0, 0, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */
+ }
+
+ article ul > li > input[type="checkbox"]::before {
+ box-shadow: inset 1em 1em rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */
+ }
+
+ /* no style support for tabs in IE11; all styled as default */
+ #R-body .tab-nav-button {
+ color: rgba( 0, 0, 0, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */
+ }
+
+ #R-body .tab-nav-button.active {
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */
+ border-bottom-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */
+ border-left-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */
+ border-right-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */
+ border-top-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */
+ color: rgba( 16, 16, 16, 1 ); /* var(--VARIABLE-BOX-TEXT-color) */
+ }
+
+ #R-body .tab-nav-button.active > .tab-nav-text{
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */
+ }
+
+ #R-body .tab-nav-button > .tab-nav-text{
+ border-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */
+ }
+
+ #R-body .tab-content{
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */
+ border-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */
+ }
+
+ #R-body .tab-content-text{
+ background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */
+ color: rgba( 16, 16, 16, 1 ); /* var(--VARIABLE-BOX-TEXT-color) */
+ }
+
+ #R-topbar {
+ border-bottom-color: transparent; /* var(--MAIN-TOPBAR-BORDER-color) */
+ }
+
+ #R-header-topbar {
+ border-bottom-color: transparent;
+ border-right-color: transparent; /* var(--MENU-TOPBAR-BORDER-color) */
+ }
+
+ #R-header-wrapper,
+ #R-homelinks,
+ #R-content-wrapper > * {
+ border-right-color: transparent; /* var(--MENU-BORDER-color) */
+ }
+
+ #R-sidebar ul.collapsible-menu li.active > a{
+ border-bottom-color: transparent; /* var(--MENU-BORDER-color) */
+ border-top-color: transparent; /* var(--MENU-BORDER-color) */
+ border-left-color: transparent; /* var(--MENU-BORDER-color) */
+ border-right-color: transparent; /* var(--MENU-SECTION-ACTIVE-CATEGORY-BORDER-color) */
+ }
+
+ /* ----------------------------------------------- */
+ /* set further styles to fix broken stuff in IE11 */
+
+ /* turn off animiation in IE because this causes the menu
+ to move in from the left on every page load */
+ .default-animation{
+ transition: none;
+ }
+
+ /* our silly dinosaur browser wants to have the real colors */
+ #R-header-wrapper {
+ background-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-BG-color) */
+ border-bottom-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-BORDER-color) */
+ }
+
+ /* clears the 'X' from Internet Explorer's search input */
+ input[type=search]::-ms-clear { display: none; width : 0; height: 0; }
+ input[type=search]::-ms-reveal { display: none; width : 0; height: 0; }
+
+ /* turn off variant selector as it uses modern stuff; don't change
+ order with block below */
+ .showVariantSwitch{
+ display: getamodernbrowser;
+ }
+ /* dumb IE11 doesn't understand initial, so we force a fallback here */
+ .showLangSwitch,
+ .showVisitedLinks,
+ .showFooter {
+ display: block;
+ }
+
+ .menu-control select::-ms-expand {
+ /* hide the triangle */
+ display: none;
+ }
+}
+
+@media print and (-ms-high-contrast:none) {
+ code.copy-to-clipboard-code {
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-right-width: 1px;
+ }
+}
diff --git a/css/nucleus.css b/css/nucleus.css
new file mode 100644
index 00000000..779a7c27
--- /dev/null
+++ b/css/nucleus.css
@@ -0,0 +1,262 @@
+*, *::before, *::after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box; }
+
+@-webkit-viewport {
+ width: device-width; }
+@-moz-viewport {
+ width: device-width; }
+@-ms-viewport {
+ width: device-width; }
+@-o-viewport {
+ width: device-width; }
+@viewport {
+ width: device-width; }
+html {
+ font-size: 16px;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ text-size-adjust: 100%; }
+
+body {
+ margin: 0; }
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block; }
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline; }
+
+audio:not([controls]) {
+ display: none;
+ height: 0; }
+
+[hidden],
+template {
+ display: none; }
+
+a {
+ background: transparent;
+ text-decoration: none; }
+
+abbr[title] {
+ border-bottom: 1px dotted; }
+
+b,
+strong {
+ font-weight: bold; }
+
+dfn {
+ font-style: italic; }
+
+sub,
+sup {
+ font-size: 0.8rem;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline; }
+
+sup {
+ top: -0.5em; }
+
+sub {
+ bottom: -0.25em; }
+
+iframe {
+ border: 0; }
+
+img {
+ border: 0;
+ max-width: 100%; }
+
+svg:not(:root) {
+ overflow: hidden; }
+
+figure {
+ margin: 1rem 2.5rem; }
+
+hr {
+ height: 0; }
+
+pre:not(.mermaid) {
+ overflow: auto; }
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ font: inherit;
+ margin: 0; }
+
+button {
+ overflow: visible;
+ padding: 0; }
+
+button,
+select {
+ text-transform: none; }
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer; }
+
+button[disabled],
+html input[disabled] {
+ cursor: default; }
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0; }
+
+input {
+ line-height: normal; }
+
+input[type="checkbox"],
+input[type="radio"] {
+ padding: 0; }
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto; }
+
+input[type="search"] {
+ -webkit-appearance: textfield; }
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none; }
+
+legend {
+ border: 0;
+ padding: 0; }
+
+textarea {
+ overflow: auto; }
+
+optgroup {
+ font-weight: bold; }
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ table-layout: fixed;
+ width: 100%; }
+
+tr, td, th {
+ vertical-align: middle; }
+
+th, td {
+ padding: 0.425rem 0; }
+
+th {
+ text-align: start; }
+
+p {
+ margin: 1rem 0; }
+
+ul, ol {
+ margin-top: 1rem;
+ margin-bottom: 1rem; }
+ ul ul, ul ol, ol ul, ol ol {
+ margin-top: 0;
+ margin-bottom: 0; }
+
+blockquote {
+ margin: 1.5rem 0;
+ padding-inline-start: 0.85rem; }
+
+cite {
+ display: block;
+ font-size: 0.925rem; }
+ cite:before {
+ content: "\2014 \0020"; }
+
+pre:not(.mermaid) {
+ margin: 1.5rem 0;
+ padding: 0.938rem; }
+
+code {
+ vertical-align: bottom; }
+
+small {
+ font-size: 0.925rem; }
+
+hr {
+ border-left: none;
+ border-right: none;
+ border-top: none;
+ margin: 1.5rem 0; }
+
+fieldset {
+ border: 0;
+ padding: 0.938rem;
+ margin: 0 0 1rem 0; }
+
+input,
+label,
+select {
+ display: block; }
+
+label {
+ margin-bottom: 0.425rem; }
+ label.required:after {
+ content: "*"; }
+ label abbr {
+ display: none; }
+
+textarea, input[type="email"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="url"], input[type="color"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"], select[multiple=multiple] {
+ -webkit-transition: border-color;
+ -moz-transition: border-color;
+ transition: border-color;
+ border-radius: 0.1875rem;
+ margin-bottom: 0.85rem;
+ padding: 0.425rem 0.425rem;
+ width: 100%; }
+ textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus {
+ outline: none; }
+
+textarea {
+ resize: vertical; }
+
+input[type="checkbox"], input[type="radio"] {
+ display: inline;
+ margin-inline-end: 0.425rem; }
+
+input[type="file"] {
+ width: 100%; }
+
+select {
+ width: auto;
+ max-width: 100%;
+ margin-bottom: 1rem; }
+
+button,
+input[type="submit"] {
+ cursor: pointer;
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+ white-space: nowrap;
+ border: inherit; }
diff --git a/css/perfect-scrollbar.min.css b/css/perfect-scrollbar.min.css
new file mode 100644
index 00000000..e033639e
--- /dev/null
+++ b/css/perfect-scrollbar.min.css
@@ -0,0 +1 @@
+:root{--ps-thumb-color:#aaa;--ps-thumb-hover-color:#999;--ps-rail-hover-color:#eee}.ps{overflow:hidden !important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color 0.2s linear, opacity 0.2s linear;-webkit-transition:background-color 0.2s linear, opacity 0.2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color 0.2s linear, opacity 0.2s linear;-webkit-transition:background-color 0.2s linear, opacity 0.2s linear;width:15px;right:0;position:absolute}.ps--active-x > .ps__rail-x,.ps--active-y > .ps__rail-y{display:block;background-color:transparent}.ps--focus > .ps__rail-x,.ps--focus > .ps__rail-y,.ps--scrolling-x > .ps__rail-x,.ps--scrolling-y > .ps__rail-y,.ps:hover > .ps__rail-x,.ps:hover > .ps__rail-y{opacity:0.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;background-color:var(--ps-rail-hover-color);opacity:0.9}.ps__thumb-x{background-color:#aaa;background-color:var(--ps-thumb-color);border-radius:6px;transition:background-color 0.2s linear, height 0.2s ease-in-out;-webkit-transition:background-color 0.2s linear, height 0.2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;background-color:var(--ps-thumb-color);border-radius:6px;transition:background-color 0.2s linear, width 0.2s ease-in-out;-webkit-transition:background-color 0.2s linear, width 0.2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus > .ps__thumb-x,.ps__rail-x:hover > .ps__thumb-x{background-color:#999;background-color:var(--ps-thumb-hover-color);height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus > .ps__thumb-y,.ps__rail-y:hover > .ps__thumb-y{background-color:#999;background-color:var(--ps-thumb-hover-color);width:11px}@supports (-ms-overflow-style: none){.ps{overflow:auto !important}}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.ps{overflow:auto !important}}
\ No newline at end of file
diff --git a/css/print.css b/css/print.css
new file mode 100644
index 00000000..9b3d92ae
--- /dev/null
+++ b/css/print.css
@@ -0,0 +1 @@
+@import "format-print.css";
diff --git a/css/style.css b/css/style.css
new file mode 100644
index 00000000..b01006be
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,40 @@
+body {
+ font-size: 1.15rem;
+ tab-size: 2em;
+}
+
+.small {
+ font-size: 1.1rem;
+}
+
+pre:not(.mermaid) code {
+ font-size: 0.96rem;
+}
+
+#R-sidebar {
+ font-size: 1.0rem;
+}
+
+#TableOfContents, .TableOfContents {
+ font-size: 1.1rem;
+}
+
+nav#TableOfContents ul {
+ text-align: center;
+}
+
+nav#TableOfContents ul ul {
+ display: none;
+}
+
+#TableOfContents > ul > li {
+ display: inline;
+}
+
+#TableOfContents > ul > li + li::before {
+ content: " \002022 ";
+}
+
+#TableOfContents > ul > li > a, .TableOfContents > ul > li > a {
+ font-weight: 400;
+}
\ No newline at end of file
diff --git a/css/swagger-dark.css b/css/swagger-dark.css
new file mode 100644
index 00000000..527be0ea
--- /dev/null
+++ b/css/swagger-dark.css
@@ -0,0 +1,2045 @@
+/*
+ _______
+ / \
+ .==. .==.
+ (( ))==(( ))
+ / "==" "=="\
+ /____|| || ||___\
+ ________ ____ ________ ___ ___
+ | ___ \ / \ | ___ \ | | / /
+ | | \ \ / /\ \ | | \ \| |_/ /
+ | | ) / /__\ \ | |__/ /| ___ \
+ | |__/ / ______ \| ____ \| | \ \
+_______|_______/__/ ____ \__\__|___\__\__|___\__\____
+| ___ \ | ____/ / \ | ___ \ | ____| ___ \
+| | \ \| |___ / /\ \ | | \ \| |___| | \ \
+| |__/ /| ____/ /__\ \ | | ) | ____| |__/ /
+| ____ \| |__/ ______ \| |__/ /| |___| ____ \
+|__| \__\____/__/ \__\_______/ |______|__| \__\
+ https://darkreader.org
+*/
+
+/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */
+
+/* User-Agent Style */
+html {
+ background-color-relearn: var(--INTERNAL-MAIN-BG-color) !important;
+}
+html {
+ color-scheme-relearn: var(--INTERNAL-BROWSER-theme) !important;
+}
+html, body {
+ background-color-relearn: var(--INTERNAL-MAIN-BG-color);
+}
+html, body {
+ border-color: #736b5e;
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+a {
+ color-relearn: var(--INTERNAL-MAIN-LINK-color);
+}
+table {
+ border-color: #545b5e;
+}
+::placeholder {
+ color: #b2aba1;
+}
+input:-webkit-autofill,
+textarea:-webkit-autofill,
+select:-webkit-autofill {
+ background-color: #404400 !important;
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color) !important;
+}
+::-webkit-scrollbar {
+ background-color: #202324;
+ color: #aba499;
+}
+::-webkit-scrollbar-thumb {
+ background-color: #454a4d;
+}
+::-webkit-scrollbar-thumb:hover {
+ background-color: #575e62;
+}
+::-webkit-scrollbar-thumb:active {
+ background-color: #484e51;
+}
+::-webkit-scrollbar-corner {
+ background-color-relearn: var(--INTERNAL-MAIN-BG-color);
+}
+::selection {
+ background-color: #004daa !important;
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color) !important;
+}
+::-moz-selection {
+ background-color: #004daa !important;
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color) !important;
+}
+
+/* Text Style */
+*:not(pre, pre *, code, .far, .fa, .glyphicon, [class*="vjs-"], .fab, .fa-github, .fas, .material-icons, .icofont, .typcn, mu, [class*="mu-"], .glyphicon, .icon) {
+ font-family-relearn: var(--INTERNAL-MAIN-font) !important;
+}
+
+/* Invert Style */
+.jfk-bubble.gtx-bubble, .captcheck_answer_label > input + img, span#closed_text > img[src^="https://www.gstatic.com/images/branding/googlelogo"], span[data-href^="https://www.hcaptcha.com/"] > #icon, #bit-notification-bar-iframe, ::-webkit-calendar-picker-indicator {
+ filter: invert(100%) hue-rotate(180deg) contrast(90%) !important;
+}
+
+/* Variables Style */
+:root {
+ --darkreader-neutral-background-relearn: var(--INTERNAL-MAIN-font);
+ --darkreader-neutral-text-relearn: var(--INTERNAL-MAIN-TEXT-color);
+ --darkreader-selection-background: #004daa;
+ --darkreader-selection-text-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+/* Modified CSS */
+.swagger-ui {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui a {
+ background-color: transparent;
+}
+.swagger-ui abbr[title] {
+ border-bottom-color: initial;
+ text-decoration-color: initial;
+}
+.swagger-ui mark {
+ background-color: rgb(153, 153, 0);
+ color: rgb(232, 230, 227);
+}
+.swagger-ui legend {
+ color: inherit;
+}
+.swagger-ui .debug * {
+ outline-color: rgb(179, 151, 0);
+}
+.swagger-ui .debug-white * {
+ outline-color: rgb(48, 52, 54);
+}
+.swagger-ui .debug-black * {
+ outline-color: rgb(140, 130, 115);
+}
+.swagger-ui .debug-grid {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==");
+ background-color: transparent;
+}
+.swagger-ui .debug-grid-16 {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC");
+ background-color: transparent;
+}
+.swagger-ui .debug-grid-8-solid {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzIC0wLjY2NyAtMC42NjcgMC4wMDAgMS4wMDAgLTAuNjY3IDAuMzMzIC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgLTAuNjY3IDAuMzMzIDAuMDAwIDEuMDAwIDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNFFBWVJYaHBaZ0FBU1VrcUFBZ0FBQUFBQUFBQUFBQUFBUC9zQUJGRWRXTnJlUUFCQUFRQUFBQUFBQUQvNFFNeGFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0x3QThQM2h3WVdOclpYUWdZbVZuYVc0OUl1Kzd2eUlnYVdROUlsYzFUVEJOY0VObGFHbEllbkpsVTNwT1ZHTjZhMk01WkNJL1BpQThlRHA0YlhCdFpYUmhJSGh0Ykc1ek9uZzlJbUZrYjJKbE9tNXpPbTFsZEdFdklpQjRPbmh0Y0hSclBTSkJaRzlpWlNCWVRWQWdRMjl5WlNBMUxqWXRZekV4TVNBM09TNHhOVGd6TWpVc0lESXdNVFV2TURrdk1UQXRNREU2TVRBNk1qQWdJQ0FnSUNBZ0lDSStJRHh5WkdZNlVrUkdJSGh0Ykc1ek9uSmtaajBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOHdNaTh5TWkxeVpHWXRjM2x1ZEdGNExXNXpJeUkrSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUlIaHRiRzV6T25odGNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMUlDaE5ZV05wYm5SdmMyZ3BJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa0l4TWpJME9UY3pOamRDTXpFeFJUWkNNa0pEUlRJME1EZ3hNREF5TVRjeElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rSXhNakkwT1RjME5qZENNekV4UlRaQ01rSkRSVEkwTURneE1EQXlNVGN4SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFqRXlNalE1TnpFMk4wSXpNVEZGTmtJeVFrTkZNalF3T0RFd01ESXhOekVpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UWpFeU1qUTVOekkyTjBJek1URkZOa0l5UWtORk1qUXdPREV3TURJeE56RWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejcvN2dBT1FXUnZZbVVBWk1BQUFBQUIvOXNBaEFBYkdob3BIU2xCSmlaQlFpOHZMMEpIUHo0K1AwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSEFSMHBLVFFtTkQ4b0tEOUhQelUvUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZi93QUFSQ0FBSUFBZ0RBU0lBQWhFQkF4RUIvOFFBV1FBQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFZQkFRRUFBQUFBQUFBQUFBQUFBQUFBQUFJRUVBRUJBQU1CQUFBQUFBQUFBQUFBQUFBQkFERUNBMEVSQUFFREJRQUFBQUFBQUFBQUFBQUFBQUFSSVRGQlVXRVNJdi9hQUF3REFRQUNFUU1SQUQ4QW9PblRWMVFURDdKSnNoUDN2U00zUC8vWiIgLz48L3N2Zz4=");
+ background-color: rgb(24, 26, 27);
+}
+.swagger-ui .debug-grid-16-solid {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4zMzMgLTAuNjY3IC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgMC4zMzMgLTAuNjY3IDAuMDAwIDEuMDAwIC0wLjY2NyAtMC42NjcgMC4zMzMgMC4wMDAgMS4wMDAgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBSUFBQUNRa1dnMkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeWhwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRFeElEYzVMakUxT0RNeU5Td2dNakF4TlM4d09TOHhNQzB3TVRveE1Eb3lNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVWdLRTFoWTJsdWRHOXphQ2tpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TnpZM01rSkVOMFUyTjBNMU1URkZOa0l5UWtORk1qUXdPREV3TURJeE56RWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZOelkzTWtKRU4wWTJOME0xTVRGRk5rSXlRa05GTWpRd09ERXdNREl4TnpFaVBpQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMGdjM1JTWldZNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNOamN5UWtRM1F6WTNRelV4TVVVMlFqSkNRMFV5TkRBNE1UQXdNakUzTVNJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05qY3lRa1EzUkRZM1F6VXhNVVUyUWpKQ1EwVXlOREE0TVRBd01qRTNNU0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUHZlNkoza0FBQUF6U1VSQlZIamFZdnovL3o4RDBVRHNNd01qU1JvWVA1R3E0U1BOYlJqVk1FUTFmQ1JEZytpbi82K0oxQUpVeHNnQUVHQUEzMUJBSk1TMEdZRUFBQUFBU1VWT1JLNUNZSUk9IiAvPjwvc3ZnPg==");
+ background-color: rgb(24, 26, 27);
+}
+.swagger-ui .outline {
+ outline-color: initial;
+}
+.swagger-ui .outline-transparent {
+ outline-color: transparent;
+}
+.swagger-ui .outline-0 {
+ outline-color: initial;
+}
+@media screen and (min-width: 30em) {
+ .swagger-ui .outline-ns {
+ outline-color: initial;
+ }
+ .swagger-ui .outline-transparent-ns {
+ outline-color: transparent;
+ }
+ .swagger-ui .outline-0-ns {
+ outline-color: initial;
+ }
+}
+@media screen and (min-width: 30em) and (max-width: 60em) {
+ .swagger-ui .outline-m {
+ outline-color: initial;
+ }
+ .swagger-ui .outline-transparent-m {
+ outline-color: transparent;
+ }
+ .swagger-ui .outline-0-m {
+ outline-color: initial;
+ }
+}
+@media screen and (min-width: 60em) {
+ .swagger-ui .outline-l {
+ outline-color: initial;
+ }
+ .swagger-ui .outline-transparent-l {
+ outline-color: transparent;
+ }
+ .swagger-ui .outline-0-l {
+ outline-color: initial;
+ }
+}
+.swagger-ui .b--black {
+ border-color: rgb(140, 130, 115);
+}
+.swagger-ui .b--near-black {
+ border-color: rgb(134, 125, 110);
+}
+.swagger-ui .b--dark-gray {
+ border-color: rgb(123, 114, 101);
+}
+.swagger-ui .b--mid-gray {
+ border-color: rgb(112, 104, 92);
+}
+.swagger-ui .b--gray {
+ border-color: rgb(101, 94, 83);
+}
+.swagger-ui .b--silver {
+ border-color: rgb(77, 83, 86);
+}
+.swagger-ui .b--light-silver {
+ border-color: rgb(72, 78, 81);
+}
+.swagger-ui .b--moon-gray {
+ border-color: rgb(62, 68, 70);
+}
+.swagger-ui .b--light-gray {
+ border-color: rgb(53, 57, 59);
+}
+.swagger-ui .b--near-white {
+ border-color: rgb(51, 55, 57);
+}
+.swagger-ui .b--white {
+ border-color: rgb(48, 52, 54);
+}
+.swagger-ui .b--white-90 {
+ border-color: rgba(48, 52, 54, 0.9);
+}
+.swagger-ui .b--white-80 {
+ border-color: rgba(48, 52, 54, 0.8);
+}
+.swagger-ui .b--white-70 {
+ border-color: rgba(48, 52, 54, 0.7);
+}
+.swagger-ui .b--white-60 {
+ border-color: rgba(48, 52, 54, 0.6);
+}
+.swagger-ui .b--white-50 {
+ border-color: rgba(48, 52, 54, 0.5);
+}
+.swagger-ui .b--white-40 {
+ border-color: rgba(48, 52, 54, 0.4);
+}
+.swagger-ui .b--white-30 {
+ border-color: rgba(48, 52, 54, 0.3);
+}
+.swagger-ui .b--white-20 {
+ border-color: rgba(48, 52, 54, 0.2);
+}
+.swagger-ui .b--white-10 {
+ border-color: rgba(48, 52, 54, 0.1);
+}
+.swagger-ui .b--white-05 {
+ border-color: rgba(48, 52, 54, 0.05);
+}
+.swagger-ui .b--white-025 {
+ border-color: rgba(48, 52, 54, 0.02);
+}
+.swagger-ui .b--white-0125 {
+ border-color: rgba(48, 52, 54, 0.01);
+}
+.swagger-ui .b--black-90 {
+ border-color: rgba(140, 130, 115, 0.9);
+}
+.swagger-ui .b--black-80 {
+ border-color: rgba(140, 130, 115, 0.8);
+}
+.swagger-ui .b--black-70 {
+ border-color: rgba(140, 130, 115, 0.7);
+}
+.swagger-ui .b--black-60 {
+ border-color: rgba(140, 130, 115, 0.6);
+}
+.swagger-ui .b--black-50 {
+ border-color: rgba(140, 130, 115, 0.5);
+}
+.swagger-ui .b--black-40 {
+ border-color: rgba(140, 130, 115, 0.4);
+}
+.swagger-ui .b--black-30 {
+ border-color: rgba(140, 130, 115, 0.3);
+}
+.swagger-ui .b--black-20 {
+ border-color: rgba(140, 130, 115, 0.2);
+}
+.swagger-ui .b--black-10 {
+ border-color: rgba(140, 130, 115, 0.1);
+}
+.swagger-ui .b--black-05 {
+ border-color: rgba(140, 130, 115, 0.05);
+}
+.swagger-ui .b--black-025 {
+ border-color: rgba(140, 130, 115, 0.02);
+}
+.swagger-ui .b--black-0125 {
+ border-color: rgba(140, 130, 115, 0.01);
+}
+.swagger-ui .b--dark-red {
+ border-color: rgb(181, 3, 12);
+}
+.swagger-ui .b--red {
+ border-color: rgb(162, 9, 0);
+}
+.swagger-ui .b--light-red {
+ border-color: rgb(151, 20, 0);
+}
+.swagger-ui .b--orange {
+ border-color: rgb(179, 69, 0);
+}
+.swagger-ui .b--gold {
+ border-color: rgb(179, 128, 0);
+}
+.swagger-ui .b--yellow {
+ border-color: rgb(179, 151, 0);
+}
+.swagger-ui .b--light-yellow {
+ border-color: rgb(123, 109, 6);
+}
+.swagger-ui .b--purple {
+ border-color: rgb(86, 40, 152);
+}
+.swagger-ui .b--light-purple {
+ border-color: rgb(70, 12, 141);
+}
+.swagger-ui .b--dark-pink {
+ border-color: rgb(191, 0, 128);
+}
+.swagger-ui .b--hot-pink {
+ border-color: rgb(159, 0, 96);
+}
+.swagger-ui .b--pink {
+ border-color: rgb(140, 0, 84);
+}
+.swagger-ui .b--light-pink {
+ border-color: rgb(130, 0, 73);
+}
+.swagger-ui .b--dark-green {
+ border-color: rgb(29, 184, 127);
+}
+.swagger-ui .b--green {
+ border-color: rgb(25, 171, 118);
+}
+.swagger-ui .b--light-green {
+ border-color: rgb(23, 114, 81);
+}
+.swagger-ui .b--navy {
+ border-color: rgb(129, 120, 106);
+}
+.swagger-ui .b--dark-blue {
+ border-color: rgb(0, 89, 208);
+}
+.swagger-ui .b--blue {
+ border-color: rgb(25, 78, 148);
+}
+.swagger-ui .b--light-blue {
+ border-color: rgb(0, 69, 133);
+}
+.swagger-ui .b--lightest-blue {
+ border-color: rgb(0, 73, 117);
+}
+.swagger-ui .b--washed-blue {
+ border-color: rgb(0, 105, 93);
+}
+.swagger-ui .b--washed-green {
+ border-color: rgb(9, 101, 66);
+}
+.swagger-ui .b--washed-yellow {
+ border-color: rgb(108, 92, 0);
+}
+.swagger-ui .b--washed-red {
+ border-color: rgb(112, 0, 0);
+}
+.swagger-ui .b--transparent {
+ border-color: transparent;
+}
+.swagger-ui .b--inherit {
+ border-color: inherit;
+}
+.swagger-ui .shadow-1 {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 4px 2px;
+}
+.swagger-ui .shadow-2 {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 8px 2px;
+}
+.swagger-ui .shadow-3 {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 4px 2px;
+}
+.swagger-ui .shadow-4 {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 8px 0px;
+}
+.swagger-ui .shadow-5 {
+ box-shadow: rgba(0, 0, 0, 0.2) 4px 4px 8px 0px;
+}
+@media screen and (min-width: 30em) {
+ .swagger-ui .shadow-1-ns {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 4px 2px;
+ }
+ .swagger-ui .shadow-2-ns {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 8px 2px;
+ }
+ .swagger-ui .shadow-3-ns {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 4px 2px;
+ }
+ .swagger-ui .shadow-4-ns {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 8px 0px;
+ }
+ .swagger-ui .shadow-5-ns {
+ box-shadow: rgba(0, 0, 0, 0.2) 4px 4px 8px 0px;
+ }
+}
+@media screen and (min-width: 30em) and (max-width: 60em) {
+ .swagger-ui .shadow-1-m {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 4px 2px;
+ }
+ .swagger-ui .shadow-2-m {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 8px 2px;
+ }
+ .swagger-ui .shadow-3-m {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 4px 2px;
+ }
+ .swagger-ui .shadow-4-m {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 8px 0px;
+ }
+ .swagger-ui .shadow-5-m {
+ box-shadow: rgba(0, 0, 0, 0.2) 4px 4px 8px 0px;
+ }
+}
+@media screen and (min-width: 60em) {
+ .swagger-ui .shadow-1-l {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 4px 2px;
+ }
+ .swagger-ui .shadow-2-l {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 8px 2px;
+ }
+ .swagger-ui .shadow-3-l {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 4px 2px;
+ }
+ .swagger-ui .shadow-4-l {
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 8px 0px;
+ }
+ .swagger-ui .shadow-5-l {
+ box-shadow: rgba(0, 0, 0, 0.2) 4px 4px 8px 0px;
+ }
+}
+.swagger-ui .link {
+ text-decoration-color: initial;
+}
+.swagger-ui .link:focus {
+ outline-color: currentcolor;
+}
+.swagger-ui .black-90 {
+ color: rgba(232, 230, 227, 0.9);
+}
+.swagger-ui .black-80 {
+ color: rgba(232, 230, 227, 0.8);
+}
+.swagger-ui .black-70 {
+ color: rgba(232, 230, 227, 0.7);
+}
+.swagger-ui .black-60 {
+ color: rgba(232, 230, 227, 0.6);
+}
+.swagger-ui .black-50 {
+ color: rgba(232, 230, 227, 0.5);
+}
+.swagger-ui .black-40 {
+ color: rgba(232, 230, 227, 0.4);
+}
+.swagger-ui .black-30 {
+ color: rgba(232, 230, 227, 0.3);
+}
+.swagger-ui .black-20 {
+ color: rgba(232, 230, 227, 0.2);
+}
+.swagger-ui .black-10 {
+ color: rgba(232, 230, 227, 0.1);
+}
+.swagger-ui .black-05 {
+ color: rgba(232, 230, 227, 0.05);
+}
+.swagger-ui .white-90 {
+ color: rgba(232, 230, 227, 0.9);
+}
+.swagger-ui .white-80 {
+ color: rgba(232, 230, 227, 0.8);
+}
+.swagger-ui .white-70 {
+ color: rgba(232, 230, 227, 0.7);
+}
+.swagger-ui .white-60 {
+ color: rgba(232, 230, 227, 0.6);
+}
+.swagger-ui .white-50 {
+ color: rgba(232, 230, 227, 0.5);
+}
+.swagger-ui .white-40 {
+ color: rgba(232, 230, 227, 0.4);
+}
+.swagger-ui .white-30 {
+ color: rgba(232, 230, 227, 0.3);
+}
+.swagger-ui .white-20 {
+ color: rgba(232, 230, 227, 0.2);
+}
+.swagger-ui .white-10 {
+ color: rgba(232, 230, 227, 0.1);
+}
+.swagger-ui .black {
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .near-black {
+ color: rgb(221, 218, 214);
+}
+.swagger-ui .dark-gray {
+ color: rgb(200, 195, 188);
+}
+.swagger-ui .mid-gray {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui .gray {
+ color: rgb(157, 148, 136);
+}
+.swagger-ui .silver {
+ color: rgb(168, 160, 149);
+}
+.swagger-ui .light-silver {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui .moon-gray {
+ color: rgb(200, 195, 188);
+}
+.swagger-ui .light-gray {
+ color: rgb(221, 218, 214);
+}
+.swagger-ui .near-white {
+ color: rgb(225, 222, 219);
+}
+.swagger-ui .white {
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .dark-red {
+ color: rgb(251, 43, 53);
+}
+.swagger-ui .red {
+ color: rgb(255, 74, 63);
+}
+.swagger-ui .light-red {
+ color: rgb(255, 112, 90);
+}
+.swagger-ui .orange {
+ color: rgb(255, 115, 26);
+}
+.swagger-ui .gold {
+ color: rgb(255, 190, 26);
+}
+.swagger-ui .yellow {
+ color: rgb(255, 219, 26);
+}
+.swagger-ui .light-yellow {
+ color: rgb(250, 237, 146);
+}
+.swagger-ui .purple {
+ color: rgb(146, 99, 213);
+}
+.swagger-ui .light-purple {
+ color: rgb(164, 99, 242);
+}
+.swagger-ui .dark-pink {
+ color: rgb(255, 55, 189);
+}
+.swagger-ui .hot-pink {
+ color: rgb(255, 71, 182);
+}
+.swagger-ui .pink {
+ color: rgb(255, 115, 199);
+}
+.swagger-ui .light-pink {
+ color: rgb(255, 140, 205);
+}
+.swagger-ui .dark-green {
+ color: rgb(128, 235, 195);
+}
+.swagger-ui .green {
+ color: rgb(92, 231, 180);
+}
+.swagger-ui .light-green {
+ color: rgb(145, 232, 200);
+}
+.swagger-ui .navy {
+ color: rgb(211, 207, 201);
+}
+.swagger-ui .dark-blue {
+ color: rgb(109, 186, 255);
+}
+.swagger-ui .blue {
+ color: rgb(70, 151, 224);
+}
+.swagger-ui .light-blue {
+ color: rgb(131, 200, 255);
+}
+.swagger-ui .lightest-blue {
+ color: rgb(169, 222, 255);
+}
+.swagger-ui .washed-blue {
+ color: rgb(198, 255, 249);
+}
+.swagger-ui .washed-green {
+ color: rgb(192, 250, 228);
+}
+.swagger-ui .washed-yellow {
+ color: rgb(255, 245, 190);
+}
+.swagger-ui .washed-red {
+ color: rgb(255, 182, 182);
+}
+.swagger-ui .color-inherit {
+ color: inherit;
+}
+.swagger-ui .bg-black-90 {
+ background-color: rgba(0, 0, 0, 0.9);
+}
+.swagger-ui .bg-black-80 {
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.swagger-ui .bg-black-70 {
+ background-color: rgba(0, 0, 0, 0.7);
+}
+.swagger-ui .bg-black-60 {
+ background-color: rgba(0, 0, 0, 0.6);
+}
+.swagger-ui .bg-black-50 {
+ background-color: rgba(0, 0, 0, 0.5);
+}
+.swagger-ui .bg-black-40 {
+ background-color: rgba(0, 0, 0, 0.4);
+}
+.swagger-ui .bg-black-30 {
+ background-color: rgba(0, 0, 0, 0.3);
+}
+.swagger-ui .bg-black-20 {
+ background-color: rgba(0, 0, 0, 0.2);
+}
+.swagger-ui .bg-black-10 {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+.swagger-ui .bg-black-05 {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.swagger-ui .bg-white-90 {
+ background-color: rgba(24, 26, 27, 0.9);
+}
+.swagger-ui .bg-white-80 {
+ background-color: rgba(24, 26, 27, 0.8);
+}
+.swagger-ui .bg-white-70 {
+ background-color: rgba(24, 26, 27, 0.7);
+}
+.swagger-ui .bg-white-60 {
+ background-color: rgba(24, 26, 27, 0.6);
+}
+.swagger-ui .bg-white-50 {
+ background-color: rgba(24, 26, 27, 0.5);
+}
+.swagger-ui .bg-white-40 {
+ background-color: rgba(24, 26, 27, 0.4);
+}
+.swagger-ui .bg-white-30 {
+ background-color: rgba(24, 26, 27, 0.3);
+}
+.swagger-ui .bg-white-20 {
+ background-color: rgba(24, 26, 27, 0.2);
+}
+.swagger-ui .bg-white-10 {
+ background-color: rgba(24, 26, 27, 0.1);
+}
+.swagger-ui .bg-black {
+ background-color: rgb(0, 0, 0);
+}
+.swagger-ui .bg-near-black {
+ background-color: rgb(13, 14, 14);
+}
+.swagger-ui .bg-dark-gray {
+ background-color: rgb(38, 42, 43);
+}
+.swagger-ui .bg-mid-gray {
+ background-color: rgb(64, 69, 72);
+}
+.swagger-ui .bg-gray {
+ background-color: rgb(90, 97, 101);
+}
+.swagger-ui .bg-silver {
+ background-color: rgb(82, 88, 92);
+}
+.swagger-ui .bg-light-silver {
+ background-color: rgb(72, 78, 81);
+}
+.swagger-ui .bg-moon-gray {
+ background-color: rgb(53, 57, 59);
+}
+.swagger-ui .bg-light-gray {
+ background-color: rgb(34, 36, 38);
+}
+.swagger-ui .bg-near-white {
+ background-color: rgb(30, 33, 34);
+}
+.swagger-ui .bg-white {
+ background-color: rgb(24, 26, 27);
+}
+.swagger-ui .bg-transparent {
+ background-color: transparent;
+}
+.swagger-ui .bg-dark-red {
+ background-color: rgb(185, 3, 12);
+}
+.swagger-ui .bg-red {
+ background-color: rgb(172, 9, 0);
+}
+.swagger-ui .bg-light-red {
+ background-color: rgb(149, 20, 0);
+}
+.swagger-ui .bg-orange {
+ background-color: rgb(204, 79, 0);
+}
+.swagger-ui .bg-gold {
+ background-color: rgb(153, 110, 0);
+}
+.swagger-ui .bg-yellow {
+ background-color: rgb(153, 129, 0);
+}
+.swagger-ui .bg-light-yellow {
+ background-color: rgb(75, 67, 4);
+}
+.swagger-ui .bg-purple {
+ background-color: rgb(75, 35, 132);
+}
+.swagger-ui .bg-light-purple {
+ background-color: rgb(70, 12, 141);
+}
+.swagger-ui .bg-dark-pink {
+ background-color: rgb(170, 0, 114);
+}
+.swagger-ui .bg-hot-pink {
+ background-color: rgb(165, 0, 100);
+}
+.swagger-ui .bg-pink {
+ background-color: rgb(127, 0, 76);
+}
+.swagger-ui .bg-light-pink {
+ background-color: rgb(106, 0, 60);
+}
+.swagger-ui .bg-dark-green {
+ background-color: rgb(15, 95, 66);
+}
+.swagger-ui .bg-green {
+ background-color: rgb(20, 135, 93);
+}
+.swagger-ui .bg-light-green {
+ background-color: rgb(21, 100, 79);
+}
+.swagger-ui .bg-navy {
+ background-color: rgb(0, 22, 54);
+}
+.swagger-ui .bg-dark-blue {
+ background-color: rgb(0, 54, 126);
+}
+.swagger-ui .bg-blue {
+ background-color: rgb(28, 87, 165);
+}
+.swagger-ui .bg-light-blue {
+ background-color: rgb(0, 59, 114);
+}
+.swagger-ui .bg-lightest-blue {
+ background-color: rgb(38, 41, 43);
+}
+.swagger-ui .bg-washed-blue {
+ background-color: rgb(0, 56, 52);
+}
+.swagger-ui .bg-washed-green {
+ background-color: rgb(5, 61, 45);
+}
+.swagger-ui .bg-washed-yellow {
+ background-color: rgb(47, 40, 0);
+}
+.swagger-ui .bg-washed-red {
+ background-color: rgb(70, 0, 0);
+}
+.swagger-ui .bg-inherit {
+ background-color: inherit;
+}
+.swagger-ui .hover-black:focus,
+.swagger-ui .hover-black:hover {
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .hover-near-black:focus,
+.swagger-ui .hover-near-black:hover {
+ color: rgb(221, 218, 214);
+}
+.swagger-ui .hover-dark-gray:focus,
+.swagger-ui .hover-dark-gray:hover {
+ color: rgb(200, 195, 188);
+}
+.swagger-ui .hover-mid-gray:focus,
+.swagger-ui .hover-mid-gray:hover {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui .hover-gray:focus,
+.swagger-ui .hover-gray:hover {
+ color: rgb(157, 148, 136);
+}
+.swagger-ui .hover-silver:focus,
+.swagger-ui .hover-silver:hover {
+ color: rgb(168, 160, 149);
+}
+.swagger-ui .hover-light-silver:focus,
+.swagger-ui .hover-light-silver:hover {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui .hover-moon-gray:focus,
+.swagger-ui .hover-moon-gray:hover {
+ color: rgb(200, 195, 188);
+}
+.swagger-ui .hover-light-gray:focus,
+.swagger-ui .hover-light-gray:hover {
+ color: rgb(221, 218, 214);
+}
+.swagger-ui .hover-near-white:focus,
+.swagger-ui .hover-near-white:hover {
+ color: rgb(225, 222, 219);
+}
+.swagger-ui .hover-white:focus,
+.swagger-ui .hover-white:hover {
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .hover-black-90:focus,
+.swagger-ui .hover-black-90:hover {
+ color: rgba(232, 230, 227, 0.9);
+}
+.swagger-ui .hover-black-80:focus,
+.swagger-ui .hover-black-80:hover {
+ color: rgba(232, 230, 227, 0.8);
+}
+.swagger-ui .hover-black-70:focus,
+.swagger-ui .hover-black-70:hover {
+ color: rgba(232, 230, 227, 0.7);
+}
+.swagger-ui .hover-black-60:focus,
+.swagger-ui .hover-black-60:hover {
+ color: rgba(232, 230, 227, 0.6);
+}
+.swagger-ui .hover-black-50:focus,
+.swagger-ui .hover-black-50:hover {
+ color: rgba(232, 230, 227, 0.5);
+}
+.swagger-ui .hover-black-40:focus,
+.swagger-ui .hover-black-40:hover {
+ color: rgba(232, 230, 227, 0.4);
+}
+.swagger-ui .hover-black-30:focus,
+.swagger-ui .hover-black-30:hover {
+ color: rgba(232, 230, 227, 0.3);
+}
+.swagger-ui .hover-black-20:focus,
+.swagger-ui .hover-black-20:hover {
+ color: rgba(232, 230, 227, 0.2);
+}
+.swagger-ui .hover-black-10:focus,
+.swagger-ui .hover-black-10:hover {
+ color: rgba(232, 230, 227, 0.1);
+}
+.swagger-ui .hover-white-90:focus,
+.swagger-ui .hover-white-90:hover {
+ color: rgba(232, 230, 227, 0.9);
+}
+.swagger-ui .hover-white-80:focus,
+.swagger-ui .hover-white-80:hover {
+ color: rgba(232, 230, 227, 0.8);
+}
+.swagger-ui .hover-white-70:focus,
+.swagger-ui .hover-white-70:hover {
+ color: rgba(232, 230, 227, 0.7);
+}
+.swagger-ui .hover-white-60:focus,
+.swagger-ui .hover-white-60:hover {
+ color: rgba(232, 230, 227, 0.6);
+}
+.swagger-ui .hover-white-50:focus,
+.swagger-ui .hover-white-50:hover {
+ color: rgba(232, 230, 227, 0.5);
+}
+.swagger-ui .hover-white-40:focus,
+.swagger-ui .hover-white-40:hover {
+ color: rgba(232, 230, 227, 0.4);
+}
+.swagger-ui .hover-white-30:focus,
+.swagger-ui .hover-white-30:hover {
+ color: rgba(232, 230, 227, 0.3);
+}
+.swagger-ui .hover-white-20:focus,
+.swagger-ui .hover-white-20:hover {
+ color: rgba(232, 230, 227, 0.2);
+}
+.swagger-ui .hover-white-10:focus,
+.swagger-ui .hover-white-10:hover {
+ color: rgba(232, 230, 227, 0.1);
+}
+.swagger-ui .hover-inherit:focus,
+.swagger-ui .hover-inherit:hover {
+ color: inherit;
+}
+.swagger-ui .hover-bg-black:focus,
+.swagger-ui .hover-bg-black:hover {
+ background-color: rgb(0, 0, 0);
+}
+.swagger-ui .hover-bg-near-black:focus,
+.swagger-ui .hover-bg-near-black:hover {
+ background-color: rgb(13, 14, 14);
+}
+.swagger-ui .hover-bg-dark-gray:focus,
+.swagger-ui .hover-bg-dark-gray:hover {
+ background-color: rgb(38, 42, 43);
+}
+.swagger-ui .hover-bg-mid-gray:focus,
+.swagger-ui .hover-bg-mid-gray:hover {
+ background-color: rgb(64, 69, 72);
+}
+.swagger-ui .hover-bg-gray:focus,
+.swagger-ui .hover-bg-gray:hover {
+ background-color: rgb(90, 97, 101);
+}
+.swagger-ui .hover-bg-silver:focus,
+.swagger-ui .hover-bg-silver:hover {
+ background-color: rgb(82, 88, 92);
+}
+.swagger-ui .hover-bg-light-silver:focus,
+.swagger-ui .hover-bg-light-silver:hover {
+ background-color: rgb(72, 78, 81);
+}
+.swagger-ui .hover-bg-moon-gray:focus,
+.swagger-ui .hover-bg-moon-gray:hover {
+ background-color: rgb(53, 57, 59);
+}
+.swagger-ui .hover-bg-light-gray:focus,
+.swagger-ui .hover-bg-light-gray:hover {
+ background-color: rgb(34, 36, 38);
+}
+.swagger-ui .hover-bg-near-white:focus,
+.swagger-ui .hover-bg-near-white:hover {
+ background-color: rgb(30, 33, 34);
+}
+.swagger-ui .hover-bg-white:focus,
+.swagger-ui .hover-bg-white:hover {
+ background-color: rgb(24, 26, 27);
+}
+.swagger-ui .hover-bg-transparent:focus,
+.swagger-ui .hover-bg-transparent:hover {
+ background-color: transparent;
+}
+.swagger-ui .hover-bg-black-90:focus,
+.swagger-ui .hover-bg-black-90:hover {
+ background-color: rgba(0, 0, 0, 0.9);
+}
+.swagger-ui .hover-bg-black-80:focus,
+.swagger-ui .hover-bg-black-80:hover {
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.swagger-ui .hover-bg-black-70:focus,
+.swagger-ui .hover-bg-black-70:hover {
+ background-color: rgba(0, 0, 0, 0.7);
+}
+.swagger-ui .hover-bg-black-60:focus,
+.swagger-ui .hover-bg-black-60:hover {
+ background-color: rgba(0, 0, 0, 0.6);
+}
+.swagger-ui .hover-bg-black-50:focus,
+.swagger-ui .hover-bg-black-50:hover {
+ background-color: rgba(0, 0, 0, 0.5);
+}
+.swagger-ui .hover-bg-black-40:focus,
+.swagger-ui .hover-bg-black-40:hover {
+ background-color: rgba(0, 0, 0, 0.4);
+}
+.swagger-ui .hover-bg-black-30:focus,
+.swagger-ui .hover-bg-black-30:hover {
+ background-color: rgba(0, 0, 0, 0.3);
+}
+.swagger-ui .hover-bg-black-20:focus,
+.swagger-ui .hover-bg-black-20:hover {
+ background-color: rgba(0, 0, 0, 0.2);
+}
+.swagger-ui .hover-bg-black-10:focus,
+.swagger-ui .hover-bg-black-10:hover {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+.swagger-ui .hover-bg-white-90:focus,
+.swagger-ui .hover-bg-white-90:hover {
+ background-color: rgba(24, 26, 27, 0.9);
+}
+.swagger-ui .hover-bg-white-80:focus,
+.swagger-ui .hover-bg-white-80:hover {
+ background-color: rgba(24, 26, 27, 0.8);
+}
+.swagger-ui .hover-bg-white-70:focus,
+.swagger-ui .hover-bg-white-70:hover {
+ background-color: rgba(24, 26, 27, 0.7);
+}
+.swagger-ui .hover-bg-white-60:focus,
+.swagger-ui .hover-bg-white-60:hover {
+ background-color: rgba(24, 26, 27, 0.6);
+}
+.swagger-ui .hover-bg-white-50:focus,
+.swagger-ui .hover-bg-white-50:hover {
+ background-color: rgba(24, 26, 27, 0.5);
+}
+.swagger-ui .hover-bg-white-40:focus,
+.swagger-ui .hover-bg-white-40:hover {
+ background-color: rgba(24, 26, 27, 0.4);
+}
+.swagger-ui .hover-bg-white-30:focus,
+.swagger-ui .hover-bg-white-30:hover {
+ background-color: rgba(24, 26, 27, 0.3);
+}
+.swagger-ui .hover-bg-white-20:focus,
+.swagger-ui .hover-bg-white-20:hover {
+ background-color: rgba(24, 26, 27, 0.2);
+}
+.swagger-ui .hover-bg-white-10:focus,
+.swagger-ui .hover-bg-white-10:hover {
+ background-color: rgba(24, 26, 27, 0.1);
+}
+.swagger-ui .hover-dark-red:focus,
+.swagger-ui .hover-dark-red:hover {
+ color: rgb(251, 43, 53);
+}
+.swagger-ui .hover-red:focus,
+.swagger-ui .hover-red:hover {
+ color: rgb(255, 74, 63);
+}
+.swagger-ui .hover-light-red:focus,
+.swagger-ui .hover-light-red:hover {
+ color: rgb(255, 112, 90);
+}
+.swagger-ui .hover-orange:focus,
+.swagger-ui .hover-orange:hover {
+ color: rgb(255, 115, 26);
+}
+.swagger-ui .hover-gold:focus,
+.swagger-ui .hover-gold:hover {
+ color: rgb(255, 190, 26);
+}
+.swagger-ui .hover-yellow:focus,
+.swagger-ui .hover-yellow:hover {
+ color: rgb(255, 219, 26);
+}
+.swagger-ui .hover-light-yellow:focus,
+.swagger-ui .hover-light-yellow:hover {
+ color: rgb(250, 237, 146);
+}
+.swagger-ui .hover-purple:focus,
+.swagger-ui .hover-purple:hover {
+ color: rgb(146, 99, 213);
+}
+.swagger-ui .hover-light-purple:focus,
+.swagger-ui .hover-light-purple:hover {
+ color: rgb(164, 99, 242);
+}
+.swagger-ui .hover-dark-pink:focus,
+.swagger-ui .hover-dark-pink:hover {
+ color: rgb(255, 55, 189);
+}
+.swagger-ui .hover-hot-pink:focus,
+.swagger-ui .hover-hot-pink:hover {
+ color: rgb(255, 71, 182);
+}
+.swagger-ui .hover-pink:focus,
+.swagger-ui .hover-pink:hover {
+ color: rgb(255, 115, 199);
+}
+.swagger-ui .hover-light-pink:focus,
+.swagger-ui .hover-light-pink:hover {
+ color: rgb(255, 140, 205);
+}
+.swagger-ui .hover-dark-green:focus,
+.swagger-ui .hover-dark-green:hover {
+ color: rgb(128, 235, 195);
+}
+.swagger-ui .hover-green:focus,
+.swagger-ui .hover-green:hover {
+ color: rgb(92, 231, 180);
+}
+.swagger-ui .hover-light-green:focus,
+.swagger-ui .hover-light-green:hover {
+ color: rgb(145, 232, 200);
+}
+.swagger-ui .hover-navy:focus,
+.swagger-ui .hover-navy:hover {
+ color: rgb(211, 207, 201);
+}
+.swagger-ui .hover-dark-blue:focus,
+.swagger-ui .hover-dark-blue:hover {
+ color: rgb(109, 186, 255);
+}
+.swagger-ui .hover-blue:focus,
+.swagger-ui .hover-blue:hover {
+ color: rgb(70, 151, 224);
+}
+.swagger-ui .hover-light-blue:focus,
+.swagger-ui .hover-light-blue:hover {
+ color: rgb(131, 200, 255);
+}
+.swagger-ui .hover-lightest-blue:focus,
+.swagger-ui .hover-lightest-blue:hover {
+ color: rgb(169, 222, 255);
+}
+.swagger-ui .hover-washed-blue:focus,
+.swagger-ui .hover-washed-blue:hover {
+ color: rgb(198, 255, 249);
+}
+.swagger-ui .hover-washed-green:focus,
+.swagger-ui .hover-washed-green:hover {
+ color: rgb(192, 250, 228);
+}
+.swagger-ui .hover-washed-yellow:focus,
+.swagger-ui .hover-washed-yellow:hover {
+ color: rgb(255, 245, 190);
+}
+.swagger-ui .hover-washed-red:focus,
+.swagger-ui .hover-washed-red:hover {
+ color: rgb(255, 182, 182);
+}
+.swagger-ui .hover-bg-dark-red:focus,
+.swagger-ui .hover-bg-dark-red:hover {
+ background-color: rgb(185, 3, 12);
+}
+.swagger-ui .hover-bg-red:focus,
+.swagger-ui .hover-bg-red:hover {
+ background-color: rgb(172, 9, 0);
+}
+.swagger-ui .hover-bg-light-red:focus,
+.swagger-ui .hover-bg-light-red:hover {
+ background-color: rgb(149, 20, 0);
+}
+.swagger-ui .hover-bg-orange:focus,
+.swagger-ui .hover-bg-orange:hover {
+ background-color: rgb(204, 79, 0);
+}
+.swagger-ui .hover-bg-gold:focus,
+.swagger-ui .hover-bg-gold:hover {
+ background-color: rgb(153, 110, 0);
+}
+.swagger-ui .hover-bg-yellow:focus,
+.swagger-ui .hover-bg-yellow:hover {
+ background-color: rgb(153, 129, 0);
+}
+.swagger-ui .hover-bg-light-yellow:focus,
+.swagger-ui .hover-bg-light-yellow:hover {
+ background-color: rgb(75, 67, 4);
+}
+.swagger-ui .hover-bg-purple:focus,
+.swagger-ui .hover-bg-purple:hover {
+ background-color: rgb(75, 35, 132);
+}
+.swagger-ui .hover-bg-light-purple:focus,
+.swagger-ui .hover-bg-light-purple:hover {
+ background-color: rgb(70, 12, 141);
+}
+.swagger-ui .hover-bg-dark-pink:focus,
+.swagger-ui .hover-bg-dark-pink:hover {
+ background-color: rgb(170, 0, 114);
+}
+.swagger-ui .hover-bg-hot-pink:focus,
+.swagger-ui .hover-bg-hot-pink:hover {
+ background-color: rgb(165, 0, 100);
+}
+.swagger-ui .hover-bg-pink:focus,
+.swagger-ui .hover-bg-pink:hover {
+ background-color: rgb(127, 0, 76);
+}
+.swagger-ui .hover-bg-light-pink:focus,
+.swagger-ui .hover-bg-light-pink:hover {
+ background-color: rgb(106, 0, 60);
+}
+.swagger-ui .hover-bg-dark-green:focus,
+.swagger-ui .hover-bg-dark-green:hover {
+ background-color: rgb(15, 95, 66);
+}
+.swagger-ui .hover-bg-green:focus,
+.swagger-ui .hover-bg-green:hover {
+ background-color: rgb(20, 135, 93);
+}
+.swagger-ui .hover-bg-light-green:focus,
+.swagger-ui .hover-bg-light-green:hover {
+ background-color: rgb(21, 100, 79);
+}
+.swagger-ui .hover-bg-navy:focus,
+.swagger-ui .hover-bg-navy:hover {
+ background-color: rgb(0, 22, 54);
+}
+.swagger-ui .hover-bg-dark-blue:focus,
+.swagger-ui .hover-bg-dark-blue:hover {
+ background-color: rgb(0, 54, 126);
+}
+.swagger-ui .hover-bg-blue:focus,
+.swagger-ui .hover-bg-blue:hover {
+ background-color: rgb(28, 87, 165);
+}
+.swagger-ui .hover-bg-light-blue:focus,
+.swagger-ui .hover-bg-light-blue:hover {
+ background-color: rgb(0, 59, 114);
+}
+.swagger-ui .hover-bg-lightest-blue:focus,
+.swagger-ui .hover-bg-lightest-blue:hover {
+ background-color: rgb(38, 41, 43);
+}
+.swagger-ui .hover-bg-washed-blue:focus,
+.swagger-ui .hover-bg-washed-blue:hover {
+ background-color: rgb(0, 56, 52);
+}
+.swagger-ui .hover-bg-washed-green:focus,
+.swagger-ui .hover-bg-washed-green:hover {
+ background-color: rgb(5, 61, 45);
+}
+.swagger-ui .hover-bg-washed-yellow:focus,
+.swagger-ui .hover-bg-washed-yellow:hover {
+ background-color: rgb(47, 40, 0);
+}
+.swagger-ui .hover-bg-washed-red:focus,
+.swagger-ui .hover-bg-washed-red:hover {
+ background-color: rgb(70, 0, 0);
+}
+.swagger-ui .hover-bg-inherit:focus,
+.swagger-ui .hover-bg-inherit:hover {
+ background-color: inherit;
+}
+.swagger-ui .striped--light-silver:nth-child(2n+1) {
+ background-color: rgb(72, 78, 81);
+}
+.swagger-ui .striped--moon-gray:nth-child(2n+1) {
+ background-color: rgb(53, 57, 59);
+}
+.swagger-ui .striped--light-gray:nth-child(2n+1) {
+ background-color: rgb(34, 36, 38);
+}
+.swagger-ui .striped--near-white:nth-child(2n+1) {
+ background-color: rgb(30, 33, 34);
+}
+.swagger-ui .stripe-light:nth-child(2n+1) {
+ background-color: rgba(24, 26, 27, 0.1);
+}
+.swagger-ui .stripe-dark:nth-child(2n+1) {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+.swagger-ui .strike {
+ text-decoration-color: initial;
+}
+.swagger-ui .underline {
+ text-decoration-color: initial;
+}
+.swagger-ui .no-underline {
+ text-decoration-color: initial;
+}
+@media screen and (min-width: 30em) {
+ .swagger-ui .strike-ns {
+ text-decoration-color: initial;
+ }
+ .swagger-ui .underline-ns {
+ text-decoration-color: initial;
+ }
+ .swagger-ui .no-underline-ns {
+ text-decoration-color: initial;
+ }
+}
+@media screen and (min-width: 30em) and (max-width: 60em) {
+ .swagger-ui .strike-m {
+ text-decoration-color: initial;
+ }
+ .swagger-ui .underline-m {
+ text-decoration-color: initial;
+ }
+ .swagger-ui .no-underline-m {
+ text-decoration-color: initial;
+ }
+}
+@media screen and (min-width: 60em) {
+ .swagger-ui .strike-l {
+ text-decoration-color: initial;
+ }
+ .swagger-ui .underline-l {
+ text-decoration-color: initial;
+ }
+ .swagger-ui .no-underline-l {
+ text-decoration-color: initial;
+ }
+}
+.swagger-ui .underline-hover:focus,
+.swagger-ui .underline-hover:hover {
+ text-decoration-color: initial;
+}
+.swagger-ui .shadow-hover::after {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 16px 2px;
+}
+.swagger-ui .nested-links a {
+ color-relearn: var(--INTERNAL-MAIN-LINK-color);
+}
+.swagger-ui .nested-links a:focus,
+.swagger-ui .nested-links a:hover {
+ color-relearn: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+.swagger-ui .opblock-tag {
+ border-bottom-color: rgba(117, 109, 96, 0.3);
+}
+.swagger-ui .opblock-tag:hover {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.02);
+}
+.swagger-ui .opblock-tag {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock-tag small {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .parameter__type {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock {
+ border-color: rgb(140, 130, 115);
+ box-shadow: rgba(0, 0, 0, 0.19) 0px 0px 3px;
+}
+.swagger-ui .opblock .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color: rgb(96, 104, 108);
+}
+.swagger-ui .opblock.is-open .opblock-summary {
+ border-bottom-color: rgb(140, 130, 115);
+}
+.swagger-ui .opblock .opblock-section-header {
+ background-image: initial;
+ background-color: rgba(24, 26, 27, 0.8);
+ box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px;
+}
+.swagger-ui .opblock .opblock-section-header > label {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock .opblock-section-header h4 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .opblock .opblock-summary-method {
+ background-image: initial;
+ background-color: rgb(0, 0, 0);
+ color: rgb(232, 230, 227);
+ text-shadow: rgba(0, 0, 0, 0.1) 0px 1px 0px;
+}
+.swagger-ui .opblock .opblock-summary-operation-id,
+.swagger-ui .opblock .opblock-summary-path,
+.swagger-ui .opblock .opblock-summary-path__deprecated {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock .opblock-summary-path__deprecated {
+ text-decoration-color: initial;
+}
+.swagger-ui .opblock .opblock-summary-description {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock.opblock-post {
+ background-image: initial;
+ background-color: rgba(42, 149, 112, 0.1);
+ border-color-relearn: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-post .opblock-summary-method {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-post .opblock-summary {
+ border-color-relearn: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-put {
+ background-image: initial;
+ background-color: rgba(174, 98, 3, 0.1);
+ border-color-relearn: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-put .opblock-summary-method {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-put .opblock-summary {
+ border-color-relearn: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-delete {
+ background-image: initial;
+ background-color: rgba(165, 5, 5, 0.1);
+ border-color-relearn: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-delete .opblock-summary-method {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-delete .opblock-summary {
+ border-color-relearn: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-get {
+ background-image: initial;
+ background-color: rgba(1, 73, 145, 0.1);
+ border-color-relearn: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .opblock.opblock-get .opblock-summary-method {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .opblock.opblock-get .opblock-summary {
+ border-color-relearn: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .opblock.opblock-patch {
+ background-image: initial;
+ background-color: rgba(24, 149, 128, 0.1);
+ border-color: rgb(22, 140, 114);
+}
+.swagger-ui .opblock.opblock-patch .opblock-summary-method {
+ background-image: initial;
+ background-color: rgb(24, 149, 128);
+}
+.swagger-ui .opblock.opblock-patch .opblock-summary {
+ border-color: rgb(22, 140, 114);
+}
+.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color: rgb(24, 149, 128);
+}
+.swagger-ui .opblock.opblock-head {
+ background-image: initial;
+ background-color: rgba(103, 1, 193, 0.1);
+ border-color: rgb(93, 1, 173);
+}
+.swagger-ui .opblock.opblock-head .opblock-summary-method {
+ background-image: initial;
+ background-color: rgb(103, 1, 193);
+}
+.swagger-ui .opblock.opblock-head .opblock-summary {
+ border-color: rgb(93, 1, 173);
+}
+.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color: rgb(103, 1, 193);
+}
+.swagger-ui .opblock.opblock-options {
+ background-image: initial;
+ background-color: rgba(10, 72, 134, 0.1);
+ border-color: rgb(15, 101, 186);
+}
+.swagger-ui .opblock.opblock-options .opblock-summary-method {
+ background-image: initial;
+ background-color: rgb(10, 72, 134);
+}
+.swagger-ui .opblock.opblock-options .opblock-summary {
+ border-color: rgb(15, 101, 186);
+}
+.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color: rgb(10, 72, 134);
+}
+.swagger-ui .opblock.opblock-deprecated {
+ background-image: initial;
+ background-color: rgba(35, 38, 40, 0.1);
+ border-color: rgb(54, 58, 60);
+}
+.swagger-ui .opblock.opblock-deprecated .opblock-summary-method {
+ background-image: initial;
+ background-color: rgb(35, 38, 40);
+}
+.swagger-ui .opblock.opblock-deprecated .opblock-summary {
+ border-color: rgb(54, 58, 60);
+}
+.swagger-ui .opblock.opblock-deprecated .tab-header .tab-item.active h4 span::after {
+ background-image: initial;
+ background-color: rgb(35, 38, 40);
+}
+.swagger-ui .filter .operation-filter-input {
+ border-color: rgb(57, 62, 64);
+}
+.swagger-ui .download-url-wrapper .failed,
+.swagger-ui .filter .failed {
+ color: rgb(255, 26, 26);
+}
+.swagger-ui .download-url-wrapper .loading,
+.swagger-ui .filter .loading {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui .tab {
+ list-style-image: initial;
+}
+.swagger-ui .tab li {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .tab li:first-of-type::after {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.2);
+}
+.swagger-ui .tab li button.tablinks {
+ background-image: none;
+ background-color: initial;
+ border-color: initial;
+ color: inherit;
+}
+.swagger-ui .opblock-description-wrapper,
+.swagger-ui .opblock-external-docs-wrapper,
+.swagger-ui .opblock-title_normal {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock-description-wrapper h4,
+.swagger-ui .opblock-external-docs-wrapper h4,
+.swagger-ui .opblock-title_normal h4 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .opblock-description-wrapper p,
+.swagger-ui .opblock-external-docs-wrapper p,
+.swagger-ui .opblock-title_normal p {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .responses-inner h4{
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .responses-inner h5 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H5-TEXT-color);
+}
+.swagger-ui .response-col_status {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .response-col_status .response-undocumented {
+ color: rgb(162, 154, 142);
+}
+.swagger-ui .response-col_links {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .response-col_links .response-undocumented {
+ color: rgb(162, 154, 142);
+}
+.swagger-ui .opblock-body pre.microlight {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-MAIN-BG-color);
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .download-contents {
+ background-image: initial;
+ background-color: rgb(91, 99, 103);
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .scheme-container {
+ background-image: initial;
+ background-color: rgb(24, 26, 27);
+ box-shadow: rgba(0, 0, 0, 0.15) 0px 1px 2px 0px;
+}
+.swagger-ui .scheme-container .schemes > label {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .loading-container .loading::after {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .loading-container .loading::before {
+ border-color: rgba(140, 130, 115, 0.6) rgba(112, 104, 92, 0.1) rgba(112, 104, 92, 0.1);
+}
+.swagger-ui .response-control-media-type--accept-controller select {
+ border-color: rgb(0, 217, 0);
+}
+.swagger-ui .response-control-media-type__accept-message {
+ color: rgb(114, 255, 114);
+}
+.swagger-ui .no-margin {
+ border-color: initial;
+}
+.swagger-ui section h3 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H3-TEXT-color);
+}
+.swagger-ui a.nostyle,
+.swagger-ui a.nostyle:visited {
+ color: inherit;
+ text-decoration-color: inherit;
+}
+.swagger-ui .fallback {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui .version-pragma__message code {
+ background-color: rgb(43, 46, 48);
+}
+.swagger-ui span.token-string {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui span.token-not-formatted {
+ color: rgb(178, 172, 162);
+}
+.swagger-ui .btn {
+ background-image: initial;
+ background-color: transparent;
+ border-color: rgb(84, 91, 94);
+ box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px;
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .btn:hover {
+ box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 5px;
+}
+.swagger-ui .btn.cancel {
+ background-color: transparent;
+ border-color: rgb(150, 0, 0);
+ color: rgb(255, 93, 93);
+}
+.swagger-ui .btn.authorize {
+ background-color: transparent;
+ border-color: rgb(38, 134, 90);
+ color: rgb(88, 208, 153);
+}
+.swagger-ui .btn.authorize svg {
+ fill: rgb(88, 208, 153);
+}
+.swagger-ui .btn.execute {
+ background-color: rgb(24, 84, 153);
+ border-color: rgb(23, 78, 143);
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .authorization__btn {
+ background-image: none;
+ background-color: initial;
+ border-color: initial;
+}
+.swagger-ui .model-box-control,
+.swagger-ui .models-control,
+.swagger-ui .opblock-summary-control {
+ border-bottom-color: initial;
+}
+.swagger-ui .model-box-control:focus,
+.swagger-ui .models-control:focus,
+.swagger-ui .opblock-summary-control:focus {
+ outline-color: initial;
+}
+.swagger-ui .expand-methods,
+.swagger-ui .expand-operation {
+ background-image: none;
+ background-color: initial;
+ border-color: initial;
+}
+.swagger-ui .expand-methods:hover svg {
+ fill: rgb(192, 186, 178);
+}
+.swagger-ui .expand-methods svg {
+ fill: rgb(161, 153, 141);
+}
+.swagger-ui button.invalid {
+ background-image: initial;
+ background-color: rgb(61, 3, 3);
+ border-color: rgb(157, 5, 5);
+}
+.swagger-ui .copy-to-clipboard {
+ background-image: initial;
+ background-color: rgb(91, 99, 103);
+ border-color: initial;
+}
+.swagger-ui .copy-to-clipboard button {
+ background-color: initial;
+ border-color: initial;
+}
+.swagger-ui select {
+ background-color: rgb(29, 31, 32);
+ border-color: rgb(116, 108, 96);
+ box-shadow: rgba(0, 0, 0, 0.25) 0px 1px 2px 0px;
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui select[multiple] {
+ background-image: initial;
+ background-color: rgb(29, 31, 32);
+}
+.swagger-ui select.invalid {
+ background-image: initial;
+ background-color: rgb(61, 3, 3);
+ border-color: rgb(157, 5, 5);
+}
+.swagger-ui label {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui input[type="email"], .swagger-ui input[type="file"], .swagger-ui input[type="password"], .swagger-ui input[type="search"], .swagger-ui input[type="text"],
+.swagger-ui textarea {
+ background-image: initial;
+ background-color: rgb(24, 26, 27);
+ border-color: rgb(59, 64, 66);
+}
+.swagger-ui input[type="email"].invalid, .swagger-ui input[type="file"].invalid, .swagger-ui input[type="password"].invalid, .swagger-ui input[type="search"].invalid, .swagger-ui input[type="text"].invalid,
+.swagger-ui textarea.invalid {
+ background-image: initial;
+ background-color: rgb(61, 3, 3);
+ border-color: rgb(157, 5, 5);
+}
+.swagger-ui input[disabled],
+.swagger-ui select[disabled],
+.swagger-ui textarea[disabled] {
+ background-color: rgb(27, 29, 30);
+ color: rgb(157, 148, 136);
+}
+.swagger-ui select[disabled] {
+ border-color: rgb(82, 88, 92);
+}
+.swagger-ui textarea[disabled] {
+ background-color: rgb(54, 58, 61);
+ color: rgb(232, 230, 227);
+}
+.swagger-ui textarea {
+ background-image: initial;
+ background-color: rgba(24, 26, 27, 0.8);
+ border-color: initial;
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+ outline-color: initial;
+}
+.swagger-ui textarea:focus {
+ border-color: rgb(1, 74, 149);
+}
+.swagger-ui textarea.curl {
+ background-image: initial;
+ background-color: rgb(54, 58, 61);
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .checkbox {
+ color: rgb(202, 197, 190);
+}
+.swagger-ui .checkbox p {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .checkbox input[type="checkbox"] + label > .item {
+ background-image: initial;
+ background-color: rgb(37, 40, 42);
+ box-shadow: rgb(37, 40, 42) 0px 0px 0px 2px;
+}
+.swagger-ui .checkbox input[type="checkbox"]:checked + label > .item {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAiIGhlaWdodD0iOCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxMCIgaGVpZ2h0PSI4IiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHdpZHRoPSIxMCIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIzIDcgMTAgOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIlMjM0MTQ3NEUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTYuMzMzIDE1IDMgMTEuNjY3bDEuMzMzLTEuMzM0IDIgMkwxMS42NjcgNyAxMyA4LjMzM3oiLz48L3N2Zz4iIC8+PC9zdmc+");
+ background-color: rgb(37, 40, 42);
+}
+.swagger-ui .dialog-ux .backdrop-ux {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.swagger-ui .dialog-ux .modal-ux {
+ background-image: initial;
+ background-color: rgb(24, 26, 27);
+ border-color: rgb(54, 58, 60);
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 10px 30px 0px;
+}
+.swagger-ui .dialog-ux .modal-ux-content p {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .dialog-ux .modal-ux-content h4 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .dialog-ux .modal-ux-header {
+ border-bottom-color: rgb(54, 58, 60);
+}
+.swagger-ui .dialog-ux .modal-ux-header .close-modal {
+ background-image: none;
+ background-color: initial;
+ border-color: initial;
+}
+.swagger-ui .dialog-ux .modal-ux-header h3 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H3-TEXT-color);
+}
+.swagger-ui .model {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .model .deprecated span,
+.swagger-ui .model .deprecated td {
+ color: rgb(172, 165, 154) !important;
+}
+.swagger-ui .model .deprecated > td:first-of-type {
+ text-decoration-color: initial;
+}
+.swagger-ui .model-toggle::after {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xMCA2IDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiLz48L3N2Zz4iIC8+PC9zdmc+");
+ background-color: initial;
+}
+.swagger-ui .model-hint {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.7);
+ color: rgb(219, 216, 212);
+}
+.swagger-ui .model .property {
+ color: rgb(168, 160, 149);
+}
+.swagger-ui .model .property.primitive {
+ color: rgb(164, 157, 145);
+}
+.swagger-ui .model .external-docs,
+.swagger-ui table.model tr.description {
+ color: rgb(168, 160, 149);
+}
+.swagger-ui table.model tr.property-row .star {
+ color: rgb(255, 26, 26);
+}
+.swagger-ui table.model tr.extension {
+ color: rgb(157, 148, 136);
+}
+.swagger-ui section.models {
+ border-color: rgba(117, 109, 96, 0.3);
+}
+.swagger-ui section.models.is-open h4 {
+ border-bottom-color: rgba(117, 109, 96, 0.3);
+}
+.swagger-ui section.models h4 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui section.models h4:hover {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.02);
+}
+.swagger-ui section.models h5 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H5-TEXT-color);
+}
+.swagger-ui section.models .model-container {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.swagger-ui section.models .model-container:hover {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.07);
+}
+.swagger-ui section.models .model-box {
+ background-image: none;
+ background-color: initial;
+}
+.swagger-ui .model-box {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+.swagger-ui .model-title {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .model-deprecated-warning {
+ color: rgb(249, 70, 70);
+}
+.swagger-ui .prop-type {
+ color: rgb(119, 144, 187);
+}
+.swagger-ui .prop-format {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .servers > label {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui table.headers td {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui table.headers .header-example {
+ color: rgb(168, 160, 149);
+}
+.swagger-ui table thead tr td,
+.swagger-ui table thead tr th {
+ border-bottom-color: rgba(117, 109, 96, 0.2);
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .parameter__name {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .parameter__name.required span {
+ color: rgb(255, 26, 26);
+}
+.swagger-ui .parameter__name.required::after {
+ color: rgba(255, 26, 26, 0.6);
+}
+.swagger-ui .parameter__extension,
+.swagger-ui .parameter__in {
+ color: rgb(152, 143, 129);
+}
+.swagger-ui .parameter__deprecated {
+ color: rgb(255, 26, 26);
+}
+.swagger-ui .response__extension {
+ color: rgb(152, 143, 129);
+}
+.swagger-ui .topbar {
+ background-color: rgb(20, 22, 23);
+}
+.swagger-ui .topbar a {
+ color: rgb(232, 230, 227); text-decoration-color: initial;
+}
+.swagger-ui .topbar .download-url-wrapper input[type="text"] {
+ border-color: rgb(83, 135, 53);
+ outline-color: initial;
+}
+.swagger-ui .topbar .download-url-wrapper .select-label {
+ color: rgb(223, 220, 215);
+}
+.swagger-ui .topbar .download-url-wrapper .select-label select {
+ border-color: rgb(83, 135, 53);
+ box-shadow: none;
+ outline-color: initial;
+}
+.swagger-ui .topbar .download-url-wrapper .download-url-button {
+ background-image: initial;
+ background-color: rgb(78, 128, 50);
+ border-color: initial;
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .info li,
+.swagger-ui .info p,
+.swagger-ui .info table {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .info h1 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H1-TEXT-color);
+}
+.swagger-ui .info h2 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H2-TEXT-color);
+}
+.swagger-ui .info h3 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H3-TEXT-color);
+}
+.swagger-ui .info h4 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .info h5 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H5-TEXT-color);
+}
+.swagger-ui .info a {
+ color-relearn: var(--INTERNAL-MAIN-LINK-color);
+}
+.swagger-ui .info a:hover {
+ color-relearn: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+.swagger-ui .info .base-url {
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .info .title {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .info .title small {
+ background-image: initial;
+ background-color: rgb(91, 99, 103);
+}
+.swagger-ui .info .title small.version-stamp {
+ background-color: rgb(110, 153, 3);
+}
+.swagger-ui .info .title small pre {
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .auth-container {
+ border-bottom-color: rgb(54, 58, 60);
+}
+.swagger-ui .auth-container:last-of-type {
+ border-color: initial;
+}
+.swagger-ui .auth-container .errors {
+ background-color: rgb(61, 0, 0);
+ color-relearn: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .scopes h2 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H2-TEXT-color);
+}
+.swagger-ui .scopes h2 a {
+ color-relearn: var(--INTERNAL-MAIN-LINK-color);
+ text-decoration-color: initial;
+}
+.swagger-ui .errors-wrapper {
+ background-image: initial;
+ background-color: rgba(165, 5, 5, 0.1);
+ border-color: rgb(157, 5, 5);
+}
+.swagger-ui .errors-wrapper .errors h4 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .errors-wrapper .errors small {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .errors-wrapper .errors .error-line {
+ text-decoration-color: initial;
+}
+.swagger-ui .errors-wrapper hgroup h4 {
+ color-relearn: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .markdown pre,
+.swagger-ui .renderedMarkdown pre {
+ background-image: none;
+ background-color: initial;
+ color: rgb(232, 230, 227);
+}
+.swagger-ui .markdown code,
+.swagger-ui .renderedMarkdown code {
+ background-image: initial;
+ background-color: rgba(0, 0, 0, 0.05);
+ color: rgb(154, 38, 254);
+}
+body {
+ background-image: initial;
+ background-color-relearn: var(--INTERNAL-MAIN-BG-color);
+}
+
+/* Override Style */
+.vimvixen-hint {
+ background-color: #7b5300 !important;
+ border-color: #d8b013 !important;
+ color: #f3e8c8 !important;
+}
+::placeholder {
+ opacity: 0.5 !important;
+}
+#edge-translate-panel-body,
+.MuiTypography-body1,
+.nfe-quote-text {
+ color: var(--darkreader-neutral-text) !important;
+}
+gr-main-header {
+ background-color: #0f3a48 !important;
+}
+.tou-z65h9k,
+.tou-mignzq,
+.tou-1b6i2ox,
+.tou-lnqlqk {
+ background-color: var(--darkreader-neutral-background) !important;
+}
+.tou-75mvi {
+ background-color: #032029 !important;
+}
+.tou-ta9e87,
+.tou-1w3fhi0,
+.tou-1b8t2us,
+.tou-py7lfi,
+.tou-1lpmd9d,
+.tou-1frrtv8,
+.tou-17ezmgn {
+ background-color: #0a0a0a !important;
+}
+.tou-uknfeu {
+ background-color: #231603 !important;
+}
+.tou-6i3zyv {
+ background-color: #19576c !important;
+}
+embed[type="application/pdf"][src="about:blank"] { filter: invert(100%) contrast(90%); }
+
+/* Relearn Fix Style */
+.swagger-ui select {
+ background-image: url("data:image/svg+xml;charset=utf-8, ");
+}
+.swagger-ui .model-toggle::after {
+ background-image: url("data:image/svg+xml;charset=utf-8, ");
+}
+.swagger-ui section.models .model-container {
+ background-color: rgba(0, 0, 0, 0.25);
+}
+.swagger-ui section.models .model-container:hover {
+ background-color: rgba(0, 0, 0, 0.5);
+}
diff --git a/css/swagger-light.css b/css/swagger-light.css
new file mode 100644
index 00000000..e69de29b
diff --git a/css/swagger.css b/css/swagger.css
new file mode 100644
index 00000000..d78e67ab
--- /dev/null
+++ b/css/swagger.css
@@ -0,0 +1,311 @@
+/* Styles to make Swagger-UI fit into our theme */
+
+@import "fonts.css";
+@import "variant-internal.css";
+
+body{
+ line-height: 1.574;
+ font-weight: 300;
+ margin: 0;
+ overflow: hidden;
+}
+body,
+.swagger-ui .info *,
+#relearn-swagger-ui .renderedMarkdown *,
+#relearn-swagger-ui p{
+ font-size: 1.015625rem;
+}
+.swagger-ui .scheme-container{
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+.swagger-ui .wrapper{
+ padding-left: 0;
+ padding-right: 0;
+}
+h2 {
+ font-weight: 500;
+}
+svg{
+ fill: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .info h2.title {
+ color: var(--INTERNAL-MAIN-TITLES-H2-TEXT-color);
+}
+.relearn-expander{
+ display: block;
+ float: right;
+ margin: .5rem;
+}
+#relearn-swagger-ui{
+ clear: both;
+}
+
+/* Styles extracted from swagger-dark.css generated by Dark Reader */
+
+html {
+ background-color: var(--INTERNAL-MAIN-BG-color) !important;
+}
+html {
+ color-scheme: var(--INTERNAL-BROWSER-theme) !important;
+}
+html, body {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+}
+html, body {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+a {
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+input:-webkit-autofill,
+textarea:-webkit-autofill,
+select:-webkit-autofill {
+ color: var(--INTERNAL-MAIN-TEXT-color) !important;
+}
+::-webkit-scrollbar-corner {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+}
+::selection {
+ color: var(--INTERNAL-MAIN-TEXT-color) !important;
+}
+::-moz-selection {
+ color: var(--INTERNAL-MAIN-TEXT-color) !important;
+}
+*:not(pre, pre *, code, .far, .fa, .glyphicon, [class*="vjs-"], .fab, .fa-github, .fas, .material-icons, .icofont, .typcn, mu, [class*="mu-"], .glyphicon, .icon) {
+ font-family: var(--INTERNAL-MAIN-font) !important;
+}
+:root {
+ --darkreader-neutral-background: var(--INTERNAL-MAIN-BG-color);
+ --darkreader-neutral-text: var(--INTERNAL-MAIN-TEXT-color);
+ --darkreader-selection-text: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .nested-links a {
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+.swagger-ui .nested-links a:focus,
+.swagger-ui .nested-links a:hover {
+ color: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+.swagger-ui .opblock-tag {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock-tag small {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .parameter__type {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock .opblock-section-header > label {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock .opblock-section-header h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .opblock .opblock-summary-operation-id,
+.swagger-ui .opblock .opblock-summary-path,
+.swagger-ui .opblock .opblock-summary-path__deprecated {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock .opblock-summary-description {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock.opblock-post {
+ border-color: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-post .opblock-summary-method {
+ background-color: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-post .opblock-summary {
+ border-color: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span::after {
+ background-color: var(--INTERNAL-BOX-GREEN-color);
+}
+.swagger-ui .opblock.opblock-put {
+ border-color: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-put .opblock-summary-method {
+ background-color: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-put .opblock-summary {
+ border-color: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span::after {
+ background-color: var(--INTERNAL-BOX-ORANGE-color);
+}
+.swagger-ui .opblock.opblock-delete {
+ border-color: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-delete .opblock-summary-method {
+ background-color: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-delete .opblock-summary {
+ border-color: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span::after {
+ background-color: var(--INTERNAL-BOX-RED-color);
+}
+.swagger-ui .opblock.opblock-get {
+ border-color: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .opblock.opblock-get .opblock-summary-method {
+ background-color: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .opblock.opblock-get .opblock-summary {
+ border-color: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span::after {
+ background-color: var(--INTERNAL-BOX-BLUE-color);
+}
+.swagger-ui .tab li {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock-description-wrapper,
+.swagger-ui .opblock-external-docs-wrapper,
+.swagger-ui .opblock-title_normal {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock-description-wrapper h4,
+.swagger-ui .opblock-external-docs-wrapper h4,
+.swagger-ui .opblock-title_normal h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .opblock-description-wrapper p,
+.swagger-ui .opblock-external-docs-wrapper p,
+.swagger-ui .opblock-title_normal p {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .responses-inner h4{
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .responses-inner h5 {
+ color: var(--INTERNAL-MAIN-TITLES-H5-TEXT-color);
+}
+.swagger-ui .response-col_status {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .response-col_links {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .opblock-body pre.microlight {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .scheme-container .schemes > label {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .loading-container .loading::after {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui section h3 {
+ color: var(--INTERNAL-MAIN-TITLES-H3-TEXT-color);
+}
+.swagger-ui .btn {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui select {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui label {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui textarea {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .checkbox p {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .dialog-ux .modal-ux-content p {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .dialog-ux .modal-ux-content h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .dialog-ux .modal-ux-header h3 {
+ color: var(--INTERNAL-MAIN-TITLES-H3-TEXT-color);
+}
+.swagger-ui .model {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui section.models h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui section.models h5 {
+ color: var(--INTERNAL-MAIN-TITLES-H5-TEXT-color);
+}
+.swagger-ui .model-title {
+ color: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .prop-format {
+ color: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .servers > label {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui table.headers td {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui table thead tr td,
+.swagger-ui table thead tr th {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .parameter__name {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .info li,
+.swagger-ui .info p,
+.swagger-ui .info table {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .info h1 {
+ color: var(--INTERNAL-MAIN-TITLES-H1-TEXT-color);
+}
+.swagger-ui .info h2 {
+ color: var(--INTERNAL-MAIN-TITLES-H2-TEXT-color);
+}
+.swagger-ui .info h3 {
+ color: var(--INTERNAL-MAIN-TITLES-H3-TEXT-color);
+}
+.swagger-ui .info h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .info h5 {
+ color: var(--INTERNAL-MAIN-TITLES-H5-TEXT-color);
+}
+.swagger-ui .info a {
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+.swagger-ui .info a:hover {
+ color: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+.swagger-ui .info .base-url {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .info .title {
+ color: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .auth-container .errors {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+.swagger-ui .scopes h2 {
+ color: var(--INTERNAL-MAIN-TITLES-H2-TEXT-color);
+}
+.swagger-ui .scopes h2 a {
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+.swagger-ui .errors-wrapper .errors h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+.swagger-ui .errors-wrapper .errors small {
+ color: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+}
+.swagger-ui .errors-wrapper hgroup h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-TEXT-color);
+}
+body {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+}
diff --git a/css/tags.css b/css/tags.css
new file mode 100644
index 00000000..e09eacd1
--- /dev/null
+++ b/css/tags.css
@@ -0,0 +1,50 @@
+/* Tags */
+
+.tags{
+ margin-left: 1rem;
+ margin-top: 1rem;
+}
+
+.tags.term-list ul > li ~ li:before {
+ content: " "
+}
+
+#R-body .tags a.term-link {
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
+ box-shadow: 0 1px 2px rgba( 0, 0, 0, .2 );
+ display: inline-block;
+ font-size: 0.8em;
+ font-weight: 400;
+ line-height: 2em;
+ margin: 0 0 8px -1px;
+ margin-inline-end: 16px;
+ padding: 0 10px 0 12px;
+ position: relative;
+}
+
+#R-body .tags a.term-link:before {
+ border-color: transparent;
+ border-style: solid;
+ border-width: 1em 1em 1em 0;
+ content: "";
+ left: -1em;
+ height: 0;
+ position: absolute;
+ top:0;
+ width: 0;
+}
+
+#R-body .tags a.term-link:after {
+ border-radius: 100%;
+ content: "";
+ left: 1px;
+ height: 5px;
+ position: absolute;
+ top: 10px;
+ width: 5px;
+}
+
+#R-body .tags a.term-link:hover:after {
+ width: 5px;
+}
diff --git a/css/theme-auto.css b/css/theme-auto.css
new file mode 100644
index 00000000..37900001
--- /dev/null
+++ b/css/theme-auto.css
@@ -0,0 +1,2 @@
+@import "theme-light.css" screen and (prefers-color-scheme: light);
+@import "theme-dark.css" screen and (prefers-color-scheme: dark);
diff --git a/css/theme-blue.css b/css/theme-blue.css
new file mode 100644
index 00000000..a424fc4f
--- /dev/null
+++ b/css/theme-blue.css
@@ -0,0 +1,41 @@
+:root {
+ --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */
+ --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */
+ --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */
+ --MAIN-LINK-color: rgba( 28, 144, 243, 1 ); /* Color of links */
+ --MAIN-LINK-HOVER-color: rgba( 22, 122, 208, 1 ); /* Color of hovered links */
+ --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */
+
+ --CODE-theme: learn; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */
+ --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */
+ --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */
+ --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* color for inline code background */
+ --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* color of inline code border */
+
+ --MENU-HOME-LINK-color: rgba( 45, 54, 63, 1 ); /* Color of the home button text */
+ --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* Color of the hovered home button text */
+
+ --MENU-HEADER-BG-color: rgba( 28, 144, 243, 1 ); /* Background color of menu header */
+ --MENU-HEADER-BORDER-color: rgba( 51, 161, 255, 1 ); /*Color of menu header border */
+
+ --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */
+ --MENU-SEARCH-BG-color: rgba( 22, 122, 208, 1 ); /* Search field background color (by default borders + icons) */
+ --MENU-SEARCH-BORDER-color: rgba( 51, 161, 255, 1 ); /* Override search field border color */
+
+ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 32, 39, 43, 1 ); /* Background color of the active section and its children */
+ --MENU-SECTIONS-BG-color: rgba( 37, 44, 49, 1 ); /* Background color of other sections */
+ --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */
+ --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */
+
+ --MENU-VISITED-color: rgba( 28, 144, 243, 1 ); /* Color of 'page visited' icons in menu */
+ --MENU-SECTION-SEPARATOR-color: rgba( 32, 39, 43, 1 ); /* Color of separator in menu */
+
+ /* base styling for boxes */
+ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */
+ --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* color of the content background */
+ --BOX-TEXT-color: rgba( 16, 16, 16, 1 ); /* fixed color of the content text */
+}
diff --git a/css/theme-dark.css b/css/theme-dark.css
new file mode 100644
index 00000000..e978fc7f
--- /dev/null
+++ b/css/theme-dark.css
@@ -0,0 +1,21 @@
+@import "theme-relearn-dark.css";
+
+:root {
+ --MENU-HEADER-BG-color: var(--MENU-SECTIONS-BG-color);
+ --MENU-HOME-LINK-color: var(--MENU-SECTIONS-LINK-color);
+ --MENU-HOME-LINK-HOVER-color: var(--MENU-SECTIONS-LINK-HOVER-color);
+
+ --MAIN-LINK-color: rgba( 147, 176, 255, 1 );
+ --MAIN-LINK-HOVER-color: rgba( 120, 150, 250, 1 );
+ --MENU-SECTION-ACTIVE-CATEGORY-color: var(--INTERNAL-MAIN-LINK-color);
+ --MENU-VISITED-color: var(--INTERNAL-MAIN-LINK-color);
+
+ --CODE-theme: github-dark;
+ --CODE-INLINE-color: var(--INTERNAL-MAIN-LINK-color);
+
+ --BOX-BG-color: rgba( 30, 30, 30, 1 );
+}
+
+.light {
+ display: none !important;
+}
diff --git a/css/theme-green.css b/css/theme-green.css
new file mode 100644
index 00000000..fe8a63bd
--- /dev/null
+++ b/css/theme-green.css
@@ -0,0 +1,41 @@
+:root {
+ --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */
+ --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */
+ --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */
+ --MAIN-LINK-color: rgba( 89, 154, 62, 1 ); /* Color of links */
+ --MAIN-LINK-HOVER-color: rgba( 63, 109, 44, 1 ); /* Color of hovered links */
+ --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */
+
+ --CODE-theme: learn; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */
+ --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */
+ --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */
+ --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* color for inline code background */
+ --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* color of inline code border */
+
+ --MENU-HOME-LINK-color: rgba( 46, 59, 46, 1 ); /* Color of the home button text */
+ --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* Color of the hovered home button text */
+
+ --MENU-HEADER-BG-color: rgba( 116, 181, 89, 1 ); /* Background color of menu header */
+ --MENU-HEADER-BORDER-color: rgba( 156, 212, 132, 1 ); /*Color of menu header border */
+
+ --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */
+ --MENU-SEARCH-BG-color: rgba( 89, 154, 62, 1 ); /* Search field background color (by default borders + icons) */
+ --MENU-SEARCH-BORDER-color: rgba( 132, 199, 103, 1 ); /* Override search field border color */
+
+ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 27, 33, 28, 1 ); /* Background color of the active section and its children */
+ --MENU-SECTIONS-BG-color: rgba( 34, 39, 35, 1 ); /* Background color of other sections */
+ --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */
+ --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */
+
+ --MENU-VISITED-color: rgba( 89, 154, 62, 1 ); /* Color of 'page visited' icons in menu */
+ --MENU-SECTION-SEPARATOR-color: rgba( 24, 33, 28, 1 ); /* Color of separator in menu */
+
+ /* base styling for boxes */
+ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */
+ --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* color of the content background */
+ --BOX-TEXT-color: rgba( 16, 16, 16, 1 ); /* fixed color of the content text */
+}
diff --git a/css/theme-learn.css b/css/theme-learn.css
new file mode 100644
index 00000000..ce2a3fb2
--- /dev/null
+++ b/css/theme-learn.css
@@ -0,0 +1,49 @@
+:root {
+ --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */
+ --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */
+ --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */
+ --MAIN-LINK-color: rgba( 0, 189, 243, 1 ); /* Color of links */
+ --MAIN-LINK-HOVER-color: rgba( 0, 130, 167, 1 ); /* Color of hovered links */
+ --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */
+
+ --CODE-theme: learn; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */
+ --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */
+ --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */
+ --CODE-INLINE-BG-color: rgba( 255, 247, 221, 1 ); /* color for inline code background */
+ --CODE-INLINE-BORDER-color: rgba( 251, 240, 203, 1 ); /* color of inline code border */
+
+ --MENU-HOME-LINK-color: rgba( 224, 224, 224, 1 ); /* Color of the home button text */
+ --MENU-HOME-LINK-HOVER-color: rgba( 240, 240, 240, 1 ); /* Color of the hovered home button text */
+
+ --MENU-HEADER-BG-color: rgba( 132, 81, 161, 1 ); /* Background color of menu header */
+ --MENU-HEADER-BORDER-color: rgba( 156, 111, 182, 1 ); /*Color of menu header border */
+
+ --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */
+ --MENU-SEARCH-BG-color: rgba( 118, 72, 144, 1 ); /* Search field background color (by default borders + icons) */
+ --MENU-SEARCH-BORDER-color: rgba( 145, 94, 174, 1 ); /* Override search field border color */
+
+ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 37, 31, 41, 1 ); /* Background color of the active section and its children */
+ --MENU-SECTIONS-BG-color: rgba( 50, 42, 56, 1 ); /* Background color of other sections */
+ --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */
+ --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */
+
+ --MENU-VISITED-color: rgba( 0, 189, 243, 1 ); /* Color of 'page visited' icons in menu */
+ --MENU-SECTION-SEPARATOR-color: rgba( 42, 35, 47, 1 ); /* Color of separator in menu */
+
+ /* base styling for boxes */
+ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */
+ --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* color of the content background */
+ --BOX-TEXT-color: rgba( 16, 16, 16, 1 ); /* fixed color of the content text */
+}
+
+body a#R-logo,
+body a#R-logo:hover,
+body #R-logo svg,
+body #R-logo svg * {
+ color: var(--INTERNAL-MENU-SEARCH-color);
+ fill: var(--INTERNAL-MENU-SEARCH-color) !important;
+}
diff --git a/css/theme-light.css b/css/theme-light.css
new file mode 100644
index 00000000..edd978bd
--- /dev/null
+++ b/css/theme-light.css
@@ -0,0 +1,17 @@
+@import "theme-relearn-light.css";
+
+:root {
+ --MENU-HEADER-BG-color: var(--MENU-SECTIONS-BG-color);
+ --MENU-HOME-LINK-color: var(--MENU-SECTIONS-LINK-color);
+ --MENU-HOME-LINK-HOVER-color: var(--MENU-SECTIONS-LINK-HOVER-color);
+
+ --MENU-VISITED-color: var(--INTERNAL-MAIN-LINK-color);
+
+ --CODE-theme: github;
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 );
+ --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 );
+}
+
+.dark {
+ display: none !important;
+}
diff --git a/css/theme-neon.css b/css/theme-neon.css
new file mode 100644
index 00000000..469c76da
--- /dev/null
+++ b/css/theme-neon.css
@@ -0,0 +1,311 @@
+/* this variant does not work well if we use fallback styles for IE11 so better
+ ignore this variant in IE completely */
+@supports not (-ms-high-contrast:none) {
+
+:root {
+ --PRIMARY-color: rgba( 243, 0, 178, 1 ); /* brand primary color */
+ --SECONDARY-color: rgba( 28, 144, 243, 1 ); /* brand secondary color */
+ --ACCENT-color: rgba( 255, 255, 0, 1 ); /* brand accent color, used for search highlights */
+
+ --MAIN-TEXT-color: rgba( 224, 224, 224, 1 ); /* text color of content and h1 titles */
+ --MAIN-LINK-HOVER-color: rgba( 76, 171, 255, 1 ); /* hovered link color of content */
+ --MAIN-BG-color: rgba( 16, 16, 16, 1 ); /* background color of content */
+
+ /* optional overwrites for specific headers */
+ --MAIN-TITLES-TEXT-color: rgba( 243, 0, 178, 1 ); /* text color of h2-h6 titles and transparent box titles */
+ --MAIN-TITLES-H3-color: rgba( 0, 243, 211, 1 ); /* text color of h3-h6 titles */
+ --MAIN-TITLES-H4-color: rgba( 255, 255, 0, 1 ); /* text color of h4-h6 titles */
+
+ --CODE-theme: neon; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 248, 248, 242, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: rgba( 0, 0, 0, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-INLINE-color: rgba( 130, 229, 80, 1 ); /* text color of inline code */
+ --CODE-INLINE-BG-color: rgba( 40, 42, 54, 1 ); /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgba( 70, 70, 70, 1 ); /* 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 hugo.toml */
+ --OPENAPI-theme: dark; /* name of the default OpenAPI theme for this variant, can be overridden in hugo.toml */
+ --OPENAPI-CODE-theme: tomorrow-night; /* name of the default OpenAPI code theme for this variant, can be overridden in hugo.toml */
+
+ --MENU-HEADER-BG-color: rgba( 0, 0, 0, 0 ); /* background color of menu header */
+
+ --MENU-HOME-LINK-color: rgba( 255, 255, 255, 1 ); /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: rgba( 208, 208, 208, 1 ); /* hovered home button color if configured */
+
+ --MENU-SEARCH-color: rgba( 248, 248, 248, 1 ); /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba( 16, 16, 16, .6 ); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: rgba( 232, 232, 232, 1 ); /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: linear-gradient( 165deg, rgba( 243, 0, 178, .825 ) 0%, rgba( 28, 144, 243, .7 ) 65%, rgba( 0, 227, 211, .7 ) 100% ); /* 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( 0, 0, 0, .166 ); /* background color of the active menu section */
+ --MENU-SECTIONS-LINK-color: rgba( 255, 255, 255, 1 ); /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 208, 208, 208, 1 ); /* hovered link color of menu topics */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 86, 255, 232, 1 ); /* text color of the displayed menu topic */
+ --MENU-SECTION-SEPARATOR-color: rgba( 186, 186, 186, 1 ); /* separator color between menu sections and menu footer */
+
+ --MENU-VISITED-color: rgba( 51, 161, 255, 1 ); /* icon color of visited menu topics if configured */
+
+ /* base styling for boxes */
+ --BOX-CAPTION-color: rgba( 240, 240, 240, 1 ); /* text color of colored box titles */
+ --BOX-BG-color: rgba( 8, 8, 8, 1 ); /* background color of colored boxes */
+ --BOX-TEXT-color: initial; /* text color of colored box content */
+
+ /* optional base colors for colored boxes as in attachments, badges, buttons and notice shortcode */
+ --BOX-BLUE-color: rgba( 48, 117, 229, 1 ); /* background color of blue boxes */
+ --BOX-BLUE-TEXT-color: var( --BOX-BLUE-color ); /* text color of blue boxes */
+ --BOX-GREEN-color: rgba( 42, 178, 24, 1 ); /* background color of green boxes */
+ --BOX-GREEN-TEXT-color: var( --BOX-GREEN-color ); /* text color of green boxes */
+ --BOX-GREY-color: rgba( 128, 128, 128, 1 ); /* background color of grey boxes */
+ --BOX-GREY-TEXT-color: var( --BOX-GREY-color ); /* text color of grey boxes */
+ --BOX-ORANGE-color: rgba( 237, 153, 9, 1 ); /* background color of orange boxes */
+ --BOX-ORANGE-TEXT-color: var( --BOX-ORANGE-color ); /* text color of orange boxes */
+ --BOX-RED-color: rgba( 224, 62, 62, 1 ); /* background color of red boxes */
+ --BOX-RED-TEXT-color: var( --BOX-RED-color ); /* text color of red boxes */
+}
+
+body a#R-logo,
+body a#R-logo:hover,
+body #R-logo svg,
+body #R-logo svg * {
+ color: var(--INTERNAL-MENU-SEARCH-BORDER-color);
+ fill: var(--INTERNAL-MENU-SEARCH-BORDER-color) !important;
+}
+
+body a#R-logo{
+ text-shadow:
+ 0 0 1px var(--INTERNAL-MENU-SEARCH-BORDER-color),
+ 0 0 2px var(--INTERNAL-MENU-SEARCH-BORDER-color),
+ 0 0 4px var(--INTERNAL-MENU-SEARCH-BORDER-color),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color),
+ 0 0 8px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color);
+}
+
+body h1 {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 4px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 255, 255, 255, 1 ),
+ 0 0 3px var(--INTERNAL-MAIN-TITLES-H1-color),
+ 0 0 6px var(--INTERNAL-MAIN-TITLES-H1-color),
+ 0 0 8px var(--INTERNAL-MAIN-TITLES-H1-color);
+}
+
+body h2 {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MAIN-TITLES-H2-color),
+ 0 0 8px var(--INTERNAL-MAIN-TITLES-H2-color),
+ 0 0 10px var(--INTERNAL-MAIN-TITLES-H2-color);
+}
+
+body h3, body .article-subheading {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MAIN-TITLES-H3-color),
+ 0 0 8px var(--INTERNAL-MAIN-TITLES-H3-color),
+ 0 0 10px var(--INTERNAL-MAIN-TITLES-H3-color);
+}
+
+body h4 {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MAIN-TITLES-H4-color),
+ 0 0 8px var(--INTERNAL-MAIN-TITLES-H4-color),
+ 0 0 10px var(--INTERNAL-MAIN-TITLES-H4-color);
+}
+
+body h5 {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 3px rgba( 255, 255, 255, 1 ),
+ 0 0 6px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MAIN-TITLES-H5-color),
+ 0 0 8px var(--INTERNAL-MAIN-TITLES-H5-color);
+}
+
+body h6 {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 4px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MAIN-TITLES-H6-color),
+ 0 0 8px var(--INTERNAL-MAIN-TITLES-H6-color);
+}
+
+.swagger-ui h4,
+.swagger-ui h5,
+.swagger-ui h6{
+ color: rgba( 255, 255, 255, 1 ) !important;
+}
+
+body #R-sidebar .searchbox button:hover{
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MENU-SEARCH-color),
+ 0 0 8px var(--INTERNAL-MENU-SEARCH-color);
+}
+
+body #R-sidebar select:hover,
+body #R-sidebar .collapsible-menu li:not(.active) > label:hover,
+body #R-sidebar .menu-control:hover,
+body #R-sidebar a:hover {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color),
+ 0 0 8px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color);
+}
+
+body #R-sidebar li.active > label,
+body #R-sidebar li.active > :is( a, span ) {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color),
+ 0 0 8px var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color);
+}
+
+body #R-homelinks a:hover {
+ color: rgba( 255, 255, 255, 1 );
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 8px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--INTERNAL-MENU-HOME-LINK-HOVER-color),
+ 0 0 8px var(--INTERNAL-MENU-HOME-LINK-HOVER-color);
+}
+
+body h1 a,
+body h2 a,
+body h3 a,
+body h4 a,
+body h5 a,
+body h6 a,
+body .anchor {
+ text-shadow: none;
+}
+
+body .badge,
+body .btn,
+body div.box {
+ box-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 4px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--VARIABLE-BOX-color);
+}
+
+body .badge > .badge-content,
+body .btn,
+body .btn > *,
+body div.box > .box-label {
+ text-shadow:
+ 0 0 1px rgba( 255, 255, 255, 1 ),
+ 0 0 2px rgba( 255, 255, 255, 1 ),
+ 0 0 4px rgba( 128, 128, 128, 1 ),
+ 0 0 4px var(--VARIABLE-BOX-CAPTION-color);
+}
+
+body .tab-panel-cstyle:not(.transparent),
+body .badge.cstyle:not(.transparent),
+body .btn.cstyle {
+ --VARIABLE-BOX-TEXT-color: var(--VARIABLE-BOX-CAPTION-color);
+}
+
+body .badge.cstyle.transparent,
+body .btn.cstyle.transparent {
+ --VARIABLE-BOX-BG-color: var(--INTERNAL-BOX-BG-color);
+}
+
+body .btn.cstyle.transparent > * {
+ border-color: var(--VARIABLE-BOX-color);
+ color: var(--VARIABLE-BOX-CAPTION-color);
+}
+
+body .btn.cstyle.interactive.transparent > *:hover,
+body .btn.cstyle.interactive.transparent > *:active,
+body .btn.cstyle.interactive.transparent > *:focus {
+ background-color: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+body .box.cstyle.transparent {
+ box-shadow: none;
+}
+
+@media print {
+ #R-body h1,
+ #R-body h2,
+ #R-body h3, #R-body .article-subheading,
+ #R-body h4,
+ #R-body h5,
+ #R-body h6 {
+ text-shadow: none;
+ }
+ #R-body .badge,
+ #R-body .badge > .badge-content,
+ #R-body .btn,
+ #R-body .btn > *,
+ #R-body div.box,
+ #R-body div.box > .box-label {
+ box-shadow: none;
+ text-shadow: none;
+ }
+ #R-body .badge.cstyle:not(.transparent),
+ #R-body .btn.cstyle {
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-NEUTRAL-TEXT-color);
+ }
+}
+
+/* if we are in print chapter preview our @media statement from
+above will not apply, so we have to repeat it here */
+.print #R-body h1,
+.print #R-body h2,
+.print #R-body h3, .print #R-body .article-subheading,
+.print #R-body h4,
+.print #R-body h5,
+.print #R-body h6 {
+ text-shadow: none;
+}
+.print #R-body .badge,
+.print #R-body .badge > .badge-content,
+.print #R-body .btn,
+.print #R-body .btn > *,
+.print #R-body div.box,
+.print #R-body div.box > .box-label {
+ box-shadow: none;
+ text-shadow: none;
+}
+.print #R-body .badge.cstyle:not(.transparent),
+.print #R-body .btn.cstyle {
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-NEUTRAL-TEXT-color);
+}
+
+#R-content-wrapper {
+ --ps-thumb-color: rgba( 208, 208, 208, 1 );
+ --ps-thumb-hover-color: rgba( 204, 204, 204, 1 );
+}
+
+}
diff --git a/css/theme-red.css b/css/theme-red.css
new file mode 100644
index 00000000..1efcc07c
--- /dev/null
+++ b/css/theme-red.css
@@ -0,0 +1,41 @@
+:root {
+ --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */
+ --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */
+ --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */
+ --MAIN-LINK-color: rgba( 243, 28, 28, 1 ); /* Color of links */
+ --MAIN-LINK-HOVER-color: rgba( 208, 22, 22, 1 ); /* Color of hovered links */
+ --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */
+
+ --CODE-theme: learn; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */
+ --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */
+ --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */
+ --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* color for inline code background */
+ --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* color of inline code border */
+
+ --MENU-HOME-LINK-color: rgba( 56, 43, 43, 1 ); /* Color of the home button text */
+ --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* Color of the hovered home button text */
+
+ --MENU-HEADER-BG-color: rgba( 220, 16, 16, 1 ); /* Background color of menu header */
+ --MENU-HEADER-BORDER-color: rgba( 226, 49, 49, 1 ); /*Color of menu header border */
+
+ --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */
+ --MENU-SEARCH-BG-color: rgba( 185, 0, 0, 1 ); /* Search field background color (by default borders + icons) */
+ --MENU-SEARCH-BORDER-color: rgba( 239, 32, 32, 1 ); /* Override search field border color */
+
+ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 43, 32, 32, 1 ); /* Background color of the active section and its children */
+ --MENU-SECTIONS-BG-color: rgba( 49, 37, 37, 1 ); /* Background color of other sections */
+ --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */
+ --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */
+
+ --MENU-VISITED-color: rgba( 243, 28, 28, 1 ); /* Color of 'page visited' icons in menu */
+ --MENU-SECTION-SEPARATOR-color: rgba( 43, 32, 32, 1 ); /* Color of separator in menu */
+
+ /* base styling for boxes */
+ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */
+ --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* color of the content background */
+ --BOX-TEXT-color: rgba( 16, 16, 16, 1 ); /* fixed color of the content text */
+}
diff --git a/css/theme-relearn-bright.css b/css/theme-relearn-bright.css
new file mode 100644
index 00000000..76eb3a42
--- /dev/null
+++ b/css/theme-relearn-bright.css
@@ -0,0 +1,52 @@
+:root {
+ --PRIMARY-color: rgba( 131, 201, 50, 1 ); /* brand primary color */
+ --SECONDARY-color: rgba( 99, 128, 208, 1 ); /* brand secondary color */
+ --ACCENT-color: rgba( 255, 136, 255, 1 ); /* brand accent color, used for search highlights */
+
+ --MAIN-TEXT-color: rgba( 0, 0, 0, 1 ); /* text color of content and h1 titles */
+ --MAIN-LINK-HOVER-color: rgba( 32, 40, 145, 1 ); /* hovered link color of content */
+ --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* background color of content */
+ --MAIN-TITLES-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of h2-h6 titles and transparent box titles */
+
+ --CODE-theme: relearn-light; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 39, 40, 34, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: rgba( 250, 250, 250, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BORDER-color: rgba( 216, 216, 216, 1 ); /* border color of block code */
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* text color of inline code */
+ --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* 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 hugo.toml */
+ --OPENAPI-theme: light; /* name of the default OpenAPI theme for this variant, can be overridden in hugo.toml */
+ --OPENAPI-CODE-theme: idea; /* name of the default OpenAPI code theme for this variant, can be overridden in hugo.toml */
+
+ --MENU-HEADER-BG-color: rgba( 0, 0, 0, 0 ); /* background color of menu header */
+ --MENU-HEADER-SEPARATOR-color: rgba( 96, 96, 96, 1 ); /* separator color between menu header and menu */
+
+ --MENU-HOME-LINK-color: rgba( 64, 64, 64, 1 ); /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* hovered home button color if configured */
+
+ --MENU-SEARCH-color: rgba( 64, 64, 64, 1 ); /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba( 255, 255, 255, .2 ); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: transparent; /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: rgba( 131, 201, 50, 1 ); /* 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: transparent; /* background color of the active menu section */
+ --MENU-SECTIONS-LINK-color: rgba( 50, 50, 50, 1 ); /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 255, 255, 255, 1 ); /* hovered link color of menu topics */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 50, 50, 50, 1 ); /* text color of the displayed menu topic */
+ --MENU-SECTION-SEPARATOR-color: rgba( 96, 96, 96, 1 ); /* separator color between menu sections and 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 */
+}
+
+body a#R-logo,
+body a#R-logo:hover,
+body #R-logo svg,
+body #R-logo svg * {
+ color: var(--MENU-SEARCH-color);
+ fill: var(--MENU-SEARCH-color) !important;
+}
diff --git a/css/theme-relearn-dark.css b/css/theme-relearn-dark.css
new file mode 100644
index 00000000..d607b8df
--- /dev/null
+++ b/css/theme-relearn-dark.css
@@ -0,0 +1,43 @@
+:root {
+ --PRIMARY-color: rgba( 125, 201, 3, 1 ); /* brand primary color */
+ --SECONDARY-color: rgba( 108, 140, 227, 1 ); /* brand secondary color */
+ --ACCENT-color: rgba( 255, 68, 255, 1 ); /* brand accent color, used for search highlights */
+
+ --MAIN-TEXT-color: rgba( 224, 224, 224, 1 ); /* text color of content and h1 titles */
+ --MAIN-LINK-HOVER-color: rgba( 147, 176, 255, 1 ); /* hovered link color of content */
+ --MAIN-BG-color: rgba( 32, 32, 32, 1 ); /* background color of content */
+ --MAIN-TITLES-TEXT-color: rgba( 255, 255, 255, 1 ); /* text color of h2-h6 titles and transparent box titles */
+
+ --CODE-theme: relearn-dark; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 248, 248, 242, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: rgba( 43, 43, 43, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BORDER-color: rgba( 71, 71, 71, 1 ); /* border color of block code */
+ --CODE-INLINE-color: rgba( 130, 229, 80, 1 ); /* text color of inline code */
+ --CODE-INLINE-BG-color: rgba( 45, 45, 45, 1 ); /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgba( 70, 70, 70, 1 ); /* 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 hugo.toml */
+ --OPENAPI-theme: dark; /* name of the default OpenAPI theme for this variant, can be overridden in hugo.toml */
+ --OPENAPI-CODE-theme: obsidian; /* name of the default OpenAPI code theme for this variant, can be overridden in hugo.toml */
+
+ --MENU-HOME-LINK-color: rgba( 64, 64, 64, 1 ); /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* hovered home button color if configured */
+
+ --MENU-SEARCH-color: rgba( 224, 224, 224, 1 ); /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba( 50, 50, 50, 1 ); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: rgba( 224, 224, 224, 1 ); /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: rgba( 43, 43, 43, 1 ); /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */
+ --MENU-SECTIONS-LINK-color: rgba( 186, 186, 186, 1 ); /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 255, 255, 255, 1 ); /* hovered link color of menu topics */
+ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 50, 50, 50, 1 ); /* background color of the active menu section */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 130, 229, 80, 1 ); /* text color of the displayed menu topic */
+ --MENU-SECTION-SEPARATOR-color: rgba( 96, 96, 96, 1 ); /* separator color between menu sections and menu footer */
+
+ --MENU-VISITED-color: rgba( 72, 106, 201, 1 ); /* icon color of visited menu topics if configured */
+
+ --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: rgba( 224, 224, 224, 1 ); /* text color of colored box content */
+}
diff --git a/css/theme-relearn-light.css b/css/theme-relearn-light.css
new file mode 100644
index 00000000..9eac02cf
--- /dev/null
+++ b/css/theme-relearn-light.css
@@ -0,0 +1,41 @@
+:root {
+ --PRIMARY-color: rgba( 125, 201, 3, 1 ); /* brand primary color */
+ --SECONDARY-color: rgba( 72, 106, 201, 1 ); /* brand secondary color */
+ --ACCENT-color: rgba( 255, 136, 255, 1 ); /* brand accent color, used for search highlights */
+
+ --MAIN-TEXT-color: rgba( 0, 0, 0, 1 ); /* text color of content and h1 titles */
+ --MAIN-LINK-HOVER-color: rgba( 32, 40, 145, 1 ); /* hovered link color of content */
+ --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* background color of content */
+ --MAIN-TITLES-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of h2-h6 titles and transparent box titles */
+
+ --CODE-theme: relearn-light; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 39, 40, 34, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: rgba( 250, 250, 250, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BORDER-color: rgba( 216, 216, 216, 1 ); /* border color of block code */
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* text color of inline code */
+ --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* 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 hugo.toml */
+ --OPENAPI-theme: light; /* name of the default OpenAPI theme for this variant, can be overridden in hugo.toml */
+ --OPENAPI-CODE-theme: idea; /* name of the default OpenAPI code theme for this variant, can be overridden in hugo.toml */
+
+ --MENU-HOME-LINK-color: rgba( 64, 64, 64, 1 ); /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* hovered home button color if configured */
+
+ --MENU-SEARCH-color: rgba( 224, 224, 224, 1 ); /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba( 50, 50, 50, 1 ); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: rgba( 224, 224, 224, 1 ); /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: rgba( 40, 40, 40, 1 ); /* 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( 0, 0, 0, .166 ); /* background color of the active menu section */
+ --MENU-SECTIONS-LINK-color: rgba( 186, 186, 186, 1 ); /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 255, 255, 255, 1 ); /* hovered link color of menu topics */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 68, 68, 68, 1 ); /* text color of the displayed menu topic */
+ --MENU-SECTION-SEPARATOR-color: rgba( 96, 96, 96, 1 ); /* separator color between menu sections and 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 */
+}
diff --git a/css/theme-relearn.css b/css/theme-relearn.css
new file mode 100644
index 00000000..36aae7a5
--- /dev/null
+++ b/css/theme-relearn.css
@@ -0,0 +1,3 @@
+/* this file is here for compatiblity with older installations
+ use theme-relearn-light instead */
+@import "theme-relearn-light.css";
diff --git a/css/theme-zen-dark.css b/css/theme-zen-dark.css
new file mode 100644
index 00000000..f3d8eed0
--- /dev/null
+++ b/css/theme-zen-dark.css
@@ -0,0 +1,59 @@
+:root {
+ --PRIMARY-color: rgba( 47, 129, 235, 1 ); /* brand primary color */
+ --SECONDARY-color: rgba( 47, 129, 235, 1 ); /* brand secondary color */
+
+ --MAIN-TOPBAR-BORDER-color: rgba( 71, 71, 71, 1 ); /* border color between topbar and content */
+ --MAIN-LINK-HOVER-color: rgb(112, 174, 245); /* hovered link color of content */
+ --MAIN-BG-color: rgba( 32, 32, 32, 1 ); /* background color of content */
+ --MAIN-TEXT-color: rgba( 224, 224, 224, 1 ); /* text color of content and h1 titles */
+ --MAIN-TITLES-TEXT-color: rgba( 255, 255, 255, 1 ); /* text color of h2-h6 titles and transparent box titles */
+
+ --CODE-theme: relearn-dark; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 248, 248, 242, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: rgba( 43, 43, 43, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BORDER-color: rgba( 71, 71, 71, 1 ); /* border color of block code */
+ --CODE-INLINE-color: rgba( 130, 229, 80, 1 ); /* text color of inline code */
+ --CODE-INLINE-BG-color: rgba( 45, 45, 45, 1 ); /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgba( 71, 71, 71, 1 ); /* 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 hugo.toml */
+ --OPENAPI-theme: dark; /* name of the default OpenAPI theme for this variant, can be overridden in hugo.toml */
+ --OPENAPI-CODE-theme: obsidian; /* name of the default OpenAPI code theme for this variant, can be overridden in hugo.toml */
+
+ --MENU-BORDER-color: rgba( 71, 71, 71, 1 ); /* border color between menu and content */
+ --MENU-TOPBAR-BORDER-color: rgba( 39, 39, 39, 1 ); /* separator color of vertical line between menu and topbar */
+ --MENU-TOPBAR-SEPARATOR-color: rgba( 71, 71, 71, 1 ); /* separator color of vertical line between menu and topbar */
+ --MENU-HEADER-BG-color: transparent; /* background color of menu header */
+ --MENU-HEADER-BORDER-color: transparent; /* border color between menu header and menu */
+ --MENU-HEADER-SEPARATOR-color: rgba( 71, 71, 71, .66 ); /* separator color between menu header and menu */
+
+ --MENU-HOME-LINK-color: rgba( 224, 224, 224, 1 ); /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: rgba( 47, 129, 235, 1 ); /* hovered home button color if configured */
+
+ --MENU-SEARCH-color: rgba( 47, 129, 235, 1 ); /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba( 32, 32, 32, 1 ); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: rgba( 71, 71, 71, .66 ); /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: rgba( 39, 39, 39, 1 ); /* 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: transparent; /* background color of the active menu section */
+ --MENU-SECTIONS-LINK-color: rgba( 224, 224, 224, .75 ); /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 47, 129, 235, 1 ); /* hoverd link color of menu topics */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 47, 129, 235, 1 ); /* text color of the displayed menu topic */
+ --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 32, 32, 32, 1 ); /* background color of the displayed menu topic */
+ --MENU-SECTION-SEPARATOR-color: rgba( 71, 71, 71, .66 ); /* separator color between menu sections and 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: rgba( 224, 224, 224, 1 ); /* text color of colored box content */
+
+ --BOX-GREY-color: rgba( 71, 71, 71, 1 ); /* background color of grey boxes */
+}
+
+body a#R-logo,
+body a#R-logo:hover,
+body #R-logo svg,
+body #R-logo svg * {
+ color: var(--MENU-HOME-LINK-color);
+ fill: var(--MENU-HOME-LINK-color) !important;
+}
diff --git a/css/theme-zen-light.css b/css/theme-zen-light.css
new file mode 100644
index 00000000..4da24f98
--- /dev/null
+++ b/css/theme-zen-light.css
@@ -0,0 +1,59 @@
+:root {
+ --PRIMARY-color: rgba( 26, 115, 232, 1 ); /* brand primary color */
+ --SECONDARY-color: rgba( 26, 115, 232, 1 ); /* brand secondary color */
+
+ --MAIN-TOPBAR-BORDER-color: rgba( 210, 210, 210, 1 ); /* border color between topbar and content */
+ --MAIN-LINK-HOVER-color: rgba( 32, 40, 145, 1 ); /* hoverd link color of content */
+ --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* background color of content */
+ --MAIN-TEXT-color: rgba( 0, 0, 0, 1 ); /* text color of content and h1 titles */
+ --MAIN-TITLES-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of h2-h6 titles and transparent box titles */
+
+ --CODE-theme: relearn-light; /* name of the chroma stylesheet file */
+ --CODE-BLOCK-color: rgba( 39, 40, 34, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BG-color: rgba( 250, 250, 250, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */
+ --CODE-BLOCK-BORDER-color: rgba( 210, 210, 210, 1 ); /* border color of block code */
+ --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* text color of inline code */
+ --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* background color of inline code */
+ --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* 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 hugo.toml */
+ --OPENAPI-theme: light; /* name of the default OpenAPI theme for this variant, can be overridden in hugo.toml */
+ --OPENAPI-CODE-theme: idea; /* name of the default OpenAPI code theme for this variant, can be overridden in hugo.toml */
+
+ --MENU-BORDER-color: rgba( 210, 210, 210, 1 ); /* border color between menu and content */
+ --MENU-TOPBAR-BORDER-color: rgba( 247, 247, 247, 1 ); /* border color of vertical line between menu and topbar */
+ --MENU-TOPBAR-SEPARATOR-color: rgba( 210, 210, 210, 1 ); /* separator color of vertical line between menu and topbar */
+ --MENU-HEADER-BG-color: transparent; /* background color of menu header */
+ --MENU-HEADER-BORDER-color: transparent; /* border color between menu header and menu */
+ --MENU-HEADER-SEPARATOR-color: rgba( 210, 210, 210, .66 ); /* separator color between menu header and menu */
+
+ --MENU-HOME-LINK-color: rgba( 64, 64, 64, 1 ); /* home button color if configured */
+ --MENU-HOME-LINK-HOVER-color: rgba( 26, 115, 232, 1 ); /* hoverd home button color if configured */
+
+ --MENU-SEARCH-color: rgba( 26, 115, 232, 1 ); /* text and icon color of search box */
+ --MENU-SEARCH-BG-color: rgba( 255, 255, 255, 1 ); /* background color of search box */
+ --MENU-SEARCH-BORDER-color: rgba( 210, 210, 210, .66 ); /* border color of search box */
+
+ --MENU-SECTIONS-BG-color: rgba( 134, 134, 134, .066 ); /* 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: transparent; /* background color of the active menu section */
+ --MENU-SECTIONS-LINK-color: rgba( 16, 16, 16, 1 ); /* link color of menu topics */
+ --MENU-SECTIONS-LINK-HOVER-color: rgba( 26, 115, 232, 1 ); /* hoverd link color of menu topics */
+ --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 26, 115, 232, 1 ); /* text color of the displayed menu topic */
+ --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* background color of the displayed menu topic */
+ --MENU-SECTION-SEPARATOR-color: rgba( 210, 210, 210, .66 ); /* separator color between menu sections and 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-GREY-color: rgba( 210, 210, 210, 1 ); /* background color of grey boxes */
+}
+
+body a#R-logo,
+body a#R-logo:hover,
+body #R-logo svg,
+body #R-logo svg * {
+ color: var(--MENU-HOME-LINK-color);
+ fill: var(--MENU-HOME-LINK-color) !important;
+}
diff --git a/css/theme.css b/css/theme.css
new file mode 100644
index 00000000..77b32dfb
--- /dev/null
+++ b/css/theme.css
@@ -0,0 +1,2287 @@
+@charset "UTF-8";
+
+@import "tags.css";
+
+/* until browsers don't let us set length values based on dppx, we
+need a way to calculate them ourself */
+:root {
+ --dpr: 1;
+ --bpx: 1;
+ --bpx1: 1;
+}
+@media (min-resolution: 105dpi) {
+ :root {
+ --dpr: 1.1;
+ --bpx: 1.1;
+ --bpx1: calc(1/1.1);
+ }
+}
+@media (min-resolution: 115dpi) {
+ :root {
+ --dpr: 1.2;
+ --bpx: 1.2;
+ --bpx1: calc(1/1.2);
+ }
+}
+@media (min-resolution: 120dpi) {
+ :root {
+ --dpr: 1.25;
+ --bpx: 1.25;
+ --bpx1: calc(1/1.25);
+ }
+}
+@media (min-resolution: 128dpi) {
+ :root {
+ --dpr: 1.333;
+ --bpx: 1.333;
+ --bpx1: calc(1/1.333);
+ }
+}
+@media (min-resolution: 144dpi) {
+ :root {
+ --dpr: 1.5;
+ --bpx: 1.5;
+ --bpx1: calc(1/1.5);
+ }
+}
+@media (min-resolution: 160dpi) {
+ :root {
+ --dpr: 1.666;
+ --bpx: 1.666;
+ --bpx1: calc(1/1.666);
+ }
+}
+@media (min-resolution: 168dpi) {
+ :root {
+ --dpr: 1.75;
+ --bpx: 1.75;
+ --bpx1: calc(1/1.75);
+ }
+}
+@media (min-resolution: 192dpi) {
+ :root {
+ --dpr: 2;
+ --bpx: 1;
+ --bpx1: 1;
+ }
+}
+@media (min-resolution: 240dpi) {
+ :root {
+ --dpr: 2.5;
+ --bpx: 1.25;
+ --bpx1: calc(1/1.25);
+ }
+}
+@media (min-resolution: 288dpi) {
+ :root {
+ --dpr: 3;
+ --bpx: 1;
+ --bpx1: 1;
+ }
+}
+@media (min-resolution: 384dpi) {
+ :root {
+ --dpr: 4;
+ --bpx: 1;
+ --bpx1: 1;
+ }
+}
+@media (min-resolution: 480dpi) {
+ :root {
+ --dpr: 5;
+ --bpx: 1.25;
+ --bpx1: calc(1/1.25);
+ }
+}
+@media (min-resolution: 576dpi) {
+ :root {
+ --dpr: 6;
+ --bpx: 1.5;
+ --bpx1: calc(1/1.5);
+ }
+}
+@media (min-resolution: 768dpi) {
+ :root {
+ --dpr: 8;
+ --bpx: 1;
+ --bpx1: 1;
+ }
+}
+
+html {
+ height: 100%;
+ width: 100%;
+}
+
+body {
+ display: flex;
+ flex-direction: row-reverse; /* IE11 to allow body to have initial focus for PS and better SEO and a11y */
+ font-size: 1.015625rem;
+ font-weight: 300;
+ height: 100%;
+ justify-content: flex-end;
+ line-height: 1.574;
+ /* overflow: hidden; PSC removed for #242 #243 #244; to avoid browser scrollbar to flicker before we create our own */
+ width: 100%;
+}
+
+b,
+strong,
+label,
+th {
+ font-weight: 600;
+}
+
+ul {
+ list-style: disc;
+}
+
+dt {
+ font-style: italic;
+}
+
+dd {
+ display: list-item;
+ list-style: circle;
+}
+
+.default-animation{
+ transition: all 0.35s ease;
+}
+
+#R-sidebar {
+ display: flex;
+ flex-basis: auto;
+ flex-direction: column;
+ flex-grow: 0;
+ flex-shrink: 0;
+ font-size: .953125rem;
+ height: 100%;
+ inset-inline-start: 0;
+ line-height: 1.574;
+ min-height: 100%;
+ position: fixed;
+ min-width: var(--INTERNAL-MENU-WIDTH-L);
+ max-width: var(--INTERNAL-MENU-WIDTH-L);
+ width: var(--INTERNAL-MENU-WIDTH-L);
+}
+
+#R-sidebar a{
+ text-decoration: none;
+}
+
+#R-header-wrapper {
+ text-align: center;
+ padding: 1rem;
+ position: relative;
+}
+#R-header {
+ border-block-end: 1px solid transparent;
+ position: relative;
+ z-index: 1;
+}
+#R-header a {
+ display: inline-block;
+}
+
+.searchbox {
+ border-radius: 4px;
+ border-style: solid;
+ border-width: 1px;
+ position: relative;
+ margin-top: 1rem;
+}
+
+.searchbox > :first-child {
+ inset-inline-start: .5rem;
+ position: absolute;
+}
+
+.searchbox > button {
+ -webkit-appearance: none;
+ appearance: none;
+ background-color: transparent;
+ border: 0;
+ margin: 0;
+ padding: 0;
+ top: .25rem;
+}
+
+.searchbox > i {
+ top: .45rem;
+}
+
+.searchbox > :last-child {
+ inset-inline-end: .5rem;
+ position: absolute;
+}
+
+#R-sidebar .searchbox > :first-child,
+#R-sidebar .searchbox > :last-child{
+ opacity: .65;
+}
+
+#R-sidebar .searchbox button:hover {
+ opacity: 1;
+}
+
+.searchbox input {
+ display: inline-block;
+ width: 100%;
+ height: 1.875rem;
+ background: transparent;
+ border: 0;
+ padding-bottom: 0;
+ padding-inline-end: 1.6rem;
+ padding-inline-start: 1.8rem;
+ padding-top: 0;
+ margin: 0;
+ font-weight: 300;
+}
+
+.searchbox input::placeholder {
+ opacity: .45;
+}
+
+#R-content-wrapper {
+ --ps-rail-hover-color: rgba( 176, 176, 176, .25 );
+ display: flex;
+ flex-direction: column;
+ flex: 1; /* fill rest of vertical space */
+ overflow: hidden;
+ position: relative; /* PS */
+ z-index: 100;
+}
+
+#R-sidebar .padding {
+ padding: 0 1rem;
+}
+
+.footerFooter {
+ font-size: .8125rem;
+ padding-top: 2rem;
+ padding-bottom: .75rem;
+ text-align: center;
+}
+
+.footerFooter > * {
+ margin: 0 auto;
+}
+
+#R-footer > hr:first-child {
+ margin-top: 0;
+}
+
+/* increase specifity to override following #R-content-wrapper hr style */
+#R-footer > hr:nth-child(n) {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+#R-sidebar ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+#R-sidebar ul li {
+ padding: 0;
+}
+
+#R-sidebar ul li.visited + span {
+ margin-inline-end: 1rem;
+}
+
+#R-sidebar ul li .read-icon {
+ display: none;
+ font-size: .8125rem;
+ inset-inline-end: 1rem;
+ margin: .25rem 0 0 0;
+ min-width: 1rem;
+ position: absolute;
+}
+
+#R-sidebar ul li.visited > a .read-icon {
+ display: inline;
+}
+
+#R-sidebar .nav-title {
+ font-size: 2rem;
+ font-weight: 200;
+ letter-spacing: -.02175em;
+ line-height: 110%;
+ margin: 1.2rem 0 .8rem 0;
+ padding-inline-start: 1rem;
+ text-rendering: optimizeLegibility;
+ text-transform: uppercase;
+}
+
+#R-sidebar .footermargin {
+ flex-grow: 1;
+}
+
+#R-content-wrapper hr {
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ margin: 1.5rem 1rem 1rem 1rem;
+}
+
+#R-body {
+ display: flex;
+ flex-basis: 100%;
+ flex-direction: column;
+ flex-grow: 1;
+ flex-shrink: 0;
+ height: 100%;
+ margin-inline-start: var(--INTERNAL-MENU-WIDTH-L);
+ min-height: 100%;
+ overflow-wrap: break-word; /* avoid x-scrolling of body if it is to large to fit */
+ position: relative; /* PS */
+ min-width: calc( 100% - var(--INTERNAL-MENU-WIDTH-L) );
+ max-width: calc( 100% - var(--INTERNAL-MENU-WIDTH-L) );
+ width: calc( 100% - var(--INTERNAL-MENU-WIDTH-L) );
+ z-index: 70;
+}
+
+#R-body img,
+#R-body figure > figcaption > h4,
+#R-body figure > figcaption > p,
+#R-body .video-container {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ padding: 0;
+ text-align: center;
+}
+
+#R-body img:not(.lightbox-image).left {
+ margin-left: 0;
+}
+
+#R-body img:not(.lightbox-image).right {
+ margin-right: 0;
+}
+
+#R-body img:not(.lightbox-image).border,
+#R-body .video-container.border {
+ background-clip: padding-box;
+ border: 1px solid rgba( 134, 134, 134, .333 );
+}
+
+#R-body img:not(.lightbox-image).shadow,
+#R-body .video-container.shadow {
+ box-shadow: 0 10px 30px rgba( 176, 176, 176, .666 );
+}
+
+#R-body img:not(.lightbox-image).inline {
+ display: inline;
+ margin: 0;
+ vertical-align: bottom;
+}
+
+#R-body figure > figcaption{
+ margin: 0;
+}
+
+#R-body figure > figcaption > h4{
+ font-size: 1.0rem;
+ font-weight: 500;
+ margin: 0;
+}
+
+#R-body figure > figcaption > p{
+ font-size: .85rem;
+ font-weight: 300;
+ margin-top: .15rem;
+}
+#R-body figure > figcaption > h4 + p{
+ margin-top: 0;
+}
+
+#R-body-inner {
+ display: flex;
+ flex: auto;
+ flex-direction: column;
+ overflow-y: auto;
+ padding: 0 3.25rem 4rem 3.25rem;
+ position: relative; /* PS */
+}
+@media screen and (max-width: 59.999rem) {
+ #R-body-inner {
+ padding: 0 2rem 1rem 2rem;
+ }
+}
+@media screen and (max-width: 47.999rem) {
+ #R-body-inner {
+ padding: 0 1.25rem .375rem 1.25rem;
+ }
+}
+
+#R-topbar a:hover:empty,
+#R-topbar a:active:empty,
+#R-topbar a:focus:empty,
+#R-topbar a:hover :not(i),
+#R-topbar a:active :not(i),
+#R-topbar a:focus :not(i),
+#R-topbar button:hover :not(i),
+#R-topbar button:active :not(i),
+#R-topbar button:focus :not(i),
+#R-topbar .title:hover,
+#R-topbar .title:active,
+#R-topbar .title:focus,
+.topbar-content a:hover,
+.topbar-content a:active,
+.topbar-content a:focus,
+article a:hover,
+article a:active,
+article a:focus,
+article a:hover .copy-to-clipboard,
+article a:active .copy-to-clipboard,
+article a:focus .copy-to-clipboard {
+ text-decoration: underline;
+}
+.topbar-content a:hover,
+.topbar-content a:active,
+.topbar-content a:focus,
+article a:hover,
+article a:active,
+article a:focus,
+article a:hover .copy-to-clipboard,
+article a:active .copy-to-clipboard,
+article a:focus .copy-to-clipboard {
+ outline: none;
+}
+article a:hover > img:only-child:empty,
+article a:active > img:only-child:empty,
+article a:focus > img:only-child:empty{
+ outline: auto;
+}
+
+#R-body-inner:focus-visible{
+ /* remove focus indicator for programatically set focus */
+ outline: none;
+}
+
+#R-body h1 + hr {
+ margin-bottom: 2rem;
+ margin-top: -1rem;
+}
+
+#R-body .flex-block-wrapper {
+ margin-left: auto;
+ margin-right: auto;
+ max-width: calc( 81.25rem - var(--INTERNAL-MENU-WIDTH-L) - 2 * 3.25rem );
+ width: 100%;
+}
+body:not(.print) #R-body .narrow .flex-block-wrapper {
+ max-width: calc( 81.25rem - var(--INTERNAL-MENU-WIDTH-L) - 2 * 9.75rem );
+}
+/* we limit width if we have large screens */
+@media screen and ( min-width: 81.25rem ){ /* #R-sidebar/width + ./max-width */
+ #R-body .flex-block-wrapper {
+ width: calc( 81.25rem - var(--INTERNAL-MENU-WIDTH-L) - 2 * 3.25rem );
+ }
+ body:not(.print) #R-body .narrow .flex-block-wrapper {
+ width: calc( 81.25rem - var(--INTERNAL-MENU-WIDTH-L) - 2 * 9.75rem );
+ }
+}
+
+body:not(.print) #R-body-inner.narrow {
+ padding: 2rem 9.75rem;
+}
+@media screen and (max-width: 59.999rem) {
+ body:not(.print) #R-body-inner.narrow {
+ padding: 1rem 6.5rem;
+ }
+}
+@media screen and (max-width: 47.999rem) {
+ body:not(.print) #R-body-inner.narrow {
+ padding: .375rem 3.25rem;
+ }
+}
+
+#R-body-inner div.article-subheading,
+#R-body-inner .chapter.deprecated h3:first-of-type {
+ font-weight: 200;
+ margin-top: 0;
+ text-align: center;
+}
+
+body:not(.print) #R-body-inner.narrow p {
+ font-size: 1.2rem;
+ text-align: justify;
+}
+
+mark {
+ color: rgba( 0, 0, 0, 1 );
+}
+
+h1 {
+ font-size: 3.25rem;
+ font-weight: 200;
+ margin: 0.85rem 0 1rem 0;
+ /* big titles cause a horizontal scrollbar - fixing this by wrapping text */
+ overflow-wrap: break-word;
+ overflow-x: hidden;
+ text-align: center;
+ text-rendering: optimizeLegibility;
+ text-transform: uppercase;
+}
+
+body:not(.print) #R-body-inner.narrow h1 {
+ border-bottom: 4px solid rgba( 134, 134, 134, .125 );
+ font-size: 3.5rem;
+}
+@media only screen and (min-width: 48rem) and (max-width: 59.999rem) {
+ body:not(.print) #R-body-inner.narrow h1 {
+ font-size: 2.8rem;
+ }
+}
+@media only screen and (max-width: 47.999rem) {
+ body:not(.print) #R-body-inner.narrow h1 {
+ font-size: 2.5rem;
+ }
+}
+
+h2 {
+ font-size: 2.2rem;
+ font-weight: 500;
+}
+
+h3, .article-subheading {
+ font-size: 1.8rem;
+ font-weight: 500;
+}
+
+h4 {
+ font-size: 1.85rem;
+ font-weight: 300;
+}
+
+h5 {
+ font-size: 1.6rem;
+ font-weight: 300;
+}
+
+h6 {
+ font-size: 1.3rem;
+ font-weight: 300;
+}
+
+h2, h3, .article-subheading, h4, h5, h6 {
+ letter-spacing: -.0625rem;
+ margin: 2rem 0 1rem 0;
+ /* big titles cause a horizontal scrollbar - fixing this by wrapping text */
+ overflow-wrap: break-word;
+ overflow-x: hidden;
+ text-rendering: optimizeLegibility;
+}
+
+h2, h3, h4, h5, h6 {
+ /* leave space for anchor to avoid overflow */
+ padding-inline-end: 2rem;
+}
+
+blockquote {
+ border-inline-start: .6rem solid rgba( 134, 134, 134, .4 );
+}
+
+blockquote p {
+ font-size: 1.06640625rem;
+ font-style: italic;
+ opacity: .75;
+ text-align: justify;
+}
+
+blockquote cite {
+ display: block;
+ font-weight: bold;
+ opacity: .5;
+ padding-top: .5rem;
+ text-align: end;
+}
+
+/* colored boxes */
+
+.cstyle {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-NEUTRAL-color);
+ --VARIABLE-BOX-CAPTION-color: var(--INTERNAL-BOX-CAPTION-color);
+ --VARIABLE-BOX-BG-color: var(--INTERNAL-BOX-BG-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-NEUTRAL-TEXT-color);
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
+}
+
+div.box {
+ margin: 1.5rem 0;
+ border-style: solid;
+ border-width: 1px;
+}
+
+div.box > .box-label {
+ font-weight: 500;
+ padding: .2rem .6rem;
+}
+
+div.box > .box-content {
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+
+p:empty {
+ /* in case of image render hook, Hugo may generate empty s that we want to ignore */
+ display: none;
+}
+
+/* in case of image render hook, Hugo may generate empty
s that we want to ignore aswell, so a simple :first-child or :last-child is not enough */
+#R-body table th > :nth-child(1 of :not(:empty)),
+#R-body table th > :nth-child(1 of :not(:empty)) :nth-child(1 of :not(:empty)),
+#R-body table td > :nth-child(1 of :not(:empty)),
+#R-body table td > :nth-child(1 of :not(:empty)) :nth-child(1 of :not(:empty)),
+#R-body div.box > .box-content > :nth-child(1 of :not(:empty)),
+#R-body div.box > .box-content > :nth-child(1 of :not(:empty)) :nth-child(1 of :not(:empty)),
+#R-body div.expand > .expand-content-text > :nth-child(1 of :not(:empty)),
+#R-body div.expand > .expand-content-text > :nth-child(1 of :not(:empty)) :nth-child(1 of :not(:empty)),
+#R-body div.tab-content > .tab-content-text > :nth-child(1 of :not(:empty)),
+#R-body div.tab-content > .tab-content-text > :nth-child(1 of :not(:empty)) :nth-child(1 of :not(:empty)) {
+ margin-top: 0;
+}
+
+#R-body table th > :nth-last-child(1 of :not(:empty)),
+#R-body table th > :nth-last-child(1 of :not(:empty)) :nth-last-child(1 of :not(:empty)),
+#R-body table th > div.highlight:last-child pre:not(.mermaid),
+#R-body table td > :nth-last-child(1 of :not(:empty)),
+#R-body table td > :nth-last-child(1 of :not(:empty)) :nth-last-child(1 of :not(:empty)),
+#R-body table td > div:last-child pre:not(.mermaid),
+#R-body div.box > .box-content > :nth-last-child(1 of :not(:empty)),
+#R-body div.box > .box-content > :nth-last-child(1 of :not(:empty)) :nth-last-child(1 of :not(:empty)),
+#R-body div.box > .box-content > div:last-child pre:not(.mermaid),
+#R-body div.expand > .expand-content-text > :nth-last-child(1 of :not(:empty)),
+#R-body div.expand > .expand-content-text > :nth-last-child(1 of :not(:empty)) :nth-last-child(1 of :not(:empty)),
+#R-body div.expand > .expand-content-text > div:last-child pre:not(.mermaid),
+#R-body div.tab-content > .tab-content-text > :nth-last-child(1 of :not(:empty)),
+#R-body div.tab-content > .tab-content-text > :nth-last-child(1 of :not(:empty)) :nth-last-child(1 of :not(:empty)),
+#R-body div.tab-content > .tab-content-text > div:last-child pre:not(.mermaid) {
+ margin-bottom: 0;
+}
+
+/* attachments shortcode */
+
+div.attachments .box-content {
+ display: block;
+ margin: 0;
+ padding-inline-start: 1.75rem;
+}
+
+/* Children shortcode */
+
+.children p {
+ font-size: .8125rem;
+ margin-bottom: 0;
+ margin-top: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+}
+
+.children-li p {
+ font-size: .8125rem;
+ font-style: italic;
+}
+
+.children-h2 p,
+.children-h3 p {
+ font-size: .8125rem;
+ margin-bottom: 0;
+ margin-top: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+}
+
+#R-body-inner .children h2,
+#R-body-inner .children h3,
+#R-body-inner .children h4,
+#R-body-inner .children h5,
+#R-body-inner .children h6 {
+ margin-bottom: 0;
+ margin-top: 1rem;
+}
+#R-body-inner ul.children-h2,
+#R-body-inner ul.children-h3,
+#R-body-inner ul.children-h4,
+#R-body-inner ul.children-h5,
+#R-body-inner ul.children-h6 {
+ /* if we display children with style=h2 but without a containerstyle
+ a ul will be used for structuring; we remove default indention for uls
+ in this case */
+ padding-inline-start: 0;
+}
+
+code,
+kbd,
+pre:not(.mermaid),
+samp {
+ font-size: .934375rem;
+ vertical-align: baseline;
+}
+
+code {
+ border-radius: 2px;
+ border-style: solid;
+ border-width: 1px;
+ -webkit-print-color-adjust: economy;
+ color-adjust: economy;
+ padding-left: 2px;
+ padding-right: 2px;
+ white-space: nowrap;
+}
+
+span.copy-to-clipboard {
+ display: inline-block;
+ white-space: nowrap;
+}
+
+code.copy-to-clipboard-code {
+ border-end-end-radius: 0;
+ border-start-end-radius: 0;
+ border-inline-end-width: 0;
+}
+
+pre:not(.mermaid) {
+ border-radius: 2px;
+ border-style: solid;
+ border-width: 1px;
+ -webkit-print-color-adjust: economy;
+ color-adjust: economy;
+ line-height: 1.15;
+ padding: 1rem;
+ position: relative;
+}
+
+/* pre:not(.mermaid):has( code ), */
+/* the :has() operator isn't available in FF yet, so we patch this by JS */
+pre:not(.mermaid).pre-code {
+ direction: ltr;
+ text-align: left;
+}
+
+pre:not(.mermaid) code {
+ background-color: inherit;
+ border: 0;
+ color: inherit;
+ -webkit-print-color-adjust: economy;
+ color-adjust: economy;
+ font-size: .9375rem;
+ margin: 0;
+ padding: 0;
+}
+
+div.highlight{
+ position: relative;
+}
+/* we may have special treatment if highlight shortcode was used in table lineno mode */
+div.highlight > div{
+ border-style: solid;
+ border-width: 1px;
+}
+/* remove default style for usual markdown tables */
+div.highlight > div table{
+ background-color: transparent;
+ border-width: 0;
+ margin: 0;
+}
+div.highlight > div td{
+ border-width: 0;
+}
+#R-body div.highlight > div a {
+ line-height: inherit;
+}
+#R-body div.highlight > div a:after {
+ display: none;
+}
+/* disable selection for lineno cells */
+div.highlight > div td:first-child:not(:last-child){
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+/* increase code column to full width if highlight shortcode was used in table lineno mode */
+div.highlight > div td:not(:first-child):last-child{
+ width: 100%;
+}
+/* add scrollbars if highlight shortcode was used in table lineno mode */
+div.highlight > div table{
+ display: block;
+ overflow: auto;
+}
+div.highlight:not(.wrap-code) pre:not(.mermaid){
+ overflow: auto;
+}
+div.highlight:not(.wrap-code) pre:not(.mermaid) code{
+ white-space: pre;
+}
+div.highlight.wrap-code pre:not(.mermaid) code{
+ white-space: pre-wrap;
+}
+/* remove border from row cells if highlight shortcode was used in table lineno mode */
+div.highlight > div td > pre:not(.mermaid) {
+ border-radius: 0;
+ border-width: 0;
+}
+/* in case of table lineno mode we want to move each row closer together - besides the edges
+this usually applies only to wrapfix tables but it doesn't hurt for non-wrapfix tables too */
+div.highlight > div tr:not(:first-child) pre:not(.mermaid){
+ padding-top: 0;
+}
+div.highlight > div tr:not(:last-child) pre:not(.mermaid){
+ padding-bottom: 0;
+}
+/* in case of table lineno mode we want to move each columns closer together on the inside */
+div.highlight > div td:first-child:not(:last-child) pre:not(.mermaid){
+ padding-right: 0;
+}
+div.highlight > div td:not(:first-child):last-child pre:not(.mermaid){
+ padding-left: 0;
+}
+
+hr {
+ border-bottom: 4px solid rgba( 134, 134, 134, .125 );
+}
+
+#R-body-inner pre:not(.mermaid) {
+ white-space: pre-wrap;
+}
+
+table {
+ border: 1px solid rgba( 134, 134, 134, .333 );
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+ table-layout: auto;
+}
+
+th,
+thead td {
+ background-color: rgba( 134, 134, 134, .166 );
+ border: 1px solid rgba( 134, 134, 134, .333 );
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
+ padding: 0.5rem;
+}
+
+td {
+ border: 1px solid rgba( 134, 134, 134, .333 );
+ padding: 0.5rem;
+}
+tbody > tr:nth-child(even) > td {
+ background-color: rgba( 134, 134, 134, .045 );
+}
+
+.tooltipped {
+ position: relative;
+}
+
+.tooltipped:after {
+ background: rgba( 0, 0, 0, 1 );
+ border: 1px solid rgba( 119, 119, 119, 1 );
+ border-radius: 3px;
+ color: rgba( 255, 255, 255, 1 );
+ content: attr(aria-label);
+ display: none;
+ font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
+ font-size: .6875rem;
+ font-weight: normal;
+ -webkit-font-smoothing: subpixel-antialiased;
+ letter-spacing: normal;
+ line-height: 1.5;
+ padding: 5px 8px;
+ pointer-events: none;
+ position: absolute;
+ text-align: center;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: pre;
+ word-wrap: break-word;
+ z-index: 140;
+}
+
+.tooltipped:before {
+ border: 5px solid transparent;
+ color: rgba( 0, 0, 0, 1 );
+ content: "";
+ display: none;
+ height: 0;
+ pointer-events: none;
+ position: absolute;
+ width: 0;
+ z-index: 150;
+}
+
+.tooltipped:hover:before,
+.tooltipped:hover:after,
+.tooltipped:active:before,
+.tooltipped:active:after,
+.tooltipped:focus:before,
+.tooltipped:focus:after {
+ display: inline-block;
+ text-decoration: none;
+}
+
+.tooltipped-s:after,
+.tooltipped-se:after,
+.tooltipped-sw:after {
+ margin-top: 5px;
+ right: 50%;
+ top: 100%;
+}
+
+.tooltipped-s:before,
+.tooltipped-se:before,
+.tooltipped-sw:before {
+ border-bottom-color: rgba( 0, 0, 0, .8 );
+ bottom: -5px;
+ margin-right: -5px;
+ right: 50%;
+ top: auto;
+}
+
+.tooltipped-se:after {
+ left: 50%;
+ margin-left: -15px;
+ right: auto;
+}
+
+.tooltipped-sw:after {
+ margin-right: -15px;
+}
+
+.tooltipped-n:after,
+.tooltipped-ne:after,
+.tooltipped-nw:after {
+ bottom: 100%;
+ margin-bottom: 5px;
+ right: 50%;
+}
+
+.tooltipped-n:before,
+.tooltipped-ne:before,
+.tooltipped-nw:before {
+ border-top-color: rgba( 0, 0, 0, .8 );
+ bottom: auto;
+ margin-right: -5px;
+ right: 50%;
+ top: -5px;
+}
+
+.tooltipped-ne:after {
+ left: 50%;
+ margin-left: -15px;
+ right: auto;
+}
+
+.tooltipped-nw:after {
+ margin-right: -15px;
+}
+
+.tooltipped-s:after,
+.tooltipped-n:after {
+ transform: translateX(50%);
+}
+
+.tooltipped-w:after {
+ bottom: 50%;
+ margin-right: 5px;
+ right: 100%;
+ transform: translateY(50%);
+}
+
+.tooltipped-w:before {
+ border-left-color: rgba( 0, 0, 0, .8 );
+ bottom: 50%;
+ left: -5px;
+ margin-top: -5px;
+ top: 50%;
+}
+
+.tooltipped-e:after {
+ bottom: 50%;
+ left: 100%;
+ margin-left: 5px;
+ transform: translateY(50%);
+}
+
+.tooltipped-e:before {
+ border-right-color: rgba( 0, 0, 0, .8 );
+ bottom: 50%;
+ margin-top: -5px;
+ right: -5px;
+ top: 50%;
+}
+
+#R-topbar {
+ min-height: 3rem;
+ position: relative;
+ z-index: 170;
+}
+
+#R-topbar > .topbar-wrapper {
+ align-items: center;
+ background-color: rgba( 134, 134, 134, .066 );
+ display: flex;
+ flex-basis: 100%;
+ flex-direction: row;
+ height: 100%;
+}
+
+.topbar-button {
+ display: inline-block;
+ position: relative;
+}
+.topbar-button:not([data-origin]) {
+ display: none;
+}
+
+.topbar-button > .topbar-control {
+ display: inline-block;
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+.topbar-wrapper > .topbar-area-start > .topbar-button > .topbar-control {
+ border-inline-end: 1px solid rgba( 134, 134, 134, .333 );
+}
+.topbar-wrapper > .topbar-area-end > .topbar-button > .topbar-control {
+ border-inline-start: 1px solid rgba( 134, 134, 134, .333 );
+}
+
+.topbar-button > button:disabled i,
+.topbar-button > span i {
+ color: rgba( 134, 134, 134, .333 );
+}
+.topbar-button button{
+ -webkit-appearance: none;
+ appearance: none;
+ background-color: transparent;
+}
+
+.topbar-sidebar-divider {
+ border-inline-start-style: solid;
+ border-inline-start-width: 1px;
+ margin-inline-end: -1px;
+ width: 1px;
+}
+.topbar-sidebar-divider::after {
+ content: "\00a0";
+}
+
+.topbar-wrapper > .topbar-area-start {
+ display: flex;
+ flex-direction: row;
+ flex-shrink: 0;
+}
+.topbar-wrapper > .topbar-area-end {
+ display: flex;
+ flex-direction: row;
+ flex-shrink: 0;
+}
+.topbar-wrapper > .topbar-hidden {
+ display: none;
+}
+
+html[dir="rtl"] .topbar-button-prev i,
+html[dir="rtl"] .topbar-button-next i {
+ transform: scaleX(-1);
+}
+
+.topbar-content {
+ top: .75rem;
+}
+.topbar-wrapper > .topbar-area-start .topbar-content {
+ inset-inline-start: 1.5rem;
+}
+.topbar-wrapper > .topbar-area-end .topbar-content {
+ inset-inline-end: 1.5rem;
+}
+.topbar-content .topbar-content{
+ /* we don't allow flyouts in flyouts; come on, don't get funny... */
+ display: none;
+}
+
+.topbar-breadcrumbs {
+ flex-grow: 1;
+ margin: 0;
+ padding: 0 1rem;
+}
+@media screen and (max-width: 47.999rem) {
+ .topbar-breadcrumbs {
+ /* we just hide the breadcrumbs instead of display: none;
+ this makes sure that the breadcrumbs are still usable for
+ accessability */
+ visibility: hidden;
+ }
+}
+
+.breadcrumbs {
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 100%;
+ white-space: nowrap;
+}
+
+.breadcrumbs meta {
+ display: none;
+}
+
+.breadcrumbs li {
+ display: inline-block;
+}
+
+#R-body a[aria-disabled="true"] {
+ pointer-events: none;
+ text-decoration: none;
+}
+
+@media screen and (max-width: 59.999rem) {
+ #R-sidebar {
+ min-width: var(--INTERNAL-MENU-WIDTH-M);
+ max-width: var(--INTERNAL-MENU-WIDTH-M);
+ width: var(--INTERNAL-MENU-WIDTH-M);
+ }
+ #R-body {
+ margin-inline-start: var(--INTERNAL-MENU-WIDTH-M);
+ min-width: calc( 100% - var(--INTERNAL-MENU-WIDTH-M) );
+ max-width: calc( 100% - var(--INTERNAL-MENU-WIDTH-M) );
+ width: calc( 100% - var(--INTERNAL-MENU-WIDTH-M) );
+ }
+}
+@media screen and (max-width: 47.999rem) {
+ /* we don't support sidebar flyout in mobile */
+ .mobile-support #R-sidebar {
+ inset-inline-start: calc( -1 * var(--INTERNAL-MENU-WIDTH-S) );
+ min-width: var(--INTERNAL-MENU-WIDTH-S);
+ max-width: var(--INTERNAL-MENU-WIDTH-S);
+ width: var(--INTERNAL-MENU-WIDTH-S);
+ }
+ .mobile-support #navshow{
+ display: inline;
+ }
+ .mobile-support #R-body {
+ min-width: 100%;
+ max-width: 100%;
+ width: 100%;
+ }
+ .mobile-support #R-body {
+ margin-inline-start: 0;
+ }
+ .mobile-support.sidebar-flyout {
+ overflow: hidden;
+ }
+ .mobile-support.sidebar-flyout #R-sidebar {
+ inset-inline-start: 0;
+ z-index: 90;
+ }
+ .mobile-support.sidebar-flyout #R-body {
+ margin-inline-start: var(--INTERNAL-MENU-WIDTH-S);
+ overflow: hidden;
+ }
+ .mobile-support.sidebar-flyout #R-body-overlay{
+ background-color: rgba( 134, 134, 134, .5 );
+ bottom: 0;
+ cursor: pointer;
+ height: 100vh;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 190;
+ }
+}
+
+.copy-to-clipboard-button {
+ border-start-start-radius: 0;
+ border-start-end-radius: 2px;
+ border-end-end-radius: 2px;
+ border-end-start-radius: 0;
+ border-style: solid;
+ border-width: 1px;
+ cursor: pointer;
+ font-size: .934375rem;
+ line-height: 1.15;
+}
+
+span > .copy-to-clipboard-button {
+ border-start-start-radius: 0;
+ border-start-end-radius: 2px;
+ border-end-end-radius: 2px;
+ border-end-start-radius: 0;
+}
+
+.copy-to-clipboard-button > i {
+ font-size: .859625rem;
+}
+
+/* only show copy to clipboard on hover for code blocks if configured */
+div.highlight .copy-to-clipboard-button {
+ display: none;
+}
+@media (any-hover: none) {
+ /* if there is at least one input device that does not support hover, we want to force the copy button */
+ div.highlight .copy-to-clipboard-button {
+ display: block;
+ }
+}
+div.highlight:hover .copy-to-clipboard-button {
+ display: block;
+}
+.disableHoverBlockCopyToClipBoard div.highlight .copy-to-clipboard-button {
+ display: block;
+}
+
+div.highlight > div table + .copy-to-clipboard-button > i,
+div.highlight pre:not(.mermaid) + .copy-to-clipboard-button > i,
+.copy-to-clipboard-code + .copy-to-clipboard-button > i {
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+div.highlight > div table + .copy-to-clipboard-button,
+div.highlight pre:not(.mermaid) + .copy-to-clipboard-button,
+pre:not(.mermaid) > .copy-to-clipboard-button {
+ background-color: rgba( 160, 160, 160, .2 );
+ border-radius: 2px;
+ border-style: solid;
+ border-width: 1px;
+ right: 4px;
+ padding: 5px 3px;
+ position: absolute;
+ top: 4px;
+}
+
+.disableInlineCopyToClipboard span > code.copy-to-clipboard-code + span.copy-to-clipboard-button {
+ display: none;
+}
+
+.disableInlineCopyToClipboard span > code.copy-to-clipboard-code {
+ border-start-end-radius: 2px;
+ border-end-end-radius: 2px;
+ border-inline-end-width: 1px;
+}
+
+#R-homelinks {
+ padding: 0;
+}
+#R-homelinks ul {
+ margin: .5rem 0;
+}
+#R-homelinks hr {
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ margin: 0 1rem 3px 1rem;
+}
+
+option {
+ color: initial;
+}
+
+.expand {
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+ position: relative;
+}
+
+.expand > input {
+ -webkit-appearance: none;
+ appearance: none;
+ cursor: pointer;
+}
+
+.expand > label {
+ cursor: pointer;
+ display: inline;
+ font-weight: 300;
+ inset-inline-start: 0;
+ line-height: 1.1;
+ margin-top: .2rem;
+ position: absolute;
+}
+
+.expand > input:active + label,
+.expand > input:focus + label,
+.expand > label:hover {
+ text-decoration: underline;
+}
+
+.expand > label > .fas {
+ font-size: .8rem;
+ width: .6rem;
+}
+
+.expand > .expand-content {
+ margin-inline-start: 1rem;
+ margin-top: .5rem;
+}
+/* closed expander */
+.expand > input + label + div {
+ display: none;
+}
+
+.expand > input + label > .fa-chevron-down {
+ display: none;
+}
+.expand > input + label > .fa-chevron-right {
+ display: inline-block;
+}
+
+/* open expander */
+.expand > input:checked + label + div {
+ display: block;
+}
+
+.expand > input:checked + label > .fa-chevron-down {
+ display: inline-block;
+}
+.expand > input:checked + label > .fa-chevron-right {
+ display: none;
+}
+
+/* adjust expander for RTL reading direction */
+html[dir="rtl"] .expand > .expand-label > i.fa-chevron-right {
+ transform: scaleX(-1);
+}
+
+#R-body footer.footline{
+ margin-top: 2rem;
+}
+
+.headline i,
+.footline i{
+ margin-inline-start: .5rem;
+}
+.headline i:first-child,
+.footline i:first-child{
+ margin-inline-start: 0;
+}
+
+.mermaid-container {
+ margin-bottom: 1.7rem;
+ margin-top: 1.7rem;
+}
+
+.mermaid {
+ border: 1px solid transparent;
+ display: inline-block;
+ padding: .5rem .5rem 0 .5rem;
+ position: relative;
+ /* don't use display: none, as this will cause no renderinge by Mermaid */
+ visibility: hidden;
+ width: 100%;
+}
+.mermaid.mermaid-render {
+ visibility: visible;
+}
+.mermaid.zoomable:hover {
+ border-color: rgba( 134, 134, 134, .333 );
+}
+
+.mermaid > svg {
+ /* remove inline height from generated diagram */
+ height: initial !important;
+}
+.mermaid.zoomable > svg {
+ cursor: grab;
+}
+
+.svg-reset-button {
+ background-color: rgba( 160, 160, 160, .2 );
+ border-radius: 2px;
+ border-style: solid;
+ border-width: 1px;
+ cursor: pointer;
+ display: none;
+ font-size: .934375rem;
+ line-height: 1.15;
+ padding: 5px 3px;
+ position: absolute;
+ right: 4px;
+ top: 4px;
+}
+.mermaid:hover .svg-reset-button.zoomed {
+ display: block;
+}
+@media (any-hover: some) {
+ /* if there is at least one input device that does not support hover, we want to force the reset button if zoomed */
+ .svg-reset-button.zoomed {
+ display: block;
+ }
+}
+
+.svg-reset-button > i {
+ font-size: .859625rem;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+.mermaid-code {
+ display: none;
+}
+
+.include.hide-first-heading h1:first-of-type,
+.include.hide-first-heading h2:first-of-type,
+.include.hide-first-heading h3:first-of-type,
+.include.hide-first-heading h4:first-of-type,
+.include.hide-first-heading h5:first-of-type,
+.include.hide-first-heading h6:first-of-type {
+ display: none;
+}
+
+.include.hide-first-heading h1 + h2:first-of-type,
+.include.hide-first-heading h1 + h3:first-of-type,
+.include.hide-first-heading h2 + h3:first-of-type,
+.include.hide-first-heading h1 + h4:first-of-type,
+.include.hide-first-heading h2 + h4:first-of-type,
+.include.hide-first-heading h3 + h4:first-of-type,
+.include.hide-first-heading h1 + h5:first-of-type,
+.include.hide-first-heading h2 + h5:first-of-type,
+.include.hide-first-heading h3 + h5:first-of-type,
+.include.hide-first-heading h4 + h5:first-of-type,
+.include.hide-first-heading h1 + h6:first-of-type,
+.include.hide-first-heading h2 + h6:first-of-type,
+.include.hide-first-heading h3 + h6:first-of-type,
+.include.hide-first-heading h4 + h6:first-of-type,
+.include.hide-first-heading h5 + h6:first-of-type {
+ display: block;
+}
+
+/* Table of contents */
+
+.topbar-flyout #R-main-overlay{
+ bottom: 0;
+ cursor: pointer;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 3rem;
+ z-index: 160;
+}
+
+.topbar-content {
+ border: 0 solid rgba( 134, 134, 134, .166 );
+ box-shadow: 1px 2px 5px 1px rgba( 134, 134, 134, .2 );
+ height: 0;
+ opacity: 0;
+ overflow: hidden;
+ position: absolute;
+ visibility: hidden;
+ width: 0;
+ z-index: 180;
+}
+
+.topbar-button.topbar-flyout .topbar-content {
+ border-width: 1px;
+ height: auto;
+ opacity: 1;
+ visibility: visible;
+ width: auto;
+}
+
+.topbar-content .topbar-content-wrapper {
+ background-color: rgba( 134, 134, 134, .066 );
+}
+
+.topbar-content-wrapper {
+ --ps-rail-hover-color: rgba( 176, 176, 176, .25 );
+ max-height: 90vh;
+ overflow: hidden;
+ padding: .5rem 1rem;
+ position: relative; /* PS */
+}
+
+.topbar-content .topbar-button .topbar-control {
+ border-width: 0;
+ padding: 0;
+}
+.topbar-content .topbar-button .topbar-control {
+ border-width: 0;
+ padding: .5rem 0;
+}
+
+#TableOfContents,
+.TableOfContents {
+ font-size: .8125rem;
+}
+#TableOfContents ul,
+.TableOfContents ul {
+ list-style: none;
+ margin: 0;
+ padding: 0 1rem;
+}
+
+#TableOfContents > ul,
+.TableOfContents > ul {
+ padding: 0;
+}
+
+#TableOfContents li,
+.TableOfContents li {
+ white-space: nowrap;
+}
+
+#TableOfContents > ul > li > a,
+.TableOfContents > ul > li > a {
+ font-weight: 500;
+}
+
+.btn {
+ border-radius: 4px;
+ display: inline-block;
+ font-size: .9rem;
+ font-weight: 500;
+ line-height: 1.1;
+ margin-bottom: 0;
+ touch-action: manipulation;
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+.btn.interactive {
+ cursor: pointer;
+}
+
+.btn > span,
+.btn > a {
+ display: block;
+}
+
+.btn > :where(button) {
+ -webkit-appearance: none;
+ appearance: none;
+ border-width: 0;
+ margin: 0;
+ padding: 0;
+}
+
+.btn > * {
+ background-color: transparent;
+ border-radius: 4px;
+ border-style: solid;
+ border-width: 1px;
+ padding: 6px 12px;
+ text-align: center;
+ touch-action: manipulation;
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+ white-space: nowrap;
+}
+
+.btn > *:after {
+ /* avoid breakage if no content is given */
+ content: "\200b"
+}
+
+#R-body #R-body-inner .btn > *.highlight:after {
+ background-color: transparent;
+}
+
+.btn.interactive > .btn-interactive:focus {
+ outline: none;
+}
+
+.btn.interactive > *:hover,
+.btn.interactive > *:active,
+.btn.interactive > *:focus {
+ text-decoration: none;
+}
+
+/* anchors */
+.anchor {
+ cursor: pointer;
+ font-size: .5em;
+ margin-inline-start: .66em;
+ margin-top: .9em;
+ position: absolute;
+ visibility: hidden;
+}
+@media (any-hover: none) {
+ /* if there is at least one input device that does not support hover, we want to force the copy button */
+ .anchor {
+ visibility: visible;
+ }
+}
+
+h2:hover .anchor,
+h3:hover .anchor,
+h4:hover .anchor,
+h5:hover .anchor,
+h6:hover .anchor {
+ visibility: visible;
+}
+
+/* Redfines headers style */
+
+h1 a,
+h2 a,
+h3 a,
+h4 a,
+h5 a,
+h6 a {
+ font-weight: inherit;
+}
+
+#R-body h1 + h2,
+#R-body h1 + h3,
+#R-body h1 + h4,
+#R-body h1 + h5,
+#R-body h1 + h6,
+#R-body h2 + h3,
+#R-body h2 + h4,
+#R-body h2 + h5,
+#R-body h2 + h6,
+#R-body h3 + h4,
+#R-body h3 + h5,
+#R-body h3 + h6,
+#R-body h4 + h5,
+#R-body h4 + h6,
+#R-body h5 + h6 {
+ margin-top: 1rem;
+}
+
+.menu-control .control-style {
+ cursor: pointer;
+ height: 1.574em;
+ overflow: hidden;
+}
+
+.menu-control i {
+ padding-top: .25em;
+}
+
+.menu-control i,
+.menu-control span {
+ cursor: pointer;
+ display: block;
+ float: left;
+}
+html[dir="rtl"] .menu-control i,
+html[dir="rtl"] .menu-control span {
+ float: right;
+}
+
+.menu-control :hover,
+.menu-control i:hover,
+.menu-control span:hover {
+ cursor: pointer;
+}
+
+.menu-control select,
+.menu-control button {
+ -webkit-appearance: none;
+ appearance: none;
+ outline: none;
+ width: 100%;
+}
+.menu-control button:active,
+.menu-control button:focus,
+.menu-control select:active,
+.menu-control select:focus{
+ outline-style: auto;
+}
+
+.menu-control select {
+ background-color: transparent;
+ background-image: none;
+ border: none;
+ box-shadow: none;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.menu-control option {
+ color: rgba( 0, 0, 0, 1 );
+ padding: 0;
+ margin: 0;
+}
+
+.menu-control button {
+ background-color: transparent;
+ cursor: pointer;
+ display: block;
+ text-align: start;
+}
+
+.clear {
+ clear: both;
+}
+
+.footerLangSwitch,
+.footerVariantSwitch,
+.footerVisitedLinks,
+.footerFooter {
+ display: none;
+}
+
+.showLangSwitch,
+.showVariantSwitch,
+.showVisitedLinks,
+.showFooter {
+ display: block;
+}
+
+/* clears the 'X' from Chrome's search input */
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-results-button,
+input[type="search"]::-webkit-search-results-decoration { display: none; }
+
+@supports selector(.math:has(> mjx-container)){
+ .math{
+ visibility: hidden;
+ }
+ .math:has(> mjx-container){
+ visibility: visible;
+ }
+}
+
+.math.align-left > mjx-container{
+ text-align: left !important;
+}
+
+.math.align-center > mjx-container{
+ text-align: center !important;
+}
+
+.math.align-right > mjx-container{
+ text-align: right !important;
+}
+
+.scrollbar-measure {
+ /* https://davidwalsh.name/detect-scrollbar-width */
+ height: 100px;
+ overflow: scroll;
+ position: absolute;
+ width: 100px;
+ top: -9999px;
+}
+
+.a11y-only {
+ /* idea taken from https://www.filamentgroup.com/lab/a11y-form-labels.html */
+ clip-path: polygon(0 0, 1px 0, 1px 1px, 0 1px);
+ overflow: hidden;
+ position: absolute;
+ height: 1px;
+ transform: translateY(-100%);
+ transition: transform .5s cubic-bezier(.18,.89,.32,1.28);
+ white-space: nowrap;
+ width: 1px;
+}
+
+/* filament style for making action visible on focus - not adapted yet
+.a11y-only:focus {
+ position: fixed;
+ height: auto;
+ overflow: visible;
+ clip: auto;
+ white-space: normal;
+ margin: 0 0 0 -100px;
+ top: -.3em;
+ left: 50%;
+ text-align: center;
+ width: 200px;
+ background: rgba( 255, 255, 255, 1 );
+ color: rgba( 54, 133, 18, 1 );
+ padding: .8em 0 .7em;
+ font-size: 16px;
+ z-index: 5000;
+ text-decoration: none;
+ border-bottom-right-radius: 8px;
+ border-bottom-left-radius: 8px;
+ outline: 0;
+ transform: translateY(0%);
+}
+*/
+
+.mermaid-container.align-right {
+ text-align: right;
+}
+
+.mermaid-container.align-center {
+ text-align: center;
+}
+
+.mermaid-container.align-left {
+ text-align: left;
+}
+
+.searchform {
+ display: flex;
+}
+
+.searchform input {
+ flex: 1 0 60%;
+ border-radius: 4px;
+ border: 2px solid rgba( 134, 134, 134, .125 );
+ background: rgba( 134, 134, 134, .125 );
+ display: block;
+ margin: 0;
+ margin-inline-end: .5rem;
+}
+
+.searchform input::-webkit-input-placeholder,
+.searchform input::placeholder {
+ color: rgba( 134, 134, 134, 1 );
+ opacity: .666;
+}
+
+.searchform .btn {
+ display: inline-flex;
+}
+
+.searchhint {
+ margin-top: 1rem;
+ height: 1.5rem;
+}
+
+#R-searchresults a.autocomplete-suggestion {
+ display: block;
+ font-size: 1.3rem;
+ font-weight: 500;
+ line-height: 1.5rem;
+ padding: 1rem;
+ text-decoration: none;
+}
+
+#R-searchresults a.autocomplete-suggestion:after {
+ height: 0;
+}
+
+#R-searchresults .autocomplete-suggestion > .breadcrumbs {
+ font-size: .9rem;
+ font-weight: 400;
+ margin-top: .167em;
+ padding-left: .2em;
+ padding-right: .2em;
+}
+
+#R-searchresults .autocomplete-suggestion > .context {
+ font-size: 1rem;
+ font-weight: 300;
+ margin-top: .66em;
+ padding-left: .1em;
+ padding-right: .1em;
+}
+
+.badge {
+ border-radius: 3px;
+ display: inline-block;
+ font-size: .8rem;
+ font-weight: 500;
+ vertical-align: middle;
+}
+
+.badge > * {
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ display: inline-block;
+ padding: 0 .25rem
+}
+
+.badge > .badge-title {
+ background-color: rgba( 16, 16, 16, 1 );
+ border-inline-end: 0;
+ border-start-end-radius: 0;
+ border-end-end-radius: 0;
+ color: rgba( 240, 240, 240, 1 );
+ filter: contrast(2);
+ opacity: .75;
+}
+
+.badge.badge-with-title > .badge-content {
+ border-start-start-radius: 0;
+ border-end-start-radius: 0;
+}
+
+.badge-content:after {
+ /* avoid breakage if no content is given */
+ content: "\200b";
+}
+
+/* task list and its checkboxes */
+article ul > li:has(> input[type="checkbox"]) {
+ list-style: none;
+ margin-inline-start: -1rem;
+}
+
+article ul > li:has(> input[type="checkbox"])::before {
+ content: "\200B"; /* accessibilty for Safari https://developer.mozilla.org/en-US/docs/Web/CSS/list-style */
+}
+
+/* https://moderncss.dev/pure-css-custom-checkbox-style/ */
+article ul > li > input[type="checkbox"] {
+ -webkit-appearance: none;
+ appearance: none;
+ /* For iOS < 15 */
+ border: 0.15em solid currentColor;
+ border-radius: 0.15em;
+ display: inline-grid;
+ font: inherit;
+ height: 1.15em;
+ margin: 0;
+ place-content: center;
+ transform: translateY(-0.075em);
+ width: 1.15em;
+}
+
+article ul > li > input[type="checkbox"]::before {
+ box-shadow: inset 1em 1em var(--INTERNAL-PRIMARY-color);
+ clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
+ content: "";
+ height: 0.65em;
+ transform: scale(0);
+ transform-origin: bottom left;
+ transition: 120ms transform ease-in-out;
+ width: 0.65em;
+ /* Windows High Contrast Mode fallback must be last */
+ background-color: CanvasText;
+}
+
+article ul > li > input[type="checkbox"]:checked::before {
+ transform: scale(1);
+}
+
+/* CSS Lightbox https://codepen.io/gschier/pen/kyRXVx */
+.lightbox-back {
+ align-items: center;
+ background: rgba( 0, 0, 0, .8 );
+ bottom: 0;
+ display: none;
+ justify-content: center;
+ left: 0;
+ position: fixed;
+ right: 0;
+ text-align: center;
+ top: 0;
+ white-space: nowrap;
+ z-index: 1999;
+}
+
+.lightbox-back:target {
+ display: flex;
+}
+
+.lightbox-back img {
+ max-height: 95%;
+ max-width: 95%;
+ overflow: auto;
+ padding: min(2vh, 2vw);
+}
+
+/* basic menu list styles (non-collapsible) */
+
+#R-sidebar ul > li > :is( a, span ) {
+ display: block;
+ position: relative;
+}
+
+#R-sidebar ul.space > li > * {
+ padding-bottom: .125rem;
+ padding-top: .125rem;
+}
+#R-sidebar ul.space > li > ul {
+ padding-bottom: 0;
+ padding-top: 0;
+}
+
+#R-sidebar ul.morespace > li > * {
+ padding-bottom: .25rem;
+ padding-top: .25rem;
+}
+#R-sidebar ul.morespace > li > ul {
+ padding-bottom: 0;
+ padding-top: 0;
+}
+
+#R-sidebar ul.enlarge > li > :is( a, span ) {
+ font-size: 1.1rem;
+ line-height: 2rem;
+}
+#R-sidebar ul.enlarge > li > a > .read-icon {
+ margin-top: .5rem;
+}
+#R-sidebar ul.enlarge > li > ul > li:last-child {
+ padding-bottom: 1rem;
+}
+
+#R-sidebar ul ul {
+ padding-inline-start: 1rem;
+}
+
+/* collapsible menu style overrides */
+
+#R-sidebar ul.collapsible-menu > li {
+ position: relative;
+}
+
+#R-sidebar ul.collapsible-menu > li > input {
+ -webkit-appearance: none;
+ appearance: none;
+ cursor: pointer;
+ display: inline-block;
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: .65rem;
+ position: absolute;
+ width: 1rem;
+ z-index: 1;
+}
+#R-sidebar ul.collapsible-menu.enlarge > li > input {
+ margin-top: .9rem;
+}
+
+#R-sidebar ul.collapsible-menu > li > label {
+ cursor: pointer;
+ display: inline-block;
+ inset-inline-start: 0;
+ margin-bottom: 0; /* nucleus */
+ padding-inline-start: .125rem;
+ position: absolute;
+ width: 1rem;
+ z-index: 2;
+}
+#R-sidebar ul.collapsible-menu.enlarge > li > label {
+ font-size: 1.1rem;
+ line-height: 2rem;
+}
+
+#R-sidebar ul.collapsible-menu > li > label:after {
+ content: "";
+ display: block;
+ height: 1px;
+ transition: width 0.5s ease;
+ width: 0%;
+}
+
+#R-sidebar ul.collapsible-menu > li > label:hover:after {
+ width: 100%;
+}
+
+#R-sidebar ul.collapsible-menu > li > label > .fas {
+ font-size: .8rem;
+ width: .6rem;
+}
+
+#R-sidebar ul.collapsible-menu > li > :is( a, span ) {
+ display: inline-block;
+ width: 100%;
+}
+
+/* menu states for not(.collapsible-menu) */
+
+#R-sidebar ul ul {
+ display: none;
+}
+
+#R-sidebar ul > li.parent > ul,
+#R-sidebar ul > li.active > ul,
+#R-sidebar ul > li.alwaysopen > ul {
+ display: block;
+}
+
+/* closed menu */
+
+#R-sidebar ul.collapsible-menu > li > input + label ~ ul {
+ display: none;
+}
+
+#R-sidebar ul.collapsible-menu > li > input + label > .fa-chevron-down {
+ display: none;
+}
+#R-sidebar ul.collapsible-menu > li > input + label > .fa-chevron-right {
+ display: inline-block;
+}
+
+/* open menu */
+
+#R-sidebar ul.collapsible-menu > li > input:checked + label ~ ul {
+ display: block;
+}
+
+#R-sidebar ul.collapsible-menu > li > input:checked + label > .fa-chevron-down {
+ display: inline-block;
+}
+#R-sidebar ul.collapsible-menu > li > input:checked + label > .fa-chevron-right {
+ display: none;
+}
+
+/* adjust menu for RTL reading direction */
+
+html[dir="rtl"] #R-sidebar ul.collapsible-menu > li > label > i.fa-chevron-right {
+ transform: scaleX(-1);
+}
+
+.columnize{
+ column-count: 2;
+}
+@media screen and (min-width: 79.25rem) {
+ .columnize{
+ column-count: 3;
+ }
+}
+
+.columnize > *{
+ break-inside: avoid-column;
+}
+
+.columnize .breadcrumbs{
+ font-size: .859625rem;
+}
+
+#R-body .tab-panel{
+ margin-bottom: 1.5rem;
+ margin-top: 1.5rem;
+}
+
+#R-body .tab-nav{
+ display: flex;
+ flex-wrap: wrap;
+}
+
+#R-body .tab-nav-title{
+ font-size: .9rem;
+ font-weight: 400;
+ line-height: 1.42857143;
+ padding: .2rem 0;
+ margin-inline-start: .6rem;
+}
+
+#R-body .tab-nav-button{
+ -webkit-appearance: none;
+ appearance: none;
+ background-color: transparent;
+ border: 1px solid transparent;
+ display: block;
+ font-size: .9rem;
+ font-weight: 300;
+ line-height: 1.42857143;
+ margin-inline-start: .6rem;
+}
+
+#R-body .tab-nav-button.active{
+ border-radius: 2px 2px 0 0;
+ cursor: default;
+}
+
+#R-body .tab-nav-button > .tab-nav-text{
+ border-bottom-style: solid;
+ border-bottom-width: .15rem;
+ display: block;
+ padding: .2rem .6rem 0 .6rem;
+}
+/* https://stackoverflow.com/a/46452396 */
+#R-body .tab-nav-button.active > .tab-nav-text{
+ border-bottom-color: transparent;
+ border-radius: 1px 1px 0 0;
+ text-shadow: -0.06ex 0 0 currentColor, 0.06ex 0 0 currentColor;
+}
+@supports (-webkit-text-stroke-width: 0.04ex){
+ #R-body .tab-nav-button.active > .tab-nav-text{
+ text-shadow: -0.03ex 0 0 currentColor, 0.03ex 0 0 currentColor;
+ -webkit-text-stroke-width: 0.04ex;
+ }
+}
+
+#R-body .tab-content{
+ border-style: solid;
+ border-width: 1px;
+ display: none;
+ /* if setting a border to 1px, a browser instead sets it to 1dppx which is not
+ usable as a unit yet, so we have to calculate it ourself */
+ margin-top: calc( -1px / var(--bpx) );
+ z-index: 10;
+}
+
+#R-body .tab-content.active{
+ display: block;
+}
+
+#R-body .tab-content-text{
+ padding: 1rem;
+}
+
+/* remove margin if only a single code block is contained in the tab (FF without :has using .codify style) */
+#R-body .tab-content.codify > .tab-content-text{
+ padding: 0;
+}
+#R-body .tab-content-text:has(> div.highlight:only-child){
+ padding: 0;
+}
+
+/* remove border from code block if single in tab */
+#R-body .tab-content-text > div.highlight:only-child > div,
+#R-body .tab-content-text > div.highlight:only-child pre:not(.mermaid),
+#R-body .tab-content-text > pre:not(.mermaid).pre-code:only-child{
+ border-width: 0;
+}
+
+/* bordering the menu and topbar */
+
+#R-topbar {
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+}
+
+#R-header-topbar {
+ border-bottom-color: transparent;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ border-inline-end-style: solid;
+ border-inline-end-width: 1px;
+ height: 3rem;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: 1;
+}
+
+#R-header-wrapper,
+#R-homelinks,
+#R-content-wrapper > * {
+ border-inline-end-style: solid;
+ border-inline-end-width: 1px;
+}
+
+#topics > ul {
+ margin-top: 1rem;
+}
+
+#R-sidebar ul.collapsible-menu li.active > a{
+ border-style: solid;
+ border-width: 1px;
+ padding-bottom: calc( .25rem - var(--bpx1)*1px);
+ padding-left: calc( 1rem - var(--bpx1)*1px);
+ padding-right: calc( 1rem - var(--bpx1)*1px);
+ padding-top: calc( .25rem - var(--bpx1)*1px);
+ width: calc(100% + var(--bpx1)*1px);
+}
+
+#R-menu-footer {
+ padding-bottom: 1rem;
+}
+
+#R-topics {
+ padding-top: 1rem;
+}
+
+.term-list ul,
+.term-list li {
+ list-style: none;
+ display: inline;
+ padding: 0;
+}
+.term-list i ~ ul > li:before{
+ content: " "
+}
+.term-list ul > li ~ li:before {
+ content: " | "
+}
diff --git a/css/variant-internal.css b/css/variant-internal.css
new file mode 100644
index 00000000..cea4eb40
--- /dev/null
+++ b/css/variant-internal.css
@@ -0,0 +1,115 @@
+:root {
+ /* initially use section background to avoid flickering on load when a non default variant is active;
+ this is only possible because every color variant defines this variable, otherwise we would have been lost */
+ --INTERNAL-PRIMARY-color: var(--PRIMARY-color, var(--MENU-HEADER-BG-color, rgba( 0, 0, 0, 0 ))); /* not --INTERNAL-MENU-HEADER-BG-color */
+ --INTERNAL-SECONDARY-color: var(--SECONDARY-color, var(--MAIN-LINK-color, rgba( 72, 106, 201, 1 ))); /* not --INTERNAL-MAIN-LINK-color */
+ --INTERNAL-ACCENT-color: var(--ACCENT-color, rgba( 255, 255, 0, 1 ));
+
+ --INTERNAL-MAIN-TOPBAR-BORDER-color: var(--MAIN-TOPBAR-BORDER-color, transparent);
+ --INTERNAL-MAIN-LINK-color: var(--MAIN-LINK-color, var(--SECONDARY-color, rgba( 72, 106, 201, 1 ))); /* not --INTERNAL-SECONDARY-color */
+ --INTERNAL-MAIN-LINK-HOVER-color: var(--MAIN-LINK-HOVER-color, var(--INTERNAL-MAIN-LINK-color));
+ --INTERNAL-MAIN-BG-color: var(--MAIN-BG-color, rgba( 255, 255, 255, 1 ));
+
+ --INTERNAL-MAIN-TEXT-color: var(--MAIN-TEXT-color, rgba( 16, 16, 16, 1 ));
+ --INTERNAL-MAIN-TITLES-TEXT-color: var(--MAIN-TITLES-TEXT-color, var(--INTERNAL-MAIN-TEXT-color));
+
+ --INTERNAL-MAIN-TITLES-H1-color: var(--MAIN-TITLES-H1-color, var(--INTERNAL-MAIN-TEXT-color));
+ --INTERNAL-MAIN-TITLES-H2-color: var(--MAIN-TITLES-H2-color, var(--INTERNAL-MAIN-TITLES-TEXT-color));
+ --INTERNAL-MAIN-TITLES-H3-color: var(--MAIN-TITLES-H3-color, var(--INTERNAL-MAIN-TITLES-H2-color));
+ --INTERNAL-MAIN-TITLES-H4-color: var(--MAIN-TITLES-H4-color, var(--INTERNAL-MAIN-TITLES-H3-color));
+ --INTERNAL-MAIN-TITLES-H5-color: var(--MAIN-TITLES-H5-color, var(--INTERNAL-MAIN-TITLES-H4-color));
+ --INTERNAL-MAIN-TITLES-H6-color: var(--MAIN-TITLES-H6-color, var(--INTERNAL-MAIN-TITLES-H5-color));
+
+ --INTERNAL-MAIN-font: var(--MAIN-font, "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif);
+ --INTERNAL-MAIN-TITLES-TEXT-font: var(--MAIN-TITLES-TEXT-font, var(--INTERNAL-MAIN-font));
+
+ --INTERNAL-MAIN-TITLES-H1-font: var(--MAIN-TITLES-H1-font, var(--INTERNAL-MAIN-font));
+ --INTERNAL-MAIN-TITLES-H2-font: var(--MAIN-TITLES-H2-font, var(--INTERNAL-MAIN-TITLES-TEXT-font));
+ --INTERNAL-MAIN-TITLES-H3-font: var(--MAIN-TITLES-H3-font, var(--INTERNAL-MAIN-TITLES-H2-font));
+ --INTERNAL-MAIN-TITLES-H4-font: var(--MAIN-TITLES-H4-font, var(--INTERNAL-MAIN-TITLES-H3-font));
+ --INTERNAL-MAIN-TITLES-H5-font: var(--MAIN-TITLES-H5-font, var(--INTERNAL-MAIN-TITLES-H4-font));
+ --INTERNAL-MAIN-TITLES-H6-font: var(--MAIN-TITLES-H6-font, var(--INTERNAL-MAIN-TITLES-H5-font));
+
+ --INTERNAL-CODE-theme: var(--CODE-theme, relearn-light);
+ --INTERNAL-CODE-font: var(--CODE-font, "Consolas", menlo, monospace);
+ --INTERNAL-CODE-BLOCK-color: var(--CODE-BLOCK-color, var(--MAIN-CODE-color, rgba( 39, 40, 34, 1 )));
+ --INTERNAL-CODE-BLOCK-BG-color: var(--CODE-BLOCK-BG-color, var(--MAIN-CODE-BG-color, rgba( 250, 250, 250, 1 )));
+ --INTERNAL-CODE-BLOCK-BORDER-color: var(--CODE-BLOCK-BORDER-color, var(--MAIN-CODE-BG-color, var(--INTERNAL-CODE-BLOCK-BG-color)));
+ --INTERNAL-CODE-INLINE-color: var(--CODE-INLINE-color, rgba( 94, 94, 94, 1 ));
+ --INTERNAL-CODE-INLINE-BG-color: var(--CODE-INLINE-BG-color, rgba( 255, 250, 233, 1 ));
+ --INTERNAL-CODE-INLINE-BORDER-color: var(--CODE-INLINE-BORDER-color, rgba( 251, 240, 203, 1 ));
+
+ --INTERNAL-BROWSER-theme: var(--BROWSER-theme, light);
+ --INTERNAL-MERMAID-theme: var(--CONFIG-MERMAID-theme, var(--MERMAID-theme, var(--INTERNAL-PRINT-MERMAID-theme)));
+ --INTERNAL-OPENAPI-theme: var(--CONFIG-OPENAPI-theme, var(--OPENAPI-theme, var(--SWAGGER-theme, var(--INTERNAL-PRINT-OPENAPI-theme))));
+ --INTERNAL-OPENAPI-CODE-theme: var(--CONFIG-OPENAPI-CODE-theme, var(--OPENAPI-CODE-theme, --INTERNAL-PRINT-OPENAPI-CODE-theme));
+
+ --INTERNAL-TAG-BG-color: var(--TAG-BG-color, var(--INTERNAL-PRIMARY-color));
+
+ --INTERNAL-MENU-BORDER-color: var(--MENU-BORDER-color, transparent);
+ --INTERNAL-MENU-TOPBAR-BORDER-color: var(--MENU-TOPBAR-BORDER-color, var(--INTERNAL-MENU-HEADER-BG-color));
+ --INTERNAL-MENU-TOPBAR-SEPARATOR-color: var(--MENU-TOPBAR-SEPARATOR-color, transparent);
+ --INTERNAL-MENU-HEADER-BG-color: var(--MENU-HEADER-BG-color, var(--PRIMARY-color, rgba( 0, 0, 0, 0 ))); /* not --INTERNAL-PRIMARY-color */
+ --INTERNAL-MENU-HEADER-BORDER-color: var(--MENU-HEADER-BORDER-color, var(--INTERNAL-MENU-HEADER-BG-color));
+ --INTERNAL-MENU-HEADER-SEPARATOR-color: var(--MENU-HEADER-SEPARATOR-color, var(--INTERNAL-MENU-HEADER-BORDER-color));
+
+ --INTERNAL-MENU-HOME-LINK-color: var(--MENU-HOME-LINK-color, rgba( 50, 50, 50, 1 ));
+ --INTERNAL-MENU-HOME-LINK-HOVER-color: var(--MENU-HOME-LINK-HOVER-color, var(--MENU-HOME-LINK-HOVERED-color, rgba( 128, 128, 128, 1 )));
+
+ --INTERNAL-MENU-SEARCH-color: var(--MENU-SEARCH-color, var(--MENU-SEARCH-BOX-ICONS-color, rgba( 224, 224, 224, 1 )));
+ --INTERNAL-MENU-SEARCH-BG-color: var(--MENU-SEARCH-BG-color, rgba( 50, 50, 50, 1 ));
+ --INTERNAL-MENU-SEARCH-BORDER-color: var(--MENU-SEARCH-BORDER-color, var(--MENU-SEARCH-BOX-color, var(--INTERNAL-MENU-SEARCH-BG-color)));
+
+ --INTERNAL-MENU-SECTIONS-ACTIVE-BG-color: var(--MENU-SECTIONS-ACTIVE-BG-color, rgba( 0, 0, 0, .166 ));
+ --INTERNAL-MENU-SECTIONS-BG-color: var(--MENU-SECTIONS-BG-color, rgba( 40, 40, 40, 1 ));
+ --INTERNAL-MENU-SECTIONS-LINK-color: var(--MENU-SECTIONS-LINK-color, rgba( 186, 186, 186, 1 ));
+ --INTERNAL-MENU-SECTIONS-LINK-HOVER-color: var(--MENU-SECTIONS-LINK-HOVER-color, var(--INTERNAL-MENU-SECTIONS-LINK-color));
+ --INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color: var(--MENU-SECTION-ACTIVE-CATEGORY-color, rgba( 68, 68, 68, 1 ));
+ --INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-BG-color: var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color, var(--INTERNAL-MAIN-BG-color));
+ --INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-BORDER-color: var(--MENU-SECTION-ACTIVE-CATEGORY-BORDER-color, transparent);
+
+ --INTERNAL-MENU-VISITED-color: var(--MENU-VISITED-color, var(--INTERNAL-SECONDARY-color));
+ --INTERNAL-MENU-SECTION-SEPARATOR-color: var(--MENU-SECTION-SEPARATOR-color, var(--MENU-SECTION-HR-color, rgba( 96, 96, 96, 1 )));
+
+ --INTERNAL-BOX-CAPTION-color: var(--BOX-CAPTION-color, rgba( 255, 255, 255, 1 ));
+ --INTERNAL-BOX-BG-color: var(--BOX-BG-color, rgba( 255, 255, 255, .833 ));
+ --INTERNAL-BOX-TEXT-color: var(--BOX-TEXT-color, var(--INTERNAL-MAIN-TEXT-color));
+
+ --INTERNAL-BOX-BLUE-color: var(--BOX-BLUE-color, rgba( 48, 117, 229, 1 ));
+ --INTERNAL-BOX-GREEN-color: var(--BOX-GREEN-color, rgba( 42, 178, 24, 1 ));
+ --INTERNAL-BOX-GREY-color: var(--BOX-GREY-color, rgba( 160, 160, 160, 1 ));
+ --INTERNAL-BOX-ORANGE-color: var(--BOX-ORANGE-color, rgba( 237, 153, 9, 1 ));
+ --INTERNAL-BOX-RED-color: var(--BOX-RED-color, rgba( 224, 62, 62, 1 ));
+
+ --INTERNAL-BOX-INFO-color: var(--BOX-INFO-color, var(--INTERNAL-BOX-BLUE-color));
+ --INTERNAL-BOX-NEUTRAL-color: var(--BOX-NEUTRAL-color, var(--INTERNAL-BOX-GREY-color));
+ --INTERNAL-BOX-NOTE-color: var(--BOX-NOTE-color, var(--INTERNAL-BOX-ORANGE-color));
+ --INTERNAL-BOX-TIP-color: var(--BOX-TIP-color, var(--INTERNAL-BOX-GREEN-color));
+ --INTERNAL-BOX-WARNING-color: var(--BOX-WARNING-color, var(--INTERNAL-BOX-RED-color));
+
+ --INTERNAL-BOX-BLUE-TEXT-color: var(--BOX-BLUE-TEXT-color, var(--INTERNAL-BOX-TEXT-color));
+ --INTERNAL-BOX-GREEN-TEXT-color: var(--BOX-GREEN-TEXT-color, var(--INTERNAL-BOX-TEXT-color));
+ --INTERNAL-BOX-GREY-TEXT-color: var(--BOX-GREY-TEXT-color, var(--INTERNAL-BOX-TEXT-color));
+ --INTERNAL-BOX-ORANGE-TEXT-color: var(--BOX-ORANGE-TEXT-color, var(--INTERNAL-BOX-TEXT-color));
+ --INTERNAL-BOX-RED-TEXT-color: var(--BOX-RED-TEXT-color, var(--INTERNAL-BOX-TEXT-color));
+
+ --INTERNAL-BOX-INFO-TEXT-color: var(--BOX-INFO-TEXT-color, var(--INTERNAL-BOX-BLUE-TEXT-color));
+ --INTERNAL-BOX-NEUTRAL-TEXT-color: var(--BOX-NEUTRAL-TEXT-color, var(--INTERNAL-BOX-GREY-TEXT-color));
+ --INTERNAL-BOX-NOTE-TEXT-color: var(--BOX-NOTE-TEXT-color, var(--INTERNAL-BOX-ORANGE-TEXT-color));
+ --INTERNAL-BOX-TIP-TEXT-color: var(--BOX-TIP-TEXT-color, var(--INTERNAL-BOX-GREEN-TEXT-color));
+ --INTERNAL-BOX-WARNING-TEXT-color: var(--BOX-WARNING-TEXT-color, var(--INTERNAL-BOX-RED-TEXT-color));
+
+ /* print style, values taken from relearn-light as it is used as a default print style */
+ --INTERNAL-PRINT-MAIN-BG-color: var(--PRINT-MAIN-BG-color, rgba( 255, 255, 255, 1 ));
+ --INTERNAL-PRINT-CODE-font: var(--PRINT-CODE-font, "Consolas", menlo, monospace);
+ --INTERNAL-PRINT-TAG-BG-color: var(--PRINT-TAG-BG-color, rgba( 125, 201, 3, 1 ));
+ --INTERNAL-PRINT-MAIN-font: var(--PRINT-MAIN-font, "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif);
+ --INTERNAL-PRINT-MAIN-TEXT-color: var(--PRINT-MAIN-TEXT-color, rgba( 16, 16, 16, 1 ));
+ --INTERNAL-PRINT-MERMAID-theme: var(--PRINT-MERMAID-theme, default);
+ --INTERNAL-PRINT-OPENAPI-theme: var(--PRINT-OPENAPI-theme, var(--PRINT-SWAGGER-theme, light));
+ --INTERNAL-PRINT-OPENAPI-CODE-theme: var(--PRINT-OPENAPI-CODE-theme, idea);
+
+ --INTERNAL-MENU-WIDTH-S: var(--MENU-WIDTH-S, 14.375rem);
+ --INTERNAL-MENU-WIDTH-M: var(--MENU-WIDTH-M, 14.375rem);
+ --INTERNAL-MENU-WIDTH-L: var(--MENU-WIDTH-L, 18.75rem);
+}
diff --git a/css/variant.css b/css/variant.css
new file mode 100644
index 00000000..d2c0e68a
--- /dev/null
+++ b/css/variant.css
@@ -0,0 +1,505 @@
+@import "variant-internal.css";
+
+html {
+ color-scheme: only var(--INTERNAL-BROWSER-theme);
+}
+
+body {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+ color: var(--INTERNAL-MAIN-TEXT-color);
+ font-family: var(--INTERNAL-MAIN-font);
+}
+
+a,
+.anchor,
+.topbar-button button,
+#R-searchresults .autocomplete-suggestion {
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+
+a:hover,
+a:active,
+a:focus,
+.anchor:hover,
+.anchor:active,
+.anchor:focus,
+.topbar-button button:hover,
+.topbar-button button:active,
+.topbar-button button:focus{
+ color: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+
+#R-sidebar {
+ background: var(--INTERNAL-MENU-SECTIONS-BG-color);
+}
+
+#R-header-wrapper {
+ background-color: var(--INTERNAL-MENU-HEADER-BG-color);
+ color: var(--INTERNAL-MENU-SEARCH-color);
+}
+
+.searchbox {
+ border-color: var(--INTERNAL-MENU-SEARCH-BORDER-color);
+ background-color: var(--INTERNAL-MENU-SEARCH-BG-color);
+}
+
+#R-sidebar .searchbox > :first-child,
+#R-sidebar .searchbox > :last-child {
+ color: var(--INTERNAL-MENU-SEARCH-color);
+}
+
+.searchbox input::-webkit-input-placeholder,
+.searchbox input::placeholder {
+ color: var(--INTERNAL-MENU-SEARCH-color);
+}
+
+#R-sidebar .collapsible-menu label,
+#R-sidebar .menu-control,
+#R-sidebar :is( a, span ) {
+ color: var(--INTERNAL-MENU-SECTIONS-LINK-color);
+}
+
+#R-sidebar select:hover,
+#R-sidebar .collapsible-menu li:not(.active) > label:hover,
+#R-sidebar .menu-control:hover,
+#R-sidebar a:hover {
+ color: var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color);
+}
+
+#R-sidebar ul.enlarge > li.parent,
+#R-sidebar ul.enlarge > li.active {
+ background-color: var(--INTERNAL-MENU-SECTIONS-ACTIVE-BG-color);
+}
+
+#R-sidebar li.active > label,
+#R-sidebar li.active > a {
+ color: var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color);
+}
+
+#R-sidebar li.active > a {
+ background-color: var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-BG-color);
+}
+
+#R-sidebar ul li > a .read-icon {
+ color: var(--INTERNAL-MENU-VISITED-color);
+}
+
+#R-sidebar .nav-title {
+ color: var(--INTERNAL-MENU-SECTIONS-LINK-color);
+}
+
+#R-content-wrapper hr {
+ border-color: var(--INTERNAL-MENU-SECTION-SEPARATOR-color);
+}
+
+#R-footer {
+ color: var(--INTERNAL-MENU-SECTIONS-LINK-color);
+}
+
+mark {
+ background-color: var(--INTERNAL-ACCENT-color);
+}
+
+h1 {
+ color: var(--INTERNAL-MAIN-TITLES-H1-color);
+ font-family: var(--INTERNAL-MAIN-TITLES-H1-font);
+}
+
+h2 {
+ color: var(--INTERNAL-MAIN-TITLES-H2-color);
+ font-family: var(--INTERNAL-MAIN-TITLES-H2-font);
+}
+
+h3, .article-subheading {
+ color: var(--INTERNAL-MAIN-TITLES-H3-color);
+ font-family: var(--INTERNAL-MAIN-TITLES-H3-font);
+}
+
+h4 {
+ color: var(--INTERNAL-MAIN-TITLES-H4-color);
+ font-family: var(--INTERNAL-MAIN-TITLES-H4-font);
+}
+
+h5 {
+ color: var(--INTERNAL-MAIN-TITLES-H5-color);
+ font-family: var(--INTERNAL-MAIN-TITLES-H5-font);
+}
+
+h6 {
+ color: var(--INTERNAL-MAIN-TITLES-H6-color);
+ font-family: var(--INTERNAL-MAIN-TITLES-H6-font);
+}
+
+div.box {
+ background-color: var(--VARIABLE-BOX-color);
+ border-color: var(--VARIABLE-BOX-color);
+}
+
+div.box > .box-label {
+ color: var(--VARIABLE-BOX-CAPTION-color);
+}
+
+div.box > .box-content {
+ background-color: var(--VARIABLE-BOX-BG-color);
+ color: var(--VARIABLE-BOX-TEXT-color);
+}
+
+.cstyle.info {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-INFO-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-INFO-TEXT-color);
+}
+
+.cstyle.warning {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-WARNING-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-WARNING-TEXT-color);
+}
+
+.cstyle.note {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-NOTE-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-NOTE-TEXT-color);
+}
+
+.cstyle.tip {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-TIP-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-TIP-TEXT-color);
+}
+
+.cstyle.primary {
+ --VARIABLE-BOX-color: var(--INTERNAL-PRIMARY-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+.cstyle.secondary {
+ --VARIABLE-BOX-color: var(--INTERNAL-SECONDARY-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+.cstyle.accent {
+ --VARIABLE-BOX-color: var(--INTERNAL-ACCENT-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+.cstyle.blue {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-BLUE-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-BLUE-TEXT-color);
+}
+
+.cstyle.green {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-GREEN-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-GREEN-TEXT-color);
+}
+
+.cstyle.grey {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-GREY-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-GREY-TEXT-color);
+}
+
+.cstyle.orange {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-ORANGE-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-ORANGE-TEXT-color);
+}
+
+.cstyle.red {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-RED-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-RED-TEXT-color);
+}
+
+.cstyle.code {
+ --VARIABLE-BOX-color: var(--INTERNAL-CODE-BLOCK-BORDER-color);
+ --VARIABLE-BOX-CAPTION-color: var(--INTERNAL-CODE-BLOCK-color);
+ --VARIABLE-BOX-BG-color: var(--INTERNAL-CODE-BLOCK-BG-color);
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-CODE-BLOCK-color);
+}
+
+.cstyle.transparent {
+ --VARIABLE-BOX-color: transparent;
+ --VARIABLE-BOX-CAPTION-color: var(--INTERNAL-MAIN-TITLES-TEXT-color);
+ --VARIABLE-BOX-BG-color: transparent;
+ --VARIABLE-BOX-TEXT-color: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+code,
+kbd,
+pre:not(.mermaid),
+samp {
+ font-family: var(--INTERNAL-CODE-font);
+}
+
+code {
+ background-color: var(--INTERNAL-CODE-INLINE-BG-color);
+ border-color: var(--INTERNAL-CODE-INLINE-BORDER-color);
+ color: var(--INTERNAL-CODE-INLINE-color);
+}
+
+pre:not(.mermaid) {
+ background-color: var(--INTERNAL-CODE-BLOCK-BG-color);
+ border-color: var(--INTERNAL-CODE-BLOCK-BORDER-color);
+ color: var(--INTERNAL-CODE-BLOCK-color);
+}
+
+div.highlight > div {
+ background-color: var(--INTERNAL-CODE-BLOCK-BG-color);
+ border-color: var(--INTERNAL-CODE-BLOCK-BORDER-color);
+}
+
+table {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+}
+
+.lightbox-back img{
+ background-color: var(--INTERNAL-MAIN-BG-color);
+}
+
+#R-topbar {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+}
+
+.topbar-sidebar-divider {
+ border-inline-start-color: var(--INTERNAL-MENU-TOPBAR-SEPARATOR-color);
+}
+@media screen and (max-width: 47.999rem) {
+ .topbar-sidebar-divider {
+ border-inline-start-color: transparent;
+ }
+}
+
+#R-body a[aria-disabled="true"],
+#R-searchresults .autocomplete-suggestion > .context {
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+#R-searchresults .autocomplete-suggestion > .breadcrumbs {
+ color: var(--INTERNAL-PRIMARY-color);
+}
+
+.copy-to-clipboard-button {
+ background-color: var(--INTERNAL-CODE-INLINE-BG-color);
+ border-color: var(--INTERNAL-CODE-INLINE-BORDER-color);
+ color: var(--INTERNAL-CODE-INLINE-color);
+ font-family: var(--INTERNAL-CODE-font);
+}
+
+.copy-to-clipboard-button:hover {
+ background-color: var(--INTERNAL-CODE-INLINE-color);
+ color: var(--INTERNAL-CODE-INLINE-BG-color);
+}
+
+div.highlight > div table + .copy-to-clipboard-button,
+div.highlight pre:not(.mermaid) + .copy-to-clipboard-button,
+pre:not(.mermaid) .copy-to-clipboard-button {
+ border-color: transparent;
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+
+div.highlight > div table + .copy-to-clipboard-button:hover,
+div.highlight pre:not(.mermaid) + .copy-to-clipboard-button:hover,
+pre:not(.mermaid) .copy-to-clipboard-button:hover {
+ background-color: var(--INTERNAL-MAIN-LINK-color);
+ border-color: var(--INTERNAL-MAIN-LINK-color);
+ color: var(--INTERNAL-CODE-BLOCK-BG-color);
+}
+
+.expand > label {
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+
+.expand > label:hover,
+.expand > label:active,
+.expand > label:focus,
+.expand > input:hover + label,
+.expand > input:active + label,
+.expand > input:focus + label{
+ color: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+
+.svg-reset-button {
+ border-color: transparent;
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+.svg-reset-button:hover {
+ background-color: var(--INTERNAL-MAIN-LINK-color);
+ border-color: var(--INTERNAL-MAIN-LINK-color);
+ color: var(--INTERNAL-MAIN-BG-color);
+}
+
+#R-homelinks {
+ background-color: var(--INTERNAL-MENU-HEADER-BORDER-color);
+}
+
+#R-homelinks a {
+ color: var(--INTERNAL-MENU-HOME-LINK-color);
+}
+
+#R-homelinks a:hover {
+ color: var(--INTERNAL-MENU-HOME-LINK-HOVER-color);
+}
+
+#R-homelinks hr {
+ border-color: var(--INTERNAL-MENU-HEADER-SEPARATOR-color);
+}
+
+.topbar-content {
+ background-color: var(--INTERNAL-MAIN-BG-color);
+}
+
+.btn {
+ background-color: var(--VARIABLE-BOX-color);
+}
+
+.btn > * {
+ border-color: var(--VARIABLE-BOX-color);
+ color: var(--VARIABLE-BOX-CAPTION-color);
+}
+
+.btn.interactive > *:hover,
+.btn.interactive > *:active,
+.btn.interactive > *:focus {
+ background-color: var(--VARIABLE-BOX-BG-color);
+ color: var(--VARIABLE-BOX-TEXT-color);
+}
+
+.btn.cstyle.transparent {
+ --VARIABLE-BOX-BG-color: var(--INTERNAL-BOX-BG-color);
+}
+
+.btn.cstyle.interactive.transparent:hover,
+.btn.cstyle.interactive.transparent:focus,
+.btn.cstyle.interactive.transparent:active,
+.btn.cstyle.interactive.transparent:has(a:hover),
+.btn.cstyle.interactive.transparent:has(a:focus),
+.btn.cstyle.interactive.transparent:has(a:active) {
+ background-color: var(--INTERNAL-BOX-NEUTRAL-color);
+}
+
+.btn.cstyle.transparent > * {
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-NEUTRAL-color);
+ --VARIABLE-BOX-TEXT-color: var(--VARIABLE-BOX-CAPTION-color);
+}
+
+#R-body .tags {
+ --VARIABLE-TAGS-color: var(--INTERNAL-MAIN-BG-color);
+ --VARIABLE-TAGS-BG-color: var(--VARIABLE-BOX-color);
+}
+
+#R-body .tags a.term-link {
+ background-color: var(--VARIABLE-TAGS-BG-color);
+ color: var(--VARIABLE-TAGS-color);
+}
+
+#R-body .tags a.term-link:before {
+ border-right-color: var(--VARIABLE-TAGS-BG-color);
+}
+
+#R-body .tags a.term-link:after {
+ background-color: var(--VARIABLE-TAGS-color);
+}
+
+.badge > * {
+ border-color: var(--VARIABLE-BOX-TEXT-color);
+}
+
+.badge > .badge-content {
+ background-color: var(--VARIABLE-BOX-color);
+ color: var(--VARIABLE-BOX-CAPTION-color);
+}
+
+.badge.cstyle.transparent{
+ --VARIABLE-BOX-BG-color: var(--INTERNAL-BOX-BG-color);
+}
+
+article ul > li > input[type="checkbox"] {
+ background-color: var(--INTERNAL-MAIN-BG-color); /* box background */
+ color: var(--INTERNAL-MAIN-TEXT-color);
+}
+
+#R-body .tab-nav-button {
+ color: var(--INTERNAL-MAIN-LINK-color);
+}
+#R-body .tab-nav-button:not(.active):hover,
+#R-body .tab-nav-button:not(.active):active,
+#R-body .tab-nav-button:not(.active):focus {
+ color: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+
+#R-body .tab-nav-button.active {
+ background-color: var(--VARIABLE-BOX-color);
+ border-bottom-color: var(--VARIABLE-BOX-BG-color);
+ color: var(--VARIABLE-BOX-TEXT-color);
+}
+
+#R-body .tab-nav-button > .tab-nav-text{
+ border-bottom-color: var(--VARIABLE-BOX-color);
+}
+#R-body .tab-nav-button.active > .tab-nav-text{
+ background-color: var(--VARIABLE-BOX-BG-color);
+}
+#R-body .tab-nav-button:not(.active):hover > .tab-nav-text,
+#R-body .tab-nav-button:not(.active):active > .tab-nav-text,
+#R-body .tab-nav-button:not(.active):focus > .tab-nav-text {
+ border-bottom-color: var(--INTERNAL-MAIN-LINK-HOVER-color);
+}
+
+#R-body .tab-content{
+ background-color: var(--VARIABLE-BOX-color);
+ border-color: var(--VARIABLE-BOX-color);
+}
+
+#R-body .tab-content-text{
+ background-color: var(--VARIABLE-BOX-BG-color);
+ color: var(--VARIABLE-BOX-TEXT-color);
+}
+
+.tab-panel-style.cstyle.initial,
+.tab-panel-style.cstyle.default {
+ --VARIABLE-BOX-BG-color: var(--INTERNAL-MAIN-BG-color);
+}
+
+.tab-panel-style.cstyle.transparent {
+ --VARIABLE-BOX-color: rgba( 134, 134, 134, .4 );
+ --VARIABLE-BOX-BG-color: transparent;
+}
+
+#R-body .tab-panel-style.cstyle.initial.tab-nav-button.active,
+#R-body .tab-panel-style.cstyle.default.tab-nav-button.active,
+#R-body .tab-panel-style.cstyle.transparent.tab-nav-button.active{
+ background-color: var(--VARIABLE-BOX-BG-color);
+ border-left-color: var(--VARIABLE-BOX-color);
+ border-right-color: var(--VARIABLE-BOX-color);
+ border-top-color: var(--VARIABLE-BOX-color);
+}
+
+#R-body .tab-panel-style.cstyle.code.tab-nav-button:not(.active){
+ --VARIABLE-BOX-color: var(--INTERNAL-BOX-NEUTRAL-color);
+}
+
+#R-body .tab-panel-style.cstyle.initial.tab-content,
+#R-body .tab-panel-style.cstyle.default.tab-content,
+#R-body .tab-panel-style.cstyle.transparent.tab-content{
+ background-color: var(--VARIABLE-BOX-BG-color);
+}
+
+#R-topbar {
+ border-bottom-color: var(--INTERNAL-MAIN-TOPBAR-BORDER-color);
+}
+
+#R-header-topbar {
+ border-inline-end-color: var(--INTERNAL-MENU-TOPBAR-BORDER-color);
+}
+@media screen and (max-width: 47.999rem) {
+ .mobile-support #R-header-topbar {
+ border-inline-end-color: var(--INTERNAL-MENU-BORDER-color);
+ }
+}
+
+#R-header-wrapper,
+#R-homelinks,
+#R-content-wrapper > * {
+ border-inline-end-color: var(--INTERNAL-MENU-BORDER-color);
+}
+
+#R-sidebar ul.collapsible-menu li.active > a{
+ border-bottom-color: var(--INTERNAL-MENU-BORDER-color);
+ border-top-color: var(--INTERNAL-MENU-BORDER-color);
+ border-inline-start-color: var(--INTERNAL-MENU-BORDER-color);
+ border-inline-end-color: var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-BORDER-color);
+}
diff --git a/fonts/WorkSans-Bold.woff b/fonts/WorkSans-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..3f0806698749d51b2cc320a65d9b207545d81aed
GIT binary patch
literal 105088
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