add _docs folder to build catalog
diff --git a/build/_docs/Gemfile b/build/_docs/Gemfile
new file mode 100644
index 0000000..f471d02
--- /dev/null
+++ b/build/_docs/Gemfile
@@ -0,0 +1,14 @@
+source "https://rubygems.org"
+
+# git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+
+gem 'asciidoctor'
+gem 'jekyll', group: :jekyll_plugins
+gem 'wdm', '~> 0.1.1' if Gem.win_platform?
+group :jekyll_plugins do
+  gem 'jekyll-asciidoc'
+end
+#gem 'pygments.rb', '~> 1.2.1'
+gem 'thread_safe', '~> 0.3.6'
+gem 'slim', '~> 4.0.1'
+gem 'tilt', '~> 2.0.9'
diff --git a/build/_docs/README.adoc b/build/_docs/README.adoc
new file mode 100644
index 0000000..89e0f10
--- /dev/null
+++ b/build/_docs/README.adoc
@@ -0,0 +1,43 @@
+= Apache Ignite Documentation
+:toc:
+:toc-title:
+
+== Overview
+This directory contains the source files, HTML templates and css styles used to integrate the Apache Ignite documentation into this website. The original Apache Ignite documentation is maintained in the same repository as the code base (https://github.com/apache/ignite), in the "/docs" subdirectory. The `build.sh` script pulls the asciidoc files from that repo and builds them with custom templates/styles
+
+
+== Building the Docs Locally
+
+To build the docs locally, you can install `jekyll` and other dependencies on your machine.
+
+=== Install Jekyll and Asciidoctor
+
+. Install Jekyll by following this instruction:  https://jekyllrb.com/docs/installation/[window=_blank]
+. In the “/docs” directory, run the following command:
++
+[source, shell]
+----
+$ bundle
+----
++
+This should install all dependencies, including `asciidoctor`.
+. Build the docs:
++
+[source, shell]
+----
+$ ./build.sh --github-branch=IGNITE-7595 --version=2.8.1
+----
+This will compile the docs and move the built files to /docs/ in the website root dir.
++
+. 
+To test the docs:
++
+[source, shell]
+----
+$ ./build.sh --github-branch=IGNITE-7595 --version=2.8.1 --serve
+----
+
+The command compiles the Asciidoc files into HTML pages and starts a local webserver.
+
+Open `http://localhost:4000/docs[window=_blank]` in your browser.
+
diff --git a/build/_docs/_config.template b/build/_docs/_config.template
new file mode 100644
index 0000000..8ed0611
--- /dev/null
+++ b/build/_docs/_config.template
@@ -0,0 +1,33 @@
+exclude: [guidelines.md,  "Gemfile", "Gemfile.lock", README.adoc, "_docs/code-snippets", "_docs/includes", '*.sh']
+attrs: &asciidoc_attributes
+  version: {version}
+  base_url: {base_url}
+  url_prefix: /docs/{version}
+  stylesdir: /assets/css
+  imagesdir: /docs/{version}
+  source-highlighter: rouge
+  table-stripes: even
+  javadoc_base_url: https://ignite.apache.org/releases/{version}/javadoc
+  javaCodeDir: code-snippets/java/src/main/java/org/apache/ignite/snippets
+  csharpCodeDir: code-snippets/dotnet
+  githubUrl: https://github.com/apache/ignite/tree/master
+  docSourceUrl: https://github.com/apache/ignite/tree/IGNITE-7595/docs
+collections:
+  docs:
+    permalink: /docs/{version}/:path:output_ext
+    output: true
+defaults:
+  -
+    scope:
+      path: ''
+    values:
+      layout: 'doc'
+  -
+    scope:
+      path: '_docs'
+    values:
+      toc: ignite 
+asciidoctor:
+  base_dir: _docs/ 
+  attributes: *asciidoc_attributes
+   
diff --git a/build/_docs/_includes/copyright.html b/build/_docs/_includes/copyright.html
new file mode 100644
index 0000000..faa750d
--- /dev/null
+++ b/build/_docs/_includes/copyright.html
@@ -0,0 +1,5 @@
+<div class="copyright">
+ © {{ "today" | date: "%Y" }} The Apache Software Foundation.<br/>
+Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation. 
+
+</div>
diff --git a/build/_docs/_includes/criticalCSS.html b/build/_docs/_includes/criticalCSS.html
new file mode 100644
index 0000000..8f46822
--- /dev/null
+++ b/build/_docs/_includes/criticalCSS.html
@@ -0,0 +1,4 @@
+<style>:root{--gg-red:#ec1c24;--gg-orange:#ec1c24;--gg-orange-dark:#bc440b;--gg-orange-filter:invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);--gg-dark-gray:#333333;--orange-line-thickness:3px;--block-code-background:rgba(241, 241, 241, 20%);--inline-code-background:rgba(241, 241, 241, 90%);--padding-top:25px;--link-color:#ec1c24;--body-background:#fcfcfc}header{min-height:var(--header-height);background:#fff;box-shadow:0 4px 10px 0 #eee,0 0 4px 0 #d5d5d5;z-index:1}header>.container{display:grid;grid-template-columns:auto auto 1fr auto auto auto;grid-template-areas:'left-toggle home nav ver api search lang';grid-template-rows:40px;flex-direction:row;align-items:center;justify-content:flex-start;padding:12px 20px;max-width:1400px;margin:0 auto}header nav>ul{padding:0;margin:0;list-style:none;display:inherit}header .dropdown{display:none;position:fixed;top:calc(var(--header-height) - 12px);width:auto;background:#fff;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);border-radius:4px;padding-top:10px;padding-bottom:12px;z-index:2}header .dropdown li{display:flex}header .dropdown a{color:grey!important;font-size:16px;padding-top:5px;padding-bottom:4px}header .menu{border:none;background:0 0;width:40px;height:40px;margin-right:12px;grid-area:left-toggle}header .menu img{width:18px;height:12px}header .search-close,header .top-nav-toggle{background:0 0;border:none;padding:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;color:var(--gg-dark-gray);font-size:26px}header .search-toggle{grid-area:search}header .top-nav-toggle{grid-area:top-toggle}header .home{grid-area:home;margin-right:auto}header .home img{height:36px}header #api-docs{grid-area:api;margin:0;display:flex}header #api-docs .dropdown{padding:.5em 0}header #api-docs a{padding:9px 14px;color:var(--gg-dark-gray)!important;text-decoration:none;white-space:nowrap}header #api-docs .dropdown-item a{font-weight:400;display:block;width:100%;min-width:150px}header #lang-selector li{list-style:none;display:flex;padding:9px 14px}header #lang-selector li a{display:flex;color:#000;align-items:center}header #lang-selector li a span{font-size:10px;margin-left:5px}header #lang-selector li a img{width:25px}header #lang-selector li .dropdown{margin-left:-70px}header #lang-selector li .dropdown .dropdown-item{padding:0 1em;margin-bottom:8px}header #lang-selector li .dropdown .dropdown-item a span{font-size:14px}header .search{margin-left:auto;margin-right:20px;grid-area:search}header .search input[type=search]{color:var(--gg-dark-gray);background:rgba(255,255,255,.8);border:1px solid #ccc;padding:10px 15px;font-family:inherit;max-width:148px;height:37px;font-size:14px;-webkit-appearance:unset;appearance:unset}header #version-selector{list-style:none;grid-area:ver;line-height:28px;border-radius:0;margin-right:10px;border:none;color:var(--gg-dark-gray);padding:5px 16px 5px 10px;white-space:nowrap;font-size:14px;width:auto;text-align:right;box-sizing:border-box;text-align-last:right;-moz-appearance:none;-webkit-appearance:none;appearance:none;direction:rtl}header #version-selector option{direction:ltr}header>nav{grid-area:nav;font-size:18px;display:flex;flex-direction:row;margin:0 20px}header #lang-selector{grid-area:lang}header .search-close{margin-right:10px}@media (max-width:600px){header .search{margin-right:5px}header .search input[type=search]{max-width:110px}}header:not(.narrow-header) .search-close,header:not(.narrow-header) .top-nav-toggle{display:none}@media (max-width:670px){header>.container{grid-template-columns:auto 1fr auto;grid-template-areas:'left-toggle home search' 'ver api lang'}header #lang-selector li{justify-content:flex-end}}pre,pre.rouge{padding:8px 15px;background:var(--block-code-background)!important;border-radius:5px;border:1px solid #e5e5e5;overflow-x:auto;min-height:36px;line-height:18px;color:#545454}code{color:#545454}pre.rouge code{background:0 0!important}:not(pre)>code{background:var(--inline-code-background);padding:.1em .5em;background-clip:padding-box;border-radius:3px;color:#545454;font-size:90%}.listingblock .content{position:relative}.highlight{color:#586e75}.highlight .c1{color:#657b83}.highlight .nt{color:#b58900}.highlight .o{color:#93a1a1}.highlight .k{color:#6c71c4}.highlight .kt{color:#cb4b16}.highlight .s,.highlight .s1{color:#859900}.highlight .nc{color:#b58900}.highlight .na{color:#268bd2}body{font-family:'Open Sans',sans-serif}h1,h2{color:#000;font-weight:400;font-family:'Open Sans'}h1{font-size:36px;line-height:40px}a{text-decoration:none;color:var(--link-color)}section{color:#545454}.admonitionblock .icon .title{display:none}body{--header-height:64px;--promotion-bar-height:35px;--footer-height:104px;--footer-gap:60px;padding:0;margin:0;display:flex;flex-direction:column;min-height:100vh;background-color:var(--body-background);font-family:'Open Sans',sans-serif}body>section{flex:1}header{position:-webkit-sticky;position:sticky;top:0;z-index:2}*{box-sizing:border-box}@media (max-width:670px){body{--header-height:97px}}.left-nav{padding:10px 20px;width:289px;overflow-y:auto;top:calc(var(--header-height) + var(--promotion-bar-height));height:calc(100vh - var(--header-height) - var(--promotion-bar-height));font-family:'Open Sans';padding-top:var(--padding-top);background-color:var(--body-background)}.left-nav li{list-style:none}.left-nav a,.left-nav button{text-decoration:none;color:#757575;font-size:16px;display:inline-flex;width:100%;margin:2px 0;padding:.25em .375em;background:0 0;border:none;font:inherit;text-align:left}.left-nav a.active{color:var(--link-color)}.left-nav .nav-group{margin-left:6px;font-size:14px}.left-nav nav{border-left:2px solid #ddd;margin-bottom:5px}.left-nav nav.collapsed{display:none}.left-nav nav>li>a,.left-nav nav>li>button{padding-left:20px;text-align:left}.left-nav nav>li>a.active{border-left:var(--orange-line-thickness) solid var(--active-color);padding-left:calc(20px - var(--orange-line-thickness))}.left-nav nav.sub_pages{border:none}.left-nav nav.sub_pages a{padding-left:32px}.left-nav .state-indicator{margin-left:auto;margin-top:5px;width:6.2px;height:10px;flex:0 0 auto;filter:invert(49%) sepia(4%) saturate(5%) hue-rotate(23deg) brightness(92%) contrast(90%)}.left-nav button.expanded .state-indicator{transform:rotate(90deg)}.right-nav{width:289px;padding:12px 26px;overflow-y:auto;height:calc(100vh - var(--header-height));top:0;position:-webkit-sticky;position:sticky;display:flex;flex-direction:column;font-family:'Open sans';padding-top:var(--padding-top);background-color:#fff}.right-nav ul{list-style:none;padding:0;margin:0}.right-nav li{padding:0}.right-nav a{--border-width:0px;font-size:14px;color:#757575;padding-left:calc(15px * var(--nesting-level) + 8px - var(--border-width));margin:.3em 0;display:inline-block}.right-nav .sectlevel1{border-left:2px solid #ddd}.right-nav .sectlevel1{--nesting-level:0}.right-nav .sectlevel2{--nesting-level:1}.right-nav .sectlevel3{--nesting-level:2}@media (max-width:1200px){.right-nav{width:230px}}.right-nav footer{font-size:12px;padding:calc(var(--footer-gap) * .3) 0 5px;text-align:left;margin:auto 0 0}section.page-docs{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:100%;grid-template-areas:'left-nav content right-nav';line-height:20px;max-width:1440px;margin:auto;width:100%}section.page-docs>article{border-left:1px solid #eee;background-color:#fff;padding:0 50px 30px;grid-area:content;overflow:hidden;font-family:sans-serif;font-size:16px;color:#545454;line-height:1.6em}section.page-docs>article h1,section.page-docs>article h2{font-family:'Open Sans'}@media (max-width:800px){section.page-docs>article{padding-left:15px;padding-right:15px}}section.page-docs .edit-link{position:relative;top:10px;right:10px;float:right;padding-top:calc(var(--header-height) + var(--padding-top));margin-top:calc((-1 * var(--header-height)))}section.page-docs h1,section.page-docs h2{margin-bottom:0}section.page-docs h2[id]{margin-top:var(--margin-top);margin-bottom:calc(var(--margin-top) * .5);z-index:-1}section.page-docs .title{font-style:italic}section.page-docs h2[id]{--margin-top:1.2em}.left-nav{bottom:0;position:-webkit-sticky;position:sticky}.left-nav{grid-area:left-nav}.right-nav{grid-area:right-nav}.left-nav__overlay{display:none;background:rgba(0,0,0,.5);z-index:1;position:fixed;top:var(--header-height);bottom:0;left:0;right:0}@media (max-width:990px){body:not(.hide-left-nav) .left-nav__overlay{display:block}nav.left-nav{background:#fafafa;grid-area:left-nav;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);min-height:calc(100vh - var(--header-height));max-height:calc(100vh - var(--header-height));position:fixed;bottom:0;top:var(--header-height);z-index:2}section.page-docs>article{grid-column-start:left-nav;grid-column-end:content;grid-row:content}}@media (max-width:800px){nav.right-nav{display:none}}:target:before{content:"";display:block;margin-top:calc(var(--header-height) * -1);height:var(--header-height);width:1px}@media (min-width:600px) and (max-width:900px){:target:before{content:"";display:block;width:1px;margin-top:-150px;height:150px}}
+#header #promotion-bar { background-color: #333333; padding: 8px; }
+#header #promotion-bar p { font-size: 14px; line-height: 1.4em; font-weight: 600; padding: 0; margin: 0; color: #f0f0f0; text-align: center;}
+#header #promotion-bar p a { color: #FCB903; } </style>
\ No newline at end of file
diff --git a/build/_docs/_includes/footer.html b/build/_docs/_includes/footer.html
new file mode 100644
index 0000000..f9382c9
--- /dev/null
+++ b/build/_docs/_includes/footer.html
@@ -0,0 +1,7 @@
+      {% assign doc_var = page.leftNav | append: "_var" %}
+      {% assign base_url = '' %}
+      <nav class="promo-nav">
+            <!--#include virtual="/includes/docs_rightnav_promotion.html" -->
+            <a href="#" data-trigger-bugyard-feedback="true" id="doc-feedback-btn">Docs Feedback</a>
+        </nav>
+        
\ No newline at end of file
diff --git a/build/_docs/_includes/header.html b/build/_docs/_includes/header.html
new file mode 100644
index 0000000..ef7dea9
--- /dev/null
+++ b/build/_docs/_includes/header.html
@@ -0,0 +1,73 @@
+<header>
+    <!--#include virtual="/includes/promotion_banner.html" -->
+    <div class="container">
+        <button type='button' class='menu' title='Docs menu'>
+        <img src="{{'assets/images/menu-icon.svg'|relative_url}}" width="18" height="12" alt="menu icon" />
+        </button>
+        <div class='home'>
+            <a href="/" class='home' title='Apache Ignite home'>
+                <img src="{{'assets/images/apache_ignite_logo.svg'|relative_url}}" alt="Apache Ignite logo" width="103" height="36" >
+            </a>
+        </div>
+        
+        
+        <select id="version-selector">
+            <option value="{{site.attrs.version}}">{{site.attrs.version}}</option>
+        </select>
+
+        <nav id="api-docs"><ul>
+            <li><a href="#">APIs</a>
+                <nav class='dropdown'>
+                    <ul>
+                    <li class="dropdown-item"><a href="/releases/latest/javadoc/index.html">Java</a></li>
+
+                    <li class="dropdown-item"><a href="/releases/latest/dotnetdoc/api/">C#/.NET</a></li>
+
+                    <li class="dropdown-item"><a href="/releases/latest/cppdoc/index.html">C++</a></li>
+
+                    <li class="dropdown-item"><a href="/releases/latest/scaladoc/scalar/index.html#org.apache.ignite.scalar.scalar$">Scala</a></li>
+                    </ul>
+                </nav>
+            </li>
+
+            <li><a href="#">Examples</a>
+                <nav class="dropdown">
+                    <ul>
+                    <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank" rel="noopener" title="Apache Ignite Java examples">Java</a></li>
+
+                    <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank" rel="noopener" title="Apache Ignite C#/.NET examples">C#/.NET</a></li>
+
+                    <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank" rel="noopener" title="Apache Ignite C++ examples">C++</a></li>
+
+                    <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/python/examples" target="_blank" rel="noopener" title="Apache Ignite Python examples">Python</a></li>
+
+                    <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/nodejs/examples" target="_blank" rel="noopener" title="Apache Ignite NodeJS examples">NodeJS</a></li>
+
+                    <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/php/examples" target="_blank" rel="noopener" title="Apache Ignite PHP examples">PHP</a></li>
+                </ul>
+                </nav>
+                </li></ul>
+        </nav>
+        
+        <form class='search'>
+            <button class="search-close" type='button'><img src='{{"assets/images/cancel.svg"|relative_url}}' alt="close" width="10" height="10" /></button>
+            <input type="search" placeholder="Search…" id="search-input">
+        </form>
+        
+
+        <nav id="lang-selector"><ul>
+            <li><a href="#"><img src="{{'assets/images/icon_lang_en_75x75.jpg'|relative_url}}" alt="English language icon"  width="25" height="25" /><span>▼</span></a>
+                <nav class="dropdown">
+                    <li class="dropdown-item"><a href="/docs/latest/" ><img src="{{'assets/images/icon_lang_en_75x75.jpg'|relative_url}}" alt="English language icon" width="25" height="25" /><span>English</span></a></li>
+                    <li class="dropdown-item"><a href="https://www.ignite-service.cn/doc/java/" target="_blank" rel="noopener"><img src="{{'assets/images/icon_lang_cn_75x75.jpg'|relative_url}}"  width="25" height="25" alt="Chinese language icon" /><span>Chinese</span></a></li>
+                </nav>
+            </li></ul>
+        </nav>
+
+        <button type='button' class='top-nav-toggle'>⋮</button>
+
+        
+        
+    </div>
+</header>
+
diff --git a/build/_docs/_includes/left-nav.html b/build/_docs/_includes/left-nav.html
new file mode 100644
index 0000000..7e907c8
--- /dev/null
+++ b/build/_docs/_includes/left-nav.html
@@ -0,0 +1,69 @@
+{% assign prefix = site.attrs.url_prefix  %}
+{% assign base_url = site.attrs.base_url %}
+{% assign normalized_path = page.url | replace: ".html","" | remove_first: prefix %}
+{% assign relnormalized_path = normalized_path | remove_first: "/" %}
+
+{% if page.toc != false %}
+<nav class='left-nav' data-swiftype-index='false'>
+    
+    {% for guide in site.data.toc %}
+        <li>
+            {% if guide.items %}
+
+            {% assign guide_class = 'collapsed' %}
+
+            {% capture submenu %}
+                {% for chapter in guide.items %}
+
+                    {% assign chapter_class = 'collapsed' %}
+                    {% assign normalized_chapter_url = chapter.url | prepend: "/" | replace: "//", "/" %}
+                    {% if normalized_path == normalized_chapter_url %}
+                        {% assign guide_class = 'expanded' %}
+                        {% assign chapter_class = 'expanded' %}
+                    {% endif %}
+
+                    <li> 
+                        {% if chapter.items %}
+                            {% assign matching_items_count = chapter.items | where: 'url', relnormalized_path | size %}
+                            {% if matching_items_count != 0 %}
+                                {% assign guide_class = 'expanded parent' %}
+                                {% assign chapter_class = 'expanded parent' %}
+                            {% endif %}
+                            <button
+                                type='button'
+                                class='{{chapter_class}} {% if normalized_path == normalized_chapter_url %}active{% endif %}'>{{chapter.title}}<img class="state-indicator" src="{{'assets/images/left-nav-arrow.svg' | relative_url}}" width="6" height="10"></button>
+                            <nav class="sub_pages {{chapter_class}}">
+
+                            {% for subpage in chapter.items %}
+                                {% assign normalized_subpage_url = subpage.url | prepend: "/" | replace: "//", "/" %}
+                                  {% if normalized_path == normalized_subpage_url %}
+                                     {% assign guide_class = 'expanded' %}
+                                     {% assign chapter_class = 'expanded' %}
+                                  {% endif %}
+
+								  <li><a href="{{base_url}}/{{subpage.url}}" class='{% if normalized_path == normalized_subpage_url %}active{% endif %}'>{{subpage.title}}</a></li>
+                            {% endfor %}
+                            </nav>
+                        {% else %}
+                            <a href="{{base_url}}{{chapter.url|relative_url}}"
+                                class='{% if normalized_path == normalized_chapter_url %}active{% endif %}'
+                            >{{chapter.title}}</a>
+                        {% endif %}
+                    </li>
+                {% endfor %}
+              
+            {% endcapture %}
+
+			<button type='button' class='group-toggle {{guide_class}} {% if page.url contains guide.url %}parent{% endif %}'>{{guide.title}}<img class="state-indicator" src="{{'assets/images/left-nav-arrow.svg'|relative_url}}"  width="6" height="10"></button>
+             <nav class='nav-group {{guide_class}}'>
+            {{ submenu }}         
+             </nav>   
+            {% else %}
+                {% assign normalized_guide_url = guide.url | prepend: "/" %}
+                <a href="{{base_url}}{{guide.url|relative_url}}" class='{% if normalized_guide_url == normalized_path %}active{% endif %}' >{{guide.title}}</a>
+            {% endif %}
+        </li>
+    {% endfor %}
+</nav>
+<div class="left-nav__overlay"></div>
+{% endif %}
diff --git a/build/_docs/_includes/right-nav.html b/build/_docs/_includes/right-nav.html
new file mode 100644
index 0000000..db0c510
--- /dev/null
+++ b/build/_docs/_includes/right-nav.html
@@ -0,0 +1,6 @@
+<nav class="right-nav" data-swiftype-index='false'>
+    <div class="toc-wrapper">
+    {{ page.document | tocify_asciidoc: 6 }}
+    </div>
+    {% include footer.html %}
+</nav>
diff --git a/build/_docs/_includes/section-toc.html b/build/_docs/_includes/section-toc.html
new file mode 100644
index 0000000..394a256
--- /dev/null
+++ b/build/_docs/_includes/section-toc.html
@@ -0,0 +1,14 @@
+{% assign s = include.section %}
+
+{% if include.title %}
+<a {% if s.url %} href="{{site.attrs.base_url}}/{{s.url}}" {% endif %}>{{s.title}}</a>
+{% endif %}
+
+{% if s.items %}
+    <ul class='sub_pages'>
+    {% for subpage in s.items %}
+        <li><a href="{{site.attrs.base_url}}/{{subpage.url}}" class=''>{{subpage.title}}</a></li>
+    {% endfor %}
+    </ul>
+{% endif %}
+
diff --git a/build/_docs/_includes/toc.html b/build/_docs/_includes/toc.html
new file mode 100644
index 0000000..84b713b
--- /dev/null
+++ b/build/_docs/_includes/toc.html
@@ -0,0 +1,46 @@
+<div class="toc">
+{% assign path =  page.path | remove: "/index.adoc" | remove_first: "_" | remove_first:  page.collection | remove_first: "/"  %}
+
+{% assign current_guide = path | split: "/" | first %}
+{% assign section = path | remove: current_guide | remove : "/" %}
+
+
+{% if current_guide != nil %}
+
+    {% assign current_guide_url = current_guide | prepend: "/" %} 
+
+
+    {% assign guide = site.data.toc | where: "url", current_guide_url | first %} 
+
+
+    {% if section != "" %}
+       {% assign section_url = "/" | append: current_guide | append: "/" | append: section %}
+       {% assign sect = guide.items | where: "url", section_url | first %}
+
+       {% include section-toc.html section=sect title=false %}   
+    {% else %}
+        <ul>
+            {% for sect in guide.items %}
+               <li>
+                   {% include section-toc.html section=sect title=true%}   
+               </li>
+            {% endfor %}
+        </ul> 
+    {% endif %}
+{% else %}  
+    {% for guide in site.data.toc %}
+
+        <h2> 
+<a href="{{site.attrs.base_url}}{{guide.url}}" class=''>{{guide.title}}</a> </h2>
+        {% if guide.items %}
+        <ul>
+          {% for sect in guide.items %}
+              <li>
+                  {% include section-toc.html section=sect title=true%}   
+              </li>
+          {% endfor %}
+        </ul>
+        {% endif %}
+    {% endfor %}
+{% endif %}
+</div>
diff --git a/build/_docs/_layouts/default.html b/build/_docs/_layouts/default.html
new file mode 100644
index 0000000..3b33d12
--- /dev/null
+++ b/build/_docs/_layouts/default.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+
+      {% assign doc_var = page.leftNav | append: "_var" %}
+      
+<html lang="en">
+<head>
+   <meta charset="UTF-8">
+    <!-- Global site tag (gtag.js) - Google Analytics -->
+    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
+    <script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+    gtag('config', 'UA-61232409-1');
+    </script>
+
+    <!-- Yandex.Metrika counter -->
+    <script type="text/javascript" >
+      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
+      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
+      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
+
+      ym(72949126, "init", {
+          clickmap:true,
+          trackLinks:true,
+          accurateTrackBounce:true,
+          webvisor:true
+      });
+    </script>
+    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
+    <!-- /Yandex.Metrika counter -->
+
+    <!-- LuckyOrange code -->
+    <script type='text/javascript'>
+      window.__lo_site_id = 284467;
+    
+      (function() {
+        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
+        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
+        })();
+      </script>
+      <!-- /LuckyOrange code -->
+
+<!-- Bugyard widget embed -->
+<script type="text/javascript">!function(){if("function"!=typeof window.bugyard){var a=function(){a.c(arguments)};a.q=[],a.c=function(b){a.q.push(b)},window.bugyard=a;var b=document.createElement("script");b.setAttribute("data-bugyard","610961912c35ff001493163a"),b.setAttribute("async","async"),b.setAttribute("defer","defer"),b.setAttribute("src","https://widget.bugyard.io/bugyard.min.js"),document.getElementsByTagName("head")[0].appendChild(b)}}(); window.bugyard("hideButton"); </script>
+
+
+
+
+
+    <link rel="preload" href='{{"assets/js/code-tabs.js?1" | relative_url}}' as="script" crossorigin>
+    <link rel="preload" href='{{"assets/js/page-nav.js" | relative_url}}' as="script" crossorigin>
+    <link rel="preload" href='{{"assets/js/docs-menu.js?20201005" | relative_url}}' as="script" crossorigin>
+
+    {% include criticalCSS.html %}
+
+    {% if page.content == nil or page.content == ""  %}
+    <META NAME="ROBOTS" CONTENT="NOINDEX">
+    {% endif %}
+
+    
+    <meta name="ignite-version" content="{{site.attrs.version}}" />
+    <title>{{page.title}} | Ignite Documentation</title>
+    {% if site.attrs.base_url contains "/latest" %}
+    <link rel="canonical" href="{{page.id | replace_first: site.attrs.version, 'latest' }}" />
+    {% else %}
+    <link rel="canonical" href="{{page.id}}" />
+    <META NAME="ROBOTS" CONTENT="NOINDEX" />
+    {% endif %}
+	{% capture timestamp %}{{"now"| date: '%s'}}{% endcapture %}
+	  <link rel="shortcut icon" href="{{'/favicon.ico'|relative_url}}">
+    <meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
+
+    <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" />
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" media="print" onload="this.media='all'">
+    <noscript>
+      <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" rel="stylesheet">
+    </noscript>
+
+	<script>
+    // AnchorJS - v4.2.0 - 2019-01-01
+    // https://github.com/bryanbraun/anchorjs
+    // Copyright (c) 2019 Bryan Braun; Licensed MIT
+    !function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link {   opacity: 0;   text-decoration: none;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus  {   opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after {   content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face {   font-family: "anchorjs-icons";   src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o<e.length;o++)if(this.hasAnchorJSLink(e[o]))d.push(o);else{if(e[o].hasAttribute("id"))n=e[o].getAttribute("id");else if(e[o].hasAttribute("data-anchor-id"))n=e[o].getAttribute("data-anchor-id");else{for(c=r=this.urlify(e[o].textContent),a=0;void 0!==s&&(c=r+"-"+a),a+=1,-1!==(s=i.indexOf(c)););s=void 0,i.push(c),e[o].setAttribute("id",c),n=c}n.replace(/-/g," "),(h=document.createElement("a")).className="anchorjs-link "+this.options.class,h.setAttribute("aria-label",this.options.ariaLabel),h.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(h.title=this.options.titleText),u=document.querySelector("base")?window.location.pathname+window.location.search:"",u=this.options.base||u,h.href=u+"#"+n,"always"===l&&(h.style.opacity="1"),""===this.options.icon&&(h.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(h.style.lineHeight="inherit")),"left"===this.options.placement?(h.style.position="absolute",h.style.marginLeft="-1em",h.style.paddingRight="0.5em",e[o].insertBefore(h,e[o].firstChild)):(h.style.paddingLeft="0.375em",e[o].appendChild(h))}for(o=0;o<d.length;o++)e.splice(d[o]-o,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,i=p(A),n=0;n<i.length;n++)(t=i[n].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(i[n]))&&this.elements.splice(e,1),i[n].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){return this.options.truncate||f(this.options),A.trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
+    </script>
+  
+</head>
+<body>
+    {% include header.html %}
+    {{content}}
+    <script>
+    // inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late 
+    anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
+    anchors.options = {
+        placement: 'right',
+        visible: 'always'
+    };
+    </script>
+    
+    <script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+    <script>
+      docsearch({
+        // Your apiKey and indexName will be given to you once
+        // we create your config
+        apiKey: '3eee686c0ebe39eff3baeb18c56fa5f8', 
+        indexName: 'apache_ignite',
+        // Replace inputSelector with a CSS selector
+        // matching your search input
+        inputSelector: '#search-input',
+        // algoliaOptions: { 'facetFilters': ["version:$VERSION"] },
+
+        // Set debug to true to inspect the dropdown
+        debug: false,
+      });
+    </script>
+<script type='module' src='{{"assets/js/index.js?"|append: timestamp | relative_url}}' async crossorigin></script>
+<script type='module' src='{{"assets/js/versioning.js?"|append: timestamp | relative_url}}' async crossorigin></script>
+
+<link rel="stylesheet" href="{{'assets/css/styles.css?'|append: timestamp |relative_url}}" media="print" onload="this.media='all'">
+<noscript><link media="all" rel="stylesheet" href="{{'assets/css/styles.css?'|append: timestamp |relative_url}}"></noscript>
+
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" media="print" onload="this.media='all'">
+<noscript><link media="all" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css"></noscript>
+
+  
+</body>
+
+</html>
diff --git a/build/_docs/_layouts/doc.html b/build/_docs/_layouts/doc.html
new file mode 100644
index 0000000..d66b412
--- /dev/null
+++ b/build/_docs/_layouts/doc.html
@@ -0,0 +1,17 @@
+---
+layout: default
+---
+	 <link rel="stylesheet" href="{{'assets/css/docs.css'|relative_url}}">
+<section class='page-docs'>
+    {% include left-nav.html %}
+    <article data-swiftype-index='true'>
+      <a class='edit-link' href="{{site.attrs.docSourceUrl}}/{{page.path}}" target="_blank">Edit</a>
+        {% if page.path contains ".adoc" %}
+            <h1>{{page.title}}</h1>
+        {% endif %}
+        {{content}}
+        {% include copyright.html %}
+    </article>
+    {% include right-nav.html %}    
+</section>
+<script type='module' src='{{"assets/js/code-copy-to-clipboard.js"|relative_url}}' async crossorigin></script>
diff --git a/build/_docs/_layouts/toc.html b/build/_docs/_layouts/toc.html
new file mode 100644
index 0000000..c075c60
--- /dev/null
+++ b/build/_docs/_layouts/toc.html
@@ -0,0 +1,16 @@
+---
+layout: default
+---
+	 <link rel="stylesheet" href="{{'assets/css/docs.css'|relative_url}}">
+<section class='page-docs'>
+    {% include left-nav.html %}
+    <article data-swiftype-index='true'>
+        {% if page.path contains ".adoc" %}
+            <h1>{{page.title}}</h1>
+        {% endif %}
+        {{ content }}
+		{% include toc.html %}
+    </article>
+    {% include right-nav.html %}    
+</section>
+<script type='module' src='{{"assets/js/code-copy-to-clipboard.js"|relative_url}}' async crossorigin></script>
diff --git a/build/_docs/_sass/asciidoc-pygments.scss b/build/_docs/_sass/asciidoc-pygments.scss
new file mode 100644
index 0000000..1175785
--- /dev/null
+++ b/build/_docs/_sass/asciidoc-pygments.scss
@@ -0,0 +1,38 @@
+pre.pygments .hll { background-color: #ffffcc }
+pre.pygments, pre.pygments code { background: #ffffff; }
+pre.pygments .tok-c { color: #008000 } /* Comment */
+pre.pygments .tok-err { border: 1px solid #FF0000 } /* Error */
+pre.pygments .tok-k { color: #0000ff } /* Keyword */
+pre.pygments .tok-ch { color: #008000 } /* Comment.Hashbang */
+pre.pygments .tok-cm { color: #008000 } /* Comment.Multiline */
+pre.pygments .tok-cp { color: #0000ff } /* Comment.Preproc */
+pre.pygments .tok-cpf { color: #008000 } /* Comment.PreprocFile */
+pre.pygments .tok-c1 { color: #008000 } /* Comment.Single */
+pre.pygments .tok-cs { color: #008000 } /* Comment.Special */
+pre.pygments .tok-ge { font-style: italic } /* Generic.Emph */
+pre.pygments .tok-gh { font-weight: bold } /* Generic.Heading */
+pre.pygments .tok-gp { font-weight: bold } /* Generic.Prompt */
+pre.pygments .tok-gs { font-weight: bold } /* Generic.Strong */
+pre.pygments .tok-gu { font-weight: bold } /* Generic.Subheading */
+pre.pygments .tok-kc { color: #0000ff } /* Keyword.Constant */
+pre.pygments .tok-kd { color: #0000ff } /* Keyword.Declaration */
+pre.pygments .tok-kn { color: #0000ff } /* Keyword.Namespace */
+pre.pygments .tok-kp { color: #0000ff } /* Keyword.Pseudo */
+pre.pygments .tok-kr { color: #0000ff } /* Keyword.Reserved */
+pre.pygments .tok-kt { color: #2b91af } /* Keyword.Type */
+pre.pygments .tok-s { color: #a31515 } /* Literal.String */
+pre.pygments .tok-nc { color: #2b91af } /* Name.Class */
+pre.pygments .tok-ow { color: #0000ff } /* Operator.Word */
+pre.pygments .tok-sa { color: #a31515 } /* Literal.String.Affix */
+pre.pygments .tok-sb { color: #a31515 } /* Literal.String.Backtick */
+pre.pygments .tok-sc { color: #a31515 } /* Literal.String.Char */
+pre.pygments .tok-dl { color: #a31515 } /* Literal.String.Delimiter */
+pre.pygments .tok-sd { color: #a31515 } /* Literal.String.Doc */
+pre.pygments .tok-s2 { color: #a31515 } /* Literal.String.Double */
+pre.pygments .tok-se { color: #a31515 } /* Literal.String.Escape */
+pre.pygments .tok-sh { color: #a31515 } /* Literal.String.Heredoc */
+pre.pygments .tok-si { color: #a31515 } /* Literal.String.Interpol */
+pre.pygments .tok-sx { color: #a31515 } /* Literal.String.Other */
+pre.pygments .tok-sr { color: #a31515 } /* Literal.String.Regex */
+pre.pygments .tok-s1 { color: #a31515 } /* Literal.String.Single */
+pre.pygments .tok-ss { color: #a31515 } /* Literal.String.Symbol */
\ No newline at end of file
diff --git a/build/_docs/_sass/callouts.scss b/build/_docs/_sass/callouts.scss
new file mode 100644
index 0000000..4da359a
--- /dev/null
+++ b/build/_docs/_sass/callouts.scss
@@ -0,0 +1,64 @@
+.admonitionblock {
+    border-left: 6px solid var(--callout-border);
+    background: var(--callout-background);
+    color: var(--callout-text);
+    margin-left: 0;
+    
+    position: relative;
+    display: flex;
+    margin-bottom: 16px;
+	
+	table {
+        margin: 0 !important;
+        width: 100%;
+
+        td {
+            width: 100%;
+        }
+	}
+
+    &+aside {
+        margin-top: 1em;
+    }
+
+    .icon {
+        background-image: var(--callout-icon);
+        background-repeat: no-repeat;
+        background-position: center center;
+        padding: 0px 25px;
+        background-size: 70%;
+        width: 100px;
+        
+        .title {
+            display: none;
+        }
+    }
+
+    &.note {
+        --callout-text: #055799;
+        --callout-border: #055799;
+        --callout-background: #f7f7f7;
+        --callout-icon: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='info-circle' class='svg-inline--fa fa-info-circle fa-w-16' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='%23055799' d='M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z'%3E%3C/path%3E%3C/svg%3E");
+    }
+	
+    &.tip {
+        --callout-text: #65666a;
+        --callout-border: #fcb903;
+        --callout-background: #f7f7f7;
+        --callout-icon: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='lightbulb-on' class='svg-inline--fa fa-lightbulb-on fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='%23fcb903' d='M240.06,454.34A32,32,0,0,0,245.42,472l17.1,25.69c5.23,7.91,17.17,14.28,26.64,14.28h61.7c9.47,0,21.41-6.37,26.64-14.28L394.59,472A37.47,37.47,0,0,0,400,454.34L400,416H240ZM319.45,0C217.44.31,144,83,144,176a175,175,0,0,0,43.56,115.78c16.52,18.85,42.36,58.22,52.21,91.44,0,.28.07.53.11.78H400.12c0-.25.07-.5.11-.78,9.85-33.22,35.69-72.59,52.21-91.44A175,175,0,0,0,496,176C496,78.63,416.91-.31,319.45,0ZM320,96a80.09,80.09,0,0,0-80,80,16,16,0,0,1-32,0A112.12,112.12,0,0,1,320,64a16,16,0,0,1,0,32ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM131.08,55.22l-55.42-32a24,24,0,1,0-24,41.56l55.42,32a24,24,0,1,0,24-41.56Zm457.26,264-55.42-32a24,24,0,1,0-24,41.56l55.42,32a24,24,0,0,0,24-41.56Zm-481.26-32-55.42,32a24,24,0,1,0,24,41.56l55.42-32a24,24,0,0,0-24-41.56ZM520.94,100a23.8,23.8,0,0,0,12-3.22l55.42-32a24,24,0,0,0-24-41.56l-55.42,32a24,24,0,0,0,12,44.78Z'%3E%3C/path%3E%3C/svg%3E");
+    }
+
+    &.caution, &.important {
+        --callout-text: #65666a;
+        --callout-border: #b02032;
+        --callout-background: #f7f7f7;
+        --callout-icon: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='engine-warning' class='svg-inline--fa fa-engine-warning fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='%23b02032' d='M48 256c0-59.53 19.55-117.38 55.36-164.51 5.18-6.81 4.48-16.31-2.03-21.86l-12.2-10.41c-6.91-5.9-17.62-5.06-23.15 2.15C23.32 117.02 0 185.5 0 256c0 70.47 23.32 138.96 65.96 194.62 5.53 7.21 16.23 8.05 23.15 2.16l12.19-10.4c6.51-5.55 7.21-15.04 2.04-21.86C67.55 373.37 48 315.53 48 256zM320 32C196.3 32 96 132.3 96 256c0 123.76 100.3 224 224 224s224-100.24 224-224c0-123.7-100.3-224-224-224zm0 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.44-110.41c-.82 8.18-7.7 14.41-15.92 14.41h-19.04c-8.22 0-15.1-6.23-15.92-14.41l-12.8-128c-.94-9.42 6.45-17.59 15.92-17.59h44.64c9.47 0 16.86 8.17 15.92 17.59l-12.8 128zM572.73 59.71c-5.58-7.18-16.29-7.95-23.17-2l-12.15 10.51c-6.47 5.6-7.1 15.09-1.88 21.87C572.04 137.47 592 195.81 592 256c0 60.23-19.96 118.57-56.46 165.95-5.22 6.78-4.59 16.27 1.88 21.87l12.15 10.5c6.87 5.95 17.59 5.18 23.17-2C616.21 396.38 640 327.31 640 256c0-71.27-23.79-140.34-67.27-196.29z'%3E%3C/path%3E%3C/svg%3E");
+    }
+
+    &.warning {
+        --callout-text: #b02032;
+        --callout-border: #b02032;
+        --callout-background: #f7f7f7;
+        --callout-icon: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='exclamation-triangle' class='svg-inline--fa fa-exclamation-triangle fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='%23b02032' d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3E%3C/path%3E%3C/svg%3E");
+    }
+}
diff --git a/build/_docs/_sass/code.scss b/build/_docs/_sass/code.scss
new file mode 100644
index 0000000..a0e0ece
--- /dev/null
+++ b/build/_docs/_sass/code.scss
@@ -0,0 +1,95 @@
+pre, pre.rouge {
+    padding: 8px 15px;
+    background: var(--block-code-background) !important;
+    border-radius: 5px;
+    border: 1px solid #e5e5e5;
+    overflow-x: auto;
+    // So code copy button doesn't overflow
+    min-height: 36px;
+	line-height: 18px;
+    color: #545454;
+}
+
+code {
+    color: #545454;
+}
+
+pre.rouge code {
+    background: none !important;
+}
+
+pre.rouge .tok-err {
+  	border: none !important;
+  }
+
+code-tabs.code-tabs__initialized {
+    display: block;
+    margin-bottom: 1.5em;
+
+    nav {
+        border-bottom: 1px solid #e0e0e0
+    }
+
+    nav button {
+        background: white;
+        color: inherit;
+        border: none;
+        padding: 0.7em 1em;
+        cursor: pointer;
+        transform: translateY(1px);
+		font-size: .9em;
+
+        &.active {
+            border-bottom: var(--orange-line-thickness) solid var(--link-color);
+        }
+		&.grey {
+		  color: grey;
+		}
+    }
+
+    code-tab:not([hidden]) {
+        display: block;
+    }
+}
+
+*:not(pre) > code {
+    background: var(--inline-code-background);
+    padding: 0.1em 0.5em;
+    background-clip: padding-box;
+    border-radius: 3px;
+    color: #545454;
+    font-size: 90%
+}
+
+// Required for copy button positioning
+.listingblock .content {
+    position: relative;
+}
+
+.copy-to-clipboard-button {
+    margin: 0;
+    padding: 0;
+    width: 36px;
+    height: 36px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background: none;
+    border: none;
+
+    position: absolute;
+    top: 0;
+    right: 0;
+    background: url('../images/copy-icon.svg') center center no-repeat;
+
+    &.copy-to-clipboard-button__success {
+        color: green;
+        background: none;
+        font-size: 20px;
+        font-weight: bold;
+    }
+
+    &:hover:not(.copy-to-clipboard-button__success) {
+        filter: var(--gg-orange-filter);
+    }
+}
diff --git a/build/_docs/_sass/docs.scss b/build/_docs/_sass/docs.scss
new file mode 100644
index 0000000..76f6726
--- /dev/null
+++ b/build/_docs/_sass/docs.scss
@@ -0,0 +1,258 @@
+section.page-docs {
+    display: grid;
+    transition: grid-template-columns 0.15s;
+    grid-template-columns: auto 1fr auto;
+    grid-template-rows: 100%;
+    grid-template-areas: 'left-nav content right-nav';
+    line-height: 20px;
+    max-width: 1440px;
+    margin: auto;
+    width: 100%;
+
+    &>article {
+        // box-shadow: -1px 13px 20px 0 #696c70;
+        border-left: 1px solid #eeeeee;
+        background-color: #ffffff;
+        padding: 0 50px 30px;
+        grid-area: content;
+        overflow: hidden;
+        font-family: sans-serif;
+        font-size: 16px;
+        color: #545454;
+        line-height: 1.6em;
+
+        h1, h2, h3:not(.discrete), h4, h5, strong, th {
+            font-family: 'Open Sans';
+        }
+
+        li {
+            margin-bottom: 0.5em;
+
+            > p {
+                margin-top: 0;
+                margin-bottom: 0;
+            }
+        }
+
+        img {
+            max-width: 100%;
+            height: auto;
+        }
+
+        @media (max-width: 800px) {
+            padding-left: 15px;
+            padding-right: 15px
+        }
+    }
+
+    .edit-link {
+        position:relative;
+        top: 10px;
+        right:10px;
+        float: right;
+        padding-top: calc(var(--header-height) + var(--padding-top));
+        margin-top: calc((-1 * var(--header-height)));
+    }
+
+    h1, h2, h3:not(.discrete), h4, h5 {
+        margin-bottom: 0;
+
+        &[id] {
+            margin-top:  var(--margin-top);
+            margin-bottom: calc(var(--margin-top) * 0.5);
+            // padding-top: calc(var(--header-height) + var(--padding-top));
+            z-index: -1;
+        }
+    }
+
+	.toc > ul {
+   		 margin: 0;
+	}
+
+
+	.content > .pygments.highlight {
+	      margin-top: 0px;
+   	}
+
+	.title {
+	  	font-style: italic;
+	 }
+
+    .checkmark:before {
+       content: '\f14a'; 
+       visibility: visible;
+       font-family: FontAwesome;
+       color: #00a100;
+    }
+    .checkmark {
+        visibility: hidden;
+    }
+
+    .stretch {width: 100%;}
+    h1[id] {
+        --margin-top: 1em;
+    }
+    h2[id] {
+        --margin-top: 1.2em;
+    }
+	.toc > h2 {
+	  --margin-top: 1em;
+	}
+
+    h3[id] {
+        --margin-top: 1.2em;
+    }
+    h4[id] {
+        --margin-top: 0.5em;
+    }
+    h5[id] {
+        --margin-top: 1.67em;
+    }
+    .imageblock .content, .image {
+        text-align: center;
+        display: block;
+    }
+    .imageblock, .image {
+        img:not([width]):not([height]) {
+            width: auto;
+            height: auto;
+            max-width: 100%;
+            max-height: 450px;
+        }
+    }
+	strong {
+	  color: #757575;
+	}
+
+	th.valign-top,td.valign-top { 
+		vertical-align:top;
+	}
+
+    table {
+        margin: 16px 0;
+    }
+
+    table tr td {
+      hyphens: auto;
+    }
+
+	table thead,table tfoot {
+		background:#f7f8f7; 
+	  color: #757575;
+	}
+	table tr.even,table tr.alt{background:#f8f8f7}
+    table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
+
+}
+.copyright {
+    margin-top: 3em;
+    padding-top: 1em;
+    border-top: 1px solid #f0f0f0;
+    font-size: 0.9em;
+    line-height: 1.8em;
+    color: #757575;
+}
+
+body.hide-left-nav {
+    .left-nav {
+        display: none;
+    }
+}
+
+.left-nav {
+    // top: 0;
+    bottom: 0;
+    position: -webkit-sticky;
+    position: sticky;
+}
+.left-nav {
+    // max-height: calc(100vh );
+    grid-area: left-nav;    
+}
+.right-nav {
+    grid-area: right-nav;
+}
+.left-nav__overlay {
+    display: none;
+    background: rgba(0, 0, 0, 0.50);
+    z-index: 1;
+    position: fixed;
+    top: var(--header-height);
+    bottom: 0;
+    left: 0;
+    right: 0;
+}
+
+
+#doc-feedback-btn {
+    background-color: #b02032 !important; // rgb(240, 0, 35) !important;
+    display: block;
+    font-weight: 400;
+    color: white;
+    text-align: center;
+    cursor: pointer;
+    user-select: none;
+    background-color: transparent;
+    border: 1px solid transparent;
+    padding: .375rem .75rem;
+    margin: 1rem auto;
+    font-size: 14px;
+    line-height: 1.5;
+    border-radius: .25rem;
+    transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
+}
+
+@media (max-width: 990px) {
+    body:not(.hide-left-nav) {
+        .left-nav__overlay {
+            display: block;
+        }
+    }
+    nav.left-nav {
+        background: #fafafa;
+        grid-area: left-nav;
+        box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.24), 0 0 4px 0 rgba(0, 0, 0, 0.12);
+        min-height: calc(100vh - var(--header-height));
+        max-height: calc(100vh - var(--header-height));
+        position: fixed;
+        bottom: 0;
+        top: var(--header-height);
+        z-index: 2;
+    }
+    section.page-docs > article {
+        grid-column-start: left-nav;
+        grid-column-end: content;
+        grid-row: content;
+    }
+}
+@media (max-width: 800px) {
+    nav.right-nav {
+        display: block;
+        width: 100%;
+        height: 80px;
+
+        .toc-wrapper {
+            display: none;
+        }
+    }
+    section.page-docs {
+        display: block;
+    }
+}
+
+:target:before {
+    content: "";
+    display: block;
+    margin-top: calc(var(--header-height) * -1);
+    height: var(--header-height);
+    width: 1px;
+}
+@media (min-width: 600px) and  (max-width: 900px) {
+    :target:before {
+        content: "";
+        display: block;
+        width: 1px;
+        margin-top: -150px;
+        height: 150px;
+    }
+}
diff --git a/build/_docs/_sass/footer.scss b/build/_docs/_sass/footer.scss
new file mode 100644
index 0000000..f893f1b
--- /dev/null
+++ b/build/_docs/_sass/footer.scss
@@ -0,0 +1,34 @@
+body > footer {
+    border-top: 2px solid #dddddd;
+    height: var(--footer-height);
+    font-size: 16px;
+    color: #393939;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+
+    @media (max-width: 570px) {
+        .copyright__extra {
+            display: none;
+        }
+    }
+}
+// .right-nav footer {
+//     font-size: 12px;
+//     padding: calc(var(--footer-gap) * 0.3) 0 5px;;
+//     text-align: left;
+//     margin: auto 0 0;
+
+//     a {
+//         margin: 0;
+//     }
+
+//     img {
+//         width: 70px;
+//     }
+
+//     .copyright {
+//         display: none;
+//     }
+// }
diff --git a/build/_docs/_sass/github.scss b/build/_docs/_sass/github.scss
new file mode 100644
index 0000000..bd7fc73
--- /dev/null
+++ b/build/_docs/_sass/github.scss
@@ -0,0 +1,209 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .cm {
+  color: #777772;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #797676;
+  font-weight: bold;
+}
+.highlight .c1 {
+  color: #777772;
+  font-style: italic;
+}
+.highlight .cs {
+  color: #797676;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .c, .highlight .cd {
+  color: #777772;
+  font-style: italic;
+}
+.highlight .err {
+  color: #a61717;
+  background-color: #e3d2d2;
+}
+.highlight .gd {
+  color: #000000;
+  background-color: #ffdddd;
+}
+.highlight .ge {
+  color: #000000;
+  font-style: italic;
+}
+.highlight .gr {
+  color: #aa0000;
+}
+.highlight .gh {
+  color: #797676;
+}
+.highlight .gi {
+  color: #000000;
+  background-color: #ddffdd;
+}
+.highlight .go {
+  color: #888888;
+}
+.highlight .gp {
+  color: #555555;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #aaaaaa;
+}
+.highlight .gt {
+  color: #aa0000;
+}
+.highlight .kc {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kd {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #445588;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kv {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #009999;
+}
+.highlight .mh {
+  color: #009999;
+}
+.highlight .il {
+  color: #009999;
+}
+.highlight .mi {
+  color: #009999;
+}
+.highlight .mo {
+  color: #009999;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #009999;
+}
+.highlight .sb {
+  color: #d14;
+}
+.highlight .sc {
+  color: #d14;
+}
+.highlight .sd {
+  color: #d14;
+}
+.highlight .s2 {
+  color: #d14;
+}
+.highlight .se {
+  color: #d14;
+}
+.highlight .sh {
+  color: #d14;
+}
+.highlight .si {
+  color: #d14;
+}
+.highlight .sx {
+  color: #d14;
+}
+.highlight .sr {
+  color: #009926;
+}
+.highlight .s1 {
+  color: #d14;
+}
+.highlight .ss {
+  color: #990073;
+}
+.highlight .s {
+  color: #d14;
+}
+.highlight .na {
+  color: #008080;
+}
+.highlight .bp {
+  color: #797676;
+}
+.highlight .nb {
+  color: #0086B3;
+}
+.highlight .nc {
+  color: #445588;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #008080;
+}
+.highlight .nd {
+  color: #3c5d5d;
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #800080;
+}
+.highlight .ne {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nf {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #555555;
+}
+.highlight .nt {
+  color: #000080;
+}
+.highlight .vc {
+  color: #008080;
+}
+.highlight .vg {
+  color: #008080;
+}
+.highlight .vi {
+  color: #008080;
+}
+.highlight .nv {
+  color: #008080;
+}
+.highlight .ow {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .o {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #bbbbbb;
+}
+.highlight {
+  background-color: #f8f8f8;
+}
diff --git a/build/_docs/_sass/header.scss b/build/_docs/_sass/header.scss
new file mode 100644
index 0000000..464db4d
--- /dev/null
+++ b/build/_docs/_sass/header.scss
@@ -0,0 +1,535 @@
+header {
+
+    min-height: var(--header-height);
+    background: white;
+    box-shadow: 0 4px 10px 0 #eeeeee, 0 0 4px 0 #d5d5d5;
+    
+
+    z-index: 1;
+
+    #promotion-bar {
+        background-color: #333333;
+        padding: 8px;
+        
+        p {
+            font-size: 14px;
+            line-height: 1.4em;
+            font-weight: 600;
+            padding: 0;
+            margin: 0;
+
+            color: #f0f0f0;
+            text-align: center;
+
+            a {
+                color: #FCB903;
+            }
+        }
+    }
+
+
+    > .container {
+        display: grid;
+        grid-template-columns: auto auto 1fr auto auto auto;
+        grid-template-areas: 'left-toggle home nav ver api search lang';
+        grid-template-rows: 40px;
+        flex-direction: row;
+        align-items: center;
+        justify-content: flex-start;
+        padding: 12px 20px;
+        max-width: 1400px;
+        margin: 0 auto;
+    }
+
+    a:hover, button:hover {
+        opacity: 0.85;
+    }
+
+    li:hover .dropdown, a:focus + .dropdown {
+        display: block;
+    }
+
+    .dropdown-arrow {
+        margin-left: 5px;
+        margin-bottom: 3px;
+
+        width: 8px;
+        height: 4px;
+    }
+
+    nav > ul {
+        padding: 0;
+        margin: 0;
+        list-style: none;
+        display: inherit;
+    }
+
+    .dropdown {
+        display: none;
+        position: fixed;
+        top: calc(var(--header-height) - 12px);
+        width: auto;
+        background: white;
+        box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.24), 0 0 4px 0 rgba(0, 0, 0, 0.12);
+        border-radius: 4px;
+        padding-top: 10px;
+        padding-bottom: 12px;
+        z-index: 2;
+
+        
+
+        li {
+            display: flex;
+        }
+
+        a {
+            color: grey !important;
+            font-size: 16px;
+            padding-top: 5px;
+            padding-bottom: 4px;
+            &:hover {
+                color: var(--gg-orange) !important;
+            }
+        }
+    }
+
+    .menu {
+        border: none;
+        background: none;
+        width: 40px;
+        height: 40px;
+        margin-right: 12px;
+        cursor: pointer;
+        grid-area: left-toggle;
+
+        img {
+            width: 18px;
+            height: 12px;
+        }
+    }
+
+    .search-toggle, .top-nav-toggle, .github, .search-close {
+        background: none;
+        border: none;
+        padding: 0;
+        width: 36px;
+        height: 36px;
+        display: inline-flex;
+        align-items: center;
+        justify-content: center;
+        color: var(--gg-dark-gray);
+        font-size: 26px;
+    }
+    .search-toggle {
+        grid-area: search;
+    }
+    .top-nav-toggle {
+        grid-area: top-toggle;
+    }
+
+    .home {
+        
+        grid-area: home;
+        margin-right: auto;
+        img {
+            height: 36px;
+        }
+    }
+
+    #api-docs {
+        grid-area: api;
+        margin: 0;
+        // font-weight: 600;
+        display: flex;
+
+        > li {
+            list-style: none;
+            margin-right: 0.5em;
+            display: flex;
+        }
+
+        .dropdown {
+            padding: .5em 0;
+        }
+        
+        .dropdown-item-heading, a {
+            padding: 9px 14px;
+            color: var(--gg-dark-gray) !important;
+            text-decoration: none;
+            white-space: nowrap;
+
+            &.active {
+                border-radius: 3px;
+                background-color: #f0f0f0;
+            }
+        }
+
+        .dropdown-item {
+            a {
+                font-weight: normal;
+                display: block;
+                width: 100%;
+                min-width: 150px;
+
+                &:hover {
+                    background-color: #e9e9e9;
+                }
+            }
+        }
+
+        .dropdown-item-heading {
+            font-weight: bold;
+            color: grey !important;
+            border-bottom: 2px solid #e9e9e9;
+            padding-left: 0;
+        }
+
+    }
+    
+    #lang-selector {
+        li {
+            list-style: none;
+            display: flex;
+            padding: 9px 14px;
+
+
+            a {
+
+                display: flex;
+                color: #000000;
+                align-items: center;
+
+                
+                span {
+                    font-size: 10px;
+                    margin-left: 5px;
+                }
+
+
+                img {
+                    width: 25px;
+                }
+
+                
+            }
+
+            .dropdown {
+                margin-left: -70px;
+
+                .dropdown-item {
+                    padding: 0 1em;
+                    margin-bottom: 8px;
+
+                    &:hover {
+                        background-color: #e9e9e9;
+                    }
+
+                    a {
+                        span {
+                            font-size: 14px;
+                        }
+                        &:hover {
+                            color: #000000;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    .search {
+        margin-left: auto;
+        margin-right: 20px;
+        grid-area: search;
+
+        input[type='search'] {
+            color: var(--gg-dark-gray);
+            
+            background: rgba(255, 255, 255, 0.8);
+            border: 1px solid #cccccc;
+            padding: 10px 15px;
+            font-family: inherit;
+            max-width: 148px;
+            height: 37px;
+            font-size: 14px;
+            -webkit-appearance: unset;
+            appearance: unset;
+
+            &[disabled] {
+                opacity: 0.5;
+                cursor: not-allowed;
+            }
+        }
+
+    }
+
+    #version-selector {
+        list-style: none;
+        grid-area: ver;
+        line-height: 28px;
+        border-radius: 0px;
+        margin-right: 10px;
+        border: none;
+        color: var(--gg-dark-gray);
+        
+        padding: 5px 16px 5px 10px;
+        white-space: nowrap;
+        font-size: 14px;
+        width: auto;
+        text-align: right;
+        background:  transparent url("/assets/images/arrow-down.svg") no-repeat center right 5px;
+        box-sizing: border-box;
+        text-align-last: right;
+        -moz-appearance: none;
+        -webkit-appearance: none;
+        appearance: none;
+
+        direction: rtl;
+
+        option {
+            direction: ltr;
+        }
+        
+    }
+    
+         
+
+    &>nav {
+        grid-area: nav;
+        font-size: 18px;
+        display: flex;
+        flex-direction: row;
+        margin: 0 20px;
+
+        li {
+            list-style: none;
+            margin-right: 0.5em;
+            display: flex;
+        }
+
+        a {
+            padding: 9px 14px;
+            color: var(--gg-dark-gray) !important;
+            text-decoration: none;
+            white-space: nowrap;
+
+            &.active {
+                border-radius: 3px;
+                background-color: #f0f0f0;
+            }
+        }
+    }
+
+    #lang-selector {
+        grid-area: lang;
+    }
+
+
+    .search-close {
+        margin-right: 10px;
+    }
+
+
+    
+
+    @media (max-width: 600px) {
+        .search {
+            margin-right: 5px;
+            input[type='search'] {
+                max-width: 110px;
+            }
+        }
+    }
+
+    &:not(.narrow-header) {
+        .search-toggle, .top-nav-toggle, .search-close {
+            display: none;
+        }
+    }
+    &.narrow-header {
+        a.home {
+            top: 0;
+        }
+        &:not(.show-nav) {
+            nav {
+                display: none;
+            }
+        }
+        &.show-search {
+            .search-toggle, .home, .top-nav-toggle, .github, .menu {
+                display: none;
+            }
+            .search {
+                grid-column-start: home;
+                grid-column-end: github;
+                width: 100%;
+                display: flex;
+
+                input {
+                    max-width: initial;
+                    width: 100%;
+                }
+            }
+        }
+        &:not(.show-search) {
+            .search {
+                display: none;
+            }
+        }
+        nav {
+            flex-direction: column;
+            justify-content: stretch;
+
+            li {
+                display: flex;
+            }
+
+            a {
+                width: 100%;
+            }
+        }
+    }
+}
+.swiftype-widget {
+
+    .autocomplete {
+        background-color: white;
+        display: block;
+        list-style-type: none;
+        margin: 0;
+        padding: 0;
+        box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.37);
+        position: absolute;
+        border-radius: 3px;
+        text-align: left;
+        right: 75px !important;
+        min-width: 350px;
+
+        ul {
+
+            background-color: white;
+            display: block;
+            list-style-type: none;
+            margin: 0;
+            padding: 0;
+            border-radius: 3px;
+            text-align: left;
+            max-height: 70vh;
+            overflow: auto;
+
+            li {
+                border-top: 1px solid #e5e5e5;
+                border-bottom: 1px solid #fff;
+                cursor: pointer;
+                padding: 10px 8px;
+                font-size: 13px;
+                list-style-type: none;
+                background-image: none;
+                margin: 0;
+              }
+
+            li.active {
+                border-top: 1px solid #cccccc;
+                border-bottom: 1px solid #cccccc;
+                background-color: #f0f0f0;
+            }
+            
+            p {
+                font-size: 13px;
+                line-height: 16px;
+                margin: 0;
+                padding: 0;
+
+                &.url {
+                    font-size: 11px;
+                    color: #999;
+                }
+            }
+            
+            a {
+                font-size: 15px;
+            }
+            em {
+                font-weight: bold
+            }
+        }
+    }   
+}
+section.hero {
+    background-image: url(../images/dev-internal-bg.jpg);
+    background-position: center;
+    background-position-x: left;
+    background-repeat: no-repeat;
+    background-size: cover;
+    display: grid;
+    grid-template-columns: 1fr auto;
+    grid-template-areas: 'title versions';
+    grid-template-rows: 60px;
+    align-items: center;
+    padding: 5px 30px;
+    flex: unset;
+    
+    
+    .title {
+        color: #f3f3f3;
+        text-transform: uppercase;
+        font-size: 22px;
+    }
+
+    select {
+        list-style: none;
+        
+        line-height: 28px;
+        border-radius: 3px;
+    
+        
+        color: #333333;
+        line-height: 24px;
+        padding: 5px 10px;
+        white-space: nowrap;
+        font-size: 14px;
+        background:  #f0f0f0 url("/assets/images/arrow-down.svg") no-repeat center right 5px;
+    }
+}
+
+@media (max-width: 670px) {
+
+    
+    header > .container{
+        grid-template-columns: auto 1fr auto;
+        grid-template-areas: 
+            'left-toggle home search'
+            'ver api lang';
+        
+        // grid-template-columns: auto auto 1fr auto auto auto;
+        // grid-template-areas: 
+        //     'left-toggle home spacer top-toggle search gh gg'
+        //     'nav         nav  nav    nav        nav    nav nav';
+    }
+
+    header #lang-selector li {
+        justify-content: flex-end;
+    }
+    
+}
+
+/* Angolia seach styles */
+
+
+.algolia-autocomplete .algolia-docsearch-suggestion--highlight {
+    color: #ffffff !important;
+    background: lighten(#ec1c24, 25%) !important;
+}
+
+
+.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight, .algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight, .algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight {
+    padding: 0 0 1px;
+    background: inherit !important;
+    box-shadow: inset 0 -2px 0 0 var(--link-color) !important;
+    color: inherit !important;
+}
+
+.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple, .algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content {
+    background: #f0f0f0 !important;
+}
\ No newline at end of file
diff --git a/build/_docs/_sass/layout.scss b/build/_docs/_sass/layout.scss
new file mode 100644
index 0000000..c3300a6
--- /dev/null
+++ b/build/_docs/_sass/layout.scss
@@ -0,0 +1,41 @@
+body {
+    --header-height: 64px;
+    --promotion-bar-height: 35px;
+    --footer-height: 104px;
+    --footer-gap: 60px;
+
+    // @media (min-width: 451px) and (max-width: 850px) {
+    //     --header-height: 111px;        
+    // }
+
+    padding: 0;
+    margin: 0;
+    display: flex;
+    flex-direction: column;
+    min-height: 100vh;
+    background-color: var(--body-background);
+    font-family: 'Open Sans',sans-serif;
+
+    &>section {
+        flex: 1;
+    }
+}
+header {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 2;
+}
+body > footer {
+    margin: var(--footer-gap) 30px 0;
+}
+* {
+    box-sizing: border-box;
+}
+
+@media (max-width: 670px) {
+
+    body {
+        --header-height: 97px;
+    }
+}
\ No newline at end of file
diff --git a/build/_docs/_sass/left-nav.scss b/build/_docs/_sass/left-nav.scss
new file mode 100644
index 0000000..838e4b4
--- /dev/null
+++ b/build/_docs/_sass/left-nav.scss
@@ -0,0 +1,96 @@
+.left-nav {
+    padding: 10px 20px;
+    width: 289px;
+    overflow-y: auto;
+    top: calc(var(--header-height) + var(--promotion-bar-height));
+    height: calc(100vh - var(--header-height) - var(--promotion-bar-height));
+    font-family: 'Open Sans';
+    padding-top: var(--padding-top);
+    background-color: var(--body-background);
+
+    li {
+        list-style: none;
+    }    
+    a, button {
+        text-decoration: none;
+        color: #757575;
+        font-size: 16px;
+        display: inline-flex;
+        width: 100%;
+        margin: 2px 0;
+        padding: 0.25em 0.375em;
+        background: none;
+        border: none;
+        cursor: pointer;
+        font: inherit;
+        text-align: left;
+
+        &.active, &:hover {
+            color: var(--link-color);
+        }
+    }
+
+	*:focus {
+	   	 outline: none;
+	}
+
+    .nav-group {
+        margin-left: 6px;
+        font-size: 14px;
+    }
+
+    nav {
+        border-left: 2px solid #dddddd;
+//        margin-top: 5px;
+        margin-bottom: 5px;
+
+        &.collapsed {
+            display: none;
+        }
+    }
+
+    nav > li > a, nav > li > button {
+        padding-left: 20px;
+        text-align: left;
+
+        &.active {
+            border-left: var(--orange-line-thickness) solid var(--active-color);
+            padding-left: calc(20px - var(--orange-line-thickness));
+        }
+    }
+
+    nav.sub_pages {
+        border: none;
+    }
+
+	nav.sub_pages a, nav.sub_pages button {
+        padding-left: 32px;
+
+        &.active {
+            padding-left: calc(32px - var(--orange-line-thickness));
+        }
+	}
+
+    .parent {
+        color: #393939;
+    }
+
+    .state-indicator {
+        margin-left: auto;
+        margin-top: 5px;
+        width: 6.2px;
+        height: 10px;
+        flex: 0 0 auto;
+        transition: transform 0.1s;
+        filter: invert(49%) sepia(4%) saturate(5%) hue-rotate(23deg) brightness(92%) contrast(90%);
+    }
+
+    button:hover .state-indicator,
+    button.current .state-indicator {
+        filter: invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);
+    }
+
+    button.expanded .state-indicator {
+        transform: rotate(90deg);
+    }
+}
diff --git a/build/_docs/_sass/right-nav.scss b/build/_docs/_sass/right-nav.scss
new file mode 100644
index 0000000..0e849ae
--- /dev/null
+++ b/build/_docs/_sass/right-nav.scss
@@ -0,0 +1,88 @@
+.right-nav {
+    width: 289px;
+    padding: 12px 26px;
+    overflow-y: auto;
+    height: calc(100vh - var(--header-height));
+    top: var(--header-height);
+    position: -webkit-sticky;
+    position: sticky;
+    display: flex;
+    flex-direction: column;
+    font-family: 'Open sans';
+    padding-top: var(--padding-top);
+    background-color: #ffffff;
+    
+    h6 {
+        margin: 12px 0;
+        font-size: 16px;
+        font-weight: normal;
+    }
+
+    ul {
+        list-style: none;
+        padding: 0;
+        margin: 0;
+        // margin-bottom: auto;
+    }
+
+    li {
+        padding: 0;
+    }
+
+    a {
+        --border-width: 0px;
+        font-size: 14px;
+        color: #757575;
+        padding-left: calc(15px * var(--nesting-level) + 8px - var(--border-width));
+        margin: 0.3em 0;
+        display: inline-block;
+
+        &:hover {
+          color: var(--link-color);
+        }
+
+        &.active {
+            --border-width: var(--orange-line-thickness);
+            border-left: var(--border-width) solid var(--link-color);
+            color: #393939;
+        }
+    }
+
+    .sectlevel1 {
+        border-left: 2px solid #dddddd;
+    }
+
+    @for $i from 1 through 6 {
+        .sectlevel#{$i} {
+            --nesting-level: #{$i - 1};
+        }
+    }
+
+    .promo-nav {
+        bottom: 3rem;
+        left: 50%;
+        width: 90%;
+        max-width: 237px;
+        margin: auto 0 2rem;
+    }
+}
+@media (max-width: 1200px) {
+    .right-nav {
+        width: 230px;
+    }
+}
+
+
+@media (max-width: 800px) {
+    .right-nav {
+
+        .promo-nav {
+            width: 230px;
+            bottom: 0;
+
+            .right-ad {
+                display: none;
+            }
+        }
+    }        
+}
diff --git a/build/_docs/_sass/rouge-base16-solarized.scss b/build/_docs/_sass/rouge-base16-solarized.scss
new file mode 100644
index 0000000..009bb21
--- /dev/null
+++ b/build/_docs/_sass/rouge-base16-solarized.scss
@@ -0,0 +1,77 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #586e75;
+}
+.highlight .err {
+  color: #002b36;
+  background-color: #dc322f;
+}
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs {
+  color: #657b83;
+}
+.highlight .cp {
+  color: #b58900;
+}
+.highlight .nt {
+  color: #b58900;
+}
+.highlight .o, .highlight .ow {
+  color: #93a1a1;
+}
+.highlight .p, .highlight .pi {
+  color: #93a1a1;
+}
+.highlight .gi {
+  color: #859900;
+}
+.highlight .gd {
+  color: #dc322f;
+}
+.highlight .gh {
+  color: #268bd2;
+  background-color: #002b36;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
+  color: #6c71c4;
+}
+.highlight .kc {
+  color: #cb4b16;
+}
+.highlight .kt {
+  color: #cb4b16;
+}
+.highlight .kd {
+  color: #cb4b16;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
+  color: #859900;
+}
+.highlight .sr {
+  color: #2aa198;
+}
+.highlight .si {
+  color: #d33682;
+}
+.highlight .se {
+  color: #d33682;
+}
+.highlight .nn {
+  color: #b58900;
+}
+.highlight .nc {
+  color: #b58900;
+}
+.highlight .no {
+  color: #b58900;
+}
+.highlight .na {
+  color: #268bd2;
+}
+.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
+  color: #859900;
+}
+.highlight .ss {
+  color: #859900;
+}
diff --git a/build/_docs/_sass/text.scss b/build/_docs/_sass/text.scss
new file mode 100644
index 0000000..d83dc6c
--- /dev/null
+++ b/build/_docs/_sass/text.scss
@@ -0,0 +1,48 @@
+body {
+    font-family: 'Open Sans', sans-serif;
+}
+
+h1, h2, h3, h4 {
+    color: #000;
+    font-weight: normal;
+    font-family: 'Open Sans';
+}
+
+h1 {
+    font-size: 36px;
+    line-height: 40px;
+}
+
+a {
+    text-decoration: none;
+    color: var(--link-color);
+}
+
+
+section {
+    color: #545454;
+}
+
+table {
+    border-collapse: collapse;
+
+    td, th {
+        text-align: left;
+        padding: 5px 10px;
+        border-bottom: 1px solid hsl(0, 0%, 85%);
+        border-top: 1px solid hsl(0, 0%, 85%);
+    }
+
+    td p.tableblock {
+        margin-top: 0.5em;
+        margin-bottom: 0.5em;
+
+        &:first-child {
+            margin-top: 0.125em;
+        }
+
+        &:last-child {
+            margin-bottom: 0.125em;
+        }
+    }
+}
diff --git a/build/_docs/_sass/variables.scss b/build/_docs/_sass/variables.scss
new file mode 100644
index 0000000..6c87a1c
--- /dev/null
+++ b/build/_docs/_sass/variables.scss
@@ -0,0 +1,20 @@
+:root {
+    --gg-red: #ec1c24;
+    --gg-orange: #ec1c24;
+    --gg-orange-dark: #bc440b;
+    --gg-orange-filter: invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);
+    --gg-dark-gray: #333333;
+    --orange-line-thickness: 3px;
+    --block-code-background: rgba(241, 241, 241, 20%);
+    --inline-code-background: rgba(241, 241, 241, 90%);
+    --padding-top: 25px; 
+    --link-color: #ec1c24;
+    --body-background: #fcfcfc;
+}
+
+@font-face {
+    font-family: 'Open Sans';
+    font-weight: 300;
+    font-display: swap;
+    font-style: normal;
+}
diff --git a/build/_docs/assets/css/docs.scss b/build/_docs/assets/css/docs.scss
new file mode 100644
index 0000000..a5da4a5
--- /dev/null
+++ b/build/_docs/assets/css/docs.scss
@@ -0,0 +1,5 @@
+---
+---
+// Docs-specific global styles
+body {
+}
diff --git a/build/_docs/assets/css/styles.scss b/build/_docs/assets/css/styles.scss
new file mode 100644
index 0000000..078cb22
--- /dev/null
+++ b/build/_docs/assets/css/styles.scss
@@ -0,0 +1,16 @@
+---
+---
+@import "variables";
+@import "header";
+@import "code";
+@import "rouge-base16-solarized";
+@import "text";
+@import "callouts";
+@import "layout";
+@import "left-nav";
+@import "right-nav";
+@import "footer";
+
+@import "docs";
+
+@import "asciidoc-pygments";
\ No newline at end of file
diff --git a/build/_docs/assets/images/apache_ignite_logo.svg b/build/_docs/assets/images/apache_ignite_logo.svg
new file mode 100644
index 0000000..920d2ea
--- /dev/null
+++ b/build/_docs/assets/images/apache_ignite_logo.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 485.4 204" style="enable-background:new 0 0 485.4 204;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#ED1C24;}
+</style>
+<g>
+	<g>
+		<g>
+			<g>
+				<g>
+					<g>
+						<g>
+							<g>
+								<path d="M222,160.3v-5.6c-3.9,6.1-9.2,10-15.9,11.5c-6.7,1.5-13.3,1-19.8-1.6c-6.6-2.6-12.2-7.5-16.9-14.6
+									c-4.7-7.1-7.1-16.4-7.1-28c0-13.6,3.1-24.5,9.3-33c6.2-8.4,16.2-12.6,30-12.6c10.5,0,20.2,2.8,29.2,8.5
+									c9,5.7,13.4,16.2,13.4,31.5v46.2c0,15.3-4.5,25.7-13.4,31.3c-9,5.6-18.7,8.4-29.2,8.4c-20.1,0-32.6-9.4-37.4-28.2h23.9
+									c1.7,3.1,4.4,5.4,8,7.1c3.6,1.6,7.2,2.1,10.8,1.3c3.6-0.8,6.9-2.9,9.8-6.4C219.8,172.5,221.5,167.3,222,160.3z M184.6,122.6
+									c0,15.1,4.4,23.5,13.1,25.1c8.7,1.6,15.2-0.4,19.3-6.1c2-2.4,3.4-6.2,4.3-11.3c0.9-5.1,0.9-10.2,0.2-15.3
+									c-0.8-5-2.6-9.5-5.4-13.4c-2.8-3.9-7-5.9-12.5-5.9c-7.4,0-12.5,2.7-15.1,8.2C185.9,109.3,184.6,115.6,184.6,122.6z"/>
+								<path d="M324.3,165.5h-11.5c-3.3,0-6-1-8-3.1c-2.1-2.1-3.1-4.8-3.1-8v-44.6c0-5.2-1.6-9.1-4.8-11.5
+									c-3.2-2.4-6.7-3.6-10.7-3.6c-3.9,0-7.4,1.2-10.5,3.6c-3.1,2.4-4.6,6.2-4.6,11.5v55.8h-23v-51.2c0-14.9,3.9-24.8,11.6-29.8
+									c7.8-5,16.3-7.8,25.7-8.2c9.6,0,18.5,2.5,26.6,7.5c8.1,5,12.1,15.2,12.1,30.5V165.5z"/>
+								<path d="M329.9,85.9h23c0,12.2,0,8.1,0,11.2v68.5h-23V85.9z"/>
+								<path d="M395.1,165.5c-7.2,0.4-15,0.3-23.4-0.3c-8.4-0.7-12.6-6-12.6-16.1V63.8h11.8c2.8,0,5.4,1.1,7.5,3.3
+									c2.2,2.2,3.3,4.8,3.3,7.9V78h13.4v4.6c0,3.3-1.1,6-3.3,8c-2.2,2.1-4.8,3.1-7.9,3.1h-2.3v49.1c0,3.7,2.2,5.6,6.6,5.6h6.9
+									V165.5z"/>
+								<path d="M457.7,138.6h16.4c-2.4,9.2-7,16.2-13.8,21c-6.8,5-15.3,7.5-25.6,7.5c-12.5,0-22.2-4-29.2-12.1
+									c-7-7.9-10.5-19.1-10.5-33.8c0-14,3.4-24.9,10.2-32.8c7-8.1,16.7-12.1,29.2-12.1c13.1,0,23.3,3.9,30.5,11.8
+									c7,8.1,10.5,19.3,10.5,33.8c0,0.9,0,1.6,0,2.3c0,0.7,0,1.1,0,1.3c0,1.1-0.1,1.9-0.3,2.3h-56.7c0.2,6.8,1.9,11.8,4.9,15.1
+									c2.8,3.5,7.1,5.2,12.8,5.2c3.7,0,6.9-0.8,9.5-2.3c0.7-0.2,1.3-0.6,1.8-1.2c0.5-0.5,1.1-1.1,1.8-1.8c0.2-0.7,1-1.5,2.5-2.6
+									C453.1,139.2,455.1,138.6,457.7,138.6z M418.4,113.1h33.5c-0.4-5.9-2-10.3-4.6-13.1c-2.8-3.1-6.9-4.6-12.1-4.6
+									c-4.8,0-8.7,1.5-11.8,4.6C420.2,103,418.6,107.4,418.4,113.1z"/>
+							</g>
+							<path d="M134.4,45.8h11.8c3.1,0,5.7,1.1,7.9,3.3c2.2,2.2,3.3,4.8,3.3,7.9v108.6h-23V45.8z"/>
+							<path d="M329.9,63.8h11.8c3.1,0,5.7,1.1,7.9,3.3c2.2,2.2,3.3,4.8,3.3,7.9v6.9h-23V63.8z"/>
+						</g>
+						<g>
+							<path d="M192.5,65h-3.6v-2.6c-1.8,2-4.3,3-7.4,3c-2.9,0-5.4-1-7.5-2.9c-2.2-2.1-3.3-4.7-3.3-7.9c0-3.3,1.2-6,3.5-8.1
+								c2.1-2,4.7-2.9,7.6-2.9c3,0,5.4,1,7.2,3.1v-2.6h3.6V65z M188.8,54.6c0-2-0.7-3.7-2-5.2c-1.4-1.4-3-2.1-5-2.1
+								c-2.1,0-3.8,0.7-5.3,2.2c-1.4,1.4-2.1,2.9-2.1,4.5c0,2.1,0.6,3.9,1.9,5.4c1.3,1.6,3,2.3,5.1,2.3c2,0,3.7-0.7,5.2-2.1
+								C188.1,58.3,188.8,56.6,188.8,54.6z"/>
+							<path d="M218.5,54c0,3.3-1,6-3,8.1c-2.1,2.2-4.7,3.3-8,3.3c-3,0-5.3-1-7.1-2.9v9.4h-3.8V44h3.6v2.5c0.9-1,2-1.7,3.1-2.2
+								c1.2-0.5,2.4-0.7,3.8-0.7c2.9,0,5.5,1,7.7,2.9C217.3,48.5,218.5,51,218.5,54z M214.6,54.5c0-2-0.7-3.7-2.1-5.1
+								c-1.4-1.4-3.2-2.1-5.2-2.1c-2.1,0-3.8,0.8-5.2,2.3c-1.3,1.4-1.9,3.1-1.9,5c0,1.8,0.5,3.3,1.6,4.7c1.3,1.6,3.2,2.4,5.7,2.4
+								c2,0,3.7-0.7,5.1-2.1C214,58.3,214.6,56.6,214.6,54.5z"/>
+							<path d="M243.6,65H240v-2.6c-1.8,2-4.3,3-7.4,3c-2.9,0-5.4-1-7.5-2.9c-2.2-2.1-3.3-4.7-3.3-7.9c0-3.3,1.2-6,3.5-8.1
+								c2.1-2,4.7-2.9,7.6-2.9c3,0,5.4,1,7.2,3.1v-2.6h3.6V65z M240,54.6c0-2-0.7-3.7-2-5.2c-1.4-1.4-3-2.1-5-2.1
+								c-2.1,0-3.8,0.7-5.3,2.2c-1.4,1.4-2.1,2.9-2.1,4.5c0,2.1,0.6,3.9,1.9,5.4c1.3,1.6,3,2.3,5.1,2.3c2,0,3.7-0.7,5.2-2.1
+								C239.2,58.3,240,56.6,240,54.6z"/>
+							<path d="M268.7,58.1c-1.2,2.4-2.6,4.2-4.2,5.4c-1.8,1.3-3.9,2-6.5,2c-2.9,0-5.5-1-7.7-3.1c-2.3-2.2-3.5-4.8-3.5-8h0.2
+								c0,0,0,0.1-0.1,0.2c0-3.3,1.1-6,3.4-8.1c2-1.9,4.4-2.9,7.2-2.9c2.6,0,4.8,0.7,6.8,2c1.9,1.3,3.4,3.2,4.3,5.6h-4.2
+								c-1.4-2.5-3.7-3.8-6.8-3.8c-2,0-3.6,0.7-4.9,2.1c-1.3,1.4-2,3.1-2,5.1c0,2,0.7,3.8,2.1,5.2c1.4,1.4,3.1,2.1,5.1,2.1
+								c1.3,0,2.6-0.3,3.8-1c1.2-0.7,2.1-1.6,2.8-2.7H268.7z"/>
+							<path d="M290.4,65h-3.8V53c0-1.6-0.5-3-1.6-4c-1-1-2.4-1.6-4-1.6c-1.6,0-2.9,0.5-3.9,1.4c-1,1-1.5,2.2-1.5,3.8V65h-3.8V37.1
+								h3.8v8.7c1.5-1.5,3.3-2.2,5.5-2.2c2.4,0,4.5,0.8,6.3,2.5c1.9,1.8,2.9,4.1,2.9,6.9V65z"/>
+							<path d="M315.2,56h-17.7c0.3,1.8,1.2,3.2,2.6,4.3c1.3,0.9,2.7,1.4,4.2,1.4c1.4,0,2.7-0.4,4-1.2c1.3-0.8,2.2-1.9,2.7-3.2h3.9
+								c-1,2.8-2.6,4.8-4.7,6.2c-1.8,1.2-3.8,1.8-6,1.8c-2.8,0-5.2-1-7.2-3c-2.1-2.2-3.2-4.8-3.2-8c0-3.3,1.1-6,3.4-8
+								c2.1-1.9,4.5-2.8,7.3-2.8c2.8,0,5.3,0.9,7.3,2.8c2.3,2.1,3.5,5,3.5,8.6V56z M311.3,52.5c-0.4-1.6-1.3-2.8-2.6-3.8
+								c-1.3-1-2.7-1.5-4.3-1.5c-2,0-3.7,0.7-5,2c-0.9,0.9-1.6,2-1.9,3.3H311.3z"/>
+						</g>
+						<g>
+							<path class="st0" d="M34.6,35.7c0,0-69.5,42.4-4,84.5c12.6,8.2,58.3,31,57,52.1c0,0,27.7-41-12.8-66.8
+								C33.2,79.1,22.8,50.9,34.6,35.7z"/>
+							<path class="st0" d="M10.4,116.7c0,0-24.8,37.6,24,45.3c4.8,0.6,40.1,4.3,49.3,15.9c0,0-0.8-20-29.6-31.8
+								C25.4,134.3,13.6,131.4,10.4,116.7z"/>
+							<path class="st0" d="M106.4,77.2C76.6,46,68.3,26.7,81.1,1.7c0,0-88.9,34.2-1.1,94.9c31.4,21.7,26.2,43.9,26.2,44.7
+								C111.1,136.2,136.2,108.4,106.4,77.2z"/>
+						</g>
+					</g>
+				</g>
+			</g>
+		</g>
+		<g>
+			<path d="M482.9,76.3c0,4.1-3.2,7.3-7.4,7.3c-4.2,0-7.5-3.2-7.5-7.3c0-4,3.3-7.2,7.5-7.2C479.7,69,482.9,72.3,482.9,76.3z
+				 M469.9,76.3c0,3.2,2.4,5.8,5.7,5.8c3.2,0,5.5-2.6,5.5-5.7c0-3.2-2.3-5.8-5.6-5.8C472.2,70.5,469.9,73.1,469.9,76.3z M474.3,80.1
+				h-1.7v-7.2c0.7-0.1,1.6-0.2,2.8-0.2c1.4,0,2,0.2,2.5,0.5c0.4,0.3,0.7,0.9,0.7,1.6c0,0.8-0.6,1.4-1.5,1.7v0.1
+				c0.7,0.3,1.1,0.8,1.3,1.8c0.2,1.1,0.4,1.5,0.5,1.8h-1.8c-0.2-0.3-0.4-0.9-0.6-1.8c-0.1-0.8-0.6-1.1-1.5-1.1h-0.8V80.1z M474.4,76
+				h0.8c0.9,0,1.7-0.3,1.7-1.1c0-0.7-0.5-1.1-1.5-1.1c-0.4,0-0.8,0-0.9,0.1V76z"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/build/_docs/assets/images/apple-blob.svg b/build/_docs/assets/images/apple-blob.svg
new file mode 100644
index 0000000..308bf94
--- /dev/null
+++ b/build/_docs/assets/images/apple-blob.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="111" height="274" viewBox="0 0 111 274">
+    <defs>
+        <linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#FCA44F"/>
+            <stop offset="100%" stop-color="#F86B27"/>
+        </linearGradient>
+        <linearGradient id="b" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#F1474E"/>
+            <stop offset="100%" stop-color="#DF2226"/>
+        </linearGradient>
+    </defs>
+    <g fill="none" fill-rule="evenodd" transform="translate(-13.406 3.425)">
+        <path fill="url(#a)" d="M120.697 3.889L142.52 48.75c2.899 5.96.418 13.141-5.542 16.04a12 12 0 0 1-5.25 1.209H88.315c-6.628 0-12-5.373-12-12a12 12 0 0 1 1.187-5.204L99.093 3.934c2.875-5.972 10.046-8.483 16.017-5.609a12 12 0 0 1 5.587 5.564z" transform="rotate(-7 110 35)"/>
+        <rect width="195" height="196" x="27" y="60.979" fill="url(#b)" opacity=".9" rx="50" transform="rotate(-19 124.5 158.979)"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/arrow-down-white.svg b/build/_docs/assets/images/arrow-down-white.svg
new file mode 100644
index 0000000..12a5613
--- /dev/null
+++ b/build/_docs/assets/images/arrow-down-white.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="8" height="4" viewBox="0 0 8 4">
+    <path fill="#f3f3f3" fill-rule="nonzero" d="M0 0l4 4 4-4z"/>
+</svg>
diff --git a/build/_docs/assets/images/arrow-down.svg b/build/_docs/assets/images/arrow-down.svg
new file mode 100644
index 0000000..170a167
--- /dev/null
+++ b/build/_docs/assets/images/arrow-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="8" height="4" viewBox="0 0 8 4">
+    <path fill="#333" fill-rule="nonzero" d="M0 0l4 4 4-4z"/>
+</svg>
diff --git a/build/_docs/assets/images/background-lines.svg b/build/_docs/assets/images/background-lines.svg
new file mode 100644
index 0000000..50524eb
--- /dev/null
+++ b/build/_docs/assets/images/background-lines.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="998" viewBox="0 0 1440 998">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".06">
+        <path d="M1087.77 102.125C914.927 152.38 790.92 262.896 715.745 433.67 602.985 689.833 378.618 770.826 265.85 780.258c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1106.995 96.612C934.152 146.868 810.144 257.383 734.97 428.158 622.21 684.32 397.843 765.313 285.075 774.746c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1126.22 91.1c-172.843 50.255-296.85 160.77-372.024 331.545C641.436 678.807 417.068 759.8 304.3 769.233c-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1145.446 85.586C972.603 135.842 848.594 246.358 773.42 417.132 660.66 673.294 436.294 754.288 323.525 763.72c-112.768 9.432-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1164.671 80.074C991.828 130.33 867.82 240.845 792.646 411.62 679.886 667.782 455.519 748.775 342.75 758.207c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1183.896 74.56c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1203.122 69.048C1030.278 119.304 906.27 229.82 831.096 400.594 718.336 656.756 493.97 737.75 381.201 747.182c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1222.347 63.535c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1241.572 58.023C1068.73 108.279 944.72 218.794 869.547 389.569 756.787 645.73 532.42 726.724 419.65 736.156c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.229 243.16"/>
+        <path d="M1260.797 52.51c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1280.023 46.997C1107.179 97.253 983.17 207.77 907.997 378.543 795.237 634.705 570.87 715.698 458.102 725.131c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1299.248 41.484C1126.405 91.74 1002.396 202.256 927.223 373.03c-112.76 256.162-337.128 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1318.473 35.972c-172.843 50.256-296.852 160.771-372.025 331.546C833.688 623.68 609.32 704.673 496.552 714.105c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1337.698 30.459c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1356.923 24.946c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1376.149 19.433c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C441.459 707 18.63 817.833-114.442 970.508c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1395.374 13.92c-172.843 50.257-296.852 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1414.6 8.408c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1433.824 2.895c-172.843 50.256-296.851 160.772-372.025 331.546C949.04 590.603 724.672 671.596 611.904 681.03c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1453.05-2.618c-172.844 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C518.36 684.95 95.53 795.782-37.541 948.457c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1472.275-8.13c-172.843 50.256-296.852 160.771-372.025 331.546C987.49 579.578 763.123 660.57 650.354 670.003c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1491.5-13.643c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588C556.811 673.923 133.981 784.757.91 937.43c-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1510.725-19.156C1337.882 31.1 1213.874 141.616 1138.7 312.39c-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1529.95-24.669c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.895 346.588C595.26 662.898 172.43 773.731 39.36 926.406c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1549.176-30.181c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1568.401-35.694c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1587.626-41.207C1414.783 9.05 1290.775 119.565 1215.601 290.34c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C8.32 1011.652-54.089 1092.705-90.194 1153.029"/>
+        <path d="M1606.852-46.72C1434.008 3.536 1310 114.052 1234.826 284.826 1122.066 540.988 897.7 621.982 784.931 631.414c-112.769 9.433-535.599 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1626.077-52.232c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1645.302-57.745C1472.459-7.49 1348.45 103.026 1273.277 273.8 1160.517 529.963 936.15 610.956 823.38 620.389c-112.768 9.432-535.598 120.266-668.67 272.94C65.996 995.114 3.586 1076.167-32.52 1136.49"/>
+        <path d="M1664.527-63.258c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C85.221 989.6 22.812 1070.655-13.293 1130.978"/>
+        <path d="M1683.752-68.77C1510.91-18.516 1386.901 92 1311.727 262.774 1198.967 518.937 974.6 599.931 861.832 609.363c-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1702.978-74.283c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1722.203-79.796C1549.36-29.54 1425.35 80.975 1350.178 251.75c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1741.428-85.309c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.838-187.229 243.161"/>
+        <path d="M1760.653-90.822C1587.81-40.566 1463.802 69.95 1388.628 240.724c-112.76 256.162-337.127 337.156-449.895 346.588-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1779.879-96.334c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1799.104-101.847c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1818.33-107.36c-172.844 50.256-296.852 160.772-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.229 243.161"/>
+        <path d="M1837.554-112.873C1664.711-62.616 1540.703 47.9 1465.53 218.674c-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1856.78-118.385C1683.936-68.13 1559.928 42.386 1484.754 213.16c-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1876.005-123.898c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1895.23-129.41c-172.843 50.255-296.852 160.77-372.025 331.545-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1914.455-134.924c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1933.68-140.436C1760.838-90.18 1636.83 20.335 1561.656 191.11c-112.76 256.162-337.127 337.155-449.895 346.587C998.99 547.13 576.16 657.964 443.09 810.638c-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1952.906-145.949c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94C373.6 906.91 311.19 987.963 275.084 1048.287"/>
+        <path d="M1972.131-151.462c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1991.356-156.975c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M2010.581-162.487c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M2029.807-168c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/cancel.svg b/build/_docs/assets/images/cancel.svg
new file mode 100644
index 0000000..1ca9a6a
--- /dev/null
+++ b/build/_docs/assets/images/cancel.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
+    <title>Cancel-icon</title>
+    <desc>Created with Sketch.</desc>
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Pathes" transform="translate(-718.000000, -27.000000)" fill="#FFFFFF">
+            <polyline id="Cancel-icon" points="732 28.41 730.59 27 725 32.59 719.41 27 718 28.41 723.59 34 718 39.59 719.41 41 725 35.41 730.59 41 732 39.59 726.41 34 732 28.41"></polyline>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/build/_docs/assets/images/checkmark-green.svg b/build/_docs/assets/images/checkmark-green.svg
new file mode 100644
index 0000000..7f4bd06
--- /dev/null
+++ b/build/_docs/assets/images/checkmark-green.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="20" height="15" viewBox="0 0 20 15">
+    <path fill="#157136" fill-rule="evenodd" d="M19.753.348a.846.846 0 0 0-1.189 0L6.666 12.167 1.436 7.01a.846.846 0 0 0-1.19 0 .827.827 0 0 0 0 1.177l5.828 5.745a.855.855 0 0 0 1.19 0l12.49-12.407a.826.826 0 0 0 0-1.177c-.329-.326.328.325 0 0z"/>
+</svg>
diff --git a/build/_docs/assets/images/copy-icon.svg b/build/_docs/assets/images/copy-icon.svg
new file mode 100644
index 0000000..9ee5957
--- /dev/null
+++ b/build/_docs/assets/images/copy-icon.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15" height="18" viewBox="0 0 15 18">
+    <defs>
+        <path id="a" d="M589 97.75h-9c-.825 0-1.5.675-1.5 1.5v10.5h1.5v-10.5h9v-1.5zm2.25 3H583c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h8.25c.825 0 1.5-.675 1.5-1.5v-10.5c0-.825-.675-1.5-1.5-1.5zm0 12H583v-10.5h8.25v10.5z"/>
+    </defs>
+    <use fill="#757575" fill-rule="nonzero" transform="translate(-578 -97)" xlink:href="#a"/>
+</svg>
diff --git a/build/_docs/assets/images/cpp.svg b/build/_docs/assets/images/cpp.svg
new file mode 100644
index 0000000..2ad3e6d
--- /dev/null
+++ b/build/_docs/assets/images/cpp.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="58" height="66" viewBox="0 0 58 66">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#00599C" d="M57.262 48.952c.455-.789.738-1.677.738-2.474V18.79c0-.797-.282-1.685-.738-2.474L29 32.634l28.262 16.318z"/>
+        <path fill="#004482" d="M31.511 64.67L55.49 50.829c.69-.4 1.318-1.088 1.773-1.876L29 32.634.738 48.952c.455.788 1.083 1.477 1.773 1.876L26.49 64.67c1.38.797 3.641.797 5.022 0z"/>
+        <path fill="#659AD2" d="M57.262 16.317c-.455-.788-1.083-1.477-1.773-1.876L31.51.598c-1.38-.797-3.641-.797-5.022 0L2.51 14.441C1.131 15.24 0 17.196 0 18.791v27.687c0 .797.283 1.685.738 2.474L29 32.634l28.262-16.317z"/>
+        <path fill="#FFF" d="M29 51.968c-10.66 0-19.333-8.673-19.333-19.334 0-10.66 8.673-19.333 19.333-19.333 6.879 0 13.294 3.702 16.742 9.66l-8.366 4.842A9.708 9.708 0 0 0 29 22.968c-5.33 0-9.667 4.336-9.667 9.666S23.67 42.301 29 42.301c3.44 0 6.65-1.853 8.376-4.836l8.367 4.841c-3.448 5.96-9.864 9.662-16.743 9.662z"/>
+        <path fill="#FFF" d="M48.333 31.56h-2.148v-2.148h-2.148v2.148H41.89v2.148h2.148v2.149h2.148v-2.149h2.148zM56.389 31.56H54.24v-2.148h-2.148v2.148h-2.149v2.148h2.149v2.149h2.148v-2.149h2.148z"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/dev-internal-bg.jpg b/build/_docs/assets/images/dev-internal-bg.jpg
new file mode 100644
index 0000000..847a3f5
--- /dev/null
+++ b/build/_docs/assets/images/dev-internal-bg.jpg
Binary files differ
diff --git a/build/_docs/assets/images/dotnet.svg b/build/_docs/assets/images/dotnet.svg
new file mode 100644
index 0000000..5801271
--- /dev/null
+++ b/build/_docs/assets/images/dotnet.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 57 57">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#672572" d="M.118.118h56.763v56.763H.118z"/>
+        <g fill="#FFF">
+            <path d="M36.649 21.809c.29-.258.436-.58.436-.967 0-.353-.117-.644-.348-.872-.177-.18-.47-.357-.876-.526-.361-.153-.6-.286-.714-.394-.126-.118-.19-.28-.19-.49 0-.196.075-.355.228-.48.15-.122.352-.184.605-.184.406 0 .765.113 1.078.34v-.766a2.25 2.25 0 0 0-1.016-.221c-.492 0-.893.13-1.206.392-.31.262-.468.59-.468.983 0 .352.1.638.301.858.167.186.45.364.848.539.386.169.645.315.778.437.133.12.2.273.2.459 0 .441-.302.663-.903.663-.45 0-.86-.153-1.235-.455v.817c.335.19.727.286 1.177.286.55-.002.985-.14 1.305-.42zM43.8 22.112h.76v-4.105h1.113v-.643H44.56v-.732c0-.67.264-1.007.796-1.007.189 0 .355.042.506.124v-.687c-.133-.056-.317-.082-.55-.082-.406 0-.748.128-1.025.383-.326.295-.486.706-.486 1.227v.77h-.807v.643h.807v4.11H43.8zM19.564 16.157c.14 0 .257-.048.355-.144a.474.474 0 0 0 .146-.352.472.472 0 0 0-.146-.35.483.483 0 0 0-.355-.143.484.484 0 0 0-.35.142.479.479 0 0 0-.145.35c0 .147.05.265.145.358a.49.49 0 0 0 .35.14zM23.372 22.226c.501 0 .936-.111 1.3-.335v-.723a1.908 1.908 0 0 1-1.169.408c-.492 0-.88-.16-1.175-.482-.293-.323-.44-.758-.44-1.313 0-.574.162-1.035.48-1.38.303-.336.698-.505 1.182-.505.401 0 .778.122 1.13.373v-.78a2.423 2.423 0 0 0-1.097-.243c-.754 0-1.355.24-1.801.719-.448.479-.67 1.109-.67 1.885 0 .694.204 1.26.612 1.697.417.455.967.679 1.648.679zM50.402 17.743h.148c.105 0 .2.096.289.29l.175.387h.275l-.21-.428c-.09-.178-.178-.275-.267-.298v-.006a.548.548 0 0 0 .302-.158.394.394 0 0 0 .108-.281.386.386 0 0 0-.133-.304c-.104-.091-.255-.136-.457-.136h-.452v1.61h.226v-.676h-.004zm0-.74h.2c.14 0 .237.024.297.07.05.045.077.11.077.202 0 .184-.11.275-.332.275h-.242v-.548zM46.902 20.817c0 .934.415 1.402 1.244 1.402.295 0 .535-.051.714-.153v-.648a.808.808 0 0 1-.492.153c-.253 0-.433-.066-.543-.204-.11-.133-.162-.36-.162-.678v-2.682h1.195v-.643h-1.195v-1.406c-.267.086-.52.17-.761.246v1.16h-.816v.643h.816v2.81z"/>
+            <path d="M50.668 18.881c.36 0 .66-.122.905-.362.246-.24.368-.538.368-.893 0-.362-.122-.664-.37-.9a1.242 1.242 0 0 0-.894-.349c-.362 0-.663.122-.907.364a1.213 1.213 0 0 0-.364.894c0 .361.12.658.36.893.237.233.538.353.902.353zm-.796-2.045c.213-.213.479-.32.8-.32.31 0 .577.107.792.32.215.213.324.48.324.796 0 .32-.109.588-.326.799a1.075 1.075 0 0 1-.79.324 1.08 1.08 0 0 1-.79-.32 1.084 1.084 0 0 1-.327-.803c0-.317.106-.58.317-.796zM19.176 17.364h1v4.749h-1zM30.949 22.226c.723 0 1.297-.229 1.725-.686.426-.457.639-1.062.639-1.82 0-.77-.2-1.376-.595-1.815-.399-.437-.951-.659-1.659-.659-.72 0-1.293.211-1.723.63-.463.453-.696 1.09-.696 1.917 0 .723.204 1.306.612 1.747.417.457.985.686 1.697.686zM29.87 18.36c.284-.309.663-.464 1.135-.464.48 0 .852.153 1.118.46.273.319.41.782.41 1.39 0 .581-.128 1.03-.386 1.346-.261.324-.645.486-1.144.486-.483 0-.867-.16-1.153-.481-.289-.32-.43-.766-.43-1.333 0-.606.15-1.072.45-1.404zM41.87 21.54c.425-.457.64-1.062.64-1.82 0-.77-.201-1.376-.596-1.815-.397-.437-.95-.659-1.66-.659-.72 0-1.297.211-1.725.63-.461.453-.694 1.09-.694 1.917 0 .723.204 1.306.612 1.747.417.457.983.686 1.697.686.723 0 1.3-.229 1.725-.686zm-3.254-1.776c0-.606.148-1.074.448-1.404.286-.309.665-.464 1.135-.464.48 0 .852.153 1.118.46.275.319.413.782.413 1.39 0 .581-.129 1.03-.386 1.346-.262.324-.643.486-1.145.486-.48 0-.867-.16-1.155-.481-.286-.318-.428-.763-.428-1.333zM30.691 33.799h6.3V31.95h-6.3v-5.8h6.798v-1.847h-8.838v17.435h9.24V39.89h-7.2zM39.81 26.151h5.031V41.74h2.043V26.15h5.021v-1.847H39.81zM6.396 39.272c-.372 0-.687.133-.947.402a1.34 1.34 0 0 0-.388.973c0 .373.129.695.388.965.26.27.577.408.947.408.382 0 .706-.137.974-.408a1.33 1.33 0 0 0 .402-.965c0-.372-.134-.696-.402-.967a1.305 1.305 0 0 0-.974-.408zM27.116 17.54c-.23.188-.404.454-.515.802h-.02v-.98h-.758v4.748h.759v-2.422c0-.55.117-.98.357-1.293.21-.277.47-.417.778-.417.255 0 .446.05.581.153v-.787a1.244 1.244 0 0 0-.454-.064c-.269 0-.513.088-.728.26zM11.467 16.357h.015l2.47 5.755h.382l2.467-5.755h.017l-.064 5.755h.778v-6.649h-.975l-2.402 5.432h-.034l-2.342-5.432H10.75v6.65h.752zM22.758 39.028l-9.36-14.724h-2.652v17.435h2.042V26.783L22.31 41.74h2.48V24.304h-2.032z"/>
+        </g>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/edition-ce.svg b/build/_docs/assets/images/edition-ce.svg
new file mode 100644
index 0000000..fad4eb5
--- /dev/null
+++ b/build/_docs/assets/images/edition-ce.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="74" viewBox="0 0 86 74">
+    <defs>
+        <path id="a" d="M.022.27h85.154v72.867H.022z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#DF2226" d="M46.604 43.541a4.004 4.004 0 0 1-4.006 4.004 3.998 3.998 0 0 1-3.995-4.004 3.998 3.998 0 0 1 3.995-4.003 4.004 4.004 0 0 1 4.006 4.003"/>
+        <path fill="#DF2226" d="M42.602 40.9a2.65 2.65 0 0 0-2.648 2.642 2.649 2.649 0 0 0 2.648 2.64 2.648 2.648 0 0 0 2.645-2.64 2.649 2.649 0 0 0-2.645-2.642m0 8.001c-2.957 0-5.365-2.405-5.365-5.359a5.372 5.372 0 0 1 5.365-5.361 5.371 5.371 0 0 1 5.362 5.361 5.369 5.369 0 0 1-5.362 5.359"/>
+        <path fill="#DF2226" d="M41.073 45.073L29.516 31.201a.582.582 0 0 1 .074-.828.583.583 0 0 1 .753 0l13.873 11.56a2.227 2.227 0 0 1 .282 3.14 2.229 2.229 0 0 1-3.425 0M13.345 44.517H1.142a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 1 1 0 2.283M83.873 44.517H71.67a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 0 1 0 2.283"/>
+        <g transform="translate(0 .696)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#DF2226" d="M13.165 73.137h-.003a1.14 1.14 0 0 1-.806-.338C4.402 64.772.022 54.131.022 42.845.022 19.367 19.126.269 42.602.269c23.477 0 42.575 19.098 42.575 42.576 0 11.286-4.377 21.924-12.33 29.954-.217.217-.487.258-.81.338-.303 0-.593-.121-.807-.332l-8.656-8.632a1.142 1.142 0 0 1 0-1.614 1.133 1.133 0 0 1 1.61 0l7.838 7.809c7.022-7.494 10.875-17.224 10.875-27.523 0-22.218-18.078-40.296-40.296-40.296S2.306 20.627 2.306 42.845c0 10.299 3.852 20.029 10.871 27.523l7.835-7.844a1.138 1.138 0 1 1 1.61 1.61l-8.653 8.668a1.136 1.136 0 0 1-.804.335" mask="url(#b)"/>
+        </g>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/edition-ee.svg b/build/_docs/assets/images/edition-ee.svg
new file mode 100644
index 0000000..fbc466d
--- /dev/null
+++ b/build/_docs/assets/images/edition-ee.svg
@@ -0,0 +1,25 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="84" height="84" viewBox="0 0 84 84">
+    <defs>
+        <path id="a" d="M.559.511h34.1v39.027H.56z"/>
+        <path id="c" d="M.333.109h34.099v11.383H.333z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#713C80" d="M2.164 69.539l14.888 8.59 14.888-8.59V52.352L17.052 43.74 2.164 52.352V69.54zM17.052 80.46c-.19 0-.371-.052-.54-.145L.54 71.096a1.084 1.084 0 0 1-.54-.931V51.726c0-.385.21-.743.54-.932l15.972-9.24a1.116 1.116 0 0 1 1.08 0l15.972 9.24c.334.19.537.547.537.932v18.439c0 .382-.203.736-.537.932l-15.972 9.22a1.114 1.114 0 0 1-.54.144zM51.654 69.539l14.885 8.59 14.888-8.59V52.352L66.54 43.74l-14.885 8.613V69.54zM66.539 80.46a1.1 1.1 0 0 1-.537-.145l-15.972-9.22a1.076 1.076 0 0 1-.54-.931V51.726c0-.385.207-.743.54-.932L66 41.554c.337-.189.75-.186 1.08 0l15.972 9.24c.334.19.54.547.54.932v18.439c0 .385-.206.74-.54.932l-15.972 9.22c-.165.092-.35.144-.54.144z"/>
+        <path fill="#713C80" d="M29.045 73.711l13.643 7.888 12.763-7.375-5.418-3.127a1.066 1.066 0 0 1-.544-.936V51.726c0-.385.207-.736.544-.932l15.965-9.24c.337-.193.75-.186 1.083 0L72.52 44.7V29.937l-12.78-7.372v6.608c0 .386-.206.747-.54.933L43.228 39.32c-.337.2-.746.2-1.076 0L26.18 30.106a1.061 1.061 0 0 1-.54-.933v-6.608l-12.76 7.372v13.719l3.63-2.102a1.123 1.123 0 0 1 1.084 0l15.968 9.24c.334.196.54.547.54.932V70.16c0 .385-.206.746-.54.936l-4.517 2.614zm13.643 10.217c-.185 0-.375-.048-.54-.145l-15.803-9.136a1.07 1.07 0 0 1-.54-.936c0-.378.203-.743.54-.932l5.597-3.24V52.351l-14.889-8.614-4.712 2.728a1.088 1.088 0 0 1-1.084 0 1.073 1.073 0 0 1-.54-.932v-16.22c0-.388.203-.743.54-.939l14.923-8.62c.333-.19.746-.19 1.08 0 .334.192.543.557.543.939v7.853l14.885 8.59 14.889-8.59v-7.853c0-.382.206-.747.54-.94.333-.189.746-.189 1.083 0l14.94 8.621c.337.196.544.55.544.94v17.261c0 .392-.207.743-.544.936a1.082 1.082 0 0 1-1.08 0l-6.522-3.774-14.885 8.614v17.186l6.498 3.75a1.083 1.083 0 0 1 0 1.875l-14.923 8.62c-.165.097-.35.145-.54.145z"/>
+        <g transform="translate(25.08 -.072)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#713C80" d="M2.722 28.62l14.885 8.589 14.889-8.59V11.433l-14.889-8.59-14.885 8.59v17.186zm14.885 10.918c-.185 0-.371-.049-.536-.145L1.099 30.177a1.075 1.075 0 0 1-.54-.928V10.81c0-.389.206-.746.54-.935L17.07.655a1.075 1.075 0 0 1 1.076 0l15.972 9.22c.337.189.54.546.54.935V29.25c0 .381-.203.736-.54.928l-15.972 9.216c-.165.096-.35.145-.54.145z" mask="url(#b)"/>
+        </g>
+        <g transform="translate(49.16 50.528)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#713C80" d="M17.383 11.492c-.19 0-.372-.048-.54-.144L.874 2.128C.358 1.83.18 1.168.48.656c.299-.523.96-.698 1.475-.402l15.429 8.91L32.81.253c.52-.3 1.18-.12 1.476.402.3.513.124 1.173-.392 1.472l-15.972 9.22a1.087 1.087 0 0 1-.54.144" mask="url(#d)"/>
+        </g>
+        <path fill="#713C80" d="M66.543 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.598 0 1.08.482 1.08 1.08v18.446c0 .588-.482 1.073-1.08 1.073M17.059 62.02c-.19 0-.372-.048-.54-.144L.547 52.656c-.516-.298-.691-.959-.392-1.472.296-.522.96-.698 1.476-.402l15.428 8.91 15.428-8.91c.516-.3 1.177-.12 1.476.402.3.513.12 1.174-.395 1.473l-15.969 9.219a1.087 1.087 0 0 1-.54.144"/>
+        <path fill="#713C80" d="M17.059 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.599 0 1.08.482 1.08 1.08v18.446c0 .588-.481 1.073-1.08 1.073M42.695 21.033c-.19 0-.372-.048-.54-.145l-15.972-9.222a1.073 1.073 0 0 1-.396-1.47c.3-.522.96-.7 1.476-.402l15.432 8.91 15.428-8.91c.516-.299 1.176-.12 1.476.403.299.512.12 1.17-.396 1.469l-15.972 9.222c-.168.097-.35.145-.536.145"/>
+        <path fill="#713C80" d="M42.695 39.472a1.08 1.08 0 0 1-1.08-1.076V19.954a1.078 1.078 0 1 1 2.156 0v18.442c0 .591-.481 1.076-1.076 1.076"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/edition-ue.svg b/build/_docs/assets/images/edition-ue.svg
new file mode 100644
index 0000000..0d788ed
--- /dev/null
+++ b/build/_docs/assets/images/edition-ue.svg
@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="87" viewBox="0 0 86 87">
+    <defs>
+        <path id="a" d="M.841.473h15.423v15.365H.841z"/>
+        <path id="c" d="M1.26.484h11.02v10.983H1.26z"/>
+        <path id="e" d="M0 88.393h85.903V2.866H0z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd" transform="translate(0 -2)">
+        <path fill="#F16623" d="M42.953 31.386c-7.892 0-14.314 6.39-14.314 14.242 0 7.854 6.422 14.244 14.314 14.244s14.31-6.39 14.31-14.244c0-7.852-6.418-14.242-14.31-14.242m0 30.696c-9.113 0-16.524-7.381-16.524-16.454 0-9.07 7.41-16.452 16.524-16.452 9.11 0 16.523 7.381 16.523 16.452 0 9.073-7.413 16.454-16.523 16.454"/>
+        <g transform="translate(34.4 2.393)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#F16623" d="M8.553 2.683c-3.036 0-5.504 2.454-5.504 5.47 0 3.018 2.468 5.472 5.504 5.472 3.035 0 5.5-2.454 5.5-5.472 0-3.016-2.465-5.47-5.5-5.47m0 13.155C4.3 15.838.84 12.392.84 8.153c0-4.235 3.46-7.68 7.712-7.68 4.251 0 7.711 3.445 7.711 7.68 0 4.24-3.46 7.685-7.711 7.685" mask="url(#b)"/>
+        </g>
+        <path fill="#F16623" d="M5.51 13.844a3.292 3.292 0 0 0-3.297 3.283 3.292 3.292 0 0 0 3.297 3.28c1.82 0 3.3-1.474 3.3-3.28 0-1.81-1.48-3.283-3.3-3.283m0 8.772c-3.039 0-5.51-2.462-5.51-5.49 0-3.027 2.471-5.492 5.51-5.492 3.041 0 5.512 2.465 5.512 5.493 0 3.027-2.47 5.49-5.512 5.49M12.12 35.77c-3.037 0-5.505 2.454-5.505 5.472 0 3.019 2.468 5.473 5.504 5.473 3.033 0 5.501-2.454 5.501-5.473 0-3.018-2.468-5.472-5.5-5.472m0 13.155c-4.252 0-7.712-3.446-7.712-7.683 0-4.234 3.46-7.682 7.711-7.682s7.709 3.448 7.709 7.682c0 4.237-3.458 7.683-7.709 7.683M75.986 52.393c-4.245 0-7.705 3.437-7.705 7.666 0 4.225 3.46 7.665 7.705 7.665 4.249 0 7.706-3.44 7.706-7.665 0-4.229-3.457-7.666-7.706-7.666m0 17.541c-5.463 0-9.912-4.432-9.912-9.875 0-5.447 4.449-9.876 9.912-9.876 5.467 0 9.916 4.429 9.916 9.876 0 5.443-4.449 9.875-9.916 9.875M78.19 18.231c-3.036 0-5.501 2.454-5.501 5.473 0 3.015 2.465 5.47 5.5 5.47 3.037 0 5.505-2.455 5.505-5.47 0-3.019-2.468-5.473-5.504-5.473m0 13.155c-4.251 0-7.712-3.445-7.712-7.682s3.46-7.683 7.712-7.683c4.251 0 7.711 3.446 7.711 7.683s-3.46 7.682-7.711 7.682M9.365 78.523a3.295 3.295 0 0 0-3.297 3.286c0 1.803 1.476 3.276 3.297 3.276 1.82 0 3.3-1.473 3.3-3.276a3.297 3.297 0 0 0-3.3-3.286m0 8.775c-3.04 0-5.51-2.468-5.51-5.49 0-3.03 2.47-5.495 5.51-5.495 3.041 0 5.51 2.466 5.51 5.496 0 3.021-2.469 5.49-5.51 5.49M34.143 68.658c-3.036 0-5.504 2.454-5.504 5.473 0 3.018 2.468 5.472 5.504 5.472 3.036 0 5.501-2.454 5.501-5.472 0-3.019-2.465-5.473-5.501-5.473m0 13.155c-4.251 0-7.711-3.445-7.711-7.682 0-4.234 3.46-7.683 7.71-7.683 4.252 0 7.712 3.449 7.712 7.683 0 4.237-3.46 7.682-7.711 7.682"/>
+        <g transform="translate(51.6 76.927)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#F16623" d="M6.77 2.694c-1.821 0-3.3 1.47-3.3 3.285 0 1.803 1.479 3.274 3.3 3.274 1.82 0 3.296-1.47 3.296-3.274a3.291 3.291 0 0 0-3.297-3.285m0 8.775c-3.038 0-5.51-2.468-5.51-5.49C1.26 2.946 3.732.484 6.77.484c3.039 0 5.51 2.462 5.51 5.495 0 3.022-2.471 5.49-5.51 5.49" mask="url(#d)"/>
+        </g>
+        <path fill="#F16623" d="M31.313 35.8L8.695 20.227l1.252-1.817L32.565 33.98z"/>
+        <mask id="f" fill="#fff">
+            <use xlink:href="#e"/>
+        </mask>
+        <path fill="#F16623" d="M41.69 30.728h2.21V17.466h-2.21zM56.71 38.684l-1.087-1.926 17.11-9.632 1.087 1.926zM67.224 57.816l-10.32-6.052 1.121-1.906 10.32 6.051zM55.147 79.531l-7.955-19.049 2.041-.848 7.952 19.046zM36.293 67.897l-2.099-.685 2.449-7.497 2.1.688zM12.95 79.834l-1.665-1.454 19.82-22.74 1.669 1.45zM27.595 44.535l-9.116-.82.2-2.201 9.114.82zM42.12 55.189c.578.06 1.086.06 1.665 0l.37-1.669a.997.997 0 0 1 .705-.745 6.945 6.945 0 0 0 1.493-.62c.324-.18.72-.168 1.032.032l1.436.915c.425-.356.82-.751 1.176-1.178l-.918-1.437a1.01 1.01 0 0 1-.025-1.029c.258-.461.467-.966.616-1.496.1-.353.387-.625.745-.705l1.669-.37a7.687 7.687 0 0 0 0-1.663l-1.669-.37a.996.996 0 0 1-.745-.705 6.984 6.984 0 0 0-.616-1.499c-.181-.321-.17-.717.025-1.026l.918-1.436a9.708 9.708 0 0 0-1.176-1.179l-1.436.915c-.312.2-.708.209-1.029.031a6.877 6.877 0 0 0-1.496-.616c-.356-.1-.625-.39-.706-.748l-.37-1.669a7.703 7.703 0 0 0-1.665 0l-.37 1.669c-.077.358-.35.648-.702.748a6.784 6.784 0 0 0-1.5.616 1 1 0 0 1-1.026-.031l-1.436-.912a9.313 9.313 0 0 0-1.178 1.176l.914 1.436c.198.31.21.705.032 1.026-.26.464-.467.969-.62 1.5a.996.996 0 0 1-.747.704l-1.669.37c-.026.29-.043.565-.043.832 0 .266.017.541.043.83l1.669.37c.36.081.647.353.748.706a7.03 7.03 0 0 0 .619 1.496c.178.324.166.717-.032 1.03l-.914 1.436c.355.427.751.82 1.178 1.178l1.436-.915a.993.993 0 0 1 1.027-.031c.464.26.969.467 1.499.619.353.1.625.384.702.745l.37 1.669zm.833 2.05c-.501 0-1.015-.04-1.568-.121a1.36 1.36 0 0 1-1.124-1.05l-.344-1.553a8.899 8.899 0 0 1-.802-.33l-1.342.855a1.366 1.366 0 0 1-1.545-.06 11.11 11.11 0 0 1-2.199-2.202 1.356 1.356 0 0 1-.06-1.542l.854-1.342a8.622 8.622 0 0 1-.33-.805l-1.556-.344a1.36 1.36 0 0 1-1.05-1.121c-.08-.56-.12-1.07-.12-1.568 0-.496.04-1.01.12-1.566a1.367 1.367 0 0 1 1.053-1.126l1.554-.344c.097-.273.206-.542.33-.803l-.855-1.341a1.356 1.356 0 0 1 .06-1.543 11.11 11.11 0 0 1 2.2-2.201 1.366 1.366 0 0 1 1.544-.06l1.342.854c.26-.12.53-.232.802-.33l.344-1.554a1.36 1.36 0 0 1 1.124-1.049c1.112-.16 2.021-.16 3.133 0 .55.083 1.004.502 1.124 1.05l.344 1.553c.275.098.545.21.806.33l1.336-.855a1.37 1.37 0 0 1 1.548.06c.834.628 1.57 1.368 2.201 2.202.336.447.361 1.067.06 1.543l-.854 1.341c.12.261.232.53.33.803l1.554.344c.544.12.966.576 1.046 1.126.083.557.12 1.07.12 1.566s-.037 1.006-.12 1.568c-.078.55-.502 1-1.046 1.12l-1.554.345a9.48 9.48 0 0 1-.33.805l.854 1.342a1.366 1.366 0 0 1-.06 1.542 11.202 11.202 0 0 1-2.201 2.202c-.45.338-1.07.36-1.546.06l-1.338-.855c-.261.124-.53.233-.806.33l-.344 1.557a1.36 1.36 0 0 1-1.124 1.046c-.556.08-1.066.12-1.565.12z" mask="url(#f)"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/events-nav-arrow.svg b/build/_docs/assets/images/events-nav-arrow.svg
new file mode 100644
index 0000000..217fdaa
--- /dev/null
+++ b/build/_docs/assets/images/events-nav-arrow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="26" viewBox="0 0 14 26">
+    <path fill="none" fill-rule="evenodd" stroke="#F86B27" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 1L1.444 12.556 13 24.11"/>
+</svg>
diff --git a/build/_docs/assets/images/feature-easy-installation.svg b/build/_docs/assets/images/feature-easy-installation.svg
new file mode 100644
index 0000000..0d788ed
--- /dev/null
+++ b/build/_docs/assets/images/feature-easy-installation.svg
@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="87" viewBox="0 0 86 87">
+    <defs>
+        <path id="a" d="M.841.473h15.423v15.365H.841z"/>
+        <path id="c" d="M1.26.484h11.02v10.983H1.26z"/>
+        <path id="e" d="M0 88.393h85.903V2.866H0z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd" transform="translate(0 -2)">
+        <path fill="#F16623" d="M42.953 31.386c-7.892 0-14.314 6.39-14.314 14.242 0 7.854 6.422 14.244 14.314 14.244s14.31-6.39 14.31-14.244c0-7.852-6.418-14.242-14.31-14.242m0 30.696c-9.113 0-16.524-7.381-16.524-16.454 0-9.07 7.41-16.452 16.524-16.452 9.11 0 16.523 7.381 16.523 16.452 0 9.073-7.413 16.454-16.523 16.454"/>
+        <g transform="translate(34.4 2.393)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#F16623" d="M8.553 2.683c-3.036 0-5.504 2.454-5.504 5.47 0 3.018 2.468 5.472 5.504 5.472 3.035 0 5.5-2.454 5.5-5.472 0-3.016-2.465-5.47-5.5-5.47m0 13.155C4.3 15.838.84 12.392.84 8.153c0-4.235 3.46-7.68 7.712-7.68 4.251 0 7.711 3.445 7.711 7.68 0 4.24-3.46 7.685-7.711 7.685" mask="url(#b)"/>
+        </g>
+        <path fill="#F16623" d="M5.51 13.844a3.292 3.292 0 0 0-3.297 3.283 3.292 3.292 0 0 0 3.297 3.28c1.82 0 3.3-1.474 3.3-3.28 0-1.81-1.48-3.283-3.3-3.283m0 8.772c-3.039 0-5.51-2.462-5.51-5.49 0-3.027 2.471-5.492 5.51-5.492 3.041 0 5.512 2.465 5.512 5.493 0 3.027-2.47 5.49-5.512 5.49M12.12 35.77c-3.037 0-5.505 2.454-5.505 5.472 0 3.019 2.468 5.473 5.504 5.473 3.033 0 5.501-2.454 5.501-5.473 0-3.018-2.468-5.472-5.5-5.472m0 13.155c-4.252 0-7.712-3.446-7.712-7.683 0-4.234 3.46-7.682 7.711-7.682s7.709 3.448 7.709 7.682c0 4.237-3.458 7.683-7.709 7.683M75.986 52.393c-4.245 0-7.705 3.437-7.705 7.666 0 4.225 3.46 7.665 7.705 7.665 4.249 0 7.706-3.44 7.706-7.665 0-4.229-3.457-7.666-7.706-7.666m0 17.541c-5.463 0-9.912-4.432-9.912-9.875 0-5.447 4.449-9.876 9.912-9.876 5.467 0 9.916 4.429 9.916 9.876 0 5.443-4.449 9.875-9.916 9.875M78.19 18.231c-3.036 0-5.501 2.454-5.501 5.473 0 3.015 2.465 5.47 5.5 5.47 3.037 0 5.505-2.455 5.505-5.47 0-3.019-2.468-5.473-5.504-5.473m0 13.155c-4.251 0-7.712-3.445-7.712-7.682s3.46-7.683 7.712-7.683c4.251 0 7.711 3.446 7.711 7.683s-3.46 7.682-7.711 7.682M9.365 78.523a3.295 3.295 0 0 0-3.297 3.286c0 1.803 1.476 3.276 3.297 3.276 1.82 0 3.3-1.473 3.3-3.276a3.297 3.297 0 0 0-3.3-3.286m0 8.775c-3.04 0-5.51-2.468-5.51-5.49 0-3.03 2.47-5.495 5.51-5.495 3.041 0 5.51 2.466 5.51 5.496 0 3.021-2.469 5.49-5.51 5.49M34.143 68.658c-3.036 0-5.504 2.454-5.504 5.473 0 3.018 2.468 5.472 5.504 5.472 3.036 0 5.501-2.454 5.501-5.472 0-3.019-2.465-5.473-5.501-5.473m0 13.155c-4.251 0-7.711-3.445-7.711-7.682 0-4.234 3.46-7.683 7.71-7.683 4.252 0 7.712 3.449 7.712 7.683 0 4.237-3.46 7.682-7.711 7.682"/>
+        <g transform="translate(51.6 76.927)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#F16623" d="M6.77 2.694c-1.821 0-3.3 1.47-3.3 3.285 0 1.803 1.479 3.274 3.3 3.274 1.82 0 3.296-1.47 3.296-3.274a3.291 3.291 0 0 0-3.297-3.285m0 8.775c-3.038 0-5.51-2.468-5.51-5.49C1.26 2.946 3.732.484 6.77.484c3.039 0 5.51 2.462 5.51 5.495 0 3.022-2.471 5.49-5.51 5.49" mask="url(#d)"/>
+        </g>
+        <path fill="#F16623" d="M31.313 35.8L8.695 20.227l1.252-1.817L32.565 33.98z"/>
+        <mask id="f" fill="#fff">
+            <use xlink:href="#e"/>
+        </mask>
+        <path fill="#F16623" d="M41.69 30.728h2.21V17.466h-2.21zM56.71 38.684l-1.087-1.926 17.11-9.632 1.087 1.926zM67.224 57.816l-10.32-6.052 1.121-1.906 10.32 6.051zM55.147 79.531l-7.955-19.049 2.041-.848 7.952 19.046zM36.293 67.897l-2.099-.685 2.449-7.497 2.1.688zM12.95 79.834l-1.665-1.454 19.82-22.74 1.669 1.45zM27.595 44.535l-9.116-.82.2-2.201 9.114.82zM42.12 55.189c.578.06 1.086.06 1.665 0l.37-1.669a.997.997 0 0 1 .705-.745 6.945 6.945 0 0 0 1.493-.62c.324-.18.72-.168 1.032.032l1.436.915c.425-.356.82-.751 1.176-1.178l-.918-1.437a1.01 1.01 0 0 1-.025-1.029c.258-.461.467-.966.616-1.496.1-.353.387-.625.745-.705l1.669-.37a7.687 7.687 0 0 0 0-1.663l-1.669-.37a.996.996 0 0 1-.745-.705 6.984 6.984 0 0 0-.616-1.499c-.181-.321-.17-.717.025-1.026l.918-1.436a9.708 9.708 0 0 0-1.176-1.179l-1.436.915c-.312.2-.708.209-1.029.031a6.877 6.877 0 0 0-1.496-.616c-.356-.1-.625-.39-.706-.748l-.37-1.669a7.703 7.703 0 0 0-1.665 0l-.37 1.669c-.077.358-.35.648-.702.748a6.784 6.784 0 0 0-1.5.616 1 1 0 0 1-1.026-.031l-1.436-.912a9.313 9.313 0 0 0-1.178 1.176l.914 1.436c.198.31.21.705.032 1.026-.26.464-.467.969-.62 1.5a.996.996 0 0 1-.747.704l-1.669.37c-.026.29-.043.565-.043.832 0 .266.017.541.043.83l1.669.37c.36.081.647.353.748.706a7.03 7.03 0 0 0 .619 1.496c.178.324.166.717-.032 1.03l-.914 1.436c.355.427.751.82 1.178 1.178l1.436-.915a.993.993 0 0 1 1.027-.031c.464.26.969.467 1.499.619.353.1.625.384.702.745l.37 1.669zm.833 2.05c-.501 0-1.015-.04-1.568-.121a1.36 1.36 0 0 1-1.124-1.05l-.344-1.553a8.899 8.899 0 0 1-.802-.33l-1.342.855a1.366 1.366 0 0 1-1.545-.06 11.11 11.11 0 0 1-2.199-2.202 1.356 1.356 0 0 1-.06-1.542l.854-1.342a8.622 8.622 0 0 1-.33-.805l-1.556-.344a1.36 1.36 0 0 1-1.05-1.121c-.08-.56-.12-1.07-.12-1.568 0-.496.04-1.01.12-1.566a1.367 1.367 0 0 1 1.053-1.126l1.554-.344c.097-.273.206-.542.33-.803l-.855-1.341a1.356 1.356 0 0 1 .06-1.543 11.11 11.11 0 0 1 2.2-2.201 1.366 1.366 0 0 1 1.544-.06l1.342.854c.26-.12.53-.232.802-.33l.344-1.554a1.36 1.36 0 0 1 1.124-1.049c1.112-.16 2.021-.16 3.133 0 .55.083 1.004.502 1.124 1.05l.344 1.553c.275.098.545.21.806.33l1.336-.855a1.37 1.37 0 0 1 1.548.06c.834.628 1.57 1.368 2.201 2.202.336.447.361 1.067.06 1.543l-.854 1.341c.12.261.232.53.33.803l1.554.344c.544.12.966.576 1.046 1.126.083.557.12 1.07.12 1.566s-.037 1.006-.12 1.568c-.078.55-.502 1-1.046 1.12l-1.554.345a9.48 9.48 0 0 1-.33.805l.854 1.342a1.366 1.366 0 0 1-.06 1.542 11.202 11.202 0 0 1-2.201 2.202c-.45.338-1.07.36-1.546.06l-1.338-.855c-.261.124-.53.233-.806.33l-.344 1.557a1.36 1.36 0 0 1-1.124 1.046c-.556.08-1.066.12-1.565.12z" mask="url(#f)"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/feature-fast.svg b/build/_docs/assets/images/feature-fast.svg
new file mode 100644
index 0000000..5889878
--- /dev/null
+++ b/build/_docs/assets/images/feature-fast.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="74" viewBox="0 0 86 74">
+    <defs>
+        <path id="a" d="M.022 1.27h85.154v72.867H.022z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#F16623" d="M46.604 43.541a4.004 4.004 0 0 1-4.006 4.004 3.998 3.998 0 0 1-3.995-4.004 3.998 3.998 0 0 1 3.995-4.003 4.004 4.004 0 0 1 4.006 4.003"/>
+        <path fill="#F16623" d="M42.602 40.9a2.65 2.65 0 0 0-2.648 2.642 2.649 2.649 0 0 0 2.648 2.64 2.648 2.648 0 0 0 2.645-2.64 2.649 2.649 0 0 0-2.645-2.642m0 8.001c-2.957 0-5.365-2.405-5.365-5.359a5.372 5.372 0 0 1 5.365-5.361 5.371 5.371 0 0 1 5.362 5.361 5.369 5.369 0 0 1-5.362 5.359"/>
+        <path fill="#F16623" d="M41.073 45.073L29.516 31.201a.582.582 0 0 1 .074-.828.583.583 0 0 1 .753 0l13.873 11.56a2.227 2.227 0 0 1 .282 3.14 2.229 2.229 0 0 1-3.425 0M13.345 44.517H1.142a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 1 1 0 2.283M83.873 44.517H71.67a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 0 1 0 2.283"/>
+        <g transform="translate(0 -.304)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#F16623" d="M13.165 74.137h-.003a1.14 1.14 0 0 1-.806-.338C4.402 65.772.022 55.131.022 43.845c0-23.478 19.104-42.576 42.58-42.576 23.477 0 42.575 19.098 42.575 42.576 0 11.286-4.377 21.924-12.33 29.954-.217.217-.487.258-.81.338-.303 0-.593-.121-.807-.332l-8.656-8.632a1.142 1.142 0 0 1 0-1.614 1.133 1.133 0 0 1 1.61 0l7.838 7.809c7.022-7.494 10.875-17.224 10.875-27.523 0-22.218-18.078-40.296-40.296-40.296S2.306 21.627 2.306 43.845c0 10.299 3.852 20.029 10.871 27.523l7.835-7.844a1.138 1.138 0 1 1 1.61 1.61l-8.653 8.668a1.136 1.136 0 0 1-.804.335" mask="url(#b)"/>
+        </g>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/feature-reliable.svg b/build/_docs/assets/images/feature-reliable.svg
new file mode 100644
index 0000000..d677c70
--- /dev/null
+++ b/build/_docs/assets/images/feature-reliable.svg
@@ -0,0 +1,25 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="84" height="84" viewBox="0 0 84 84">
+    <defs>
+        <path id="a" d="M1.559 2.511h34.1v39.027H1.56z"/>
+        <path id="c" d="M1.333 1.109h34.099v11.383H1.333z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#FFF" d="M2.164 69.539l14.888 8.59 14.888-8.59V52.352L17.052 43.74 2.164 52.352V69.54zM17.052 80.46c-.19 0-.371-.052-.54-.145L.54 71.096a1.084 1.084 0 0 1-.54-.931V51.726c0-.385.21-.743.54-.932l15.972-9.24a1.116 1.116 0 0 1 1.08 0l15.972 9.24c.334.19.537.547.537.932v18.439c0 .382-.203.736-.537.932l-15.972 9.22a1.114 1.114 0 0 1-.54.144zM51.654 69.539l14.885 8.59 14.888-8.59V52.352L66.54 43.74l-14.885 8.613V69.54zM66.539 80.46a1.1 1.1 0 0 1-.537-.145l-15.972-9.22a1.076 1.076 0 0 1-.54-.931V51.726c0-.385.207-.743.54-.932L66 41.554c.337-.189.75-.186 1.08 0l15.972 9.24c.334.19.54.547.54.932v18.439c0 .385-.206.74-.54.932l-15.972 9.22c-.165.092-.35.144-.54.144z"/>
+        <path fill="#FFF" d="M29.045 73.711l13.643 7.888 12.763-7.375-5.418-3.127a1.066 1.066 0 0 1-.544-.936V51.726c0-.385.207-.736.544-.932l15.965-9.24c.337-.193.75-.186 1.083 0L72.52 44.7V29.937l-12.78-7.372v6.608c0 .386-.206.747-.54.933L43.228 39.32c-.337.2-.746.2-1.076 0L26.18 30.106a1.061 1.061 0 0 1-.54-.933v-6.608l-12.76 7.372v13.719l3.63-2.102a1.123 1.123 0 0 1 1.084 0l15.968 9.24c.334.196.54.547.54.932V70.16c0 .385-.206.746-.54.936l-4.517 2.614zm13.643 10.217c-.185 0-.375-.048-.54-.145l-15.803-9.136a1.07 1.07 0 0 1-.54-.936c0-.378.203-.743.54-.932l5.597-3.24V52.351l-14.889-8.614-4.712 2.728a1.088 1.088 0 0 1-1.084 0 1.073 1.073 0 0 1-.54-.932v-16.22c0-.388.203-.743.54-.939l14.923-8.62c.333-.19.746-.19 1.08 0 .334.192.543.557.543.939v7.853l14.885 8.59 14.889-8.59v-7.853c0-.382.206-.747.54-.94.333-.189.746-.189 1.083 0l14.94 8.621c.337.196.544.55.544.94v17.261c0 .392-.207.743-.544.936a1.082 1.082 0 0 1-1.08 0l-6.522-3.774-14.885 8.614v17.186l6.498 3.75a1.083 1.083 0 0 1 0 1.875l-14.923 8.62c-.165.097-.35.145-.54.145z"/>
+        <g transform="translate(24.08 -2.072)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#FFF" d="M3.722 30.62l14.885 8.589 14.889-8.59V13.433l-14.889-8.59-14.885 8.59v17.186zm14.885 10.918c-.185 0-.371-.049-.536-.145L2.099 32.177a1.075 1.075 0 0 1-.54-.928V12.81c0-.389.206-.746.54-.935l15.972-9.22a1.075 1.075 0 0 1 1.076 0l15.972 9.22c.337.189.54.546.54.935V31.25c0 .381-.203.736-.54.928l-15.972 9.216c-.165.096-.35.145-.54.145z" mask="url(#b)"/>
+        </g>
+        <g transform="translate(48.16 49.528)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#FFF" d="M18.383 12.492c-.19 0-.372-.048-.54-.144L1.874 3.128c-.516-.299-.695-.96-.395-1.472.299-.523.96-.698 1.475-.402l15.429 8.91 15.428-8.91c.52-.3 1.18-.12 1.476.402.3.513.124 1.173-.392 1.472l-15.972 9.22a1.087 1.087 0 0 1-.54.144" mask="url(#d)"/>
+        </g>
+        <path fill="#FFF" d="M66.543 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.598 0 1.08.482 1.08 1.08v18.446c0 .588-.482 1.073-1.08 1.073M17.059 62.02c-.19 0-.372-.048-.54-.144L.547 52.656c-.516-.298-.691-.959-.392-1.472.296-.522.96-.698 1.476-.402l15.428 8.91 15.428-8.91c.516-.3 1.177-.12 1.476.402.3.513.12 1.174-.395 1.473l-15.969 9.219a1.087 1.087 0 0 1-.54.144"/>
+        <path fill="#FFF" d="M17.059 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.599 0 1.08.482 1.08 1.08v18.446c0 .588-.481 1.073-1.08 1.073M42.695 21.033c-.19 0-.372-.048-.54-.145l-15.972-9.222a1.073 1.073 0 0 1-.396-1.47c.3-.522.96-.7 1.476-.402l15.432 8.91 15.428-8.91c.516-.299 1.176-.12 1.476.403.299.512.12 1.17-.396 1.469l-15.972 9.222c-.168.097-.35.145-.536.145"/>
+        <path fill="#FFF" d="M42.695 39.472a1.08 1.08 0 0 1-1.08-1.076V19.954a1.078 1.078 0 1 1 2.156 0v18.442c0 .591-.481 1.076-1.076 1.076"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/github-gray.svg b/build/_docs/assets/images/github-gray.svg
new file mode 100644
index 0000000..664368e
--- /dev/null
+++ b/build/_docs/assets/images/github-gray.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path fill="#333" fill-rule="nonzero" d="M12 0C5.373 0 0 5.373 0 12c0 5.303 3.438 9.8 8.207 11.386.6.11.819-.26.819-.577 0-.286-.011-1.232-.017-2.234-3.337.725-4.042-1.415-4.042-1.415-.547-1.386-1.333-1.755-1.333-1.755-1.09-.744.083-.73.083-.73 1.205.084 1.84 1.237 1.84 1.237 1.07 1.834 2.809 1.304 3.491.996.11-.773.42-1.304.762-1.602-2.664-.304-5.466-1.333-5.466-5.932 0-1.31.468-2.38 1.234-3.22-.122-.305-.535-1.526.119-3.177 0 0 1.006-.322 3.3 1.23.957-.267 1.983-.399 3.003-.403 1.02.004 2.046.137 3.004.405 2.29-1.554 3.298-1.23 3.298-1.23.656 1.652.243 2.872.12 3.175.769.84 1.233 1.91 1.233 3.22 0 4.61-2.806 5.626-5.48 5.923.432.372.815 1.101.815 2.22 0 1.605-.016 2.898-.016 3.294 0 .319.218.692.826.575C20.565 21.796 24 17.3 24 12c0-6.627-5.373-12-12-12z"/>
+</svg>
diff --git a/build/_docs/assets/images/github-white.svg b/build/_docs/assets/images/github-white.svg
new file mode 100644
index 0000000..5ae1ae6
--- /dev/null
+++ b/build/_docs/assets/images/github-white.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path fill="#FFF" fill-rule="nonzero" d="M12 0C5.373 0 0 5.373 0 12c0 5.303 3.438 9.8 8.207 11.386.6.11.819-.26.819-.577 0-.286-.011-1.232-.017-2.234-3.337.725-4.042-1.415-4.042-1.415-.547-1.386-1.333-1.755-1.333-1.755-1.09-.744.083-.73.083-.73 1.205.084 1.84 1.237 1.84 1.237 1.07 1.834 2.809 1.304 3.491.996.11-.773.42-1.304.762-1.602-2.664-.304-5.466-1.333-5.466-5.932 0-1.31.468-2.38 1.234-3.22-.122-.305-.535-1.526.119-3.177 0 0 1.006-.322 3.3 1.23.957-.267 1.983-.399 3.003-.403 1.02.004 2.046.137 3.004.405 2.29-1.554 3.298-1.23 3.298-1.23.656 1.652.243 2.872.12 3.175.769.84 1.233 1.91 1.233 3.22 0 4.61-2.806 5.626-5.48 5.923.432.372.815 1.101.815 2.22 0 1.605-.016 2.898-.016 3.294 0 .319.218.692.826.575C20.565 21.796 24 17.3 24 12c0-6.627-5.373-12-12-12z"/>
+</svg>
diff --git a/build/_docs/assets/images/glowing-box.svg b/build/_docs/assets/images/glowing-box.svg
new file mode 100644
index 0000000..c384c4a
--- /dev/null
+++ b/build/_docs/assets/images/glowing-box.svg
@@ -0,0 +1,170 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="347" height="366" viewBox="0 0 347 366">
+    <defs>
+        <path id="a" d="M62.597 186.739c-2.392-.01-4.672-.5-6.38-1.486L2.575 154.282c-1.983-1.144-2.78-2.734-2.494-4.353H0V0h126.242v149.929h-.049c.057 1.722-1.129 3.549-3.593 4.972l-51.503 29.734c-2.387 1.378-5.438 2.091-8.34 2.104h-.16z"/>
+        <linearGradient id="b" x1="50%" x2="50%" y1="100%" y2="18.88%">
+            <stop offset="0%" stop-color="#F86B27"/>
+            <stop offset="100%" stop-color="#F9F9F9"/>
+        </linearGradient>
+        <path id="d" d="M6.886 6.98c-9.181 9.181-9.181 24.068 0 33.249 9.182 9.182 24.068 9.182 33.249 0 9.182-9.181 9.182-24.068 0-33.249A23.433 23.433 0 0 0 23.511.094 23.437 23.437 0 0 0 6.886 6.98"/>
+        <path id="f" d="M.206 10.482c0 5.377 4.36 9.736 9.736 9.736 5.378 0 9.737-4.359 9.737-9.736 0-5.378-4.359-9.736-9.737-9.736C4.566.746.206 5.104.206 10.482"/>
+        <path id="h" d="M2.202 10.533c-4.299 8.655-.77 19.157 7.884 23.457 8.655 4.299 19.156.77 23.456-7.884a17.425 17.425 0 0 0 1.832-7.665v-.216c-.04-6.395-3.597-12.535-9.715-15.575A17.425 17.425 0 0 0 17.886.819c-6.434 0-12.627 3.562-15.684 9.714"/>
+        <path id="j" d="M95.387 4.612L7.023 55.629c-4.13 2.385-6.5 5.581-6.5 8.769 0 2.67 1.658 5.098 4.668 6.835l92.032 53.135c3.029 1.749 7.086 2.606 11.336 2.606 5.112 0 10.499-1.241 14.693-3.663l88.365-51.018c4.131-2.385 6.5-5.581 6.5-8.769 0-2.671-1.657-5.098-4.668-6.836L121.416 3.554c-3.027-1.748-7.085-2.605-11.334-2.605-5.112 0-10.499 1.241-14.695 3.663m2.336 118.891L5.691 70.368c-2.688-1.552-4.168-3.672-4.168-5.97 0-2.821 2.187-5.702 6-7.904L95.887 5.476c4.059-2.342 9.263-3.544 14.194-3.544 4.066 0 7.945.818 10.836 2.487l92.033 53.135c2.687 1.552 4.167 3.672 4.167 5.97 0 2.82-2.187 5.701-6.001 7.904l-88.363 51.017c-4.059 2.343-9.265 3.545-14.195 3.545-4.066-.001-7.945-.818-10.835-2.487"/>
+        <path id="l" d="M74.607 3.655L36.262 25.793H.546V125.89h.01c-.145 2.003.971 3.934 3.433 5.356l72.056 41.601c5.123 2.958 14.071 2.587 19.988-.828l69.183-39.943c3.073-1.774 4.71-4.021 4.867-6.186h.027V25.793h-35.735L94.596 2.826C92.275 1.486 89.168.83 85.914.829c-3.928 0-8.071.958-11.307 2.826"/>
+        <linearGradient id="m" x1="50%" x2="50%" y1="0%" y2="98.762%">
+            <stop offset="0%" stop-color="#DF2226"/>
+            <stop offset="100%" stop-color="#713C80"/>
+        </linearGradient>
+        <path id="o" d="M74.607 3.665L5.424 43.608c-5.916 3.416-6.559 8.583-1.435 11.54L76.045 96.75c5.123 2.957 14.071 2.586 19.988-.828l69.183-39.944c5.916-3.415 6.558-8.582 1.434-11.54L94.596 2.837C92.274 1.497 89.168.84 85.914.84c-3.928 0-8.071.957-11.307 2.825"/>
+        <linearGradient id="p" x1="-.815%" x2="99.309%" y1="50.001%" y2="49.999%">
+            <stop offset="0%" stop-color="#713C80"/>
+            <stop offset="100%" stop-color="#DF2226"/>
+        </linearGradient>
+        <path id="r" d="M.247 1.705l2.79 3.181V28.48c0 5.152 3.132 11.135 6.996 13.366L61.377 71.49c.055.032.107.052.16.082l1.658 1.889 2.608-1.521c.036-.019.071-.042.107-.063l.247-.144-.008-.007c1.366-.914 2.225-2.835 2.225-5.524V37.808L3.037.086.247 1.705z"/>
+        <linearGradient id="s" x1="-84.629%" x2="93.369%" y1="17.044%" y2="61.111%">
+            <stop offset="0%" stop-color="#781416"/>
+            <stop offset="100%" stop-color="#8C413D"/>
+        </linearGradient>
+        <path id="u" d="M.615 1.995l2.79 3.181V28.77c0 5.151 3.132 11.135 6.995 13.367l51.346 29.644c.053.03.106.052.16.081l1.657 1.889 2.607-1.52c.037-.019.072-.043.108-.063l.246-.144-.007-.008c1.365-.915 2.225-2.834 2.225-5.524V38.098L3.405.376.615 1.995z"/>
+        <linearGradient id="v" x1="-84.629%" x2="93.369%" y1="17.044%" y2="61.111%">
+            <stop offset="0%" stop-color="#781416"/>
+            <stop offset="100%" stop-color="#8C413D"/>
+        </linearGradient>
+        <path id="x" d="M.615 29.389c0 5.151 3.132 11.136 6.995 13.366L58.956 72.4c3.863 2.23 6.996-.138 6.996-5.289V38.717L.615.996v28.393z"/>
+        <linearGradient id="y" x1="-4.361%" x2="157.759%" y1="50.276%" y2="49.409%">
+            <stop offset="0%" stop-color="#DF2226"/>
+            <stop offset="100%" stop-color="#F86B27"/>
+        </linearGradient>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <g transform="translate(112)">
+            <mask id="c" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="url(#b)" d="M126.242 0H0v149.929h.081c-.286 1.619.511 3.209 2.494 4.353l53.642 30.971c3.813 2.202 10.476 1.925 14.88-.618l51.503-29.734c2.464-1.423 3.65-3.25 3.593-4.972h.049V0z" mask="url(#c)"/>
+        </g>
+        <g transform="translate(0 262.5)">
+            <mask id="e" fill="#fff">
+                <use xlink:href="#d"/>
+            </mask>
+            <path d="M6.886 6.98c-9.181 9.181-9.181 24.068 0 33.249 9.182 9.182 24.068 9.182 33.249 0 9.182-9.181 9.182-24.068 0-33.249A23.433 23.433 0 0 0 23.511.094 23.437 23.437 0 0 0 6.886 6.98" mask="url(#e)"/>
+        </g>
+        <g transform="translate(44 109.5)">
+            <mask id="g" fill="#fff">
+                <use xlink:href="#f"/>
+            </mask>
+            <path d="M.206 10.482c0 5.377 4.36 9.736 9.736 9.736 5.378 0 9.737-4.359 9.737-9.736 0-5.378-4.359-9.736-9.737-9.736C4.566.746.206 5.104.206 10.482" mask="url(#g)"/>
+        </g>
+        <g transform="translate(315 196.5)">
+            <mask id="i" fill="#fff">
+                <use xlink:href="#h"/>
+            </mask>
+            <path d="M2.202 10.533c-4.299 8.655-.77 19.157 7.884 23.457 8.655 4.299 19.156.77 23.456-7.884a17.425 17.425 0 0 0 1.832-7.665v-.216c-.04-6.395-3.597-12.535-9.715-15.575A17.425 17.425 0 0 0 17.886.819c-6.434 0-12.627 3.562-15.684 9.714" mask="url(#i)"/>
+        </g>
+        <path fill="#757575" d="M337.354 285.698c-7.036 1.365-14.658-.82-17.023-4.884-2.366-4.062 1.421-8.464 8.458-9.829 7.037-1.365 14.659.821 17.024 4.884 2.365 4.062-1.422 8.463-8.459 9.83M29.748 364.935c-9.791 1.899-20.395-1.143-23.686-6.795-3.291-5.652 1.978-11.775 11.769-13.675 9.79-1.9 20.395 1.143 23.685 6.795 3.29 5.653-1.978 11.775-11.768 13.675M56.081 159.338c-3.515.682-7.32-.41-8.503-2.44-1.18-2.03.711-4.227 4.225-4.91 3.516-.68 7.322.412 8.504 2.44 1.18 2.03-.71 4.228-4.226 4.91"/>
+        <path fill="#DF2226" d="M120.757 79.471a2.494 2.494 0 1 1-4.988 0 2.494 2.494 0 0 1 4.988 0M77.548 333.106a3.005 3.005 0 1 1-6.01 0 3.005 3.005 0 0 1 6.01 0"/>
+        <path fill="#F86B27" d="M57.036 319.807a1.547 1.547 0 1 1-3.094 0 1.547 1.547 0 0 1 3.094 0M319.627 262.7a1.6 1.6 0 1 1-3.199-.001 1.6 1.6 0 0 1 3.199 0M23.789 154.769a2.25 2.25 0 1 1-4.501 0 2.25 2.25 0 1 1 4.5 0"/>
+        <path fill="#713C80" d="M191.996 72.7a2.25 2.25 0 1 1-4.501-.001 2.25 2.25 0 0 1 4.5 0"/>
+        <path fill="#F86B27" d="M32.951 149.781a1.247 1.247 0 1 1-2.494 0 1.247 1.247 0 0 1 2.494 0"/>
+        <path fill="#DF2226" d="M247.481 80.738a1.473 1.473 0 1 1-2.946 0 1.473 1.473 0 0 1 2.946 0"/>
+        <path fill="#F86B27" d="M31.24 228.566l-.538-1.926 4.28-1.197-1.197-4.28 1.926-.539 1.736 6.206z"/>
+        <path fill="#F86B27" d="M27.463 235.276l-.539-1.926 4.28-1.197-1.196-4.28 1.926-.539 1.735 6.206z"/>
+        <path fill="#F86B27" d="M31.474 233.116l-1.735-6.206 6.206-1.736.54 1.925-4.282 1.198 1.197 4.28z"/>
+        <path fill="#713C80" d="M179.164 77.977a2.764 2.764 0 0 0-2.761 2.76 2.765 2.765 0 0 0 2.76 2.762 2.764 2.764 0 0 0 2.76-2.762 2.764 2.764 0 0 0-2.76-2.76m0 7.521a4.767 4.767 0 0 1-4.76-4.76 4.766 4.766 0 0 1 4.76-4.76 4.765 4.765 0 0 1 4.76 4.76 4.766 4.766 0 0 1-4.76 4.76"/>
+        <path fill="#F86B27" d="M281.002 318.256l2.573 2.574 2.575-2.574-2.575-2.574-2.573 2.574zm2.573 5.402l-5.401-5.402 5.401-5.402 5.404 5.402-5.404 5.402z"/>
+        <path fill="#DF2226" d="M300.805 133.69l-5.783-5.783 1.414-1.414 5.783 5.783z"/>
+        <path fill="#DF2226" d="M296.436 133.69l-1.414-1.414 5.783-5.783 1.414 1.414z"/>
+        <g transform="translate(64 231.5)">
+            <mask id="k" fill="#fff">
+                <use xlink:href="#j"/>
+            </mask>
+            <path d="M95.387 4.612L7.023 55.629c-4.13 2.385-6.5 5.581-6.5 8.769 0 2.67 1.658 5.098 4.668 6.835l92.032 53.135c3.029 1.749 7.086 2.606 11.336 2.606 5.112 0 10.499-1.241 14.693-3.663l88.365-51.018c4.131-2.385 6.5-5.581 6.5-8.769 0-2.671-1.657-5.098-4.668-6.836L121.416 3.554c-3.027-1.748-7.085-2.605-11.334-2.605-5.112 0-10.499 1.241-14.695 3.663m2.336 118.891L5.691 70.368c-2.688-1.552-4.168-3.672-4.168-5.97 0-2.821 2.187-5.702 6-7.904L95.887 5.476c4.059-2.342 9.263-3.544 14.194-3.544 4.066 0 7.945.818 10.836 2.487l92.033 53.135c2.687 1.552 4.167 3.672 4.167 5.97 0 2.82-2.187 5.701-6.001 7.904l-88.363 51.017c-4.059 2.343-9.265 3.545-14.195 3.545-4.066-.001-7.945-.818-10.835-2.487" mask="url(#k)"/>
+        </g>
+        <path fill="#757575" fill-opacity=".3" d="M164.566 339.775l-68.002-39.26c-4.835-2.792-4.229-7.669 1.354-10.89l65.292-37.698c5.583-3.222 14.028-3.573 18.862-.78l68.003 39.26c4.835 2.792 4.23 7.668-1.354 10.89l-65.29 37.697c-5.584 3.222-14.03 3.573-18.865.781"/>
+        <g transform="translate(88 149.5)">
+            <mask id="n" fill="#fff">
+                <use xlink:href="#l"/>
+            </mask>
+            <path fill="url(#m)" d="M74.607 3.655L36.262 25.793H.546V125.89h.01c-.145 2.003.971 3.934 3.433 5.356l72.056 41.601c5.123 2.958 14.071 2.587 19.988-.828l69.183-39.943c3.073-1.774 4.71-4.021 4.867-6.186h.027V25.793h-35.735L94.596 2.826C92.275 1.486 89.168.83 85.914.829c-3.928 0-8.071.958-11.307 2.826" mask="url(#n)"/>
+        </g>
+        <g>
+            <path fill="#D4088C" d="M97.595 175.293h-9.05v100.098h.012c-.104 1.421.442 2.801 1.64 3.995-.765-1.021-1.112-2.144-1.028-3.293h-.012V175.996h9.145a13.392 13.392 0 0 0-.707-.703"/>
+            <path fill="#F86B27" d="M246.671 175.293c-.064.201-.134.401-.205.602h11.001v100.097h-.026c-.098 1.342-.766 2.715-1.99 3.988 1.627-1.436 2.518-3.033 2.632-4.589h.026V175.293h-11.438z"/>
+            <path fill="#DF2226" d="M113.786 293.328v-116.1H100.81v108.608zM121.754 297.929V185.025h-3.545v110.857zM128.1 301.592V186.388h-3.545v113.157z" style="mix-blend-mode:overlay"/>
+        </g>
+        <g transform="translate(88 125.5)">
+            <mask id="q" fill="#fff">
+                <use xlink:href="#o"/>
+            </mask>
+            <path fill="url(#p)" d="M74.607 3.665L5.424 43.608c-5.916 3.416-6.559 8.583-1.435 11.54L76.045 96.75c5.123 2.957 14.071 2.586 19.988-.828l69.183-39.944c5.916-3.415 6.558-8.582 1.434-11.54L94.596 2.837C92.274 1.497 89.168.84 85.914.84c-3.928 0-8.071.957-11.307 2.825" mask="url(#q)"/>
+        </g>
+        <g>
+            <path fill="#D4088C" d="M164.838 222.25l-72.056-41.602c-5.123-2.957-4.481-8.124 1.435-11.54l69.184-39.942c2.93-1.692 6.604-2.632 10.19-2.795-3.834.05-7.835.977-10.984 2.795l-69.183 39.942c-5.916 3.416-6.558 8.583-1.435 11.54l72.056 41.602c2.585 1.493 6.145 2.132 9.797 1.966-3.368.044-6.608-.582-9.004-1.966"/>
+            <path fill="#F86B27" d="M254.65 169.938l-72.055-41.602c-2.59-1.494-6.156-2.133-9.814-1.964 3.327-.028 6.522.597 8.89 1.964l72.057 41.602c5.123 2.958 4.48 8.125-1.435 11.54l-69.183 39.943c-2.926 1.689-6.594 2.628-10.174 2.793 3.868-.032 7.917-.957 11.097-2.793l69.183-39.943c5.915-3.415 6.558-8.582 1.435-11.54"/>
+            <path fill="#F86B27" d="M166.415 210.252l-53.646-30.972c-3.814-2.202-3.335-6.049 1.069-8.591l51.507-29.738c4.404-2.543 11.067-2.819 14.88-.617l53.646 30.972c3.815 2.203 3.336 6.049-1.068 8.592l-51.507 29.737c-4.404 2.543-11.067 2.82-14.881.617"/>
+            <path fill="#4A2754" d="M113.837 176.475l51.507-29.737c4.404-2.543 11.067-2.819 14.881-.617l53.645 30.972c.5.288.921.606 1.274.944 2.05-2.315 1.691-5.019-1.274-6.73l-53.645-30.973c-3.814-2.202-10.477-1.926-14.88.617l-51.508 29.737c-3.828 2.21-4.686 5.404-2.342 7.648.588-.662 1.362-1.295 2.342-1.86"/>
+            <path fill="#F86B27" d="M186.088 229.354l60.952-35.256c.558-.322 1.01-1.185 1.01-1.929v-1c0-.743-.452-1.085-1.01-.763l-60.952 35.256c-.558.322-1.01 1.185-1.01 1.929v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 193.336c.558-.322 1.01-1.186 1.01-1.93v-.812l.325-.188c.558-.321 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 240.081l60.952-35.255c.558-.323 1.01-1.186 1.01-1.93v-1c0-.743-.452-1.085-1.01-.763l-60.952 35.256c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 204.063c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.321 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.019-1.01-.764v-.186l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 250.808l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.742-.452-1.084-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 214.79c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.321 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 261.535l60.952-35.255c.558-.323 1.01-1.186 1.01-1.93v-1c0-.743-.452-1.085-1.01-.763l-60.952 35.256c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 225.517c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.32 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.019-1.01-.764v-.186l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 272.262l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.742-.452-1.084-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 236.244c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.32 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 282.99l60.952-35.257c.558-.32 1.01-1.185 1.01-1.929v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.255c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 246.972c.558-.322 1.01-1.186 1.01-1.93v-.812l.325-.188c.558-.322 1.01.02 1.01.763v1c0 .743-.452 1.607-1.01 1.929l-60.952 35.256c-.558.322-1.01-.02-1.01-.764v-.187l60.627-35.067z"/>
+            <path fill="#F86B27" d="M186.088 293.716l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 257.698c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.322 1.01.02 1.01.764v1c0 .743-.452 1.606-1.01 1.93l-60.952 35.254c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 304.443l60.952-35.256c.558-.32 1.01-1.185 1.01-1.929v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.255c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 268.426c.558-.322 1.01-1.186 1.01-1.93v-.812l.325-.188c.558-.322 1.01.02 1.01.763v1c0 .743-.452 1.607-1.01 1.929l-60.952 35.256c-.558.322-1.01-.02-1.01-.764v-.187l60.627-35.067z"/>
+            <path fill="#F86B27" d="M186.088 315.17l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 279.152c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.32 1.01.02 1.01.764v1c0 .743-.452 1.606-1.01 1.93l-60.952 35.254c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M174.956 231.099a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 232.121a1.636 1.636 0 0 1-1.605-1.329 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 241.825a1.636 1.636 0 1 1-3.272.002 1.636 1.636 0 0 1 3.272-.002"/>
+            <path fill="#C7531B" d="M173.32 242.848a1.635 1.635 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 252.553a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 253.575a1.635 1.635 0 0 1-1.605-1.329 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 263.28a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 264.303a1.636 1.636 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 274.007a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 275.03a1.635 1.635 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 284.733a1.636 1.636 0 1 1-3.272.002 1.636 1.636 0 0 1 3.272-.002"/>
+            <path fill="#C7531B" d="M173.32 285.757a1.636 1.636 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 295.46a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 296.483a1.635 1.635 0 0 1-1.605-1.329 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 306.188a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 307.21a1.636 1.636 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 316.915a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 317.938a1.635 1.635 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#4A2754" d="M145.675 227.347a.92.92 0 0 0-.463.119c-.423.244-.665.839-.665 1.63v65.839c0 1.599.97 3.459 2.158 4.145l2.441 1.41c.468.27.91.31 1.245.12.422-.244.665-.84.665-1.631V233.14c0-1.6-.969-3.458-2.158-4.146l-2.44-1.41c-.276-.158-.543-.238-.783-.238m4.254 73.88c-.327 0-.678-.104-1.03-.308l-2.442-1.41c-1.327-.765-2.406-2.817-2.406-4.574v-65.838c0-.975.332-1.726.912-2.061.494-.286 1.113-.243 1.742.12l2.441 1.41c1.327.765 2.406 2.818 2.406 4.575v65.838c0 .974-.333 1.725-.913 2.06a1.402 1.402 0 0 1-.71.188M106.1 275.992l2.44 1.408c.47.272.912.312 1.246.121.422-.244.665-.838.665-1.63v-65.838c0-1.599-.969-3.459-2.159-4.147l-2.44-1.408c-.47-.27-.912-.312-1.245-.12-.422.244-.665.84-.665 1.631v65.837c0 1.6.97 3.46 2.158 4.146m3.225 2.146c-.328 0-.679-.103-1.033-.308l-2.44-1.408c-1.327-.766-2.406-2.819-2.406-4.576V206.01c0-.975.333-1.726.913-2.06.493-.288 1.113-.244 1.741.12l2.44 1.407c1.328.767 2.407 2.82 2.407 4.577v65.837c0 .975-.332 1.726-.913 2.061a1.397 1.397 0 0 1-.709.187M125.373 215.803a.92.92 0 0 0-.463.119c-.423.244-.665.839-.665 1.63v65.839c0 1.599.969 3.459 2.158 4.145l2.44 1.41c.468.27.912.31 1.246.12.423-.244.665-.84.665-1.631v-65.838c0-1.6-.97-3.46-2.158-4.146l-2.441-1.41c-.275-.158-.542-.238-.782-.238m4.254 73.88c-.327 0-.678-.104-1.031-.308l-2.441-1.41c-1.327-.765-2.406-2.817-2.406-4.574v-65.838c0-.975.332-1.726.912-2.061.494-.286 1.113-.244 1.742.12l2.44 1.41c1.328.765 2.407 2.818 2.407 4.575v65.838c0 .974-.332 1.725-.912 2.06a1.405 1.405 0 0 1-.711.188M237.873 160.17l-2.306 12.536 11.966-6.863z"/>
+        </g>
+        <g transform="translate(172 99.5)">
+            <mask id="t" fill="#fff">
+                <use xlink:href="#r"/>
+            </mask>
+            <path fill="url(#s)" d="M.247 1.705l2.79 3.181V28.48c0 5.152 3.132 11.135 6.996 13.366L61.377 71.49c.055.032.107.052.16.082l1.658 1.889 2.608-1.521c.036-.019.071-.042.107-.063l.247-.144-.008-.007c1.366-.914 2.225-2.835 2.225-5.524V37.808L3.037.086.247 1.705z" mask="url(#t)"/>
+        </g>
+        <g>
+            <path fill="#F86B27" d="M172.247 101.205l65.336 37.722v28.394c0 5.151-3.13 7.52-6.996 5.288l-51.344-29.644c-3.864-2.23-6.996-8.215-6.996-13.366v-28.394z"/>
+            <path fill="#4A2754" d="M170.707 211.602l-12.507 7.274-56.137-32.411 11.628-6.68z"/>
+        </g>
+        <g transform="translate(108 137.5)">
+            <mask id="w" fill="#fff">
+                <use xlink:href="#u"/>
+            </mask>
+            <path fill="url(#v)" d="M.615 1.995l2.79 3.181V28.77c0 5.151 3.132 11.135 6.995 13.367l51.346 29.644c.053.03.106.052.16.081l1.657 1.889 2.607-1.52c.037-.019.072-.043.108-.063l.246-.144-.007-.008c1.365-.915 2.225-2.834 2.225-5.524V38.098L3.405.376.615 1.995z" mask="url(#w)"/>
+        </g>
+        <g transform="translate(108 138.5)">
+            <mask id="z" fill="#fff">
+                <use xlink:href="#x"/>
+            </mask>
+            <path fill="url(#y)" d="M.615 29.389c0 5.151 3.132 11.136 6.995 13.366L58.956 72.4c3.863 2.23 6.996-.138 6.996-5.289V38.717L.615.996v28.393z" mask="url(#z)"/>
+        </g>
+        <g>
+            <path fill="#38025B" d="M247.724 165.956l-9.852-5.787 9.852 5.787z"/>
+            <path fill="#DF2226" d="M3.612 196.375a1.473 1.473 0 1 1-2.946 0 1.473 1.473 0 0 1 2.946 0"/>
+        </g>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/icon_lang_cn.png b/build/_docs/assets/images/icon_lang_cn.png
new file mode 100644
index 0000000..841d523
--- /dev/null
+++ b/build/_docs/assets/images/icon_lang_cn.png
Binary files differ
diff --git a/build/_docs/assets/images/icon_lang_cn_25x25.jpg b/build/_docs/assets/images/icon_lang_cn_25x25.jpg
new file mode 100644
index 0000000..cd58cb5
--- /dev/null
+++ b/build/_docs/assets/images/icon_lang_cn_25x25.jpg
Binary files differ
diff --git a/build/_docs/assets/images/icon_lang_cn_75x75.jpg b/build/_docs/assets/images/icon_lang_cn_75x75.jpg
new file mode 100644
index 0000000..b7dfcf6
--- /dev/null
+++ b/build/_docs/assets/images/icon_lang_cn_75x75.jpg
Binary files differ
diff --git a/build/_docs/assets/images/icon_lang_en.png b/build/_docs/assets/images/icon_lang_en.png
new file mode 100644
index 0000000..e1f36a3
--- /dev/null
+++ b/build/_docs/assets/images/icon_lang_en.png
Binary files differ
diff --git a/build/_docs/assets/images/icon_lang_en_25x25.jpg b/build/_docs/assets/images/icon_lang_en_25x25.jpg
new file mode 100644
index 0000000..fce6533
--- /dev/null
+++ b/build/_docs/assets/images/icon_lang_en_25x25.jpg
Binary files differ
diff --git a/build/_docs/assets/images/icon_lang_en_75x75.jpg b/build/_docs/assets/images/icon_lang_en_75x75.jpg
new file mode 100644
index 0000000..4dee4c3
--- /dev/null
+++ b/build/_docs/assets/images/icon_lang_en_75x75.jpg
Binary files differ
diff --git a/build/_docs/assets/images/info-circle-solid.svg b/build/_docs/assets/images/info-circle-solid.svg
new file mode 100644
index 0000000..9e86172
--- /dev/null
+++ b/build/_docs/assets/images/info-circle-solid.svg
@@ -0,0 +1 @@
+<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="info-circle" class="svg-inline--fa fa-info-circle fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>
\ No newline at end of file
diff --git a/build/_docs/assets/images/integrations/hibernate.svg b/build/_docs/assets/images/integrations/hibernate.svg
new file mode 100644
index 0000000..38e4f31
--- /dev/null
+++ b/build/_docs/assets/images/integrations/hibernate.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="34" viewBox="0 0 32 34">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#59666C" d="M19.209 22.367l-.117.344 6.143 10.418.347.246L32 22.277l-6.418-11.142-6.373 11.232zM6.284.038L0 11.136l6.53 11.23 6.216-11.23-.016-.454L6.57.264 6.285.038z"/>
+        <path fill="#BCAE79" d="M6.284.038l6.463 11.098h12.835L19.075.037H6.285zm.245 22.329l6.329 11.008h12.724L19.21 22.367H6.529z"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/integrations/kafka.svg b/build/_docs/assets/images/integrations/kafka.svg
new file mode 100644
index 0000000..db145e2
--- /dev/null
+++ b/build/_docs/assets/images/integrations/kafka.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="33" height="52" viewBox="0 0 33 52">
+    <path fill="#000" fill-rule="nonzero" d="M25.248 28.802c-2.024 0-3.84.897-5.083 2.31l-3.186-2.256c.338-.931.533-1.93.533-2.977a8.697 8.697 0 0 0-.515-2.929l3.179-2.231a6.758 6.758 0 0 0 5.072 2.298 6.786 6.786 0 0 0 6.78-6.78 6.786 6.786 0 0 0-6.78-6.778 6.786 6.786 0 0 0-6.778 6.779c0 .669.1 1.314.282 1.925l-3.18 2.232a8.75 8.75 0 0 0-5.422-3.15v-3.833c3.071-.645 5.385-3.373 5.385-6.633A6.786 6.786 0 0 0 8.755 0a6.786 6.786 0 0 0-6.778 6.779c0 3.216 2.254 5.91 5.263 6.602v3.883C3.133 17.984 0 21.568 0 25.879c0 4.331 3.164 7.928 7.3 8.625v4.1c-3.04.668-5.323 3.38-5.323 6.617A6.786 6.786 0 0 0 8.756 52a6.786 6.786 0 0 0 6.779-6.779c0-3.238-2.284-5.949-5.324-6.617v-4.1a8.753 8.753 0 0 0 5.33-3.1l3.206 2.27a6.746 6.746 0 0 0-.277 1.906 6.786 6.786 0 0 0 6.778 6.779 6.786 6.786 0 0 0 6.78-6.779 6.786 6.786 0 0 0-6.78-6.778zm0-15.85a3.29 3.29 0 0 1 3.287 3.286 3.29 3.29 0 0 1-3.287 3.286 3.29 3.29 0 0 1-3.286-3.286 3.29 3.29 0 0 1 3.286-3.287zM5.47 6.778a3.29 3.29 0 0 1 3.287-3.287 3.29 3.29 0 0 1 3.286 3.287 3.29 3.29 0 0 1-3.286 3.286A3.29 3.29 0 0 1 5.469 6.78zm6.573 38.442a3.29 3.29 0 0 1-3.286 3.287 3.29 3.29 0 0 1-3.287-3.287 3.29 3.29 0 0 1 3.287-3.286 3.29 3.29 0 0 1 3.286 3.286zM8.756 30.462A4.589 4.589 0 0 1 4.17 25.88a4.59 4.59 0 0 1 4.585-4.584 4.59 4.59 0 0 1 4.584 4.584 4.589 4.589 0 0 1-4.584 4.583zm16.492 8.405a3.29 3.29 0 0 1-3.286-3.287 3.29 3.29 0 0 1 3.286-3.286 3.29 3.29 0 0 1 3.287 3.286 3.29 3.29 0 0 1-3.287 3.287z"/>
+</svg>
diff --git a/build/_docs/assets/images/integrations/more.svg b/build/_docs/assets/images/integrations/more.svg
new file mode 100644
index 0000000..42a3af1
--- /dev/null
+++ b/build/_docs/assets/images/integrations/more.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg width="33.459" height="8" version="1.1" viewBox="0 0 8.8528 2.1167" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata>
+  <rdf:RDF>
+   <cc:Work rdf:about="">
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:title/>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <g transform="translate(-5.163 -286.42)" fill="#ededed" stroke="#8e8e8e" stroke-width=".13935">
+  <circle cx="9.525" cy="287.47" r=".98866" style="paint-order:markers fill stroke"/>
+  <circle cx="6.2213" cy="287.47" r=".98866" style="paint-order:markers fill stroke"/>
+  <circle cx="12.957" cy="287.47" r=".98866" style="paint-order:markers fill stroke"/>
+ </g>
+</svg>
diff --git a/build/_docs/assets/images/integrations/oracle.svg b/build/_docs/assets/images/integrations/oracle.svg
new file mode 100644
index 0000000..484c750
--- /dev/null
+++ b/build/_docs/assets/images/integrations/oracle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="92" height="12" viewBox="0 0 92 12">
+    <path fill="#F80000" fill-rule="nonzero" d="M38.297 7.504h5.853l-3.095-4.98-5.68 9.003H32.79L39.699.713c.3-.437.8-.7 1.356-.7.537 0 1.038.254 1.329.682l6.936 10.832h-2.585l-1.22-2.012H39.59l-1.293-2.011zm26.852 2.011V.121h-2.194v10.313c0 .283.11.556.32.765.208.21.49.328.8.328h10.004l1.292-2.012H65.15zM28.858 7.831a3.854 3.854 0 1 0 0-7.71H19.26v11.406h2.193V2.133h7.258c1.02 0 1.839.828 1.839 1.848s-.82 1.848-1.839 1.848l-6.184-.01 6.548 5.708h3.186L27.856 7.83h1.002zM5.762 11.527A5.7 5.7 0 0 1 .058 5.829 5.708 5.708 0 0 1 5.762.12h6.63a5.707 5.707 0 0 1 5.702 5.708 5.699 5.699 0 0 1-5.703 5.698h-6.63zm6.482-2.012a3.687 3.687 0 0 0 3.692-3.686 3.694 3.694 0 0 0-3.692-3.696H5.909a3.695 3.695 0 0 0-3.692 3.696 3.687 3.687 0 0 0 3.692 3.686h6.335zm41.654 2.012a5.703 5.703 0 0 1-5.707-5.698A5.71 5.71 0 0 1 53.898.12h7.874l-1.284 2.012h-6.444a3.69 3.69 0 1 0 0 7.382h7.91l-1.292 2.012h-6.764zm26.825-2.012a3.686 3.686 0 0 1-3.55-2.685h9.376l1.292-2.012H77.173a3.697 3.697 0 0 1 3.55-2.685h6.436L88.46.121h-7.883a5.71 5.71 0 0 0-5.707 5.707 5.703 5.703 0 0 0 5.707 5.699h6.763l1.292-2.012h-7.91zm8.912-8.183A.998.998 0 0 1 90.636.331a1 1 0 0 1 1.01 1.001c0 .564-.446 1.01-1.01 1.01a1 1 0 0 1-1.001-1.01zm1.001 1.293c.71 0 1.284-.574 1.284-1.284a1.28 1.28 0 0 0-2.558 0c0 .71.573 1.284 1.274 1.284zM90.518.576c.2 0 .282.01.373.046.255.082.282.31.282.4 0 .019 0 .064-.018.119a.369.369 0 0 1-.173.246c-.018.009-.027.018-.064.036l.328.592h-.319l-.291-.546h-.2v.546h-.282V.576h.364zm.1.656c.09-.01.182-.01.236-.091a.192.192 0 0 0 .037-.128.204.204 0 0 0-.11-.172c-.063-.028-.127-.028-.263-.028h-.082v.419h.182z"/>
+</svg>
diff --git a/build/_docs/assets/images/integrations/osgi.svg b/build/_docs/assets/images/integrations/osgi.svg
new file mode 100644
index 0000000..dae8409
--- /dev/null
+++ b/build/_docs/assets/images/integrations/osgi.svg
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="42" height="39" viewBox="0 0 42 39">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#FF7300" d="M9.376 12.332S15.346.008 21.069.008c5.722 0 11.483 12.324 11.483 12.324l-.936 1.815S27.87 9.256 21.069 9.256c-6.802 0-10.7 4.89-10.7 4.89l-.993-1.814z"/>
+        <path fill="#FFB780" d="M13.537 12.488a13.108 13.108 0 0 0-2.595 2.374c1.753 2.27 5.022 5.247 10.128 5.247 5.077 0 8.24-2.942 9.927-5.206a13.129 13.129 0 0 0-2.557-2.368c-1.64 1.413-4.071 2.779-7.37 2.779-3.35 0-5.852-1.4-7.533-2.826z"/>
+        <path fill="#F30" d="M31.034 9.46c-.033.06-.642 1.174-1.886 2.42 1.62 1.16 2.468 2.267 2.468 2.267l.936-1.816s-.565-1.21-1.518-2.872zm-20.108.03c-.97 1.645-1.552 2.841-1.552 2.841l.997 1.816s.872-1.096 2.514-2.25c-1.301-1.26-1.948-2.388-1.96-2.408z"/>
+        <g>
+            <path fill="#FF7300" d="M36.238 18.719s7.688 11.333 4.826 16.288c-2.86 4.956-16.414 3.783-16.414 3.783l-1.103-1.718s6.108-.798 9.509-6.688c3.4-5.891 1.114-11.712 1.114-11.712l2.068.047z"/>
+            <path fill="#FFB780" d="M34.022 22.245a13.108 13.108 0 0 0-.759-3.435c-2.841.383-7.054 1.726-9.607 6.148-2.538 4.397-1.573 8.607-.455 11.2 1.148-.194 2.271-.54 3.33-1.03-.405-2.127-.372-4.915 1.278-7.772 1.675-2.901 4.137-4.369 6.213-5.111z"/>
+            <path fill="#F30" d="M27.897 38.912c-.036-.059-.696-1.143-1.154-2.843-1.814.822-3.197 1.003-3.197 1.003l1.105 1.719s1.331.115 3.246.121zm10.028-17.43a44.635 44.635 0 0 0-1.685-2.764l-2.071-.045s.513 1.304.692 3.303c1.742-.497 3.042-.494 3.064-.493z"/>
+        </g>
+        <g>
+            <path fill="#FF7300" d="M17.276 38.79s-13.658.99-16.52-3.966c-2.86-4.955 4.932-16.106 4.932-16.106l2.04-.097s-2.364 5.69 1.037 11.58 9.586 6.82 9.586 6.82l-1.075 1.768z"/>
+            <path fill="#FFB780" d="M15.33 35.107c1.066.503 2.195.86 3.354 1.06 1.09-2.652 2.032-6.972-.52-11.394-2.54-4.396-6.668-5.665-9.473-5.994a13.129 13.129 0 0 0-.771 3.399c2.043.713 4.441 2.136 6.09 4.992 1.676 2.902 1.715 5.768 1.32 7.937z"/>
+            <path fill="#F30" d="M3.958 21.469c.07-.002 1.339-.031 3.04.422.195-1.982.73-3.27.73-3.27l-2.041.097s-.766 1.095-1.729 2.75zm10.08 17.4c1.911.016 3.238-.078 3.238-.078l1.074-1.771s-1.385-.208-3.206-1.052c-.44 1.757-1.094 2.88-1.105 2.9z"/>
+        </g>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/integrations/spark.svg b/build/_docs/assets/images/integrations/spark.svg
new file mode 100644
index 0000000..c0cb1b8
--- /dev/null
+++ b/build/_docs/assets/images/integrations/spark.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="72" height="38" viewBox="0 0 72 38">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#E25A1C" d="M65.712 19.035c-.062-.133-.09-.2-.124-.264-.9-1.71-1.798-3.423-2.706-5.13-.091-.171-.08-.273.045-.42 1.432-1.672 2.856-3.351 4.281-5.028a.451.451 0 0 0 .115-.227c-.417.11-.834.217-1.25.327-1.73.459-3.46.915-5.188 1.38-.162.043-.235-.004-.315-.137-.982-1.641-1.97-3.278-2.956-4.916a.67.67 0 0 0-.215-.24c-.079.438-.16.875-.237 1.312-.275 1.544-.55 3.088-.823 4.632-.03.166-.071.332-.085.5-.014.16-.096.218-.24.264-2.039.64-4.075 1.286-6.111 1.931a.676.676 0 0 0-.273.152l5.024 1.997c-.062.049-.102.086-.147.116-1.042.674-2.085 1.345-3.124 2.022-.124.081-.223.093-.363.03-1.244-.56-2.493-1.11-3.739-1.667-.559-.25-1.062-.581-1.454-1.06-.886-1.084-.711-2.317.47-3.07a5.57 5.57 0 0 1 1.262-.574c1.996-.65 4-1.278 6.003-1.907.168-.053.246-.128.277-.31.267-1.545.544-3.089.822-4.632.15-.825.228-1.671.63-2.427.154-.29.339-.575.559-.82.795-.881 1.905-.916 2.745-.075.284.284.528.618.739.962.926 1.51 1.837 3.03 2.744 4.552.107.18.203.216.402.163 2.233-.599 4.47-1.188 6.705-1.779.461-.121.928-.166 1.4-.078 1.031.193 1.482.978 1.133 1.973-.159.454-.432.837-.74 1.199-1.56 1.834-3.118 3.671-4.683 5.501-.128.15-.13.258-.042.425.934 1.76 1.86 3.524 2.788 5.287.223.422.392.86.397 1.344.011 1.102-.794 2.004-1.89 2.165-.613.09-1.183-.041-1.757-.219-1.4-.433-2.804-.858-4.207-1.28-.13-.04-.18-.09-.203-.23-.162-.988-.338-1.974-.508-2.96-.005-.028.003-.057.007-.117 1.599.44 3.183.878 4.832 1.333"/>
+        <path fill="#3C3A3E" d="M62.981 33.422c-1.263-.002-2.526-.008-3.789-.003-.166 0-.261-.048-.354-.19-1.495-2.278-2.997-4.55-4.498-6.825-.048-.072-.099-.142-.184-.264l-.955 7.265h-3.308c.039-.322.073-.634.113-.944l.972-7.398c.31-2.356.618-4.712.932-7.068.01-.07.056-.16.113-.196 1.139-.743 2.28-1.478 3.423-2.214.016-.011.04-.013.098-.03l-1.03 7.863.04.028 5.414-6c.053.305.099.566.143.828.129.749.252 1.499.39 2.246.027.15-.013.244-.113.349-1.159 1.212-2.313 2.43-3.468 3.645l-.157.17c.037.06.069.116.106.169 1.993 2.797 3.985 5.593 5.98 8.39.036.05.088.09.132.135v.044M23.776 26.151c-.05-.258-.087-.636-.201-.99-.554-1.709-2.308-2.646-4.123-2.223-1.991.463-3.414 2.028-3.62 4.06-.152 1.503.657 2.95 2.162 3.494 1.212.438 2.38.255 3.463-.395 1.436-.862 2.216-2.141 2.319-3.946zm-8.744 6.353a510.144 510.144 0 0 0-.641 4.888c-.014.107-.047.154-.162.154-.909-.004-1.817-.003-2.726-.005-.02 0-.041-.011-.09-.025.055-.435.108-.871.165-1.308.2-1.528.4-3.057.604-4.586.233-1.748.417-3.504.715-5.24.527-3.076 3.136-5.726 6.197-6.386 1.775-.383 3.474-.206 5.023.793 1.545.996 2.432 2.441 2.634 4.26.286 2.57-.66 4.704-2.486 6.469-1.199 1.159-2.633 1.895-4.288 2.144-1.705.257-3.308-.027-4.746-1.032-.052-.037-.109-.07-.2-.126zM13.551 17.891l-2.988 2.224c-.159-.25-.301-.5-.467-.733-.428-.598-.96-1.045-1.733-1.1-.643-.045-1.193.167-1.63.641-.392.424-.443 1.027-.078 1.506a21.55 21.55 0 0 0 1.294 1.515c.746.809 1.526 1.587 2.267 2.4.675.74 1.212 1.57 1.378 2.581.198 1.203-.042 2.348-.61 3.405-1.053 1.955-2.711 3.09-4.9 3.445-.966.157-1.93.126-2.872-.152-1.252-.368-2.123-1.189-2.683-2.347-.198-.41-.35-.841-.529-1.28l3.24-1.734c.037.09.064.165.099.235.184.369.335.76.563 1.1.676 1.005 1.769 1.311 2.877.814.285-.128.56-.308.793-.515.714-.634.848-1.517.32-2.314-.305-.459-.685-.87-1.054-1.28-.884-.982-1.804-1.932-2.668-2.931-.595-.69-1-1.492-1.127-2.415a4.14 4.14 0 0 1 .586-2.806c1.303-2.108 3.196-3.204 5.701-3.113 1.428.052 2.565.72 3.448 1.829.26.328.506.67.773 1.025M37.745 29.207c-.166 1.27-.322 2.477-.485 3.683-.009.06-.056.144-.109.168-2.465 1.142-5.711.982-7.736-1.317-1.088-1.235-1.544-2.701-1.476-4.332.158-3.776 3.288-7.072 7.032-7.533 2.187-.27 4.105.322 5.587 2.02 1.01 1.158 1.476 2.54 1.407 4.066-.045 1.007-.203 2.01-.328 3.014-.178 1.42-.372 2.839-.56 4.258-.006.05-.017.1-.028.165h-2.95c.04-.326.076-.646.117-.964.214-1.64.449-3.277.636-4.92.116-1.022.043-2.037-.425-2.985-.497-1.006-1.332-1.539-2.43-1.655-2.27-.24-4.43 1.337-4.915 3.572-.32 1.476.184 2.89 1.359 3.671 1.145.762 2.372.765 3.62.27.632-.25 1.171-.646 1.684-1.18M50.165 20.163l-.403 3.058c-.624 0-1.235-.004-1.846.001a1.163 1.163 0 0 0-1.097.786c-.058.181-.08.375-.104.565l-.927 7.044-.23 1.786h-3.07c.057-.452.11-.889.168-1.325.2-1.522.4-3.043.602-4.565.174-1.316.33-2.635.536-3.947.275-1.758 2.025-3.32 3.8-3.397.846-.037 1.695-.006 2.57-.006"/>
+        <path fill="#3C3A3E" fill-rule="nonzero" d="M66.6 33.403v-1.296h-.007l-.508 1.296h-.162l-.509-1.296h-.008v1.296h-.256V31.85h.396l.463 1.179.456-1.18h.392v1.553h-.256zm-2.252-1.345v1.345h-.256v-1.345h-.487v-.207h1.229v.207h-.486zM17.664 15.711h.76l-.179-1.152-.581 1.152zm.88.745h-1.266l-.402.788h-.897l1.978-3.696h.864l.674 3.696h-.831l-.12-.788zM23.075 14.293h-.451l-.152.853h.45c.273 0 .49-.18.49-.516 0-.223-.136-.337-.337-.337zm-1.092-.745h1.185c.62 0 1.054.37 1.054 1.005 0 .8-.565 1.337-1.37 1.337h-.51l-.24 1.354h-.771l.652-3.696zM26.843 15.711h.761l-.18-1.152-.58 1.152zm.88.745h-1.266l-.402.788h-.897l1.979-3.696H28l.674 3.696h-.832l-.12-.788zM32.73 17.113c-.26.12-.548.19-.837.19-.978 0-1.592-.733-1.592-1.652 0-1.174.989-2.163 2.163-2.163.293 0 .56.07.777.19l-.109.887c-.162-.18-.424-.305-.75-.305-.673 0-1.271.609-1.271 1.315 0 .538.337.957.87.957.326 0 .64-.125.853-.299l-.104.88M37.446 15.755h-1.608l-.261 1.489h-.772l.652-3.696h.772l-.26 1.462h1.608l.26-1.462h.772l-.651 3.696h-.772l.26-1.49M40.277 17.244l.651-3.696h2.05l-.13.745H41.57l-.13.717h1.173l-.13.745H41.31l-.13.744h1.277l-.13.745h-2.05"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/integrations/spring.svg b/build/_docs/assets/images/integrations/spring.svg
new file mode 100644
index 0000000..0e5f74e
--- /dev/null
+++ b/build/_docs/assets/images/integrations/spring.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="37" height="37" viewBox="0 0 37 37">
+    <path fill="#77BC1F" fill-rule="nonzero" d="M33.598 1.925a17.06 17.06 0 0 1-1.972 3.502A18.534 18.534 0 0 0 18.524 0C8.362 0 0 8.372 0 18.548c0 5.076 2.079 9.936 5.754 13.438l.684.607a18.525 18.525 0 0 0 11.932 4.364c9.661 0 17.783-7.574 18.471-17.225.505-4.725-.88-10.7-3.243-17.807zM8.386 32.092c-.298.37-.755.587-1.231.587-.871 0-1.583-.717-1.583-1.587 0-.871.717-1.588 1.583-1.588a1.593 1.593 0 0 1 1.232 2.589zm25.135-5.552c-4.57 6.096-14.333 4.042-20.593 4.335 0 0-1.111.067-2.227.25 0 0 .418-.178.962-.385 4.393-1.53 6.471-1.828 9.142-3.2 5.028-2.559 9.998-8.16 11.032-13.986-1.915 5.605-7.717 10.421-13.005 12.38C15.209 27.27 8.665 28.57 8.665 28.57l-.264-.14c-4.456-2.17-4.59-11.826 3.507-14.944 3.546-1.366 6.938-.615 10.768-1.53 4.09-.971 8.82-4.041 10.744-8.044 2.156 6.404 4.75 16.43.101 22.628z"/>
+</svg>
diff --git a/build/_docs/assets/images/java.svg b/build/_docs/assets/images/java.svg
new file mode 100644
index 0000000..962f9d7
--- /dev/null
+++ b/build/_docs/assets/images/java.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="56" height="76" viewBox="0 0 56 76">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#5382A1" d="M18.059 58.51s-2.887 1.679 2.054 2.247c5.987.683 9.047.585 15.645-.664 0 0 1.734 1.088 4.157 2.03-14.79 6.339-33.473-.367-21.856-3.613M16.251 50.238s-3.238 2.397 1.708 2.908c6.395.66 11.446.714 20.185-.969 0 0 1.209 1.226 3.11 1.896-17.882 5.229-37.8.412-25.003-3.835"/>
+        <path fill="#E76F00" d="M31.487 36.206c3.645 4.196-.957 7.972-.957 7.972s9.253-4.777 5.004-10.759c-3.97-5.578-7.013-8.35 9.464-17.907 0 0-25.864 6.46-13.51 20.694"/>
+        <path fill="#5382A1" d="M51.048 64.628s2.137 1.76-2.353 3.122c-8.537 2.586-35.532 3.367-43.03.103-2.697-1.172 2.359-2.8 3.949-3.141 1.658-.36 2.606-.293 2.606-.293-2.998-2.112-19.377 4.147-8.32 5.94 30.155 4.89 54.97-2.203 47.148-5.731M19.447 41.667s-13.731 3.262-4.863 4.446c3.745.502 11.21.388 18.163-.194 5.683-.48 11.39-1.499 11.39-1.499s-2.005.858-3.454 1.848C26.739 49.935-.2 48.229 7.556 44.478c6.559-3.17 11.891-2.81 11.891-2.81M44.08 55.436c14.174-7.366 7.62-14.444 3.046-13.49-1.121.233-1.621.435-1.621.435s.416-.652 1.211-.934c9.05-3.182 16.01 9.384-2.921 14.36 0 0 .219-.196.285-.37"/>
+        <path fill="#E76F00" d="M35.534.081s7.85 7.853-7.446 19.929c-12.266 9.686-2.797 15.21-.005 21.52-7.16-6.46-12.414-12.147-8.89-17.44 5.175-7.768 19.508-11.535 16.34-24.009"/>
+        <path fill="#5382A1" d="M20.84 75.396c13.606.87 34.5-.484 34.994-6.922 0 0-.95 2.44-11.244 4.38-11.613 2.185-25.936 1.93-34.431.529 0 0 1.739 1.44 10.68 2.013"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/left-nav-arrow.svg b/build/_docs/assets/images/left-nav-arrow.svg
new file mode 100644
index 0000000..747a83d
--- /dev/null
+++ b/build/_docs/assets/images/left-nav-arrow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="7" height="10" viewBox="0 0 7 10">
+    <path fill="#F86D24" fill-rule="nonzero" d="M1.175 0L0 1.175 3.817 5 0 8.825 1.175 10l5-5z"/>
+</svg>
diff --git a/build/_docs/assets/images/lines-bg-1.svg b/build/_docs/assets/images/lines-bg-1.svg
new file mode 100644
index 0000000..c6f714a
--- /dev/null
+++ b/build/_docs/assets/images/lines-bg-1.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="519" viewBox="0 0 1440 519">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".104">
+        <path d="M186.834 10.225c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M167.138 13.698c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M147.442 17.17c177.381-30.6 337.277 14.317 479.687 134.751 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M127.746 20.644c177.38-30.6 337.276 14.316 479.686 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M108.05 24.117c177.38-30.6 337.276 14.316 479.686 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M88.353 27.59C265.735-3.01 425.63 41.906 568.04 162.34c213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M68.657 31.063c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.493-40.941 534.118-126.673 720.636-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M48.961 34.536c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M29.265 38.008c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.652 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M9.569 41.481c177.381-30.6 337.277 14.317 479.687 134.75 213.614 180.652 450.777 155.08 556.27 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-10.127 44.954c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-29.823 48.427c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-49.52 51.9c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.962 97.987 274.851 136.344"/>
+        <path d="M-69.216 55.373c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-88.912 58.846c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-108.608 62.32c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.079 556.27 114.138 105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-128.304 65.792c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.942 534.118-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-148 69.265c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.942 534.118-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-167.697 72.738C9.685 42.138 169.58 87.055 311.99 207.488c213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.942 534.118-126.674 720.637-47.865 124.345 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-187.393 76.211c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-207.089 79.684c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-226.785 83.157c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-246.481 86.63C-69.1 56.03 90.796 100.947 233.206 221.38 446.82 402.031 683.983 376.46 789.476 335.52c105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-266.177 90.103c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.139 105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.343"/>
+        <path d="M-285.873 93.576c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.139 105.494-40.94 534.118-126.673 720.637-47.864 124.345 52.539 215.963 97.987 274.851 136.343"/>
+        <path d="M-305.57 97.049c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.493-40.94 534.118-126.673 720.637-47.865 124.345 52.54 215.962 97.988 274.851 136.344"/>
+        <path d="M-325.266 100.522c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.988 274.852 136.344"/>
+        <path d="M-344.962 103.995c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-364.658 107.468c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-384.354 110.94c177.38-30.6 337.276 14.317 479.686 134.751 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-404.05 114.414c177.38-30.6 337.276 14.316 479.686 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-423.747 117.887c177.382-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.493-40.941 534.118-126.673 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-443.443 121.36c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.778 155.08 556.27 114.139 105.494-40.941 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-463.139 124.833c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-482.835 128.306c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-502.531 131.778c177.381-30.6 337.277 14.317 479.686 134.75 213.615 180.652 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-522.227 135.251c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.652 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-541.924 138.724c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-561.62 142.197c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.962 97.987 274.851 136.344"/>
+        <path d="M-581.316 145.67c177.381-30.6 337.277 14.317 479.687 134.75C111.986 461.072 349.148 435.5 454.64 394.56c105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-601.012 149.143c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-620.708 152.616c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-640.404 156.09c177.38-30.6 337.276 14.316 479.686 134.75C52.897 471.49 290.06 445.919 395.553 404.978c105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-660.1 159.562c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.345 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-679.797 163.035c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.942 534.118-126.674 720.637-47.865 124.345 52.539 215.962 97.987 274.851 136.344"/>
+        <path d="M-699.493 166.508c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-719.189 169.981c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-738.885 173.454c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-758.581 176.927c177.38-30.6 337.277 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.139 105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-778.277 180.4c177.38-30.6 337.276 14.317 479.686 134.75C-84.976 495.801 152.187 470.23 257.68 429.29c105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/lines-bg-2.svg b/build/_docs/assets/images/lines-bg-2.svg
new file mode 100644
index 0000000..42c4afa
--- /dev/null
+++ b/build/_docs/assets/images/lines-bg-2.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="553" viewBox="0 0 1440 553">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".1">
+        <path d="M196.463 545.723c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M176.657 542.94C354.998 567.33 513.23 516.86 651.35 391.53c207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M156.852 540.156c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M137.047 537.373c178.34 24.39 336.571-26.079 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.212 107.956 721.867 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M117.241 534.59c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M97.436 531.806c178.34 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M77.63 529.022c178.342 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M57.825 526.239c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M38.02 523.456c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M18.214 520.672c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-1.59 517.889c178.34 24.39 336.57-26.08 474.69-151.41 207.181-187.995 445.092-170.716 551.95-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-21.396 515.105c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-41.202 512.322c178.341 24.39 336.572-26.079 474.692-151.41C640.67 172.918 878.58 190.197 985.44 227.43c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-61.007 509.538C117.334 533.93 275.565 483.46 413.685 358.13c207.18-187.996 445.09-170.717 551.948-133.483 106.858 37.235 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-80.812 506.755c178.34 24.39 336.571-26.079 474.691-151.41C601.06 167.35 838.97 184.63 945.83 221.864c106.857 37.234 538.212 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-100.618 503.971c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-120.423 501.188c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-140.228 498.404c178.34 24.391 336.571-26.078 474.691-151.409C541.643 159 779.554 176.278 886.412 213.513c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-160.034 495.62c178.341 24.392 336.572-26.078 474.692-151.408 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686C1710.91 176.568 1800.886 127.95 1858.4 87.56"/>
+        <path d="M-179.84 492.837c178.342 24.391 336.572-26.078 474.693-151.409 207.18-187.995 445.09-170.716 551.948-133.482C953.66 245.18 1385.015 315.9 1568.67 230.63c122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-199.645 490.054c178.342 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1671.3 171 1761.276 122.383 1818.79 81.995"/>
+        <path d="M-219.45 487.27c178.341 24.392 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-239.255 484.487c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-259.06 481.704c178.34 24.39 336.571-26.08 474.691-151.41C422.811 142.3 660.721 159.578 767.58 196.812c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-278.866 478.92c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-298.671 476.137c178.34 24.39 336.571-26.079 474.691-151.41C383.2 136.733 621.111 154.012 727.97 191.246c106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-318.477 473.353c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.235 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-338.282 470.57C-159.941 494.96-1.71 444.49 136.41 319.16 343.59 131.166 581.5 148.445 688.358 185.679c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-358.087 467.786c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.482 106.857 37.234 538.212 107.955 721.867 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-377.893 465.003c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-397.698 462.22c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-417.503 459.436c178.34 24.39 336.571-26.079 474.691-151.41C264.368 120.032 502.28 137.31 609.137 174.545c106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-437.309 456.652c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-457.114 453.869c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-476.92 451.086c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685C1394.025 132.032 1484 83.415 1541.515 43.026"/>
+        <path d="M-496.725 448.302c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.857 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-516.53 445.519c178.34 24.39 336.571-26.08 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-536.336 442.735c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.926-145.853"/>
+        <path d="M-556.141 439.952c178.341 24.39 336.572-26.079 474.692-151.41C125.73 100.548 363.64 117.827 470.499 155.06c106.858 37.234 538.214 107.955 721.868 22.685C1314.804 120.9 1404.78 72.281 1462.293 31.892"/>
+        <path d="M-575.946 437.168c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.212 107.956 721.867 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-595.752 434.385c178.341 24.39 336.572-26.079 474.692-151.41C86.12 94.98 324.03 112.26 430.889 149.494c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-615.557 431.601c178.34 24.391 336.572-26.078 474.692-151.409C66.315 92.196 304.225 109.475 411.083 146.71c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-635.362 428.818c178.34 24.39 336.571-26.079 474.691-151.41C46.51 89.414 284.42 106.693 391.278 143.927c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-655.168 426.034c178.341 24.391 336.572-26.078 474.692-151.409C26.704 86.63 264.614 103.908 371.473 141.143c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-674.973 423.25c178.34 24.392 336.571-26.078 474.692-151.408C6.899 83.846 244.809 101.125 351.667 138.359c106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-694.779 420.467c178.341 24.391 336.572-26.078 474.692-151.409C-12.907 81.063 225.004 98.342 331.862 135.576 438.72 172.81 870.075 243.53 1053.73 158.26c122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-714.584 417.684c178.341 24.391 336.572-26.079 474.692-151.41C-32.712 78.28 205.198 95.559 312.057 132.793c106.858 37.234 538.213 107.956 721.868 22.686C1156.36 98.63 1246.336 50.013 1303.85 9.625"/>
+        <path d="M-734.39 414.9c178.342 24.392 336.572-26.078 474.692-151.409C-52.518 75.496 185.393 92.775 292.252 130.01c106.857 37.234 538.213 107.955 721.867 22.685C1136.556 95.847 1226.531 47.23 1284.045 6.841"/>
+        <path d="M-754.195 412.117c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1116.75 93.064 1206.725 44.446 1264.24 4.058"/>
+        <path d="M-774 409.334c178.341 24.39 336.572-26.08 474.692-151.41C-92.128 69.93 145.782 87.208 252.64 124.442c106.858 37.234 538.214 107.955 721.868 22.685C1096.945 90.28 1186.92 41.663 1244.434 1.274"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/lines-bg-3.svg b/build/_docs/assets/images/lines-bg-3.svg
new file mode 100644
index 0000000..42c4afa
--- /dev/null
+++ b/build/_docs/assets/images/lines-bg-3.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="553" viewBox="0 0 1440 553">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".1">
+        <path d="M196.463 545.723c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M176.657 542.94C354.998 567.33 513.23 516.86 651.35 391.53c207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M156.852 540.156c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M137.047 537.373c178.34 24.39 336.571-26.079 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.212 107.956 721.867 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M117.241 534.59c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M97.436 531.806c178.34 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M77.63 529.022c178.342 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M57.825 526.239c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M38.02 523.456c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M18.214 520.672c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-1.59 517.889c178.34 24.39 336.57-26.08 474.69-151.41 207.181-187.995 445.092-170.716 551.95-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-21.396 515.105c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-41.202 512.322c178.341 24.39 336.572-26.079 474.692-151.41C640.67 172.918 878.58 190.197 985.44 227.43c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-61.007 509.538C117.334 533.93 275.565 483.46 413.685 358.13c207.18-187.996 445.09-170.717 551.948-133.483 106.858 37.235 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-80.812 506.755c178.34 24.39 336.571-26.079 474.691-151.41C601.06 167.35 838.97 184.63 945.83 221.864c106.857 37.234 538.212 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-100.618 503.971c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-120.423 501.188c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-140.228 498.404c178.34 24.391 336.571-26.078 474.691-151.409C541.643 159 779.554 176.278 886.412 213.513c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-160.034 495.62c178.341 24.392 336.572-26.078 474.692-151.408 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686C1710.91 176.568 1800.886 127.95 1858.4 87.56"/>
+        <path d="M-179.84 492.837c178.342 24.391 336.572-26.078 474.693-151.409 207.18-187.995 445.09-170.716 551.948-133.482C953.66 245.18 1385.015 315.9 1568.67 230.63c122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-199.645 490.054c178.342 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1671.3 171 1761.276 122.383 1818.79 81.995"/>
+        <path d="M-219.45 487.27c178.341 24.392 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-239.255 484.487c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-259.06 481.704c178.34 24.39 336.571-26.08 474.691-151.41C422.811 142.3 660.721 159.578 767.58 196.812c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-278.866 478.92c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-298.671 476.137c178.34 24.39 336.571-26.079 474.691-151.41C383.2 136.733 621.111 154.012 727.97 191.246c106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-318.477 473.353c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.235 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-338.282 470.57C-159.941 494.96-1.71 444.49 136.41 319.16 343.59 131.166 581.5 148.445 688.358 185.679c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-358.087 467.786c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.482 106.857 37.234 538.212 107.955 721.867 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-377.893 465.003c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-397.698 462.22c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-417.503 459.436c178.34 24.39 336.571-26.079 474.691-151.41C264.368 120.032 502.28 137.31 609.137 174.545c106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-437.309 456.652c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-457.114 453.869c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-476.92 451.086c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685C1394.025 132.032 1484 83.415 1541.515 43.026"/>
+        <path d="M-496.725 448.302c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.857 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-516.53 445.519c178.34 24.39 336.571-26.08 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-536.336 442.735c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.926-145.853"/>
+        <path d="M-556.141 439.952c178.341 24.39 336.572-26.079 474.692-151.41C125.73 100.548 363.64 117.827 470.499 155.06c106.858 37.234 538.214 107.955 721.868 22.685C1314.804 120.9 1404.78 72.281 1462.293 31.892"/>
+        <path d="M-575.946 437.168c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.212 107.956 721.867 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-595.752 434.385c178.341 24.39 336.572-26.079 474.692-151.41C86.12 94.98 324.03 112.26 430.889 149.494c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-615.557 431.601c178.34 24.391 336.572-26.078 474.692-151.409C66.315 92.196 304.225 109.475 411.083 146.71c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-635.362 428.818c178.34 24.39 336.571-26.079 474.691-151.41C46.51 89.414 284.42 106.693 391.278 143.927c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-655.168 426.034c178.341 24.391 336.572-26.078 474.692-151.409C26.704 86.63 264.614 103.908 371.473 141.143c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-674.973 423.25c178.34 24.392 336.571-26.078 474.692-151.408C6.899 83.846 244.809 101.125 351.667 138.359c106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-694.779 420.467c178.341 24.391 336.572-26.078 474.692-151.409C-12.907 81.063 225.004 98.342 331.862 135.576 438.72 172.81 870.075 243.53 1053.73 158.26c122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-714.584 417.684c178.341 24.391 336.572-26.079 474.692-151.41C-32.712 78.28 205.198 95.559 312.057 132.793c106.858 37.234 538.213 107.956 721.868 22.686C1156.36 98.63 1246.336 50.013 1303.85 9.625"/>
+        <path d="M-734.39 414.9c178.342 24.392 336.572-26.078 474.692-151.409C-52.518 75.496 185.393 92.775 292.252 130.01c106.857 37.234 538.213 107.955 721.867 22.685C1136.556 95.847 1226.531 47.23 1284.045 6.841"/>
+        <path d="M-754.195 412.117c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1116.75 93.064 1206.725 44.446 1264.24 4.058"/>
+        <path d="M-774 409.334c178.341 24.39 336.572-26.08 474.692-151.41C-92.128 69.93 145.782 87.208 252.64 124.442c106.858 37.234 538.214 107.955 721.868 22.685C1096.945 90.28 1186.92 41.663 1244.434 1.274"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/lines-bg-4.svg b/build/_docs/assets/images/lines-bg-4.svg
new file mode 100644
index 0000000..87b0a9b
--- /dev/null
+++ b/build/_docs/assets/images/lines-bg-4.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="973" viewBox="0 0 1440 973">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".06">
+        <path d="M1087.77 102.125C914.927 152.38 790.92 262.896 715.745 433.67 602.985 689.833 378.618 770.826 265.85 780.258c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1106.995 96.612C934.152 146.868 810.144 257.383 734.97 428.158 622.21 684.32 397.843 765.313 285.075 774.746c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1126.22 91.1c-172.843 50.255-296.85 160.77-372.024 331.545C641.436 678.807 417.068 759.8 304.3 769.233c-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1145.446 85.586C972.603 135.842 848.594 246.358 773.42 417.132 660.66 673.294 436.294 754.288 323.525 763.72c-112.768 9.432-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1164.671 80.074C991.828 130.33 867.82 240.845 792.646 411.62 679.886 667.782 455.519 748.775 342.75 758.207c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1183.896 74.56c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1203.122 69.048C1030.278 119.304 906.27 229.82 831.096 400.594 718.336 656.756 493.97 737.75 381.201 747.182c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1222.347 63.535c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1241.572 58.023C1068.73 108.279 944.72 218.794 869.547 389.569 756.787 645.73 532.42 726.724 419.65 736.156c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.229 243.16"/>
+        <path d="M1260.797 52.51c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1280.023 46.997C1107.179 97.253 983.17 207.77 907.997 378.543 795.237 634.705 570.87 715.698 458.102 725.131c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1299.248 41.484C1126.405 91.74 1002.396 202.256 927.223 373.03c-112.76 256.162-337.128 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1318.473 35.972c-172.843 50.256-296.852 160.771-372.025 331.546C833.688 623.68 609.32 704.673 496.552 714.105c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1337.698 30.459c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1356.923 24.946c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1376.149 19.433c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C441.459 707 18.63 817.833-114.442 970.508c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1395.374 13.92c-172.843 50.257-296.852 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1414.6 8.408c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1433.824 2.895c-172.843 50.256-296.851 160.772-372.025 331.546C949.04 590.603 724.672 671.596 611.904 681.03c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1453.05-2.618c-172.844 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C518.36 684.95 95.53 795.782-37.541 948.457c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1472.275-8.13c-172.843 50.256-296.852 160.771-372.025 331.546C987.49 579.578 763.123 660.57 650.354 670.003c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1491.5-13.643c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588C556.811 673.923 133.981 784.757.91 937.43c-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1510.725-19.156C1337.882 31.1 1213.874 141.616 1138.7 312.39c-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1529.95-24.669c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.895 346.588C595.26 662.898 172.43 773.731 39.36 926.406c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1549.176-30.181c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1568.401-35.694c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1587.626-41.207C1414.783 9.05 1290.775 119.565 1215.601 290.34c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C8.32 1011.652-54.089 1092.705-90.194 1153.029"/>
+        <path d="M1606.852-46.72C1434.008 3.536 1310 114.052 1234.826 284.826 1122.066 540.988 897.7 621.982 784.931 631.414c-112.769 9.433-535.599 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1626.077-52.232c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1645.302-57.745C1472.459-7.49 1348.45 103.026 1273.277 273.8 1160.517 529.963 936.15 610.956 823.38 620.389c-112.768 9.432-535.598 120.266-668.67 272.94C65.996 995.114 3.586 1076.167-32.52 1136.49"/>
+        <path d="M1664.527-63.258c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C85.221 989.6 22.812 1070.655-13.293 1130.978"/>
+        <path d="M1683.752-68.77C1510.91-18.516 1386.901 92 1311.727 262.774 1198.967 518.937 974.6 599.931 861.832 609.363c-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1702.978-74.283c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1722.203-79.796C1549.36-29.54 1425.35 80.975 1350.178 251.75c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1741.428-85.309c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.838-187.229 243.161"/>
+        <path d="M1760.653-90.822C1587.81-40.566 1463.802 69.95 1388.628 240.724c-112.76 256.162-337.127 337.156-449.895 346.588-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1779.879-96.334c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1799.104-101.847c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1818.33-107.36c-172.844 50.256-296.852 160.772-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.229 243.161"/>
+        <path d="M1837.554-112.873C1664.711-62.616 1540.703 47.9 1465.53 218.674c-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1856.78-118.385C1683.936-68.13 1559.928 42.386 1484.754 213.16c-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1876.005-123.898c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1895.23-129.41c-172.843 50.255-296.852 160.77-372.025 331.545-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1914.455-134.924c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1933.68-140.436C1760.838-90.18 1636.83 20.335 1561.656 191.11c-112.76 256.162-337.127 337.155-449.895 346.587C998.99 547.13 576.16 657.964 443.09 810.638c-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1952.906-145.949c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94C373.6 906.91 311.19 987.963 275.084 1048.287"/>
+        <path d="M1972.131-151.462c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1991.356-156.975c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M2010.581-162.487c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M2029.807-168c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/menu-icon.svg b/build/_docs/assets/images/menu-icon.svg
new file mode 100644
index 0000000..0bf1e7f
--- /dev/null
+++ b/build/_docs/assets/images/menu-icon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 18 12">
+    <path fill="#333" d="M0 12h18v-2H0v2zm0-5h18V5H0v2zm0-7v2h18V0H0z"/>
+</svg>
diff --git a/build/_docs/assets/images/mousepad-blob.svg b/build/_docs/assets/images/mousepad-blob.svg
new file mode 100644
index 0000000..a05769b
--- /dev/null
+++ b/build/_docs/assets/images/mousepad-blob.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="216" height="382" viewBox="0 0 216 382">
+    <defs>
+        <linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#9634B2"/>
+            <stop offset="100%" stop-color="#713C80"/>
+        </linearGradient>
+    </defs>
+    <path fill="url(#a)" fill-rule="evenodd" d="M1419.757 436.537l160.517 46.028c48.154 13.808 75.997 64.038 62.189 112.192l-46.028 160.517c-13.808 48.154-64.038 75.997-112.192 62.189l-160.517-46.028c-48.154-13.808-75.997-64.038-62.189-112.192l46.028-160.517c13.808-48.154 64.038-75.997 112.192-62.189z" opacity=".7" transform="translate(-1258 -433)"/>
+</svg>
diff --git a/build/_docs/assets/images/piece-of-paper-with-folded-top-right-corner.svg b/build/_docs/assets/images/piece-of-paper-with-folded-top-right-corner.svg
new file mode 100644
index 0000000..aa493a7
--- /dev/null
+++ b/build/_docs/assets/images/piece-of-paper-with-folded-top-right-corner.svg
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="177.42053"
+   height="229.022"
+   viewBox="0 0 177.42053 229.022"
+   version="1.1"
+   id="svg24"
+   sodipodi:docname="piece-of-paper-with-folded-top-right-corner.svg"
+   inkscape:version="0.92.1 r15371">
+  <metadata
+     id="metadata28">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2482"
+     inkscape:window-height="1057"
+     id="namedview26"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="1.026087"
+     inkscape:cx="89"
+     inkscape:cy="114.946"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg24" />
+  <defs
+     id="defs4">
+    <path
+       id="a"
+       d="M 0,6.37 H 177.418 V 235.385 H 0 Z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="c"
+       d="m 1.588,6.374 h 65.06 V 71.43 H 1.588 Z"
+       inkscape:connector-curvature="0" />
+  </defs>
+  <g
+     id="g22"
+     style="fill:none;fill-rule:evenodd"
+     transform="translate(0,-0.92398933)">
+    <g
+       transform="translate(0,-5.446)"
+       id="g11">
+      <mask
+         id="b"
+         fill="#fff">
+        <use
+           xlink:href="#a"
+           id="use6"
+           x="0"
+           y="0"
+           width="100%"
+           height="100%" />
+      </mask>
+      <path
+         d="m 7.027,11.692 c -0.942,0 -1.703,0.762 -1.703,1.703 v 214.962 c 0,0.942 0.761,1.703 1.703,1.703 h 163.37 c 0.935,0 1.704,-0.761 1.704,-1.703 V 69.867 L 113.919,11.692 Z m 163.37,223.699 H 7.028 C 3.15,235.39 0,232.227 0,228.357 V 13.395 C 0,9.532 3.15,6.37 7.027,6.37 h 108 a 2.64,2.64 0 0 1 1.883,0.782 l 59.732,59.732 c 0.492,0.499 0.776,1.184 0.776,1.883 v 159.591 c 0,3.87 -3.15,7.034 -7.02,7.034 z"
+         mask="url(#b)"
+         id="path9"
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff" />
+    </g>
+    <g
+       transform="translate(110.77,-5.446)"
+       id="g18">
+      <mask
+         id="d"
+         fill="#fff">
+        <use
+           xlink:href="#c"
+           id="use13"
+           x="0"
+           y="0"
+           width="100%"
+           height="100%" />
+      </mask>
+      <path
+         d="m 6.919,15.458 v 48.94 c 0,0.94 0.761,1.702 1.703,1.702 h 48.94 L 6.918,15.458 Z M 63.986,71.43 H 8.622 c -3.87,0 -7.034,-3.157 -7.034,-7.034 V 9.033 c 0,-1.08 0.65,-2.049 1.648,-2.457 A 2.68,2.68 0 0 1 6.144,7.15 l 59.732,59.732 c 0.754,0.762 0.983,1.904 0.574,2.915 a 2.69,2.69 0 0 1 -2.464,1.634 z"
+         mask="url(#d)"
+         id="path16"
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff" />
+    </g>
+    <path
+       d="M 88.71,46.81 H 33.978 a 2.671,2.671 0 0 1 -2.665,-2.665 2.671,2.671 0 0 1 2.665,-2.665 h 54.734 a 2.671,2.671 0 0 1 2.665,2.665 2.671,2.671 0 0 1 -2.665,2.666 m 11.702,30.674 h -66.44 a 2.6655,2.6655 0 0 1 0,-5.331 h 66.44 a 2.671,2.671 0 0 1 2.666,2.665 2.671,2.671 0 0 1 -2.666,2.666 m 44.473,30.667 H 33.972 a 2.67,2.67 0 0 1 -2.658,-2.666 2.67,2.67 0 0 1 2.658,-2.665 h 110.915 a 2.667,2.667 0 0 1 0,5.33 m 0,61.335 H 33.972 a 2.67,2.67 0 0 1 -2.658,-2.665 2.67,2.67 0 0 1 2.658,-2.666 h 110.915 a 2.667,2.667 0 0 1 0,5.331 m 0,-30.667 H 33.972 a 2.67,2.67 0 0 1 -2.658,-2.665 2.67,2.67 0 0 1 2.658,-2.666 h 110.915 a 2.667,2.667 0 0 1 0,5.331 m 0,61.334 H 89.433 a 2.671,2.671 0 0 1 -2.665,-2.665 2.671,2.671 0 0 1 2.665,-2.665 h 55.454 a 2.667,2.667 0 0 1 0,5.33"
+       id="path20"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff" />
+  </g>
+</svg>
diff --git a/build/_docs/assets/images/scala.svg b/build/_docs/assets/images/scala.svg
new file mode 100644
index 0000000..5f27789
--- /dev/null
+++ b/build/_docs/assets/images/scala.svg
@@ -0,0 +1,31 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="43" height="73" viewBox="0 0 43 73">
+    <defs>
+        <linearGradient id="a" x1=".171%" x2="99.819%" y1="49.649%" y2="49.649%">
+            <stop offset="0%" stop-color="#656565"/>
+            <stop offset="100%" stop-color="#010101"/>
+        </linearGradient>
+        <linearGradient id="b" x1=".171%" x2="99.819%" y1="49.82%" y2="49.82%">
+            <stop offset="0%" stop-color="#656565"/>
+            <stop offset="100%" stop-color="#010101"/>
+        </linearGradient>
+        <linearGradient id="c" x1=".171%" x2="99.819%" y1="50.052%" y2="50.052%">
+            <stop offset="0%" stop-color="#9F1C20"/>
+            <stop offset="100%" stop-color="#ED2224"/>
+        </linearGradient>
+        <linearGradient id="d" x1=".171%" x2="99.819%" y1="50.259%" y2="50.259%">
+            <stop offset="0%" stop-color="#9F1C20"/>
+            <stop offset="100%" stop-color="#ED2224"/>
+        </linearGradient>
+        <linearGradient id="e" x1=".171%" x2="99.819%" y1="50.44%" y2="50.44%">
+            <stop offset="0%" stop-color="#9F1C20"/>
+            <stop offset="100%" stop-color="#ED2224"/>
+        </linearGradient>
+    </defs>
+    <g fill="none" fill-rule="nonzero">
+        <path fill="url(#a)" d="M.61 27.854s41.78 4.178 41.78 11.142V22.283s0-6.963-41.78-11.141v16.712z"/>
+        <path fill="url(#b)" d="M.61 50.138s41.78 4.178 41.78 11.141V44.567s0-6.964-41.78-11.142v16.713z"/>
+        <path fill="url(#c)" d="M42.39 0v16.713s0 6.963-41.78 11.141V11.142S42.39 6.964 42.39 0"/>
+        <path fill="url(#d)" d="M.61 33.425s41.78-4.178 41.78-11.142v16.713s0 6.964-41.78 11.142V33.425z"/>
+        <path fill="url(#e)" d="M.61 72.421V55.71s41.78-4.179 41.78-11.142v16.712s0 6.964-41.78 11.142"/>
+    </g>
+</svg>
diff --git a/build/_docs/assets/images/search.svg b/build/_docs/assets/images/search.svg
new file mode 100644
index 0000000..4123a57
--- /dev/null
+++ b/build/_docs/assets/images/search.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="19px" viewBox="0 0 18 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: sketchtool 53.2 (72643) - https://sketchapp.com -->
+    <title>76A07A59-5A01-45B5-86ED-1007B13A770C</title>
+    <desc>Created with sketchtool.</desc>
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Article-320" transform="translate(-248.000000, -22.000000)" fill="#333" fill-rule="nonzero">
+            <g id="screen">
+                <g id="GitHub-icon" transform="translate(248.000000, 19.000000)">
+                    <path d="M6.6146307,16.2292614 C2.96147085,16.2292614 0,13.2677905 0,9.6146307 C0,5.96147085 2.96147085,3 6.6146307,3 C10.2677905,3 13.2292614,5.96147085 13.2292614,9.6146307 C13.2292614,11.4412106 12.4888937,13.0948683 11.291881,14.291881 L17.8421457,20.9358099 C18.0561908,21.149855 18.0509881,21.4930606 17.8360963,21.7079524 C17.6197064,21.9243423 17.2755046,21.9255525 17.0639538,21.7140017 L10.4488725,15.0052562 C9.36728942,15.7759493 8.04389847,16.2292614 6.6146307,16.2292614 Z M6.6146307,15.4510695 C9.83800701,15.4510695 12.4510695,12.838007 12.4510695,9.6146307 C12.4510695,6.39125437 9.83800701,3.77819185 6.6146307,3.77819185 C3.39125439,3.77819185 0.778191847,6.39125437 0.778191847,9.6146307 C0.778191847,12.838007 3.39125439,15.4510695 6.6146307,15.4510695 L6.6146307,15.4510695 Z" id="Search"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/build/_docs/assets/images/violent-blob.svg b/build/_docs/assets/images/violent-blob.svg
new file mode 100644
index 0000000..4bef98b
--- /dev/null
+++ b/build/_docs/assets/images/violent-blob.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 735 673" style="enable-background:new 0 0 735 673;" xml:space="preserve">
+<style type="text/css">
+	.st0{opacity:0.85;}
+	.st1{opacity:0.85;fill:url(#Rectangle-3_2_);}
+	.st2{opacity:0.85;fill:url(#Rectangle-3_3_);}
+</style>
+<g id="Page-1" class="st0">
+	<g id="Group" transform="translate(-55.973403, -60.591451)">
+		
+			<linearGradient id="Rectangle-3_2_" gradientUnits="userSpaceOnUse" x1="3.5474" y1="693.9244" x2="3.5474" y2="692.9244" gradientTransform="matrix(715.9998 0 0 -661.9999 -2125.9568 459438.9375)">
+			<stop  offset="0" style="stop-color:#C07670"/>
+			<stop  offset="1" style="stop-color:#8C413D"/>
+		</linearGradient>
+		<path id="Rectangle-3" class="st1" d="M213.3,78.8C334-1.9,784,213.5,771.8,294.2S709.6,709.5,588.1,722
+			c-121.5,12.5-408.1-95.2-496.5-203.6S92.7,159.6,213.3,78.8z"/>
+		
+			<linearGradient id="Rectangle-3_3_" gradientUnits="userSpaceOnUse" x1="3.5511" y1="693.9073" x2="3.5511" y2="692.9073" gradientTransform="matrix(745.4993 -131.4516 -121.5537 -689.3654 82073.4297 478888.8438)">
+			<stop  offset="0" style="stop-color:#AA6FB7"/>
+			<stop  offset="1" style="stop-color:#713C80"/>
+		</linearGradient>
+		<path id="Rectangle-3_1_" class="st2" d="M168.1,121.7c110.8-106.2,619,35.5,621,121.7c2,86.2,11.6,443.9-112.7,479.3
+			S233.9,698.4,122,601.9S57.3,227.9,168.1,121.7z"/>
+	</g>
+</g>
+</svg>
diff --git a/build/_docs/assets/images/watermelon-blob.svg b/build/_docs/assets/images/watermelon-blob.svg
new file mode 100644
index 0000000..c2fe445
--- /dev/null
+++ b/build/_docs/assets/images/watermelon-blob.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="63" height="91" viewBox="0 0 63 91">
+    <defs>
+        <linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#F1474E"/>
+            <stop offset="100%" stop-color="#DF2226"/>
+        </linearGradient>
+    </defs>
+    <path fill="url(#a)" fill-rule="evenodd" d="M67.752 1154.058l24.137 48.02c4.961 9.869.982 21.89-8.887 26.851a20 20 0 0 1-8.982 2.13H26c-11.046 0-20-8.953-20-20a20 20 0 0 1 2.093-8.905l23.882-48.02c4.919-9.89 16.924-13.92 26.814-9.001a20 20 0 0 1 8.963 8.925z" transform="rotate(-7 -9310.93 893.495)"/>
+</svg>
diff --git a/build/_docs/assets/js/anchor.min.js b/build/_docs/assets/js/anchor.min.js
new file mode 100644
index 0000000..e302d89
--- /dev/null
+++ b/build/_docs/assets/js/anchor.min.js
@@ -0,0 +1,9 @@
+// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
+//
+// AnchorJS - v4.2.0 - 2019-01-01
+// https://github.com/bryanbraun/anchorjs
+// Copyright (c) 2019 Bryan Braun; Licensed MIT
+//
+// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
+!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link {   opacity: 0;   text-decoration: none;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus  {   opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after {   content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face {   font-family: "anchorjs-icons";   src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o<e.length;o++)if(this.hasAnchorJSLink(e[o]))d.push(o);else{if(e[o].hasAttribute("id"))n=e[o].getAttribute("id");else if(e[o].hasAttribute("data-anchor-id"))n=e[o].getAttribute("data-anchor-id");else{for(c=r=this.urlify(e[o].textContent),a=0;void 0!==s&&(c=r+"-"+a),a+=1,-1!==(s=i.indexOf(c)););s=void 0,i.push(c),e[o].setAttribute("id",c),n=c}n.replace(/-/g," "),(h=document.createElement("a")).className="anchorjs-link "+this.options.class,h.setAttribute("aria-label",this.options.ariaLabel),h.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(h.title=this.options.titleText),u=document.querySelector("base")?window.location.pathname+window.location.search:"",u=this.options.base||u,h.href=u+"#"+n,"always"===l&&(h.style.opacity="1"),""===this.options.icon&&(h.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(h.style.lineHeight="inherit")),"left"===this.options.placement?(h.style.position="absolute",h.style.marginLeft="-1em",h.style.paddingRight="0.5em",e[o].insertBefore(h,e[o].firstChild)):(h.style.paddingLeft="0.375em",e[o].appendChild(h))}for(o=0;o<d.length;o++)e.splice(d[o]-o,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,i=p(A),n=0;n<i.length;n++)(t=i[n].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(i[n]))&&this.elements.splice(e,1),i[n].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){return this.options.truncate||f(this.options),A.trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
+// @license-end
\ No newline at end of file
diff --git a/build/_docs/assets/js/code-copy-to-clipboard.js b/build/_docs/assets/js/code-copy-to-clipboard.js
new file mode 100644
index 0000000..9769468
--- /dev/null
+++ b/build/_docs/assets/js/code-copy-to-clipboard.js
@@ -0,0 +1,55 @@
+const BUTTON_CLASSNAME = 'copy-to-clipboard-button'
+const BUTTON_CLASSNAME_SUCCESS = 'copy-to-clipboard-button__success'
+
+const TEMPLATE = document.createElement('button')
+TEMPLATE.classList.add(BUTTON_CLASSNAME)
+TEMPLATE.title = 'Copy to clipboard'
+TEMPLATE.type = 'button'
+
+const SECOND = 1000
+const RESULT_DISPLAY_DURATION = 0.5 * SECOND
+
+/**
+ * @param {HTMLElement?} el Element to copy text from
+ * @returns {boolean} Copy success/failure
+ */
+function copyCode(el) {
+	if (!el) return
+	if (!el.matches('code')) return
+
+	const range = document.createRange()
+	range.selectNode(el)
+	window.getSelection().addRange(range)
+
+	try {
+		return document.execCommand('copy')
+	} catch (err) {} finally {
+		window.getSelection().removeAllRanges()		
+	}
+}
+
+function init() {
+	for (const code of document.querySelectorAll('pre>code')) {
+		try {
+			const container = code.closest('.listingblock .content')
+			if (!container) break
+			const button = TEMPLATE.cloneNode(true)
+			container.appendChild(button)			
+		} catch (err) {}
+	}
+	document.addEventListener('click', e => {
+		if (e.target.classList.contains(BUTTON_CLASSNAME)) {
+			const result = copyCode(e.target.parentElement.querySelector('code'))
+			if (result) {
+				e.target.innerText = '✓'
+				e.target.classList.add(BUTTON_CLASSNAME_SUCCESS)
+				setTimeout(() => {
+					e.target.innerText = TEMPLATE.textContent
+					e.target.classList.remove(BUTTON_CLASSNAME_SUCCESS)
+				}, RESULT_DISPLAY_DURATION)
+			}
+		}
+	})
+}
+
+window.addEventListener('load', init)
\ No newline at end of file
diff --git a/build/_docs/assets/js/code-tabs.js b/build/_docs/assets/js/code-tabs.js
new file mode 100644
index 0000000..db8d582
--- /dev/null
+++ b/build/_docs/assets/js/code-tabs.js
@@ -0,0 +1,140 @@
+const TAB_BUTTON = document.createRange().createContextualFragment(`
+    <button class='code-tabs__tab'></button>
+`)
+
+const getAllCodeTabs = () => document.querySelectorAll('code-tabs')
+
+/**
+ * @typedef CodeTabsState
+ * @prop {string?} currentTab
+ * @prop {string[]} tabs
+ * @prop {number?} boundingClientRectTop
+ */
+
+/**
+ * @typedef {number} ScrollState
+ */
+
+class CodeTabs {
+    /** @param {HTMLElement} el */
+    constructor(el) {
+        this.el = el
+        this.el.codeTabs = this
+        /**
+         * @type {CodeTabsState}
+         */
+        this._state = {tabs: []}
+    }
+    get state() {
+        return this._state
+    }
+    /**
+     * @param {CodeTabsState} newState
+     */
+    set state(newState) {
+        const oldState = this._state
+        this._state = newState
+        this._render(oldState, newState)
+    }
+    connectedCallback() {
+        this._tabElements = this.el.querySelectorAll('code-tab')
+        this.state = {
+            currentTab: this._tabElements[0].dataset.tab,
+            tabs: [...this._tabElements].map(el => el.dataset.tab),
+        }
+    }
+    /**
+     * @private
+     * @param {CodeTabsState} oldState
+     * @param {CodeTabsState} newState
+     */
+    _render(oldState, newState) {
+        if (!oldState.tabs.length && newState.tabs.length) {
+            /** @type {HTMLElement} */
+            this.el.prepend(newState.tabs.reduce((nav, tab, i) => {
+                const button = TAB_BUTTON.firstElementChild.cloneNode()
+                button.dataset.tab = tab
+                button.innerText = tab
+                button.onclick = () => {
+                    const scrollState = this._rememberScrollState()
+                    this._openTab(tab)
+                    this._restoreScrollState(scrollState)
+                }
+                if (this._tabElements[i].dataset.unavailable) {
+                    button.classList.add('grey')      
+                }
+
+                this._tabElements[i].button = button
+                nav.appendChild(button)
+                return nav
+            }, document.createElement('NAV')))
+            this.el.classList.add('code-tabs__initialized')
+        }
+        if (oldState.currentTab !== newState.currentTab) {
+            for (const tab of this._tabElements) {
+                const hidden = tab.dataset.tab !== newState.currentTab
+                if (hidden) {
+                    tab.setAttribute('hidden', 'hidden')
+                } else {
+                    tab.removeAttribute('hidden')
+                }
+                tab.button.classList.toggle('active', !hidden)
+            }
+        }
+    }
+    /** 
+     * @private
+     * @param {string} tab
+     */
+    _openTab(tab, emitEvent = true) {
+        if (!this.state.tabs.includes(tab)) return
+        this.state = Object.assign({}, this.state, {currentTab: tab})
+        if (emitEvent) this.el.dispatchEvent(new CustomEvent('tabopen', {
+            bubbles: true,
+            detail: {tab}
+        }))
+    }
+    /** 
+     * @param {string} tab
+     */
+    openTab(tab) {
+        this._openTab(tab, false)
+    }
+
+    /**
+     * @private
+     * @returns {ScrollState}
+     */
+    _rememberScrollState() {
+        return this.el.getBoundingClientRect().top
+    }
+
+    /**
+     * @private
+     * @param {ScrollState} scrollState
+     * @returns {void}
+     */
+    _restoreScrollState(scrollState) {
+        const currentRectTop = this.el.getBoundingClientRect().top
+        const delta = currentRectTop - scrollState
+        document.scrollingElement.scrollBy(0, delta)
+    }
+}
+
+/**
+ * @param {NodeListOf<Element>} tabs
+ */
+const setupSameLanguageSync = (tabs) => {
+    document.addEventListener('tabopen', (e) => {
+        [...tabs].filter(tab => tab !== e.target).forEach(tab => {
+            tab.codeTabs.openTab(e.detail.tab)
+        })
+    })
+}
+
+// Edge does not support custom elements V1
+for (const el of getAllCodeTabs()) {
+    const instance = new CodeTabs(el)
+    instance.connectedCallback()
+}
+setupSameLanguageSync(getAllCodeTabs())
\ No newline at end of file
diff --git a/build/_docs/assets/js/docs-menu.js b/build/_docs/assets/js/docs-menu.js
new file mode 100644
index 0000000..d30b125
--- /dev/null
+++ b/build/_docs/assets/js/docs-menu.js
@@ -0,0 +1,58 @@
+const button = document.querySelector('button.menu')
+const overlay = document.querySelector('.left-nav__overlay')
+
+const eventTypes = {
+    show: 'leftNavigationShow',
+    hide: 'leftNavigationHide'
+}
+
+/**
+ * @param {keyof eventTypes} type
+ */
+const emit = type => {
+    if (!CustomEvent) return
+    document.dispatchEvent(new CustomEvent(type, {bubbles: true}))
+}
+
+/**
+ * @param {boolean} force
+ */
+const toggleMenu = (force) => {
+    const body = document.querySelector('body')
+    const HIDE_CLASS = 'hide-left-nav'
+    body.classList.toggle(HIDE_CLASS, force)
+    emit(eventTypes[body.classList.contains(HIDE_CLASS) ? 'hide' : 'show'])
+}
+
+export const scrollLeftNavToActive = () => {
+    let activeItem = document.querySelector('.left-nav .active');
+    if(activeItem){
+        var topPos = activeItem.offsetTop;
+        document.querySelector('.left-nav').scrollTop = topPos-10;
+    }
+}
+
+
+export const hideLeftNav = () => {
+    toggleMenu(true, false)
+}
+
+if (button && overlay) {
+    const query = window.matchMedia('(max-width: 990px)')
+
+    button.addEventListener('click', () => toggleMenu())
+    overlay.addEventListener('click', () => toggleMenu())
+    query.addListener((e) => {
+        toggleMenu(e.matches)
+    })
+    toggleMenu(query.matches)
+}
+
+document.addEventListener('click', e => {
+    if (e.target.matches('.left-nav button')) {
+        e.target.classList.toggle('expanded')
+        e.target.classList.toggle('collapsed')
+        e.target.nextElementSibling.classList.toggle('expanded')
+        e.target.nextElementSibling.classList.toggle('collapsed')
+    }
+})
diff --git a/build/_docs/assets/js/index.js b/build/_docs/assets/js/index.js
new file mode 100644
index 0000000..5a245f6
--- /dev/null
+++ b/build/_docs/assets/js/index.js
@@ -0,0 +1,13 @@
+import './code-tabs.js?1'
+import {hideLeftNav, scrollLeftNavToActive} from './docs-menu.js?20201005'
+//import {hideTopNav} from './top-navigation.js'
+import './page-nav.js'
+
+
+
+
+document.addEventListener('topNavigationShow', hideLeftNav)
+// document.addEventListener('leftNavigationShow', hideTopNav)
+window.addEventListener('load', scrollLeftNavToActive);
+
+
diff --git a/build/_docs/assets/js/jquery.swiftype.autocomplete.js b/build/_docs/assets/js/jquery.swiftype.autocomplete.js
new file mode 100644
index 0000000..7d9fa8a
--- /dev/null
+++ b/build/_docs/assets/js/jquery.swiftype.autocomplete.js
@@ -0,0 +1,570 @@
+(function ($) {
+  var queryParser = function (a) {
+      var i, p, b = {};
+      if (a === "") {
+        return {};
+      }
+      for (i = 0; i < a.length; i += 1) {
+        p = a[i].split('=');
+        if (p.length === 2) {
+          b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
+        }
+      }
+      return b;
+    };
+  $.queryParams = function () {
+    return queryParser(window.location.search.substr(1).split('&'));
+  };
+  $.hashParams = function () {
+    return queryParser(window.location.hash.substr(1).split('&'));
+  };
+
+
+  var ident = 0;
+
+  window.Swiftype = window.Swiftype || {};
+  Swiftype.root_url = Swiftype.root_url || 'https://search-api.swiftype.com';
+  Swiftype.pingUrl = function(endpoint, callback) {
+    var to = setTimeout(callback, 350);
+    var img = new Image();
+    img.onload = img.onerror = function() {
+      clearTimeout(to);
+      callback();
+    };
+    img.src = endpoint;
+    return false;
+  };
+  Swiftype.pingAutoSelection = function(engineKey, docId, value, callback) {
+    var params = {
+      t: new Date().getTime(),
+      engine_key: engineKey,
+      doc_id: docId,
+      prefix: value
+    };
+    var url = Swiftype.root_url + '/api/v1/public/analytics/pas?' + $.param(params);
+    Swiftype.pingUrl(url, callback);
+  };
+  Swiftype.findSelectedSection = function() {
+    var sectionText = $.hashParams().sts;
+    if (!sectionText) { return; }
+
+    function normalizeText(str) {
+      var out = str.replace(/\s+/g, '');
+      out = out.toLowerCase();
+      return out;
+    }
+
+    sectionText = normalizeText(sectionText);
+
+    $('h1, h2, h3, h4, h5, h6').each(function(idx) {
+      $this = $(this);
+      if (normalizeText($this.text()).indexOf(sectionText) >= 0) {
+        this.scrollIntoView(true);
+        return false;
+      }
+    });
+  };
+
+  Swiftype.htmlEscape = Swiftype.htmlEscape || function htmlEscape(str) {
+    return String(str).replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+  };
+
+  $.fn.swiftype = function (options) {
+    Swiftype.findSelectedSection();
+    var options = $.extend({}, $.fn.swiftype.defaults, options);
+
+    return this.each(function () {
+      var $this = $(this);
+      var config = $.meta ? $.extend({}, options, $this.data()) : options;
+      $this.attr('autocomplete', 'off');
+      $this.data('swiftype-config-autocomplete', config);
+      $this.submitted = false;
+      $this.cache = new LRUCache(10);
+      $this.emptyQueries = [];
+
+      $this.isEmpty = function(query) {
+        return $.inArray(normalize(query), this.emptyQueries) >= 0
+      };
+
+      $this.addEmpty = function(query) {
+        $this.emptyQueries.unshift(normalize(query));
+      };
+
+      var styles = config.dropdownStylesFunction($this);
+      var $swiftypeWidget = $('<div class="' + config.widgetContainerClass + '" />');
+      var $listContainer = $('<div />').addClass(config.suggestionListClass).appendTo($swiftypeWidget).css(styles).hide();
+      $swiftypeWidget.appendTo(config.autocompleteContainingElement);
+      var $list = $('<' + config.suggestionListType + ' />').appendTo($listContainer);
+
+      $this.data('swiftype-list', $list);
+
+      $this.abortCurrent = function() {
+        if ($this.currentRequest) {
+          $this.currentRequest.abort();
+        }
+      };
+
+      $this.showList = function() {
+        if (handleFunctionParam(config.disableAutocomplete) === false) {
+          $listContainer.show();
+        }
+      };
+
+      $this.hideList = function(sync) {
+        if (sync) {
+          $listContainer.hide();
+        } else {
+          setTimeout(function() { $listContainer.hide(); }, 10);
+        }
+      };
+
+      $this.showNoResults = function () {
+        $list.empty();
+        if (config.noResultsMessage === undefined) {
+          $this.hideList();
+        } else {
+          $list.append($('<li />', { 'class': config.noResultsClass }).text(config.noResultsMessage));
+          $this.showList();
+        }
+      };
+
+      $this.focused = function() {
+        return $this.is(':focus');
+      };
+
+      $this.submitting = function() {
+        $this.submitted = true;
+      };
+
+      $this.listResults = function() {
+        return $(config.resultListSelector, $list).filter(':not(.' + config.noResultsClass + ')');
+      };
+
+      $this.activeResult = function() {
+        return $this.listResults().filter('.' + config.activeItemClass).first();
+      };
+
+      $this.prevResult = function() {
+        var list = $this.listResults(),
+          currentIdx = list.index($this.activeResult()),
+          nextIdx = currentIdx - 1,
+          next = list.eq(nextIdx);
+        $this.listResults().removeClass(config.activeItemClass);
+        if (nextIdx >= 0) {
+          next.addClass(config.activeItemClass);
+        }
+      };
+
+      $this.nextResult = function() {
+        var list = $this.listResults(),
+          currentIdx = list.index($this.activeResult()),
+          nextIdx = currentIdx + 1,
+          next = list.eq(nextIdx);
+        $this.listResults().removeClass(config.activeItemClass);
+        if (nextIdx >= 0) {
+          next.addClass(config.activeItemClass);
+        }
+      };
+
+      $this.selectedCallback = function(data) {
+        return function() {
+          var value = $this.val(),
+            callback = function() {
+              config.onComplete(data, value);
+            };
+          Swiftype.pingAutoSelection(config.engineKey, data['id'], value, callback);
+        };
+      };
+
+      $this.registerResult = function($element, data) {
+        $element.data('swiftype-item', data);
+        $element.click($this.selectedCallback(data)).mouseover(function () {
+          $this.listResults().removeClass(config.activeItemClass);
+          $element.addClass(config.activeItemClass);
+        });
+      };
+
+      $this.getContext = function() {
+        return {
+          config: config,
+          list: $list,
+          registerResult: $this.registerResult
+        };
+      };
+
+
+      var typingDelayPointer;
+      var suppressKey = false;
+      $this.lastValue = '';
+      $this.keyup(function (event) {
+        if (suppressKey) {
+          suppressKey = false;
+          return;
+        }
+
+        // ignore arrow keys, shift
+        if (((event.which > 36) && (event.which < 41)) || (event.which == 16)) return;
+
+        if (config.typingDelay > 0) {
+          clearTimeout(typingDelayPointer);
+          typingDelayPointer = setTimeout(function () {
+            processInput($this);
+          }, config.typingDelay);
+        } else {
+          processInput($this);
+        }
+      });
+
+      $this.styleDropdown = function() {
+        $listContainer.css(config.dropdownStylesFunction($this));
+      };
+
+      $(window).resize(function (event) {
+        $this.styleDropdown();
+      });
+
+      $this.keydown(function (event) {
+        $this.styleDropdown();
+        // enter = 13; up = 38; down = 40; esc = 27
+        var $active = $this.activeResult();
+        switch (event.which) {
+        case 13:
+          if (($active.length !== 0) && ($list.is(':visible'))) {
+            event.preventDefault();
+            $this.selectedCallback($active.data('swiftype-item'))();
+          } else if ($this.currentRequest) {
+            $this.submitting();
+          }
+          $this.hideList();
+          suppressKey = true;
+          break;
+        case 38:
+          event.preventDefault();
+          if ($active.length === 0) {
+            $this.listResults().last().addClass(config.activeItemClass);
+          } else {
+            $this.prevResult();
+          }
+          break;
+        case 40:
+          event.preventDefault();
+          if ($active.length === 0) {
+            $this.listResults().first().addClass(config.activeItemClass);
+          } else if ($active != $this.listResults().last()) {
+            $this.nextResult();
+          }
+          break;
+        case 27:
+          $this.hideList();
+          suppressKey = true;
+          break;
+        default:
+          $this.submitted = false;
+          break;
+        }
+      });
+
+      // opera wants keypress rather than keydown to prevent the form submit
+      $this.keypress(function (event) {
+        if ((event.which == 13) && ($this.activeResult().length > 0)) {
+          event.preventDefault();
+        }
+      });
+
+      // stupid hack to get around loss of focus on mousedown
+      var mouseDown = false;
+      var blurWait = false;
+      $(document).bind('mousedown.swiftype' + ++ident, function () {
+        mouseDown = true;
+      });
+      $(document).bind('mouseup.swiftype' + ident, function () {
+        mouseDown = false;
+        if (blurWait) {
+          blurWait = false;
+          $this.hideList();
+        }
+      });
+      $this.blur(function () {
+        if (mouseDown) {
+          blurWait = true;
+        } else {
+          $this.hideList();
+        }
+      });
+      $this.focus(function () {
+        setTimeout(function() { $this.select() }, 10);
+        if ($this.listResults().length > 0) {
+          $this.showList();
+        }
+      });
+    });
+  };
+
+  var normalize = function(str) {
+    return $.trim(str).toLowerCase();
+  };
+
+  var callRemote = function ($this, term) {
+    $this.abortCurrent();
+
+    var params = {},
+      config = $this.data('swiftype-config-autocomplete');
+
+    params['q'] = term.replace(/\W/g, ' ');
+
+    params['engine_key'] = config.engineKey;
+    params['search_fields'] = handleFunctionParam(config.searchFields);
+    params['fetch_fields'] = handleFunctionParam(config.fetchFields);
+    params['filters'] = handleFunctionParam(config.filters);
+    params['document_types'] = handleFunctionParam(config.documentTypes);
+    params['functional_boosts'] = handleFunctionParam(config.functionalBoosts);
+    params['sort_field'] = handleFunctionParam(config.sortField);
+    params['sort_direction'] = handleFunctionParam(config.sortDirection);
+    params['per_page'] = config.resultLimit;
+    params['highlight_fields'] = config.highlightFields;
+
+    var endpoint = Swiftype.root_url + '/api/v1/public/engines/search.json';
+    $this.currentRequest = $.ajax({
+      type: 'GET',
+      dataType: 'jsonp',
+      url: endpoint,
+      data: params
+    }).done(function(data) {
+      var norm = normalize(term);
+      if (data.record_count > 0) {
+        $this.cache.put(norm, data.records);
+      } else {
+        $this.addEmpty(norm);
+        $this.showNoResults();
+        return;
+      }
+      processData($this, data.records, term);
+    });
+  };
+
+  var getResults = function($this, term) {
+    var norm = normalize(term);
+    if ($this.isEmpty(norm)) {
+      $this.showNoResults();
+      return;
+    }
+    var cached = $this.cache.get(norm);
+    if (cached) {
+      processData($this, cached, term);
+    } else {
+      callRemote($this, term);
+    }
+  };
+
+  // private helpers
+  var processInput = function ($this) {
+      var term = $this.val();
+      if (term === $this.lastValue) {
+        return;
+      }
+      $this.lastValue = term;
+      if ($.trim(term) === '') {
+        $this.data('swiftype-list').empty()
+        $this.hideList();
+        return;
+      }
+      if (typeof $this.data('swiftype-config-autocomplete').engineKey !== 'undefined') {
+        getResults($this, term);
+      }
+    };
+
+  var processData = function ($this, data, term) {
+      var $list = $this.data('swiftype-list'),
+        config = $this.data('swiftype-config-autocomplete');
+
+      $list.empty();
+      $this.hideList(true);
+
+      config.resultRenderFunction($this.getContext(), data, term);
+
+      var totalItems = $this.listResults().length;
+      if ((totalItems > 0 && $this.focused()) || (config.noResultsMessage !== undefined)) {
+        if ($this.submitted) {
+          $this.submitted = false;
+        } else {
+          $this.showList();
+        }
+      }
+    };
+
+  var defaultResultRenderFunction = function(ctx, results) {
+    var $list = ctx.list,
+      config = ctx.config;
+
+    $.each(results, function(document_type, items) {
+      $.each(items, function(idx, item) {
+        ctx.registerResult($('<li>' + config.renderFunction(document_type, item, idx) + '</li>').appendTo($list), item);
+      });
+    });
+  };
+
+  var defaultRenderFunction = function(document_type, item, idx) {
+    return '<p class="title">' + Swiftype.htmlEscape(item['title']) + '</p>';
+  };
+
+  var defaultOnComplete = function(item, prefix) {
+    window.location = item['url'];
+  };
+
+  var defaultDropdownStylesFunction = function($this) {
+    var config = $this.data('swiftype-config-autocomplete');
+    var $attachEl = config.attachTo ? $(config.attachTo) : $this;
+    var offset = $attachEl.offset();
+    var styles = {
+      'position': 'absolute',
+      'z-index': 9999,
+      'top': offset.top + $attachEl.outerHeight() + 1,
+      'right': offset.left
+    };
+    if (config.setWidth) {
+      styles['width'] = $attachEl.outerWidth() - 2;
+    }
+    return styles;
+  };
+
+  var handleFunctionParam = function(field) {
+    if (field !== undefined) {
+      var evald = field;
+      if (typeof evald === 'function') {
+        evald = evald.call();
+      }
+      return evald;
+    }
+    return undefined;
+  };
+
+	// simple client-side LRU Cache, based on https://github.com/rsms/js-lru
+
+	function LRUCache(limit) {
+	  this.size = 0;
+	  this.limit = limit;
+	  this._keymap = {};
+	}
+
+  LRUCache.prototype.put = function (key, value) {
+    var entry = {
+      key: key,
+      value: value
+    };
+    this._keymap[key] = entry;
+    if (this.tail) {
+      this.tail.newer = entry;
+      entry.older = this.tail;
+    } else {
+      this.head = entry;
+    }
+    this.tail = entry;
+    if (this.size === this.limit) {
+      return this.shift();
+    } else {
+      this.size++;
+    }
+  };
+
+  LRUCache.prototype.shift = function () {
+    var entry = this.head;
+    if (entry) {
+      if (this.head.newer) {
+        this.head = this.head.newer;
+        this.head.older = undefined;
+      } else {
+        this.head = undefined;
+      }
+      entry.newer = entry.older = undefined;
+      delete this._keymap[entry.key];
+    }
+    return entry;
+  };
+
+  LRUCache.prototype.get = function (key, returnEntry) {
+    var entry = this._keymap[key];
+    if (entry === undefined) return;
+    if (entry === this.tail) {
+      return entry.value;
+    }
+    if (entry.newer) {
+      if (entry === this.head) this.head = entry.newer;
+      entry.newer.older = entry.older;
+    }
+    if (entry.older) entry.older.newer = entry.newer;
+    entry.newer = undefined;
+    entry.older = this.tail;
+    if (this.tail) this.tail.newer = entry;
+    this.tail = entry;
+    return returnEntry ? entry : entry.value;
+  };
+
+  LRUCache.prototype.remove = function (key) {
+    var entry = this._keymap[key];
+    if (!entry) return;
+    delete this._keymap[entry.key];
+    if (entry.newer && entry.older) {
+      entry.older.newer = entry.newer;
+      entry.newer.older = entry.older;
+    } else if (entry.newer) {
+      entry.newer.older = undefined;
+      this.head = entry.newer;
+    } else if (entry.older) {
+      entry.older.newer = undefined;
+      this.tail = entry.older;
+    } else {
+      this.head = this.tail = undefined;
+    }
+
+    this.size--;
+    return entry.value;
+  };
+
+  LRUCache.prototype.clear = function () {
+    this.head = this.tail = undefined;
+    this.size = 0;
+    this._keymap = {};
+  };
+
+  if (typeof Object.keys === 'function') {
+    LRUCache.prototype.keys = function () {
+      return Object.keys(this._keymap);
+    };
+  } else {
+    LRUCache.prototype.keys = function () {
+      var keys = [];
+      for (var k in this._keymap) keys.push(k);
+      return keys;
+    };
+  }
+
+  $.fn.swiftype.defaults = {
+    activeItemClass: 'active',
+    attachTo: undefined,
+    documentTypes: undefined,
+    filters: undefined,
+    engineKey: undefined,
+    searchFields: undefined,
+    functionalBoosts: undefined,
+    sortField: undefined,
+    sortDirection: undefined,
+    fetchFields: undefined,
+    highlightFields: undefined,
+    noResultsClass: 'noResults',
+    noResultsMessage: undefined,
+    onComplete: defaultOnComplete,
+    resultRenderFunction: defaultResultRenderFunction,
+    renderFunction: defaultRenderFunction,
+    dropdownStylesFunction: defaultDropdownStylesFunction,
+    resultLimit: undefined,
+    suggestionListType: 'ul',
+    suggestionListClass: 'autocomplete',
+    resultListSelector: 'li',
+    setWidth: true,
+    typingDelay: 80,
+    disableAutocomplete: false,
+    autocompleteContainingElement: 'body',
+    widgetContainerClass: 'swiftype-widget'
+  };
+
+})(jQuery);
diff --git a/build/_docs/assets/js/page-nav.js b/build/_docs/assets/js/page-nav.js
new file mode 100644
index 0000000..2be49d4
--- /dev/null
+++ b/build/_docs/assets/js/page-nav.js
@@ -0,0 +1,22 @@
+const rightNav = document.querySelector('.right-nav .sectlevel1')
+
+if (IntersectionObserver && rightNav) {
+    const tocAnchors = [...rightNav.querySelectorAll('a[href]')]
+    let last;
+    tocAnchors.forEach((a, i, all) => {
+        const target = document.querySelector(`${a.hash}`)
+        if (!target) return
+        const observer = new IntersectionObserver((entries) => {
+            entries.forEach(entry => {
+                a.classList.toggle('visible', entry.isIntersecting)
+                if (entry.isIntersecting) last = a
+
+                const firstVisible = rightNav.querySelector('.visible')
+                tocAnchors.forEach(a => a.classList.remove('active'))
+                if (firstVisible) firstVisible.classList.add('active')
+                else if (last) last.classList.add('active')
+            })
+        });
+        observer.observe(target)
+    })
+}
\ No newline at end of file
diff --git a/build/_docs/assets/js/top-navigation.js b/build/_docs/assets/js/top-navigation.js
new file mode 100644
index 0000000..4a2c948
--- /dev/null
+++ b/build/_docs/assets/js/top-navigation.js
@@ -0,0 +1,77 @@
+const query = window.matchMedia('(max-width: 450px)')
+const header = document.querySelector('header')
+const search = document.querySelector('header .search input')
+
+let state = {
+    narrowMode: false,
+    showSearch: false,
+    showNav: false
+}
+
+const eventTypes = {
+    navShow: 'topNavigationShow',
+    navHide: 'topNavigationHide'
+}
+
+/**
+ * @param {keyof eventTypes} type
+ */
+const emit = type => {
+    if (!CustomEvent) return
+    header.dispatchEvent(new CustomEvent(type, {bubbles: true}))
+}
+
+/**
+ * @param {typeof state} newState
+ */
+const render = (newState) => {
+    if (state.narrowMode !== newState.narrowMode)
+        header.classList.toggle('narrow-header')
+    if (state.showSearch !== newState.showSearch) {
+        header.classList.toggle('show-search')
+        search.value = ''
+        if (newState.showSearch) search.focus()
+    }
+    if (state.showNav !== newState.showNav) {
+        header.classList.toggle('show-nav')
+        emit(eventTypes[newState.showNav ? 'navShow' : 'navHide'])        
+    }
+    state = newState
+}
+
+render(Object.assign({}, state, {narrowMode: query.matches}))
+
+query.addListener((e) => {
+    render(Object.assign({}, state, {
+        narrowMode: e.matches,
+        showSearch: false,
+        showNav: false
+    }))
+})
+
+document.querySelector('.top-nav-toggle').addEventListener('click', () => {
+    render(Object.assign({}, state, {
+        showNav: !state.showNav,
+        showSearch: false
+    }))
+})
+
+document.querySelector('.search-toggle').addEventListener('click', () => {
+    render(Object.assign({}, state, {
+        showSearch: !state.showSearch,
+        showNav: false
+    }))
+})
+
+search.addEventListener('blur', () => {
+    render(Object.assign({}, state, {
+        showSearch: false
+    }))
+})
+
+export const hideTopNav = () => {
+    render(Object.assign({}, state, {
+        showNav: false,
+        showSearch: false
+    }))
+}
diff --git a/build/_docs/assets/js/versioning.js b/build/_docs/assets/js/versioning.js
new file mode 100644
index 0000000..2386f5b
--- /dev/null
+++ b/build/_docs/assets/js/versioning.js
@@ -0,0 +1,53 @@
+function initVersioning()
+{
+    let dropdown = document.getElementById("version-selector");
+    let current_base_url = dropdown.value;
+    const url = '/docs/available-versions.txt';
+    const currentDocVersion = document.querySelector('meta[name="ignite-version"]').getAttribute("content");
+    const currentPath = document.location.pathname;
+    const isLatest = currentPath.includes("/latest/");
+
+    fetch(url)
+        .then(
+            function(response)
+            {
+                if(response.status !== 200){
+                    console.warn("Problem fetching other versions. " + response.status);
+                    return;
+                }
+
+                response.text().then(function(data){
+                    
+                    let lines = data.split("\n");
+                    
+                    let new_option;
+                    
+                    dropdown.length = 0;
+
+                    for(let i = 0; i < lines.length; i++){
+                        if(String(lines[i]).trim().length > 0){
+                            new_option = document.createElement('option');
+                            new_option.text = lines[i];
+                            let r = isLatest?"latest":currentDocVersion;
+                            new_option.value = currentPath.replace(r, lines[i]);
+                            dropdown.add(new_option);
+                            if(lines[i] == currentDocVersion) 
+                                dropdown.selectedIndex = i;
+                        }
+                        
+                    }
+
+                    dropdown.addEventListener('change', function(){
+                        window.location.href = this.value;
+                    });
+                });
+                
+            }
+        )
+        .catch(function(err){
+            console.error('Error fetching versions', err);
+        });
+
+}
+
+window.addEventListener('load', initVersioning)
\ No newline at end of file
diff --git a/build/_docs/build.sh b/build/_docs/build.sh
new file mode 100644
index 0000000..3617f48
--- /dev/null
+++ b/build/_docs/build.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+
+export latest=no
+export branch=master
+export action=build
+
+export versions_filename="../docs/available-versions.txt"
+
+while [ "$#" -gt 0 ]; do
+  case "$1" in
+    --version=*)
+        version="${1#*=}"
+        ;;
+     --latest)
+        latest="yes"
+        ;;
+    --github-branch=*)
+        branch="${1#*=}"
+        ;;
+    --serve)
+      action=serve
+      ;;
+    *)
+      printf "***********************************************************\n"
+      printf "* Error: Invalid argument,  *\n"
+      printf "***********************************************************\n"
+      exit 1
+  esac
+  shift
+done
+
+if [ -z "$version" ]; then
+  echo "specify the version: --version=1.0.0"
+  exit 1
+fi
+
+# there are different repos for version 2 and 3.
+export repo_url="https://github.com/apache/ignite.git"
+if [[ "${version:0:1}" == "3" ]] ; then
+  repo_url="https://github.com/apache/ignite-3.git"
+fi
+
+# clone Ignite repo locally to copy only the content for docs. 
+#   @todo: is there a way to avoid cloning the entire branch and bring only the docs/ dir?
+export tmp_dir=tmp
+rm -rf $tmp_dir
+mkdir $tmp_dir
+git -C $tmp_dir  clone --single-branch --branch $branch $repo_url docs_$version
+rm -rf _docs _data _plugins
+cp -R $tmp_dir/docs_$version/docs/_docs _docs
+cp -R $tmp_dir/docs_$version/docs/_data/ _data
+cp -R $tmp_dir/docs_$version/docs/_plugins/ _plugins
+
+# update contents for the jekyll config file
+if [ "$latest" = "yes" ]; then
+ sed  "s/{version}/$version/g;s/{base_url}/\/docs\/latest/g"  _config.template  > _config.yml
+else 
+  sed  "s/{version}/$version/g;s/{base_url}/\/docs\/$version/g"  _config.template  > _config.yml
+fi
+# build/serve
+bundle install
+bundle exec jekyll $action  
+
+# move built files to /docs/ dir under website root dir.
+if [ "$action" = "build" ]; then
+
+  rm -rf ../docs/$version
+  cp -R _site/docs/$version ../docs/$version
+  cp -R _site/assets ../
+
+  # if [ "$latest" = "yes" ]; then
+    # rm ../docs/latest
+    # ln -s ../docs/$version ../docs/latest
+  # fi
+
+  # add the version number to the .txt file used by the version selector dropdown on the UI
+  if ! grep -Fxq "$version" "$versions_filename"; then
+    # adds the version to the top of the list if 'latest', otherwise to the bottom
+    if [ "$latest" = "yes" ]; then
+      cat <(echo "$version") "$versions_filename" > ../docs/available-versions.new
+      mv ../docs/available-versions.new "$versions_filename"
+    else
+      #just in case the file doesn't end with an EOL already
+      if [ -z "$tail -c 1 <"$versions_filename")" ]; then  
+        echo "" >> "$versions_filename"
+      fi
+     
+      echo "$version" >> "$versions_filename"
+    fi
+  fi
+fi
+
+# clean up some stuff
+rm -r _config.yml
+rm -rf _data
+rm -rf _docs
+rm -rf _plugins
+rm -rf  $tmp_dir