liuyuqi-dellpc 1 year ago
parent
commit
87ce9190fe
62 changed files with 4912 additions and 6 deletions
  1. 145 0
      .gitignore
  2. 24 0
      404.html
  3. 1 0
      CNAME
  4. 12 0
      Gemfile
  5. 98 0
      Gemfile.lock
  6. 201 0
      LICENSE
  7. 16 6
      README.md
  8. 69 0
      _config.yml
  9. 1 0
      _includes/application-insights.html
  10. 30 0
      _includes/body.html
  11. 2 0
      _includes/cnzz.html
  12. 37 0
      _includes/footer.html
  13. 13 0
      _includes/gitbook-sharing.json.tpl
  14. 9 0
      _includes/google-analytics.html
  15. 69 0
      _includes/head.html
  16. 14 0
      _includes/mathjax.html
  17. 22 0
      _includes/metadata-home.json.tpl
  18. 20 0
      _includes/metadata-post.json.tpl
  19. 76 0
      _includes/metadata.json.tpl
  20. 9 0
      _includes/search.html
  21. 61 0
      _includes/toc-date.html
  22. 182 0
      _includes/toc.html
  23. 53 0
      _layouts/home.html
  24. 67 0
      _layouts/post.html
  25. 70 0
      _layouts/search-base.html
  26. 269 0
      assets/gitbook/custom.css
  27. 55 0
      assets/gitbook/gitbook-plugin-back-to-top-button/plugin.css
  28. 32 0
      assets/gitbook/gitbook-plugin-back-to-top-button/plugin.js
  29. 28 0
      assets/gitbook/gitbook-plugin-chapter-fold/chapter-fold.css
  30. 67 0
      assets/gitbook/gitbook-plugin-chapter-fold/chapter-fold.js
  31. 249 0
      assets/gitbook/gitbook-plugin-fontsettings/fontsettings.js
  32. 291 0
      assets/gitbook/gitbook-plugin-fontsettings/website.css
  33. 6 0
      assets/gitbook/gitbook-plugin-lunr/lunr.min.js
  34. 59 0
      assets/gitbook/gitbook-plugin-lunr/search-lunr.js
  35. 6 0
      assets/gitbook/gitbook-plugin-search-pro/jquery.mark.min.js
  36. 41 0
      assets/gitbook/gitbook-plugin-search-pro/search.css
  37. 280 0
      assets/gitbook/gitbook-plugin-search-pro/search.js
  38. 6 0
      assets/gitbook/gitbook-plugin-search/lunr.min.js
  39. 50 0
      assets/gitbook/gitbook-plugin-search/search-engine.js
  40. 35 0
      assets/gitbook/gitbook-plugin-search/search.css
  41. 213 0
      assets/gitbook/gitbook-plugin-search/search.js
  42. 121 0
      assets/gitbook/gitbook-plugin-sharing/buttons.js
  43. 0 0
      assets/gitbook/gitbook.js
  44. BIN
      assets/gitbook/images/apple-touch-icon-precomposed-152.png
  45. BIN
      assets/gitbook/images/favicon.ico
  46. 80 0
      assets/gitbook/rouge/base16.css
  47. 66 0
      assets/gitbook/rouge/bw.css
  48. 174 0
      assets/gitbook/rouge/colorful.css
  49. 213 0
      assets/gitbook/rouge/github.css
  50. 87 0
      assets/gitbook/rouge/gruvbox.css
  51. 1 0
      assets/gitbook/rouge/igor_pro.css
  52. 171 0
      assets/gitbook/rouge/magritte.css
  53. 208 0
      assets/gitbook/rouge/molokai.css
  54. 214 0
      assets/gitbook/rouge/monokai.css
  55. 1 0
      assets/gitbook/rouge/monokai_sublime.css
  56. 150 0
      assets/gitbook/rouge/pastie.css
  57. 176 0
      assets/gitbook/rouge/thankful_eyes.css
  58. 167 0
      assets/gitbook/rouge/tulip.css
  59. 0 0
      assets/gitbook/style.css
  60. 0 0
      assets/gitbook/theme.js
  61. 9 0
      assets/search.html
  62. 86 0
      assets/search_plus_index.json

+ 145 - 0
.gitignore

@@ -0,0 +1,145 @@
+_site/
+.sass-cache/
+.jekyll-cache/
+.jekyll-metadata
+# Ignore folders generated by Bundler
+.bundle/
+vendor/
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# MacOS
+.DS_Store
+
+# Dataset
+data/FashionMNIST/
+data/translation2019zh/
+data/lcsts_tsv/
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+#   However, in case of collaboration, if having platform-specific dependencies or dependencies
+#   having no cross-platform support, pipenv may install dependencies that don't work, or not
+#   install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/

+ 24 - 0
404.html

@@ -0,0 +1,24 @@
+---
+layout: home
+---
+
+<style type="text/css" media="screen">
+  .container {
+    margin: 10px auto;
+    max-width: 600px;
+    text-align: center;
+  }
+  h1 {
+    margin: 30px 0;
+    font-size: 4em;
+    line-height: 1;
+    letter-spacing: -1px;
+  }
+</style>
+
+<div class="container">
+  <h1>404</h1>
+
+  <p><strong>Page not found :(</strong></p>
+  <p>The requested page could not be found.</p>
+</div>

+ 1 - 0
CNAME

@@ -0,0 +1 @@
+boyrobot.github.io

+ 12 - 0
Gemfile

@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
+gem "jekyll"
+gem 'jekyll-feed'
+gem 'jekyll-readme-index'
+gem 'jemoji'
+gem 'webrick'
+
+# gem "rails"

+ 98 - 0
Gemfile.lock

@@ -0,0 +1,98 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (6.1.7)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 1.6, < 2)
+      minitest (>= 5.1)
+      tzinfo (~> 2.0)
+      zeitwerk (~> 2.3)
+    addressable (2.8.1)
+      public_suffix (>= 2.0.2, < 6.0)
+    colorator (1.1.0)
+    concurrent-ruby (1.1.10)
+    em-websocket (0.5.3)
+      eventmachine (>= 0.12.9)
+      http_parser.rb (~> 0)
+    eventmachine (1.2.7)
+    ffi (1.15.5)
+    forwardable-extended (2.6.0)
+    gemoji (3.0.1)
+    html-pipeline (2.14.2)
+      activesupport (>= 2)
+      nokogiri (>= 1.4)
+    http_parser.rb (0.8.0)
+    i18n (1.12.0)
+      concurrent-ruby (~> 1.0)
+    jekyll (4.2.2)
+      addressable (~> 2.4)
+      colorator (~> 1.0)
+      em-websocket (~> 0.5)
+      i18n (~> 1.0)
+      jekyll-sass-converter (~> 2.0)
+      jekyll-watch (~> 2.0)
+      kramdown (~> 2.3)
+      kramdown-parser-gfm (~> 1.0)
+      liquid (~> 4.0)
+      mercenary (~> 0.4.0)
+      pathutil (~> 0.9)
+      rouge (~> 3.0)
+      safe_yaml (~> 1.0)
+      terminal-table (~> 2.0)
+    jekyll-feed (0.16.0)
+      jekyll (>= 3.7, < 5.0)
+    jekyll-readme-index (0.3.0)
+      jekyll (>= 3.0, < 5.0)
+    jekyll-sass-converter (2.2.0)
+      sassc (> 2.0.1, < 3.0)
+    jekyll-watch (2.2.1)
+      listen (~> 3.0)
+    jemoji (0.12.0)
+      gemoji (~> 3.0)
+      html-pipeline (~> 2.2)
+      jekyll (>= 3.0, < 5.0)
+    kramdown (2.4.0)
+      rexml
+    kramdown-parser-gfm (1.1.0)
+      kramdown (~> 2.0)
+    liquid (4.0.3)
+    listen (3.7.1)
+      rb-fsevent (~> 0.10, >= 0.10.3)
+      rb-inotify (~> 0.9, >= 0.9.10)
+    mercenary (0.4.0)
+    minitest (5.16.3)
+    nokogiri (1.13.8-arm64-darwin)
+      racc (~> 1.4)
+    pathutil (0.16.2)
+      forwardable-extended (~> 2.6)
+    public_suffix (5.0.0)
+    racc (1.6.0)
+    rb-fsevent (0.11.2)
+    rb-inotify (0.10.1)
+      ffi (~> 1.0)
+    rexml (3.2.5)
+    rouge (3.30.0)
+    safe_yaml (1.0.5)
+    sassc (2.4.0)
+      ffi (~> 1.9)
+    terminal-table (2.0.0)
+      unicode-display_width (~> 1.1, >= 1.1.1)
+    tzinfo (2.0.5)
+      concurrent-ruby (~> 1.0)
+    unicode-display_width (1.8.0)
+    webrick (1.7.0)
+    zeitwerk (2.6.0)
+
+PLATFORMS
+  arm64-darwin-21
+  arm64-darwin-22
+
+DEPENDENCIES
+  jekyll
+  jekyll-feed
+  jekyll-readme-index
+  jemoji
+  webrick
+
+BUNDLED WITH
+   2.3.22

+ 201 - 0
LICENSE

@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+    1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+    2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+    3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+    4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+    5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+    6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+    7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+    8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+    9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+    END OF TERMS AND CONDITIONS
+
+    APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+    Copyright 2019 Tao He
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.

+ 16 - 6
README.md

@@ -1,12 +1,22 @@
-# streamlit
+---
+layout: home
+title: Hello!
+permalink: /
+---
 
+![](assets/title.jpg)
 
-## Usage
+[Transformers](https://huggingface.co/docs/transformers/index) 是由 [Hugging Face](https://huggingface.co/) 开发的一个 NLP 包,支持加载目前绝大部分的预训练模型。随着 BERT、GPT 等大规模语言模型的兴起,越来越多的公司和研究者采用 Transformers 库来构建 NLP 应用。
 
-```
-pip install streamlit
-pip install streamlit-chat-media
+本教程旨在帮助 NLP 初学者快速熟悉 Transformers 库的使用方法,并且通过实例带领读者一步一步构建自己的模型,完成各种 NLP 任务。
 
+读者只需要熟悉 Python 语言即可,并不需要提前掌握 Keras、Pytorch 等深度学习包的使用。
 
+希望该教程能帮助到你😊
 
-```
+> **注意:**本教程只专注于处理文本模态,多模态方法请查阅相关文档。
+{: .block-tip }
+
+#### License
+
+This book is open sourced under the Apache License, Version 2.0.

+ 69 - 0
_config.yml

@@ -0,0 +1,69 @@
+# Configurations
+title:            streamlit快速入门
+longtitle:        streamlit快速入门
+author:           liuyuqi
+email:            liuyuqi.gov@msn.cn
+description: >
+  How to use streamlit
+
+version:          1.0
+gitbook_version:  3.2.3
+
+url:              'https://boyrobot.github.io/'
+baseurl:          '/'
+rss:              RSS
+
+# bootstrap: use the remote theme for the site itself
+remote_theme: sighingnow/jekyll-gitbook
+
+toc:
+  enabled: true
+  h_min: 1
+  h_max: 3
+
+# customize the link favicon in header, will be {{site.baseurl}}/{{site.favicon_path}}
+favicon_path:     /assets/gitbook/images/favicon.ico
+
+# markdown render engine.
+markdown:         kramdown
+kramdown:
+  auto_ids:               true
+  input:                  GFM
+  math_engine:            mathjax
+  smart_quotes:           lsquo,rsquo,ldquo,rdquo
+  toc_levels:             1..6
+  syntax_highlighter:     rouge
+  syntax_highlighter_opts:
+    guess_lang:           true
+
+syntax_highlighter_style: github
+
+markdown_ext:     markdown,mkdown,mkdn,mkd,md
+
+# Permalinks
+permalink:        /:categories/:year-:month-:day-:title:output_ext
+
+exclude:
+  - _drafts
+
+collections:
+  c1:
+    output: true
+    permalink: /:collection/:path/
+  c2:
+    output: true
+    permalink: /:collection/:path/
+  c3:
+    output: true
+    permalink: /:collection/:path/
+
+page_width: 900px
+
+destination:      ./_site
+incremental:      false
+regenerate:       true
+
+plugins:
+  - jekyll-feed
+  - jekyll-readme-index
+  - jemoji

File diff suppressed because it is too large
+ 1 - 0
_includes/application-insights.html


+ 30 - 0
_includes/body.html

@@ -0,0 +1,30 @@
+<div class="page-wrapper" tabindex="-1" role="main">
+    {% if page.cover %}
+        <img src="{{ page.cover }}"
+             width="100%"
+             height="{{ page.cover_height | default: '100%' }}"
+             alt="{{ page.title | escape }}"
+             style="object-fit: cover;"
+        />
+    {% endif %}
+
+    <div class="page-inner">
+        <div id="book-search-results">
+            <div class="search-noresults">
+                <section class="normal markdown-section">
+                    {% if page.title %}
+                        <h1 id="{{ page.id }}">{{ page.title | escape }}</h1>
+                    {% else %}
+                        <h1 id="{{ page.id }}">{{ site.title | escape }}</h1>
+                    {% endif %}
+
+                    {{ content }}
+                </section>
+            </div>
+
+            {%- include search.html -%}
+        </div>
+    </div>
+</div>
+
+{% include mathjax.html %}

+ 2 - 0
_includes/cnzz.html

@@ -0,0 +1,2 @@
+<script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_{{ site.tracker.cnzz }}'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D{{ site.tracker.cnzz }}%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));
+</script>

+ 37 - 0
_includes/footer.html

@@ -0,0 +1,37 @@
+<script src="{{site.baseurl}}/assets/gitbook/gitbook.js"></script>
+<script src="{{site.baseurl}}/assets/gitbook/theme.js"></script>
+
+<script src="{{site.baseurl}}/assets/gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+<script src="{{site.baseurl}}/assets/gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+<!-- <script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+<script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+<script src="../gitbook/gitbook-plugin-search/search-engine.js"></script>
+<script src="../gitbook/gitbook-plugin-search/search.js"></script> -->
+
+<script src="{{site.baseurl}}/assets/gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
+<script src="{{site.baseurl}}/assets/gitbook/gitbook-plugin-search-pro/search.js"></script>
+<script src="{{site.baseurl}}/assets/gitbook/gitbook-plugin-back-to-top-button/plugin.js"></script>
+
+{% if site.extra_footer_js %}
+    {%- for extra_js in site.extra_header_js -%}
+        {%- assign starts_with = extra_js | slice: 0,4  -%}
+        {% if starts_with == "http" %}
+<script src="{{ extra_js }}"></script>
+        {%- else -%}
+<script src="{{site.baseurl}}/{{ extra_js }}"></script>
+        {%- endif -%}
+    {%- endfor -%}
+{% endif %}
+
+{%- if site.tracker -%}
+    <!-- trackers -->
+    {%- if site.tracker.google_analytics -%}
+        <!-- google analytics -->
+        {%- include google-analytics.html -%}
+    {%- endif -%}
+    {%- if site.tracker.cnzz -%}
+        <!-- cnzz -->
+        {%- include cnzz.html -%}
+    {%- endif -%}
+{%- endif -%}

+ 13 - 0
_includes/gitbook-sharing.json.tpl

@@ -0,0 +1,13 @@
+            "sharing": {
+                "all": ["twitter", "weibo"],
+                "facebook": false,
+                "google": false,
+                "github": true,
+                "github_link": "https://github.com/jsksxs360/How-to-use-Transformers",
+                "telegram": false,
+                "telegram_link": "https://t.me",
+                "instapaper": false,
+                "twitter": false,
+                "vk": false,
+                "weibo": false
+            },

+ 9 - 0
_includes/google-analytics.html

@@ -0,0 +1,9 @@
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.tracker.google_analytics }}"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', '{{ site.tracker.google_analytics }}');
+</script>

+ 69 - 0
_includes/head.html

@@ -0,0 +1,69 @@
+<meta charset="UTF-8">
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+{%- if page.title -%}
+    <title>{{ page.title | escape }} · {{ site.title | escape }}</title>
+{%- else -%}
+    <title>{{ site.title | escape }}</title>
+{%- endif -%}
+
+<meta http-equiv="X-UA-Compatible" content="IE=edge" />
+<meta name="description" content="{{site.description}}">
+
+{%- if site.gitbook_version -%}
+    <meta name="generator" content="Jekyll (using style of GitBook {{ site.gitbook_version | escape }})">
+{%- else -%}
+    <meta name="generator" content="Jekyll (using style of GitBook)">
+{%- endif -%}
+
+{%- if site.author -%}
+    <meta name="author" content="{{ site.author | escape }}">
+{%- endif -%}
+
+<link rel="stylesheet" href="{{site.baseurl}}/assets/gitbook/style.css">
+<link rel="stylesheet" href="{{site.baseurl}}/assets/gitbook/gitbook-plugin-fontsettings/website.css">
+<link rel="stylesheet" href="{{site.baseurl}}/assets/gitbook/gitbook-plugin-search-pro/search.css">
+<link rel="stylesheet" href="{{site.baseurl}}/assets/gitbook/gitbook-plugin-back-to-top-button/plugin.css">
+
+<link rel="stylesheet" href="{{site.baseurl}}/assets/gitbook/rouge/{{ site.syntax_highlighter_style | default: 'colorful' }}.css">
+
+<link rel="stylesheet" href="{{site.baseurl}}/assets/gitbook/custom.css">
+
+<meta name="HandheldFriendly" content="true"/>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-status-bar-style" content="black">
+<link rel="apple-touch-icon-precomposed" sizes="152x152" href="{{site.baseurl}}/assets/gitbook/images/apple-touch-icon-precomposed-152.png">
+<link rel="shortcut icon" href="{{site.baseurl}}/{{site.favicon_path}}" type="image/x-icon">
+
+{% if site.extra_css %}
+    {%- for extra_css in site.extra_css -%}
+        {%- assign starts_with = extra_css | slice: 0,4 -%}
+        {% if starts_with == "http" %}
+<link rel="stylesheet" href="{{ extra_css }}">
+        {%- else -%}
+<link rel="stylesheet" href="{{site.baseurl}}/{{ extra_css }}">
+        {%- endif -%}
+    {%- endfor -%}
+{% endif %}
+
+{% if site.extra_header_js %}
+    {%- for extra_js in site.extra_header_js -%}
+        {%- assign starts_with = extra_js | slice: 0,4  -%}
+        {% if starts_with == "http" %}
+<script src="{{ extra_js }}"></script>
+        {%- else -%}
+<script src="{{site.baseurl}}/{{ extra_js }}"></script>
+        {%- endif -%}
+    {%- endfor -%}
+{% endif %}
+
+{%- if site.tracker -%}
+    <!-- trackers -->
+
+    {%- if site.tracker.application_insights -%}
+        <!-- application insights -->
+        {%- include application-insights.html -%}
+    {%- endif -%}
+
+{%- endif -%}

+ 14 - 0
_includes/mathjax.html

@@ -0,0 +1,14 @@
+<script>
+MathJax = {
+  tex: {
+    inlineMath: [ ['$', '$'], ['\\(', '\\)'] ]
+  },
+  svg: {
+    fontCache: 'global'
+  }
+};
+</script>
+<script
+  type="text/javascript" id="MathJax-script" async
+  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
+</script>

+ 22 - 0
_includes/metadata-home.json.tpl

@@ -0,0 +1,22 @@
+{
+    "page": {
+        "title": "Introduction",
+        "level": "1.1",
+        "depth": 1,
+        {% assign reversed_posts = site.posts | reverse %}
+
+        {% if reversed_posts %}
+        "next": {
+            "title": "{{reversed_posts.first.title}}",
+            "level": "1.2",
+            "depth": 1,
+            "path": "{{reversed_posts.first.path}}",
+            "ref": "{{reversed_posts.first.path}}",
+            "articles": []
+        },
+        {% endif %}
+        "dir": "ltr"
+    },
+
+    {%- include metadata.json.tpl -%}
+}

+ 20 - 0
_includes/metadata-post.json.tpl

@@ -0,0 +1,20 @@
+{
+    "page": {
+        "title": "Introduction",
+        "level": "1.1",
+        "depth": 1,
+        {% if page.next %}
+        "next": {
+            "title": "{{page.next.title}}",
+            "level": "1.2",
+            "depth": 1,
+            "path": "{{page.next.path}}",
+            "ref": "{{page.next.path}}",
+            "articles": []
+        },
+        {% endif %}
+        "dir": "ltr"
+    },
+
+    {%- include metadata.json.tpl -%}
+}

+ 76 - 0
_includes/metadata.json.tpl

@@ -0,0 +1,76 @@
+    "config": {
+        "plugins": ["fontsettings", "highlight", "livereload", "lunr", "search", "sharing", "theme-default", "livereload"],
+        "styles": {
+            "ebook": "styles/ebook.css",
+            "epub": "styles/epub.css",
+            "mobi": "styles/mobi.css",
+            "pdf": "styles/pdf.css",
+            "print": "styles/print.css",
+            "website": "styles/website.css"
+        },
+        "pluginsConfig": {
+            "fontsettings": {
+                "family": "sans",
+                "size": 2,
+                "theme": "white"
+            },
+            "highlight": {},
+            "livereload": {},
+            "lunr": {
+                "ignoreSpecialCharacters": false,
+                "maxIndexSize": 1000000
+            },
+            "search": {},
+
+            {%- include gitbook-sharing.json.tpl -%}
+
+            "theme-default": {
+                "showLevel": false,
+                "styles": {
+                    "ebook": "styles/ebook.css",
+                    "epub": "styles/epub.css",
+                    "mobi": "styles/mobi.css",
+                    "pdf": "styles/pdf.css",
+                    "print": "styles/print.css",
+                    "website": "styles/website.css"
+                }
+            }
+        },
+        "theme": "default",
+        "author": "Tao He",
+        "pdf": {
+            "pageNumbers": true,
+            "fontSize": 12,
+            "fontFamily": "Arial",
+            "paperSize": "a4",
+            "chapterMark": "pagebreak",
+            "pageBreaksBefore": "/",
+            "margin": {
+                "right": 62,
+                "left": 62,
+                "top": 56,
+                "bottom": 56
+            }
+        },
+        "structure": {
+            "langs": "LANGS.md",
+            "readme": "README.md",
+        },
+        "variables": {},
+        "title": "{{site.title}}",
+        "language": "en",
+        "gitbook": "*"
+    },
+    "file": {
+        "path": "{{ page.path }}",
+        "mtime": "{{ page.date }}",
+        "type": "markdown"
+    },
+    "gitbook": {
+        "version": "{{site.gitbook_version}}",
+        "time": "{{site.time}}"
+    },
+    "basePath": "{{site.baseurl}}",
+    "book": {
+        "language": ""
+    }

+ 9 - 0
_includes/search.html

@@ -0,0 +1,9 @@
+<div class="search-results">
+    <div class="has-results">
+        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+        <ul class="search-results-list"></ul>
+    </div>
+    <div class="no-results">
+        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+    </div>
+</div>

+ 61 - 0
_includes/toc-date.html

@@ -0,0 +1,61 @@
+<div class="book-summary">
+    <nav role="navigation">
+        <div id="book-search-input" role="search">
+            <input type="text" placeholder="Type to search" />
+        </div>
+        <div id="book-search-input-link" role="search">
+            <a href="{{site.baseurl}}/assets/search.html">Click to Search</a>
+        </div>
+        <ul class="summary">
+            {% if page.url == "/index.html" or page.url == "/" %}
+            <li class="chapter active" data-level="1.1" data-path="{{site.baseurl}}">
+            {% else %}
+            <li class="chapter" data-level="1.1" data-path="{{site.baseurl}}">
+            {% endif %}
+                <a href="{{site.baseurl}}/">
+                    {{ site.title | escape }}
+                </a>
+            </li>
+
+            <li class="divider"></li>
+
+            {% for collection in site.collections %}
+                <!-- <p>{{ collection.label }}</p> -->
+                {% if collection.output %}
+                    {% if collection.label == "posts" %}
+                        {% assign reversed_posts = site[collection.label] | reverse %}
+                    {% else %}
+                        {% assign reversed_posts = site[collection.label] %}
+                    {% endif %}
+
+                    {% for post in reversed_posts %}
+                        {% if page.url == post.url %}
+                        <li class="chapter active" data-level="1.2" data-path="{{site.baseurl}}{{post.url}}">
+                        {% else %}
+                        <li class="chapter" data-level="1.1" data-path="{{site.baseurl}}{{post.url}}">
+                        {% endif %}
+                            <a href="{{site.baseurl}}{{post.url}}">
+                                {{ post.title | escape }}
+                            </a>
+                            {% if site.toc.enabled %}
+                                {% if page.url == post.url %}
+                                    {% include toc.html html=content h_min=site.toc.h_min h_max=site.toc.h_max %}
+                                {% endif %}
+                            {% endif %}
+                        </li>
+                    {% endfor %}
+
+                    {% if reversed_posts.size > 0 %}
+                        <li class="divider"></li>
+                    {% endif %}
+                {% endif %}
+            {% endfor %}
+
+            <li>
+                <a href="https://github.com/jsksxs360/How-to-use-Transformers" target="blank" class="gitbook-link">
+                    Star it!
+                </a>
+            </li>
+        </ul>
+    </nav>
+</div>

+ 182 - 0
_includes/toc.html

@@ -0,0 +1,182 @@
+{% capture tocWorkspace %}
+    {% comment %}
+        Copyright (c) 2017 Vladimir "allejo" Jimenez
+
+        Permission is hereby granted, free of charge, to any person
+        obtaining a copy of this software and associated documentation
+        files (the "Software"), to deal in the Software without
+        restriction, including without limitation the rights to use,
+        copy, modify, merge, publish, distribute, sublicense, and/or sell
+        copies of the Software, and to permit persons to whom the
+        Software is furnished to do so, subject to the following
+        conditions:
+
+        The above copyright notice and this permission notice shall be
+        included in all copies or substantial portions of the Software.
+
+        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+        EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+        OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+        NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+        HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+        WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+        FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+        OTHER DEALINGS IN THE SOFTWARE.
+    {% endcomment %}
+    {% comment %}
+        Version 1.1.0
+          https://github.com/allejo/jekyll-toc
+
+        "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
+
+        Usage:
+            {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
+
+        Parameters:
+            * html         (string) - the HTML of compiled markdown generated by kramdown in Jekyll
+
+        Optional Parameters:
+            * sanitize      (bool)   : false  - when set to true, the headers will be stripped of any HTML in the TOC
+            * class         (string) :   ''   - a CSS class assigned to the TOC
+            * id            (string) :   ''   - an ID to assigned to the TOC
+            * h_min         (int)    :   1    - the minimum TOC header level to use; any header lower than this value will be ignored
+            * h_max         (int)    :   6    - the maximum TOC header level to use; any header greater than this value will be ignored
+            * ordered       (bool)   : false  - when set to true, an ordered list will be outputted instead of an unordered list
+            * item_class    (string) :   ''   - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
+            * submenu_class (string) :   ''   - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
+            * base_url      (string) :   ''   - add a base url to the TOC links for when your TOC is on another page than the actual content
+            * anchor_class  (string) :   ''   - add custom class(es) for each anchor element
+            * skip_no_ids   (bool)   : false  - skip headers that do not have an `id` attribute
+
+        Output:
+            An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
+            generate the table of contents and will NOT output the markdown given to it
+    {% endcomment %}
+
+    {% capture newline %}
+    {% endcapture %}
+    {% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
+
+    {% capture deprecation_warnings %}{% endcapture %}
+
+    {% if include.baseurl %}
+        {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
+    {% endif %}
+
+    {% if include.skipNoIDs %}
+        {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
+    {% endif %}
+
+    {% capture jekyll_toc %}{% endcapture %}
+    {% assign orderedList = include.ordered | default: false %}
+    {% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
+    {% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
+    {% assign minHeader = include.h_min | default: 1 %}
+    {% assign maxHeader = include.h_max | default: 6 %}
+    {% assign nodes = include.html | strip | split: '<h' %}
+
+    {% assign firstHeader = true %}
+    {% assign currLevel = 0 %}
+    {% assign lastLevel = 0 %}
+
+    {% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
+
+    {% for node in nodes %}
+        {% if node == "" %}
+            {% continue %}
+        {% endif %}
+
+        {% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
+
+        {% if currLevel < minHeader or currLevel > maxHeader %}
+            {% continue %}
+        {% endif %}
+
+        {% assign _workspace = node | split: '</h' %}
+
+        {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
+        {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
+        {% assign htmlID = _idWorkspace[0] %}
+
+        {% assign _classWorkspace = _workspace[0] | split: 'class="' %}
+        {% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
+        {% assign htmlClass = _classWorkspace[0] %}
+
+        {% if htmlClass contains "no_toc" %}
+            {% continue %}
+        {% endif %}
+
+        {% if firstHeader %}
+            {% assign minHeader = currLevel %}
+        {% endif %}
+
+        {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
+        {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
+
+        {% if include.item_class and include.item_class != blank %}
+            {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
+        {% endif %}
+
+        {% if include.submenu_class and include.submenu_class != blank %}
+            {% assign subMenuLevel = currLevel | minus: 1 %}
+            {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
+        {% endif %}
+
+        {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
+
+        {% if htmlID %}
+            {% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
+
+            {% if include.anchor_class %}
+                {% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
+            {% endif %}
+
+            {% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
+        {% elsif skipNoIDs == true %}
+            {% continue %}
+        {% else %}
+            {% capture listItem %}{{ anchorBody }}{% endcapture %}
+        {% endif %}
+
+        {% if currLevel > lastLevel %}
+            {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
+        {% elsif currLevel < lastLevel %}
+            {% assign repeatCount = lastLevel | minus: currLevel %}
+
+            {% for i in (1..repeatCount) %}
+                {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
+            {% endfor %}
+
+            {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
+        {% else %}
+            {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
+        {% endif %}
+
+        {% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
+
+        {% assign lastLevel = currLevel %}
+        {% assign firstHeader = false %}
+    {% endfor %}
+
+    {% assign repeatCount = minHeader | minus: 1 %}
+    {% assign repeatCount = lastLevel | minus: repeatCount %}
+    {% for i in (1..repeatCount) %}
+        {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
+    {% endfor %}
+
+    {% if jekyll_toc != '' %}
+        {% assign rootAttributes = '' %}
+        {% if include.class and include.class != blank %}
+            {% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
+        {% endif %}
+
+        {% if include.id and include.id != blank %}
+            {% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
+        {% endif %}
+
+        {% if rootAttributes %}
+            {% assign nodes = jekyll_toc | split: '>' %}
+            {% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
+        {% endif %}
+    {% endif %}
+{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc }}

+ 53 - 0
_layouts/home.html

@@ -0,0 +1,53 @@
+<!DOCTYPE HTML>
+<html lang="en" >
+    <head>
+
+        {%- include head.html -%}
+
+        {% assign reversed_posts = site.posts | reverse %}
+
+        {% if reversed_posts %}
+            <link rel="next" href="{{site.baseurl}}{{reversed_posts.first.url}}" />
+        {% endif %}
+    </head>
+    <body>
+        <div class="book">
+
+            {%- include toc-date.html -%}
+
+            <div class="book-body">
+                <div class="book-header" role="navigation">
+                    <!-- Title -->
+                    <h1>
+                        <i class="fa fa-circle-o-notch fa-spin"></i>
+                        {% if page.title %}
+                            <a href="." >{{ page.title | escape }}</a>
+                        {% else %}
+                            <a href="." >{{ site.title | escape }}</a>
+                        {% endif %}
+                    </h1>
+                </div>
+
+                <div class="body-inner">
+                    {%- include body.html -%}
+
+                    {% if reversed_posts %}
+                        <a href="{{site.baseurl}}{{reversed_posts.first.url}}" class="navigation navigation-next navigation-unique" aria-label="Next page: {{reversed_posts.first.title}}">
+                            <i class="fa fa-angle-right"></i>
+                        </a>
+                    {% endif %}
+                </div>
+            </div>
+
+            <script>
+            var gitbook = gitbook || [];
+            gitbook.push(function() {
+                gitbook.page.hasChanged({%- include metadata-home.json.tpl -%});
+            });
+            </script>
+        </div>
+
+        {%- include footer.html -%}
+
+    </body>
+</html>

+ 67 - 0
_layouts/post.html

@@ -0,0 +1,67 @@
+<!DOCTYPE HTML>
+<html lang="en" >
+    <head>
+
+        {%- include head.html -%}
+
+        {% if page.previous %}
+            <link rel="prev" href="{{site.baseurl}}{{page.previous.url}}" />
+        {% else %}
+            <link rel="prev" href="{{site.baseurl}}/" />
+        {% endif %}
+
+        {% if page.next %}
+            <link rel="next" href="{{site.baseurl}}{{page.next.url}}" />
+        {% endif %}
+    </head>
+    <body>
+        <div class="book">
+
+            {%- include toc-date.html -%}
+
+            <div class="book-body">
+                <div class="book-header" role="navigation">
+                    <!-- Title -->
+                    <h1>
+                        <i class="fa fa-circle-o-notch fa-spin"></i>
+                        {% if page.title %}
+                            <a href="." >{{ page.title | escape }}</a>
+                        {% else %}
+                            <a href="." >{{ site.title | escape }}</a>
+                        {% endif %}
+                    </h1>
+                </div>
+
+                <div class="body-inner">
+                    {%- include body.html -%}
+
+                    {% if page.previous %}
+                        <a href="{{site.baseurl}}{{page.previous.url}}" class="navigation navigation-prev navigation-unique" aria-label="Previous page: {{page.previous.title}}">
+                            <i class="fa fa-angle-left"></i>
+                        </a>
+                    {% else %}
+                        <a href="{{site.baseurl}}/" class="navigation navigation-prev navigation-unique" aria-label="Previous page: {{site.title}}">
+                            <i class="fa fa-angle-left"></i>
+                        </a>
+                    {% endif %}
+
+                    {% if page.next %}
+                        <a href="{{site.baseurl}}{{page.next.url}}" class="navigation navigation-next navigation-unique" aria-label="Next page: {{page.next.title}}">
+                            <i class="fa fa-angle-right"></i>
+                        </a>
+                    {% endif %}
+                </div>
+            </div>
+
+            <script>
+            var gitbook = gitbook || [];
+            gitbook.push(function() {
+                gitbook.page.hasChanged({%- include metadata-post.json.tpl -%});
+            });
+            </script>
+        </div>
+
+        {%- include footer.html -%}
+
+    </body>
+</html>

+ 70 - 0
_layouts/search-base.html

@@ -0,0 +1,70 @@
+<!-- Slightly Modified from _layouts/home.html -->
+
+<!DOCTYPE HTML>
+<html lang="en" >
+    <head>
+        {%- include head.html -%}
+
+        {% assign reversed_posts = site.posts | reverse %}
+
+        {% if reversed_posts %}
+            <link rel="next" href="{{site.baseurl}}{{reversed_posts.first.url}}" />
+        {% endif %}
+    </head>
+    <body>
+        <div class="book">
+
+            {%- include toc-date.html -%}
+
+            <div class="book-body">
+                <div class="book-header" role="navigation">
+                    <!-- Title -->
+                    <h1>
+                        <i class="fa fa-circle-o-notch fa-spin"></i>
+                        {% if page.title %}
+                            <a href="." >{{ page.title | escape }}</a>
+                        {% else %}
+                            <a href="." >{{ site.title | escape }}</a>
+                        {% endif %}
+                    </h1>
+                </div>
+
+                <div class="body-inner">
+                    <div class="page-wrapper" tabindex="-1" role="main">
+                        <div class="page-inner">
+                            <section class="normal markdown-section">
+                                {% if page.title %}
+                                    <h1 id="{{ page.id }}">{{ page.title | escape }}</h1>
+                                {% else %}
+                                    <h1 id="{{ page.id }}">{{ site.title | escape }}</h1>
+                                {% endif %}
+
+                                <br />
+                            </section>
+
+                            {{ content }}
+
+                            <div id="book-search-results">
+                                <div class="search-noresults">
+                                    
+                                </div>
+                    
+                                {%- include search.html -%}
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+            <script>
+            var gitbook = gitbook || [];
+            gitbook.push(function() {
+                gitbook.page.hasChanged({%- include metadata-home.json.tpl -%});
+            });
+            </script>
+        </div>
+
+        {%- include footer.html -%}
+
+    </body>
+</html>

+ 269 - 0
assets/gitbook/custom.css

@@ -0,0 +1,269 @@
+---
+---
+
+.book-body {
+    overflow-y: scroll;
+}
+
+.book-body .book-header {
+    position: fixed;
+    width: 100%;
+}
+
+.book.with-summary .book-body .book-header {
+    position: fixed;
+    width: calc(100% - 300px);
+}
+
+.book-body .body-inner {
+    /* position: absolute; */
+    margin-top: 50px;
+    min-height: calc(100% - 50px);
+}
+
+.book-body .body-inner .page-wrapper {
+    min-height: calc(100% - 46px);
+}
+
+.book-body .body-inner .page-wrapper .page-inner {
+    padding-bottom: 20px;
+}
+
+@media (max-width: 1240px) {
+    .book-body .body-inner .navigation {
+        max-width: calc(50% - 3px);
+        width: calc(50% - 3px);
+    }
+}
+
+.book .book-body .book-header {
+    background: #ffffff;
+}
+
+.book.color-theme-1 .book-body .book-header {
+    background: #f3eacb;
+}
+
+.book.color-theme-2 .book-body .book-header {
+    background: #1c1f2b;
+}
+
+.page-inner {
+    max-width: {{ site.page_width | default: '900px' }};
+}
+
+.back-to-top {
+    right: calc((100% - 300px - min(100% - 300px, {{ site.page_width | default: '900px' }})) / 2 + 25px);
+}
+
+/* scrollbar */
+::-webkit-scrollbar {
+    width: 5px;
+    height: 5px;
+}
+
+::-webkit-scrollbar-track-piece {
+    /* background-color: rgba(125, 125, 125, 0.2); */
+    -webkit-border-radius: 6px;
+}
+
+::-webkit-scrollbar-thumb:vertical {
+    height: 5px;
+    background-color: rgba(7, 17, 27, .2);
+    -webkit-border-radius: 6px;
+}
+
+::-webkit-scrollbar-thumb:horizontal {
+    width: 5px;
+    background-color: rgba(125, 125, 125, 0.2);
+    -webkit-border-radius: 6px;
+}
+
+/* Style for search page on mobile screens */
+
+#book-search-input-link {
+    padding: 6px;
+    background: 0 0;
+    background: inherit;
+    transition: top .5s ease;
+    border-bottom: 1px solid rgba(0,0,0,.07);
+    border-top: 1px solid rgba(0,0,0,.07);
+    margin-bottom: 10px;
+    margin-top: -1px;
+}
+
+#book-search-input-link a {
+    width: 100%;
+    background: 0 0;
+    border: 1px solid transparent;
+    box-shadow: none;
+    outline: 0;
+    line-height: 38px;
+    padding: 7px 7px;
+    color: #757575;
+}
+
+#book-search-input {
+    display: block;
+}
+#book-search-input-link {
+    display: none;
+}
+
+@media (max-width: 1240px) {
+    #book-search-input {
+        display: none;
+    }
+    #book-search-input-link {
+        display: block;
+    }
+}
+
+#book-search-input-inside {
+    padding: 6px;
+    background: 0 0;
+    transition: top .5s ease;
+    background: #fff;
+    border-bottom: 1px solid rgba(0,0,0,.07);
+    border-top: 1px solid rgba(0,0,0,.07);
+    margin-bottom: 10px;
+    margin-top: -1px;
+}
+
+#book-search-input-inside input {
+    width: 100%;
+    background: 0 0;
+    border: 1px solid transparent;
+    box-shadow: none;
+    outline: 0;
+    line-height: 22px;
+    padding: 7px 7px;
+    color: inherit;
+}
+
+
+/* Custom font settings */
+
+.book.font-family-0 {
+    font-family: Georgia, serif;
+}
+.book.font-family-1 {
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+/* Render wide tables */
+
+.table-wrapper {
+    overflow-x: scroll;
+}
+
+/* Tips, warnings, and dangers */
+
+.markdown-section blockquote.block-tip {
+    border-color: var(--c-tip);
+    background-color: var(--c-tip-bg);
+    color: var(--c-tip-text);
+    font-family: var(--font-family);
+}
+
+.markdown-section blockquote.block-tip h1 {
+    color: var(--c-tip-title);
+}
+
+.markdown-section blockquote.block-tip h2 {
+    color: var(--c-tip-title);
+}
+
+.markdown-section blockquote.block-tip h3 {
+    color: var(--c-tip-title);
+}
+
+.markdown-section blockquote.block-tip h4 {
+    color: var(--c-tip-title);
+}
+
+.markdown-section blockquote.block-tip h5 {
+    color: var(--c-tip-title);
+}
+
+.markdown-section blockquote.block-tip h6 {
+    color: var(--c-tip-title);
+}
+
+.markdown-section blockquote.block-warning {
+    border-color: var(--c-warning);
+    background-color: var(--c-warning-bg);
+    color: var(--c-warning-text);
+    font-family: var(--font-family);
+}
+
+.markdown-section blockquote.block-warning h1 {
+    color: var(--c-warning-title);
+}
+
+.markdown-section blockquote.block-warning h2 {
+    color: var(--c-warning-title);
+}
+
+.markdown-section blockquote.block-warning h3 {
+    color: var(--c-warning-title);
+}
+
+.markdown-section blockquote.block-warning h4 {
+    color: var(--c-warning-title);
+}
+
+.markdown-section blockquote.block-warning h5 {
+    color: var(--c-warning-title);
+}
+
+.markdown-section blockquote.block-warning h6 {
+    color: var(--c-warning-title);
+}
+
+.markdown-section blockquote.block-danger {
+    border-color: var(--c-danger);
+    background-color: var(--c-danger-bg);
+    color: var(--c-danger-text);
+    font-family: var(--font-family);
+}
+
+.markdown-section blockquote.block-danger h1 {
+    color: var(--c-danger-title);
+}
+
+.markdown-section blockquote.block-danger h2 {
+    color: var(--c-danger-title);
+}
+
+.markdown-section blockquote.block-danger h3 {
+    color: var(--c-danger-title);
+}
+
+.markdown-section blockquote.block-danger h4 {
+    color: var(--c-danger-title);
+}
+
+.markdown-section blockquote.block-danger h5 {
+    color: var(--c-danger-title);
+}
+
+.markdown-section blockquote.block-danger h6 {
+    color: var(--c-danger-title);
+}
+
+:root {
+    --c-tip: #42b983;
+    --c-tip-bg: #e2f5ec;
+    --c-tip-text: #215d42;
+    --c-tip-title: #359469;
+    --c-warning: #e7c000;
+    --c-warning-bg: rgba(255, 229, 100, .25);
+    --c-warning-text: #6b5900;
+    --c-warning-title: #b29400;
+    --c-danger: #c00;
+    --c-danger-bg: #ffe0e0;
+    --c-danger-text: #600;
+    --c-danger-title: #c00;
+    --font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
+}

+ 55 - 0
assets/gitbook/gitbook-plugin-back-to-top-button/plugin.css

@@ -0,0 +1,55 @@
+.back-to-top {
+    position: fixed;
+    bottom: 25px;
+    right: calc((100% - 300px - min(100% - 300px, 800px)) / 2 + 25px);
+    background: rgba(0, 0, 0, 0.5);
+    width: 50px;
+    height: 50px;
+    display: block;
+    text-decoration: none;
+    -webkit-border-radius: 35px;
+    -moz-border-radius: 35px;
+    border-radius: 35px;
+    display: none;
+}
+.back-to-top i {
+    color: #fff;
+    margin: 0;
+    position: relative;
+    left: 15px;
+    top: 14px;
+    font-size: 22px;
+}
+.back-to-top:hover {
+    background: rgba(0, 0, 0, 0.9);
+    cursor: pointer;	
+}
+.book.color-theme-1 .back-to-top {
+    background: rgba(112, 66, 20, 0.5);
+}
+.book.color-theme-1 .back-to-top i {
+    color: #f3eacb;
+}
+.book.color-theme-1 .back-to-top:hover {
+    background: rgba(112, 66, 20, 0.9);
+}
+.book.color-theme-2 .back-to-top {
+    background: rgba(189, 202, 219, 0.5);
+}
+.book.color-theme-2 .back-to-top i {
+    color: #1C1F2B;
+}
+.book.color-theme-2 .back-to-top:hover {
+    background: rgba(189, 202, 219, 0.9);
+}
+
+@media only screen 
+  and (min-device-width: 320px) 
+  and (max-device-width: 480px)
+  and (-webkit-min-device-pixel-ratio: 2)
+  and (orientation: portrait) {
+	.back-to-top {
+		bottom: 10px;
+		right: 10px;
+	}
+}

+ 32 - 0
assets/gitbook/gitbook-plugin-back-to-top-button/plugin.js

@@ -0,0 +1,32 @@
+require([
+    'gitbook',
+    'jquery'
+], function(gitbook, $) {
+    gitbook.events.on('page.change', function() {
+        var back_to_top_button = ['<div class="back-to-top"><i class="fa fa-arrow-up"></i></div>'].join("");
+        $(".page-wrapper").append(back_to_top_button)
+    
+        $(".back-to-top").hide();
+
+        $(".back-to-top").hover(function() {
+            $(this).css('cursor', 'pointer').attr('title', 'Back to top');
+        }, function() {
+            $(this).css('cursor', 'auto');
+        });
+    
+        $('.book-body,.body-inner,.page-wrapper').on('scroll', function () {
+            if ($(this).scrollTop() > 100) { 
+                $('.back-to-top').fadeIn();
+            } else {
+                $('.back-to-top').fadeOut();
+            }
+        });
+    
+        $('.back-to-top').on('click', function () { 
+            $('.book-body,.body-inner').animate({
+                scrollTop: 0
+            }, 800);
+            return false;
+        });
+    });
+});

+ 28 - 0
assets/gitbook/gitbook-plugin-chapter-fold/chapter-fold.css

@@ -0,0 +1,28 @@
+.book .book-summary .chapter > .articles {
+	overflow: hidden;
+	max-height: 0px;
+}
+
+.book .book-summary .chapter.expanded > .articles {
+	max-height: 9999px;
+}
+
+.book .book-summary .exc-trigger {
+	position: absolute;
+  	left: 12px;
+  	top: 12px;
+}
+
+.book .book-summary ul.summary li a,
+.book .book-summary ul.summary li span {
+	padding-left: 30px;
+}
+
+.book .book-summary .exc-trigger:before {
+  	content: "\f105";
+}
+
+.book .book-summary .expanded > a .exc-trigger:before,
+.book .book-summary .expanded > span .exc-trigger:before {
+	content: "\f107";
+}

+ 67 - 0
assets/gitbook/gitbook-plugin-chapter-fold/chapter-fold.js

@@ -0,0 +1,67 @@
+require(['gitbook', 'jQuery'], function(gitbook, $) {
+  var TOGGLE_CLASSNAME = 'expanded',
+      CHAPTER = '.chapter',
+      ARTICLES = '.articles',
+      TRIGGER_TEMPLATE = '<i class="exc-trigger fa"></i>',
+      LS_NAMESPACE = 'expChapters';
+  var init = function () {
+    // adding the trigger element to each ARTICLES parent and binding the event
+    var chapterLink = $(ARTICLES).parent(CHAPTER).children('a');
+    chapterLink.append($(TRIGGER_TEMPLATE));
+    chapterLink.on('click', function (e) {
+      e.preventDefault();
+      //e.stopPropagation();
+      toggle($(e.target).closest(CHAPTER));
+    });  
+
+    expand(lsItem());
+    //expand current selected chapter with it's parents
+    collapse($(CHAPTER));
+    var activeChapter = $(CHAPTER + '.active');
+    expand(activeChapter);
+    expand(activeChapter.parents(CHAPTER));
+  } 
+  //on page.change will happend the function.
+
+  var toggle = function ($chapter) {
+    if ($chapter.hasClass('expanded')) {
+      collapse($chapter);
+    } else {
+      expand($chapter);
+      //$chapter.addClass('active').siblings().removeClass('active');
+    }
+  }
+  var collapse = function ($chapter) {
+    if ($chapter.length && $chapter.hasClass(TOGGLE_CLASSNAME)) {
+      $chapter.removeClass(TOGGLE_CLASSNAME);
+      lsItem($chapter);
+    }
+  }
+  var expand = function ($chapter) {
+    if ($chapter.length && !$chapter.hasClass(TOGGLE_CLASSNAME)) {
+      $chapter.addClass(TOGGLE_CLASSNAME);
+      lsItem($chapter);
+    }
+  }
+  var lsItem = function () {
+    var map = JSON.parse(localStorage.getItem(LS_NAMESPACE)) || {}
+    if (arguments.length) {
+      var $chapters = arguments[0];
+      $chapters.each(function (index, element) {
+        var level = $(this).data('level');
+        var value = $(this).hasClass(TOGGLE_CLASSNAME);
+        map[level] = value;
+      })
+      localStorage.setItem(LS_NAMESPACE, JSON.stringify(map));
+    } else {
+      return $(CHAPTER).map(function(index, element){
+        if (map[$(this).data('level')]) {
+          return this;
+        }
+      })
+    }
+  }
+  gitbook.events.bind('page.change', function() {
+    init()
+  }); 
+});

+ 249 - 0
assets/gitbook/gitbook-plugin-fontsettings/fontsettings.js

@@ -0,0 +1,249 @@
+require(['gitbook', 'jquery'], function(gitbook, $) {
+    // Configuration
+    var MAX_SIZE       = 4,
+        MIN_SIZE       = 0,
+        BUTTON_ID;
+
+    // Current fontsettings state
+    var fontState;
+
+    // Default themes
+    var THEMES = [
+        {
+            config: 'white',
+            text: 'White',
+            id: 0
+        },
+        {
+            config: 'sepia',
+            text: 'Sepia',
+            id: 1
+        },
+        {
+            config: 'night',
+            text: 'Night',
+            id: 2
+        }
+    ];
+
+    // Default font families
+    var FAMILIES = [
+        {
+            config: 'serif',
+            text: 'Serif',
+            id: 0
+        },
+        {
+            config: 'sans',
+            text: 'Sans',
+            id: 1
+        }
+    ];
+
+    // Return configured themes
+    function getThemes() {
+        return THEMES;
+    }
+
+    // Modify configured themes
+    function setThemes(themes) {
+        THEMES = themes;
+        updateButtons();
+    }
+
+    // Return configured font families
+    function getFamilies() {
+        return FAMILIES;
+    }
+
+    // Modify configured font families
+    function setFamilies(families) {
+        FAMILIES = families;
+        updateButtons();
+    }
+
+    // Save current font settings
+    function saveFontSettings() {
+        gitbook.storage.set('fontState', fontState);
+        update();
+    }
+
+    // Increase font size
+    function enlargeFontSize(e) {
+        e.preventDefault();
+        if (fontState.size >= MAX_SIZE) return;
+
+        fontState.size++;
+        saveFontSettings();
+    }
+
+    // Decrease font size
+    function reduceFontSize(e) {
+        e.preventDefault();
+        if (fontState.size <= MIN_SIZE) return;
+
+        fontState.size--;
+        saveFontSettings();
+    }
+
+    // Change font family
+    function changeFontFamily(configName, e) {
+        if (e && e instanceof Event) {
+            e.preventDefault();
+        }
+
+        var familyId = getFontFamilyId(configName);
+        fontState.family = familyId;
+        saveFontSettings();
+    }
+
+    // Change type of color theme
+    function changeColorTheme(configName, e) {
+        if (e && e instanceof Event) {
+            e.preventDefault();
+        }
+
+        var $book = gitbook.state.$book;
+        var $header = $('.book-body > .book-header');
+
+        // Remove currently applied color theme
+        if (fontState.theme !== 0) {
+            $book.removeClass('color-theme-'+fontState.theme);
+            if ($header.length !== 0) {
+                $header.removeClass('color-theme-'+fontState.theme);
+            }
+        }
+
+        // Set new color theme
+        var themeId = getThemeId(configName);
+        fontState.theme = themeId;
+        if (fontState.theme !== 0) {
+            $book.addClass('color-theme-'+fontState.theme);
+            if ($header.length !== 0) {
+                $header.addClass('color-theme-'+fontState.theme);
+            }
+        }
+
+        saveFontSettings();
+    }
+
+    // Return the correct id for a font-family config key
+    // Default to first font-family
+    function getFontFamilyId(configName) {
+        // Search for plugin configured font family
+        var configFamily = $.grep(FAMILIES, function(family) {
+            return family.config == configName;
+        })[0];
+        // Fallback to default font family
+        return (!!configFamily)? configFamily.id : 0;
+    }
+
+    // Return the correct id for a theme config key
+    // Default to first theme
+    function getThemeId(configName) {
+        // Search for plugin configured theme
+        var configTheme = $.grep(THEMES, function(theme) {
+            return theme.config == configName;
+        })[0];
+        // Fallback to default theme
+        return (!!configTheme)? configTheme.id : 0;
+    }
+
+    function update() {
+        var $book = gitbook.state.$book;
+
+        $('.font-settings .font-family-list li').removeClass('active');
+        $('.font-settings .font-family-list li:nth-child('+(fontState.family+1)+')').addClass('active');
+
+        $book[0].className = $book[0].className.replace(/\bfont-\S+/g, '');
+        $book.addClass('font-size-'+fontState.size);
+        $book.addClass('font-family-'+fontState.family);
+
+        if(fontState.theme !== 0) {
+            $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, '');
+            $book.addClass('color-theme-'+fontState.theme);
+        }
+    }
+
+    function init(config) {
+        // Search for plugin configured font family
+        var configFamily = getFontFamilyId(config.family),
+            configTheme = getThemeId(config.theme);
+
+        // Instantiate font state object
+        fontState = gitbook.storage.get('fontState', {
+            size:   config.size || 2,
+            family: configFamily,
+            theme:  configTheme
+        });
+
+        update();
+    }
+
+    function updateButtons() {
+        // Remove existing fontsettings buttons
+        if (!!BUTTON_ID) {
+            gitbook.toolbar.removeButton(BUTTON_ID);
+        }
+
+        // Create buttons in toolbar
+        BUTTON_ID = gitbook.toolbar.createButton({
+            icon: 'fa fa-font',
+            label: 'Font Settings',
+            className: 'font-settings',
+            dropdown: [
+                [
+                    {
+                        text: 'A',
+                        className: 'font-reduce',
+                        onClick: reduceFontSize
+                    },
+                    {
+                        text: 'A',
+                        className: 'font-enlarge',
+                        onClick: enlargeFontSize
+                    }
+                ],
+                $.map(FAMILIES, function(family) {
+                    family.onClick = function(e) {
+                        return changeFontFamily(family.config, e);
+                    };
+
+                    return family;
+                }),
+                $.map(THEMES, function(theme) {
+                    theme.onClick = function(e) {
+                        return changeColorTheme(theme.config, e);
+                    };
+
+                    return theme;
+                })
+            ]
+        });
+    }
+
+    // Init configuration at start
+    gitbook.events.bind('start', function(e, config) {
+        var opts = config.fontsettings;
+
+        // Generate buttons at start
+        updateButtons();
+
+        // Init current settings
+        init(opts);
+    });
+
+    // Expose API
+    gitbook.fontsettings = {
+        enlargeFontSize: enlargeFontSize,
+        reduceFontSize:  reduceFontSize,
+        setTheme:        changeColorTheme,
+        setFamily:       changeFontFamily,
+        getThemes:       getThemes,
+        setThemes:       setThemes,
+        getFamilies:     getFamilies,
+        setFamilies:     setFamilies
+    };
+});
+
+

+ 291 - 0
assets/gitbook/gitbook-plugin-fontsettings/website.css

@@ -0,0 +1,291 @@
+/*
+ * Theme 1
+ */
+.color-theme-1 .dropdown-menu {
+  background-color: #111111;
+  border-color: #7e888b;
+}
+.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner {
+  border-bottom: 9px solid #111111;
+}
+.color-theme-1 .dropdown-menu .buttons {
+  border-color: #7e888b;
+}
+.color-theme-1 .dropdown-menu .button {
+  color: #afa790;
+}
+.color-theme-1 .dropdown-menu .button:hover {
+  color: #73553c;
+}
+/*
+ * Theme 2
+ */
+.color-theme-2 .dropdown-menu {
+  background-color: #2d3143;
+  border-color: #272a3a;
+}
+.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner {
+  border-bottom: 9px solid #2d3143;
+}
+.color-theme-2 .dropdown-menu .buttons {
+  border-color: #272a3a;
+}
+.color-theme-2 .dropdown-menu .button {
+  color: #62677f;
+}
+.color-theme-2 .dropdown-menu .button:hover {
+  color: #f4f4f5;
+}
+.book .book-header .font-settings .font-enlarge {
+  line-height: 30px;
+  font-size: 1.4em;
+}
+.book .book-header .font-settings .font-reduce {
+  line-height: 30px;
+  font-size: 1em;
+}
+.book.color-theme-1 .book-body {
+  color: #704214;
+  background: #f3eacb;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section {
+  background: #f3eacb;
+}
+.book.color-theme-2 .book-body {
+  color: #bdcadb;
+  background: #1c1f2b;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section {
+  background: #1c1f2b;
+}
+.book.font-size-0 .book-body .page-inner section {
+  font-size: 1.2rem;
+}
+.book.font-size-1 .book-body .page-inner section {
+  font-size: 1.4rem;
+}
+.book.font-size-2 .book-body .page-inner section {
+  font-size: 1.6rem;
+}
+.book.font-size-3 .book-body .page-inner section {
+  font-size: 2.2rem;
+}
+.book.font-size-4 .book-body .page-inner section {
+  font-size: 4rem;
+}
+.book.font-family-0 {
+  font-family: Georgia, serif;
+}
+.book.font-family-1 {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal {
+  color: #704214;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a {
+  color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
+  color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 {
+  border-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
+  color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr {
+  background-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote {
+  border-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code {
+  background: #fdf6e3;
+  color: #657b83;
+  border-color: #f8df9c;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight {
+  background-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td {
+  border-color: #f5d06c;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr {
+  color: inherit;
+  background-color: #fdf6e3;
+  border-color: #444444;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
+  background-color: #fbeecb;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal {
+  color: #bdcadb;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a {
+  color: #3eb1d0;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
+  color: #fffffa;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 {
+  border-color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
+  color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr {
+  background-color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote {
+  border-color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code {
+  color: #9dbed8;
+  background: #2d3143;
+  border-color: #2d3143;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight {
+  background-color: #282a39;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td {
+  border-color: #3b3f54;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr {
+  color: #b6c2d2;
+  background-color: #2d3143;
+  border-color: #3b3f54;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
+  background-color: #35394b;
+}
+.book.color-theme-1 .book-header {
+  color: #afa790;
+  background: transparent;
+}
+.book.color-theme-1 .book-header .btn {
+  color: #afa790;
+}
+.book.color-theme-1 .book-header .btn:hover {
+  color: #73553c;
+  background: none;
+}
+.book.color-theme-1 .book-header h1 {
+  color: #704214;
+}
+.book.color-theme-2 .book-header {
+  color: #7e888b;
+  background: transparent;
+}
+.book.color-theme-2 .book-header .btn {
+  color: #3b3f54;
+}
+.book.color-theme-2 .book-header .btn:hover {
+  color: #fffff5;
+  background: none;
+}
+.book.color-theme-2 .book-header h1 {
+  color: #bdcadb;
+}
+.book.color-theme-1 .book-body .navigation {
+  color: #afa790;
+}
+.book.color-theme-1 .book-body .navigation:hover {
+  color: #73553c;
+}
+.book.color-theme-2 .book-body .navigation {
+  color: #383f52;
+}
+.book.color-theme-2 .book-body .navigation:hover {
+  color: #fffff5;
+}
+/*
+ * Theme 1
+ */
+.book.color-theme-1 .book-summary {
+  color: #afa790;
+  background: #111111;
+  border-right: 1px solid rgba(0, 0, 0, 0.07);
+}
+.book.color-theme-1 .book-summary .book-search {
+  background: transparent;
+}
+.book.color-theme-1 .book-summary .book-search input,
+.book.color-theme-1 .book-summary .book-search input:focus {
+  border: 1px solid transparent;
+}
+.book.color-theme-1 .book-summary ul.summary li.divider {
+  background: #7e888b;
+  box-shadow: none;
+}
+.book.color-theme-1 .book-summary ul.summary li i.fa-check {
+  color: #33cc33;
+}
+.book.color-theme-1 .book-summary ul.summary li.done > a {
+  color: #877f6a;
+}
+.book.color-theme-1 .book-summary ul.summary li a,
+.book.color-theme-1 .book-summary ul.summary li span {
+  color: #877f6a;
+  background: transparent;
+  font-weight: normal;
+}
+.book.color-theme-1 .book-summary ul.summary li.active > a,
+.book.color-theme-1 .book-summary ul.summary li a:hover {
+  color: #704214;
+  background: transparent;
+  font-weight: normal;
+}
+/*
+ * Theme 2
+ */
+.book.color-theme-2 .book-summary {
+  color: #bcc1d2;
+  background: #2d3143;
+  border-right: none;
+}
+.book.color-theme-2 .book-summary .book-search {
+  background: transparent;
+}
+.book.color-theme-2 .book-summary .book-search input,
+.book.color-theme-2 .book-summary .book-search input:focus {
+  border: 1px solid transparent;
+}
+.book.color-theme-2 .book-summary ul.summary li.divider {
+  background: #272a3a;
+  box-shadow: none;
+}
+.book.color-theme-2 .book-summary ul.summary li i.fa-check {
+  color: #33cc33;
+}
+.book.color-theme-2 .book-summary ul.summary li.done > a {
+  color: #62687f;
+}
+.book.color-theme-2 .book-summary ul.summary li a,
+.book.color-theme-2 .book-summary ul.summary li span {
+  color: #c1c6d7;
+  background: transparent;
+  font-weight: 600;
+}
+.book.color-theme-2 .book-summary ul.summary li.active > a,
+.book.color-theme-2 .book-summary ul.summary li a:hover {
+  color: #f4f4f5;
+  background: #252737;
+  font-weight: 600;
+}

File diff suppressed because it is too large
+ 6 - 0
assets/gitbook/gitbook-plugin-lunr/lunr.min.js


+ 59 - 0
assets/gitbook/gitbook-plugin-lunr/search-lunr.js

@@ -0,0 +1,59 @@
+require([
+    'gitbook',
+    'jquery'
+], function(gitbook, $) {
+    // Define global search engine
+    function LunrSearchEngine() {
+        this.index = null;
+        this.store = {};
+        this.name = 'LunrSearchEngine';
+    }
+
+    // Initialize lunr by fetching the search index
+    LunrSearchEngine.prototype.init = function() {
+        var that = this;
+        var d = $.Deferred();
+
+        $.getJSON(gitbook.state.basePath+'/search_index.json')
+        .then(function(data) {
+            // eslint-disable-next-line no-undef
+            that.index = lunr.Index.load(data.index);
+            that.store = data.store;
+            d.resolve();
+        });
+
+        return d.promise();
+    };
+
+    // Search for a term and return results
+    LunrSearchEngine.prototype.search = function(q, offset, length) {
+        var that = this;
+        var results = [];
+
+        if (this.index) {
+            results = $.map(this.index.search(q), function(result) {
+                var doc = that.store[result.ref];
+
+                return {
+                    title: doc.title,
+                    url: doc.url,
+                    body: doc.summary || doc.body
+                };
+            });
+        }
+
+        return $.Deferred().resolve({
+            query: q,
+            results: results.slice(0, length),
+            count: results.length
+        }).promise();
+    };
+
+    // Set gitbook research
+    gitbook.events.bind('start', function(e, config) {
+        var engine = gitbook.search.getEngine();
+        if (!engine) {
+            gitbook.search.setEngine(LunrSearchEngine, config);
+        }
+    });
+});

File diff suppressed because it is too large
+ 6 - 0
assets/gitbook/gitbook-plugin-search-pro/jquery.mark.min.js


+ 41 - 0
assets/gitbook/gitbook-plugin-search-pro/search.css

@@ -0,0 +1,41 @@
+/*
+    This CSS only styled the search results section, not the search input
+    It defines the basic interraction to hide content when displaying results, etc
+*/
+  #book-search-input {
+    background: inherit;
+  }
+  #book-search-results .search-results {
+    display: none;
+  }
+  #book-search-results .search-results ul.search-results-list {
+    list-style-type: none;
+    padding-left: 0;
+  }
+  #book-search-results .search-results ul.search-results-list li {
+    margin-bottom: 1.5rem;
+    padding-bottom: 0.5rem;
+    /* Highlight results */
+  }
+  #book-search-results .search-results ul.search-results-list li p em {
+    background-color: rgba(255, 220, 0, 0.4);
+    font-style: normal;
+  }
+  #book-search-results .search-results .no-results {
+    display: none;
+  }
+  #book-search-results.open .search-results {
+    display: block;
+  }
+  #book-search-results.open .search-noresults {
+    display: none;
+  }
+  #book-search-results.no-results .search-results .has-results {
+    display: none;
+  }
+  #book-search-results.no-results .search-results .no-results {
+    display: block;
+  }
+  #book-search-results span.search-highlight-keyword {
+    background: #ff0;
+  }

+ 280 - 0
assets/gitbook/gitbook-plugin-search-pro/search.js

@@ -0,0 +1,280 @@
+require([
+    'gitbook',
+    'jquery'
+], function(gitbook, $) {
+    var MAX_DESCRIPTION_SIZE = 500;
+    var state = gitbook.state;
+    var INDEX_DATA = {};
+    var usePushState = (typeof history.pushState !== 'undefined');
+
+    // DOM Elements
+    var $body = $('body');
+    var $bookSearchResults;
+    var $searchList;
+    var $searchTitle;
+    var $searchResultsCount;
+    var $searchQuery;
+
+    // Throttle search
+    function throttle(fn, wait) {
+        var timeout;
+
+        return function() {
+            var ctx = this,
+                args = arguments;
+            if (!timeout) {
+                timeout = setTimeout(function() {
+                    timeout = null;
+                    fn.apply(ctx, args);
+                }, wait);
+            }
+        };
+    }
+
+    function displayResults(res) {
+        $bookSearchResults = $('#book-search-results');
+        $searchList = $bookSearchResults.find('.search-results-list');
+        $searchTitle = $bookSearchResults.find('.search-results-title');
+        $searchResultsCount = $searchTitle.find('.search-results-count');
+        $searchQuery = $searchTitle.find('.search-query');
+
+        $bookSearchResults.addClass('open');
+
+        var noResults = res.count == 0;
+        $bookSearchResults.toggleClass('no-results', noResults);
+
+        // Clear old results
+        $searchList.empty();
+
+        // Display title for research
+        $searchResultsCount.text(res.count);
+        $searchQuery.text(res.query);
+
+        // Create an <li> element for each result
+        res.results.forEach(function(item) {
+            var $li = $('<li>', {
+                'class': 'search-results-item'
+            });
+
+            var $title = $('<h3>');
+
+            var $link = $('<a>', {
+                'href': item.url + '?h=' + encodeURIComponent(res.query),
+                'text': item.title,
+                'data-is-search': 1
+            });
+
+            if ($link[0].href.split('?')[0] === location.href.split('?')[0]) {
+                $link[0].setAttribute('data-need-reload', 1);
+            }
+
+            var content = item.body.trim();
+            if (content.length > MAX_DESCRIPTION_SIZE) {
+                content = content + '...';
+            }
+            var $content = $('<p>').html(content);
+
+            $link.appendTo($title);
+            $title.appendTo($li);
+            $content.appendTo($li);
+            $li.appendTo($searchList);
+        });
+        $('.body-inner').scrollTop(0);
+    }
+
+    function escapeReg(keyword) {
+        //escape regexp prevserve word
+        return String(keyword).replace(/([\*\.\?\+\$\^\[\]\(\)\{\}\|\/\\])/g, '\\$1');
+    }
+
+    function query(keyword) {
+        if (keyword == null || keyword.trim() === '') return;
+
+        var results = [],
+            index = -1;
+        for (var page in INDEX_DATA) {
+            if ((index = INDEX_DATA[page].body.toLowerCase().indexOf(keyword.toLowerCase())) !== -1) {
+                results.push({
+                    url: page,
+                    title: INDEX_DATA[page].title,
+                    body: INDEX_DATA[page].body.substr(Math.max(0, index - 50), MAX_DESCRIPTION_SIZE).replace(new RegExp('(' + escapeReg(keyword) + ')', 'gi'), '<span class="search-highlight-keyword">$1</span>')
+                });
+            }
+        }
+        displayResults({
+            count: results.length,
+            query: keyword,
+            results: results
+        });
+    }
+
+    function launchSearch(keyword) {
+        // Add class for loading
+        $body.addClass('with-search');
+        $body.addClass('search-loading');
+
+        function doSearch() {
+            query(keyword);
+            $body.removeClass('search-loading');
+        }
+
+        throttle(doSearch)();
+    }
+
+    function closeSearch() {
+        $body.removeClass('with-search');
+        $('#book-search-results').removeClass('open');
+    }
+
+    function bindSearch(target) {
+        // Asynchronously load the index data
+        {
+            var url = state.basePath + "/assets/search_plus_index.json";
+            $.getJSON(url).then(function(data) {
+                INDEX_DATA = data;
+                handleUpdate();
+            });
+        }
+
+        // Bind DOM
+        var $body = $('body');
+
+        // Launch query based on input content
+        function handleUpdate() {
+            var $searchInput = $(target);
+            var keyword = $searchInput.val();
+
+            if (keyword === undefined || keyword.length == 0) {
+                closeSearch();
+            } else {
+                launchSearch(keyword);
+            }
+        }
+
+        $body.on('keyup', target, function(e) {
+            if (e.keyCode === 13) {
+                if (usePushState) {
+                    var uri = updateQueryString('q', $(this).val());
+                    history.pushState({
+                        path: uri
+                    }, null, uri);
+                }
+            }
+            handleUpdate();
+        });
+
+        $body.on('click', target, function(e) {
+            if (Object.keys(INDEX_DATA).length === 0) {
+                var url = state.basePath + "/assets/search_plus_index.json";
+                $.getJSON(url).then(function(data) {
+                    INDEX_DATA = data;
+                    handleUpdate();
+                });
+            }
+        });
+
+        // Push to history on blur
+        $body.on('blur', target, function(e) {
+            // Update history state
+            if (usePushState) {
+                var uri = updateQueryString('q', $(this).val());
+                history.pushState({
+                    path: uri
+                }, null, uri);
+            }
+        });
+    }
+
+    gitbook.events.on('start', function() {
+        bindSearch('#book-search-input input');
+        bindSearch('#book-search-input-inside input');
+
+        showResult();
+        closeSearch();
+    });
+
+    // 高亮文本
+    var highLightPageInner = function(keyword) {
+        $('.page-inner').mark(keyword, {
+            'ignoreJoiners': true,
+            'acrossElements': true,
+            'separateWordSearch': false
+        });
+
+        setTimeout(function() {
+            var mark = $('mark[data-markjs="true"]');
+            if (mark.length) {
+                mark[0].scrollIntoView();
+            }
+        }, 100);
+    };
+
+    function showResult() {
+        var keyword, type;
+        if (/\b(q|h)=([^&]+)/.test(location.search)) {
+            type = RegExp.$1;
+            keyword = decodeURIComponent(RegExp.$2);
+            if (type === 'q') {
+                launchSearch(keyword);
+            } else {
+                highLightPageInner(keyword);
+            }
+            $('#book-search-input input').val(keyword);
+            $('#book-search-input-inside input').val(keyword);
+        }
+    }
+
+    gitbook.events.on('page.change', showResult);
+
+    function getParameterByName(name) {
+        var url = window.location.href;
+        name = name.replace(/[\[\]]/g, '\\$&');
+        var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'),
+            results = regex.exec(url);
+        if (!results) return null;
+        if (!results[2]) return '';
+        return decodeURIComponent(results[2].replace(/\+/g, ' '));
+    }
+
+    function updateQueryString(key, value) {
+        value = encodeURIComponent(value);
+
+        var url = window.location.href.replace(/([?&])(?:q|h)=([^&]+)(&|$)/, function(all, pre, value, end) {
+            if (end === '&') {
+                return pre;
+            }
+            return '';
+        });
+        var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'),
+            hash;
+
+        if (re.test(url)) {
+            if (typeof value !== 'undefined' && value !== null)
+                return url.replace(re, '$1' + key + '=' + value + '$2$3');
+            else {
+                hash = url.split('#');
+                url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
+                if (typeof hash[1] !== 'undefined' && hash[1] !== null)
+                    url += '#' + hash[1];
+                return url;
+            }
+        } else {
+            if (typeof value !== 'undefined' && value !== null) {
+                var separator = url.indexOf('?') !== -1 ? '&' : '?';
+                hash = url.split('#');
+                url = hash[0] + separator + key + '=' + value;
+                if (typeof hash[1] !== 'undefined' && hash[1] !== null)
+                    url += '#' + hash[1];
+                return url;
+            } else
+                return url;
+        }
+    }
+    window.addEventListener('click', function(e) {
+        if (e.target.tagName === 'A' && e.target.getAttribute('data-need-reload')) {
+            setTimeout(function() {
+                location.reload();
+            }, 100);
+        }
+    }, true);
+});

File diff suppressed because it is too large
+ 6 - 0
assets/gitbook/gitbook-plugin-search/lunr.min.js


+ 50 - 0
assets/gitbook/gitbook-plugin-search/search-engine.js

@@ -0,0 +1,50 @@
+require([
+    'gitbook',
+    'jquery'
+], function(gitbook, $) {
+    // Global search objects
+    var engine      = null;
+    var initialized = false;
+
+    // Set a new search engine
+    function setEngine(Engine, config) {
+        initialized = false;
+        engine      = new Engine(config);
+
+        init(config);
+    }
+
+    // Initialize search engine with config
+    function init(config) {
+        if (!engine) throw new Error('No engine set for research. Set an engine using gitbook.research.setEngine(Engine).');
+
+        return engine.init(config)
+        .then(function() {
+            initialized = true;
+            gitbook.events.trigger('search.ready');
+        });
+    }
+
+    // Launch search for query q
+    function query(q, offset, length) {
+        if (!initialized) throw new Error('Search has not been initialized');
+        return engine.search(q, offset, length);
+    }
+
+    // Get stats about search
+    function getEngine() {
+        return engine? engine.name : null;
+    }
+
+    function isInitialized() {
+        return initialized;
+    }
+
+    // Initialize gitbook.search
+    gitbook.search = {
+        setEngine:     setEngine,
+        getEngine:     getEngine,
+        query:         query,
+        isInitialized: isInitialized
+    };
+});

+ 35 - 0
assets/gitbook/gitbook-plugin-search/search.css

@@ -0,0 +1,35 @@
+/*
+    This CSS only styled the search results section, not the search input
+    It defines the basic interraction to hide content when displaying results, etc
+*/
+#book-search-results .search-results {
+  display: none;
+}
+#book-search-results .search-results ul.search-results-list {
+  list-style-type: none;
+  padding-left: 0;
+}
+#book-search-results .search-results ul.search-results-list li {
+  margin-bottom: 1.5rem;
+  padding-bottom: 0.5rem;
+  /* Highlight results */
+}
+#book-search-results .search-results ul.search-results-list li p em {
+  background-color: rgba(255, 220, 0, 0.4);
+  font-style: normal;
+}
+#book-search-results .search-results .no-results {
+  display: none;
+}
+#book-search-results.open .search-results {
+  display: block;
+}
+#book-search-results.open .search-noresults {
+  display: none;
+}
+#book-search-results.no-results .search-results .has-results {
+  display: none;
+}
+#book-search-results.no-results .search-results .no-results {
+  display: block;
+}

+ 213 - 0
assets/gitbook/gitbook-plugin-search/search.js

@@ -0,0 +1,213 @@
+require([
+    'gitbook',
+    'jquery'
+], function(gitbook, $) {
+    var MAX_RESULTS = 15;
+    var MAX_DESCRIPTION_SIZE = 500;
+
+    var usePushState = (typeof history.pushState !== 'undefined');
+
+    // DOM Elements
+    var $body = $('body');
+    var $bookSearchResults;
+    var $searchInput;
+    var $searchList;
+    var $searchTitle;
+    var $searchResultsCount;
+    var $searchQuery;
+
+    // Throttle search
+    function throttle(fn, wait) {
+        var timeout;
+
+        return function() {
+            var ctx = this, args = arguments;
+            if (!timeout) {
+                timeout = setTimeout(function() {
+                    timeout = null;
+                    fn.apply(ctx, args);
+                }, wait);
+            }
+        };
+    }
+
+    function displayResults(res) {
+        $bookSearchResults.addClass('open');
+
+        var noResults = res.count == 0;
+        $bookSearchResults.toggleClass('no-results', noResults);
+
+        // Clear old results
+        $searchList.empty();
+
+        // Display title for research
+        $searchResultsCount.text(res.count);
+        $searchQuery.text(res.query);
+
+        // Create an <li> element for each result
+        res.results.forEach(function(res) {
+            var $li = $('<li>', {
+                'class': 'search-results-item'
+            });
+
+            var $title = $('<h3>');
+
+            var $link = $('<a>', {
+                'href': gitbook.state.basePath + '/' + res.url,
+                'text': res.title
+            });
+
+            var content = res.body.trim();
+            if (content.length > MAX_DESCRIPTION_SIZE) {
+                content = content.slice(0, MAX_DESCRIPTION_SIZE).trim()+'...';
+            }
+            var $content = $('<p>').html(content);
+
+            $link.appendTo($title);
+            $title.appendTo($li);
+            $content.appendTo($li);
+            $li.appendTo($searchList);
+        });
+    }
+
+    function launchSearch(q) {
+        // Add class for loading
+        $body.addClass('with-search');
+        $body.addClass('search-loading');
+
+        // Launch search query
+        throttle(gitbook.search.query(q, 0, MAX_RESULTS)
+        .then(function(results) {
+            displayResults(results);
+        })
+        .always(function() {
+            $body.removeClass('search-loading');
+        }), 1000);
+    }
+
+    function closeSearch() {
+        $body.removeClass('with-search');
+        $bookSearchResults.removeClass('open');
+    }
+
+    function launchSearchFromQueryString() {
+        var q = getParameterByName('q');
+        if (q && q.length > 0) {
+            // Update search input
+            $searchInput.val(q);
+
+            // Launch search
+            launchSearch(q);
+        }
+    }
+
+    function bindSearch() {
+        // Bind DOM
+        $searchInput        = $('#book-search-input input');
+        $bookSearchResults  = $('#book-search-results');
+        $searchList         = $bookSearchResults.find('.search-results-list');
+        $searchTitle        = $bookSearchResults.find('.search-results-title');
+        $searchResultsCount = $searchTitle.find('.search-results-count');
+        $searchQuery        = $searchTitle.find('.search-query');
+
+        // Launch query based on input content
+        function handleUpdate() {
+            var q = $searchInput.val();
+
+            if (q.length == 0) {
+                closeSearch();
+            }
+            else {
+                launchSearch(q);
+            }
+        }
+
+        // Detect true content change in search input
+        // Workaround for IE < 9
+        var propertyChangeUnbound = false;
+        $searchInput.on('propertychange', function(e) {
+            if (e.originalEvent.propertyName == 'value') {
+                handleUpdate();
+            }
+        });
+
+        // HTML5 (IE9 & others)
+        $searchInput.on('input', function(e) {
+            // Unbind propertychange event for IE9+
+            if (!propertyChangeUnbound) {
+                $(this).unbind('propertychange');
+                propertyChangeUnbound = true;
+            }
+
+            handleUpdate();
+        });
+
+        // Push to history on blur
+        $searchInput.on('blur', function(e) {
+            // Update history state
+            if (usePushState) {
+                var uri = updateQueryString('q', $(this).val());
+                history.pushState({ path: uri }, null, uri);
+            }
+        });
+    }
+
+    gitbook.events.on('page.change', function() {
+        bindSearch();
+        closeSearch();
+
+        // Launch search based on query parameter
+        if (gitbook.search.isInitialized()) {
+            launchSearchFromQueryString();
+        }
+    });
+
+    gitbook.events.on('search.ready', function() {
+        bindSearch();
+
+        // Launch search from query param at start
+        launchSearchFromQueryString();
+    });
+
+    function getParameterByName(name) {
+        var url = window.location.href;
+        name = name.replace(/[\[\]]/g, '\\$&');
+        var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'),
+            results = regex.exec(url);
+        if (!results) return null;
+        if (!results[2]) return '';
+        return decodeURIComponent(results[2].replace(/\+/g, ' '));
+    }
+
+    function updateQueryString(key, value) {
+        value = encodeURIComponent(value);
+
+        var url = window.location.href;
+        var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'),
+            hash;
+
+        if (re.test(url)) {
+            if (typeof value !== 'undefined' && value !== null)
+                return url.replace(re, '$1' + key + '=' + value + '$2$3');
+            else {
+                hash = url.split('#');
+                url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
+                if (typeof hash[1] !== 'undefined' && hash[1] !== null)
+                    url += '#' + hash[1];
+                return url;
+            }
+        }
+        else {
+            if (typeof value !== 'undefined' && value !== null) {
+                var separator = url.indexOf('?') !== -1 ? '&' : '?';
+                hash = url.split('#');
+                url = hash[0] + separator + key + '=' + value;
+                if (typeof hash[1] !== 'undefined' && hash[1] !== null)
+                    url += '#' + hash[1];
+                return url;
+            }
+            else
+                return url;
+        }
+    }
+});

+ 121 - 0
assets/gitbook/gitbook-plugin-sharing/buttons.js

@@ -0,0 +1,121 @@
+require(['gitbook', 'jquery'], function(gitbook, $) {
+    var SITES = {
+        'facebook': {
+            'label': 'Facebook',
+            'icon': 'fa fa-facebook',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('http://www.facebook.com/sharer/sharer.php?s=100&p[url]='+encodeURIComponent(location.href));
+            }
+        },
+        'twitter': {
+            'label': 'Twitter',
+            'icon': 'fa fa-twitter',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('http://twitter.com/home?status='+encodeURIComponent(document.title+' '+location.href));
+            }
+        },
+        'github': {
+            'label': 'Github',
+            'icon': 'fa fa-github',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('https://github.com');
+            }
+        },
+        'telegram': {
+            'label': 'Telegram',
+            'icon': 'fa fa-telegram',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('https://t.me');
+            }
+        },
+        'google': {
+            'label': 'Google+',
+            'icon': 'fa fa-google-plus',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('https://plus.google.com/share?url='+encodeURIComponent(location.href));
+            }
+        },
+        'weibo': {
+            'label': 'Weibo',
+            'icon': 'fa fa-weibo',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('http://service.weibo.com/share/share.php?content=utf-8&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title));
+            }
+        },
+        'instapaper': {
+            'label': 'Instapaper',
+            'icon': 'fa fa-instapaper',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('http://www.instapaper.com/text?u='+encodeURIComponent(location.href));
+            }
+        },
+        'vk': {
+            'label': 'VK',
+            'icon': 'fa fa-vk',
+            'onClick': function(e) {
+                e.preventDefault();
+                window.open('http://vkontakte.ru/share.php?url='+encodeURIComponent(location.href));
+            }
+        }
+    };
+
+
+
+    gitbook.events.bind('start', function(e, config) {
+        var opts = config.sharing;
+
+        // Create dropdown menu
+        var menu = $.map(opts.all, function(id) {
+            var site = SITES[id];
+
+            return {
+                text: site.label,
+                onClick: site.onClick
+            };
+        });
+
+        // Create main button with dropdown
+        if (menu.length > 0) {
+            gitbook.toolbar.createButton({
+                icon: 'fa fa-share-alt',
+                label: 'Share',
+                position: 'right',
+                dropdown: [menu]
+            });
+        }
+
+        // Direct actions to share
+        $.each(SITES, function(sideId, site) {
+            if (!opts[sideId]) return;
+
+            var onClick = site.onClick;
+
+            if (sideId === "github" && opts["github_link"] !== undefined && opts["github_link"] !== "") {
+                onClick = function(e) {
+                    e.preventDefault();
+                    window.open(opts["github_link"]);
+                }
+            }
+            if (sideId === "telegram" && opts["telegram_link"] !== undefined && opts["telegram_link"] !== "") {
+                onClick = function(e) {
+                    e.preventDefault();
+                    window.open(opts["telegram_link"]);
+                }
+            }
+
+            gitbook.toolbar.createButton({
+                icon: site.icon,
+                label: site.text,
+                position: 'right',
+                onClick: onClick
+            });
+        });
+    });
+});

File diff suppressed because it is too large
+ 0 - 0
assets/gitbook/gitbook.js


BIN
assets/gitbook/images/apple-touch-icon-precomposed-152.png


BIN
assets/gitbook/images/favicon.ico


+ 80 - 0
assets/gitbook/rouge/base16.css

@@ -0,0 +1,80 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #303030;
+}
+.highlight .err {
+  color: #151515;
+  background-color: #ac4142;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
+  color: #505050;
+}
+.highlight .cp {
+  color: #f4bf75;
+}
+.highlight .nt {
+  color: #f4bf75;
+}
+.highlight .o, .highlight .ow {
+  color: #d0d0d0;
+}
+.highlight .p, .highlight .pi {
+  color: #d0d0d0;
+}
+.highlight .gi {
+  color: #90a959;
+}
+.highlight .gd {
+  color: #ac4142;
+}
+.highlight .gh {
+  color: #6a9fb5;
+  background-color: #151515;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
+  color: #aa759f;
+}
+.highlight .kc {
+  color: #d28445;
+}
+.highlight .kt {
+  color: #d28445;
+}
+.highlight .kd {
+  color: #d28445;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
+  color: #90a959;
+}
+.highlight .sa {
+  color: #aa759f;
+}
+.highlight .sr {
+  color: #75b5aa;
+}
+.highlight .si {
+  color: #8f5536;
+}
+.highlight .se {
+  color: #8f5536;
+}
+.highlight .nn {
+  color: #f4bf75;
+}
+.highlight .nc {
+  color: #f4bf75;
+}
+.highlight .no {
+  color: #f4bf75;
+}
+.highlight .na {
+  color: #6a9fb5;
+}
+.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
+  color: #90a959;
+}
+.highlight .ss {
+  color: #90a959;
+}

+ 66 - 0
assets/gitbook/rouge/bw.css

@@ -0,0 +1,66 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #000000;
+  background-color: #ffffff;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
+  font-style: italic;
+}
+.highlight .cp {
+}
+.highlight .k, .highlight .kc, .highlight .kd, .highlight .kn, .highlight .kr, .highlight .kv {
+  font-weight: bold;
+}
+.highlight .kp {
+}
+.highlight .kt {
+}
+.highlight .o, .highlight .ow {
+  font-weight: bold;
+}
+.highlight .nc {
+  font-weight: bold;
+}
+.highlight .nn {
+  font-weight: bold;
+}
+.highlight .ne {
+  font-weight: bold;
+}
+.highlight .ni {
+  font-weight: bold;
+}
+.highlight .nt {
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .sr, .highlight .s1, .highlight .ss {
+  font-style: italic;
+}
+.highlight .sa {
+  font-weight: bold;
+}
+.highlight .si {
+  font-weight: bold;
+}
+.highlight .se {
+  font-weight: bold;
+}
+.highlight .gh {
+  font-weight: bold;
+}
+.highlight .gu {
+  font-weight: bold;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gp {
+  font-weight: bold;
+}
+.highlight .err {
+  color: #FF0000;
+}

+ 174 - 0
assets/gitbook/rouge/colorful.css

@@ -0,0 +1,174 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #bbbbbb;
+  background-color: #000;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1 {
+  color: #888;
+}
+.highlight .cp {
+  color: #579;
+}
+.highlight .cs {
+  color: #cc0000;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kc, .highlight .kd, .highlight .kn, .highlight .kr, .highlight .kv {
+  color: #080;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #038;
+}
+.highlight .kt {
+  color: #339;
+}
+.highlight .o {
+  color: #333;
+}
+.highlight .ow {
+  color: #000;
+  font-weight: bold;
+}
+.highlight .nb, .highlight .bp {
+  color: #007020;
+}
+.highlight .nf, .highlight .fm {
+  color: #06B;
+  font-weight: bold;
+}
+.highlight .nc {
+  color: #B06;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #0e84b5;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #F00;
+  font-weight: bold;
+}
+.highlight .nv, .highlight .vm {
+  color: #963;
+}
+.highlight .vi {
+  color: #33B;
+}
+.highlight .vc {
+  color: #369;
+}
+.highlight .vg {
+  color: #d70;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #036;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #970;
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #800;
+  font-weight: bold;
+}
+.highlight .na {
+  color: #00C;
+}
+.highlight .nt {
+  color: #070;
+}
+.highlight .nd {
+  color: #555;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .dl, .highlight .s2, .highlight .sh, .highlight .s1 {
+  background-color: #fff0f0;
+}
+.highlight .sa {
+  color: #080;
+  font-weight: bold;
+}
+.highlight .sc {
+  color: #04D;
+}
+.highlight .sd {
+  color: #D42;
+}
+.highlight .si {
+  background-color: #eee;
+}
+.highlight .se {
+  color: #666;
+  font-weight: bold;
+}
+.highlight .sr {
+  color: #000;
+  background-color: #fff0ff;
+}
+.highlight .ss {
+  color: #A60;
+}
+.highlight .sx {
+  color: #D20;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #60E;
+  font-weight: bold;
+}
+.highlight .mi, .highlight .il {
+  color: #00D;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #60E;
+  font-weight: bold;
+}
+.highlight .mh {
+  color: #058;
+  font-weight: bold;
+}
+.highlight .mo {
+  color: #40E;
+  font-weight: bold;
+}
+.highlight .gh {
+  color: #000080;
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #800080;
+  font-weight: bold;
+}
+.highlight .gd {
+  color: #A00000;
+}
+.highlight .gi {
+  color: #00A000;
+}
+.highlight .gr {
+  color: #FF0000;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gp {
+  color: #c65d09;
+  font-weight: bold;
+}
+.highlight .go {
+  color: #888;
+}
+.highlight .gt {
+  color: #04D;
+}
+.highlight .err {
+  color: #F00;
+  background-color: #FAA;
+}

+ 213 - 0
assets/gitbook/rouge/github.css

@@ -0,0 +1,213 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .cm {
+  color: #999988;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #999999;
+  font-weight: bold;
+}
+.highlight .c1 {
+  color: #999988;
+  font-style: italic;
+}
+.highlight .cs {
+  color: #999999;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf {
+  color: #999988;
+  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: #999999;
+}
+.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 .sa {
+  color: #000000;
+  font-weight: bold;
+}
+.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, .highlight .dl {
+  color: #d14;
+}
+.highlight .na {
+  color: #008080;
+}
+.highlight .bp {
+  color: #999999;
+}
+.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, .highlight .fm {
+  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, .highlight .vm {
+  color: #008080;
+}
+.highlight .ow {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .o {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #bbbbbb;
+}
+.highlight {
+  background-color: #f8f8f8;
+}

+ 87 - 0
assets/gitbook/rouge/gruvbox.css

@@ -0,0 +1,87 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #fbf1c7;
+  background-color: #282828;
+}
+.highlight .err {
+  color: #fb4934;
+  background-color: #282828;
+  font-weight: bold;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
+  color: #928374;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #8ec07c;
+}
+.highlight .nt {
+  color: #fb4934;
+}
+.highlight .o, .highlight .ow {
+  color: #fbf1c7;
+}
+.highlight .p, .highlight .pi {
+  color: #fbf1c7;
+}
+.highlight .gi {
+  color: #b8bb26;
+  background-color: #282828;
+}
+.highlight .gd {
+  color: #fb4934;
+  background-color: #282828;
+}
+.highlight .gh {
+  color: #b8bb26;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
+  color: #fb4934;
+}
+.highlight .kc {
+  color: #d3869b;
+}
+.highlight .kt {
+  color: #fabd2f;
+}
+.highlight .kd {
+  color: #fe8019;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
+  color: #b8bb26;
+  font-style: italic;
+}
+.highlight .si {
+  color: #b8bb26;
+  font-style: italic;
+}
+.highlight .sr {
+  color: #b8bb26;
+  font-style: italic;
+}
+.highlight .sa {
+  color: #fb4934;
+}
+.highlight .se {
+  color: #fe8019;
+}
+.highlight .nn {
+  color: #8ec07c;
+}
+.highlight .nc {
+  color: #8ec07c;
+}
+.highlight .no {
+  color: #d3869b;
+}
+.highlight .na {
+  color: #b8bb26;
+}
+.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
+  color: #d3869b;
+}
+.highlight .ss {
+  color: #83a598;
+}

+ 1 - 0
assets/gitbook/rouge/igor_pro.css

@@ -0,0 +1 @@
+unknown theme: igor_pro

+ 171 - 0
assets/gitbook/rouge/magritte.css

@@ -0,0 +1,171 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight {
+  color: #000707;
+  background-color: #f3ffff;
+}
+.highlight .gl {
+  color: #f3ffff;
+  background-color: #000707;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
+  color: #006c6c;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .err {
+  color: #f3ffff;
+  background-color: #f22700;
+}
+.highlight .gr {
+  color: #f22700;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .k, .highlight .kd, .highlight .kv {
+  color: #19003a;
+  font-weight: bold;
+}
+.highlight .o, .highlight .ow {
+  color: #4c48fe;
+  font-weight: bold;
+}
+.highlight .p, .highlight .pi {
+  color: #4c48fe;
+}
+.highlight .gd {
+  color: #f22700;
+}
+.highlight .gi {
+  color: #007500;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gt {
+  color: #000000;
+  background-color: #d8d9ff;
+}
+.highlight .kc {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .gh {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .nc {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .bp {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #920241;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #840084;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #840084;
+  font-weight: bold;
+}
+.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .ld {
+  color: #007500;
+  font-weight: bold;
+}
+.highlight .ss {
+  color: #007500;
+}
+.highlight .s, .highlight .sb, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .sr, .highlight .s1 {
+  color: #7c0000;
+  font-weight: bold;
+}
+.highlight .sa {
+  color: #19003a;
+  font-weight: bold;
+}
+.highlight .se {
+  color: #840084;
+  font-weight: bold;
+}
+.highlight .sc {
+  color: #840084;
+  font-weight: bold;
+}
+.highlight .si {
+  color: #840084;
+  font-weight: bold;
+}
+.highlight .nb {
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #999999;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #BBBBBB;
+}
+.highlight .go {
+  color: #19003a;
+}
+.highlight .nf, .highlight .fm {
+  color: #ff0089;
+}
+.highlight .py {
+  color: #ff0089;
+}
+.highlight .na {
+  color: #ff0089;
+}
+.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi, .highlight .vm {
+  color: #ff0089;
+  font-weight: bold;
+}

+ 208 - 0
assets/gitbook/rouge/molokai.css

@@ -0,0 +1,208 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf {
+  color: #5e5d83;
+  font-style: italic;
+}
+.highlight .cm {
+  color: #5e5d83;
+  font-style: italic;
+}
+.highlight .c1 {
+  color: #5e5d83;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #465457;
+  font-weight: bold;
+}
+.highlight .cs {
+  color: #465457;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .err {
+  color: #f8f8f2;
+  background-color: #403d3d;
+}
+.highlight .gi {
+  color: #a6e22e;
+}
+.highlight .gd {
+  color: #f92672;
+}
+.highlight .ge {
+  color: #1b1d1e;
+  font-style: italic;
+}
+.highlight .gr {
+  color: #f92672;
+}
+.highlight .gt {
+  color: #f92672;
+}
+.highlight .gh {
+  color: #403d3d;
+}
+.highlight .go {
+  color: #403d3d;
+}
+.highlight .gp {
+  color: #66d9ef;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #465457;
+}
+.highlight .k, .highlight .kv {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kc {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kd {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .ow {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .o {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #af87ff;
+}
+.highlight .mh {
+  color: #af87ff;
+}
+.highlight .il {
+  color: #af87ff;
+}
+.highlight .mi {
+  color: #af87ff;
+}
+.highlight .mo {
+  color: #af87ff;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #af87ff;
+}
+.highlight .se {
+  color: #af87ff;
+}
+.highlight .sb {
+  color: #d7d787;
+}
+.highlight .sc {
+  color: #d7d787;
+}
+.highlight .sd {
+  color: #d7d787;
+}
+.highlight .s2 {
+  color: #d7d787;
+}
+.highlight .sh {
+  color: #d7d787;
+}
+.highlight .si {
+  color: #d7d787;
+}
+.highlight .sx {
+  color: #d7d787;
+}
+.highlight .sr {
+  color: #d7d787;
+}
+.highlight .s1 {
+  color: #d7d787;
+}
+.highlight .ss {
+  color: #d7d787;
+}
+.highlight .s, .highlight .sa, .highlight .dl {
+  color: #d7d787;
+}
+.highlight .na {
+  color: #a6e22e;
+}
+.highlight .nc {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .nf, .highlight .fm {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #66d9ef;
+}
+.highlight .bp {
+  color: #f8f8f2;
+}
+.highlight .nb {
+  color: #f8f8f2;
+}
+.highlight .ni {
+  color: #f8f8f2;
+}
+.highlight .nn {
+  color: #f8f8f2;
+}
+.highlight .vc {
+  color: #f8f8f2;
+}
+.highlight .vg {
+  color: #f8f8f2;
+}
+.highlight .vi {
+  color: #f8f8f2;
+}
+.highlight .nv, .highlight .vm {
+  color: #f8f8f2;
+}
+.highlight .w {
+  color: #f8f8f2;
+}
+.highlight .nl {
+  color: #f8f8f2;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #f92672;
+}
+.highlight {
+  color: #f8f8f2;
+  background-color: #1b1d1e;
+}

+ 214 - 0
assets/gitbook/rouge/monokai.css

@@ -0,0 +1,214 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf {
+  color: #75715e;
+  font-style: italic;
+}
+.highlight .cm {
+  color: #75715e;
+  font-style: italic;
+}
+.highlight .c1 {
+  color: #75715e;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #75715e;
+  font-weight: bold;
+}
+.highlight .cs {
+  color: #75715e;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .err {
+  color: #960050;
+  background-color: #1e0010;
+}
+.highlight .gi {
+  color: #ffffff;
+  background-color: #324932;
+}
+.highlight .gd {
+  color: #ffffff;
+  background-color: #493131;
+}
+.highlight .ge {
+  color: #000000;
+  font-style: italic;
+}
+.highlight .gr {
+  color: #aa0000;
+}
+.highlight .gt {
+  color: #aa0000;
+}
+.highlight .gh {
+  color: #999999;
+}
+.highlight .go {
+  color: #888888;
+}
+.highlight .gp {
+  color: #555555;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #aaaaaa;
+}
+.highlight .k, .highlight .kv {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kc {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kd {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .ow {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .o {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #ae81ff;
+}
+.highlight .mh {
+  color: #ae81ff;
+}
+.highlight .il {
+  color: #ae81ff;
+}
+.highlight .mi {
+  color: #ae81ff;
+}
+.highlight .mo {
+  color: #ae81ff;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #ae81ff;
+}
+.highlight .se {
+  color: #ae81ff;
+}
+.highlight .sa {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .sb {
+  color: #e6db74;
+}
+.highlight .sc {
+  color: #e6db74;
+}
+.highlight .sd {
+  color: #e6db74;
+}
+.highlight .s2 {
+  color: #e6db74;
+}
+.highlight .sh {
+  color: #e6db74;
+}
+.highlight .si {
+  color: #e6db74;
+}
+.highlight .sx {
+  color: #e6db74;
+}
+.highlight .sr {
+  color: #e6db74;
+}
+.highlight .s1 {
+  color: #e6db74;
+}
+.highlight .ss {
+  color: #e6db74;
+}
+.highlight .s, .highlight .dl {
+  color: #e6db74;
+}
+.highlight .na {
+  color: #a6e22e;
+}
+.highlight .nc {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .nf, .highlight .fm {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #66d9ef;
+}
+.highlight .bp {
+  color: #f8f8f2;
+}
+.highlight .nb {
+  color: #f8f8f2;
+}
+.highlight .ni {
+  color: #f8f8f2;
+}
+.highlight .nn {
+  color: #f8f8f2;
+}
+.highlight .vc {
+  color: #f8f8f2;
+}
+.highlight .vg {
+  color: #f8f8f2;
+}
+.highlight .vi {
+  color: #f8f8f2;
+}
+.highlight .nv, .highlight .vm {
+  color: #f8f8f2;
+}
+.highlight .w {
+  color: #f8f8f2;
+}
+.highlight .nl {
+  color: #f8f8f2;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #f92672;
+}
+.highlight {
+  color: #f8f8f2;
+  background-color: #49483e;
+}

+ 1 - 0
assets/gitbook/rouge/monokai_sublime.css

@@ -0,0 +1 @@
+unknown theme: monokai_sublime

+ 150 - 0
assets/gitbook/rouge/pastie.css

@@ -0,0 +1,150 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1 {
+  color: #888888;
+}
+.highlight .cp {
+  color: #cc0000;
+  font-weight: bold;
+}
+.highlight .cs {
+  color: #cc0000;
+  background-color: #fff0f0;
+  font-weight: bold;
+}
+.highlight .err {
+  color: #a61717;
+  background-color: #e3d2d2;
+}
+.highlight .gr {
+  color: #aa0000;
+}
+.highlight .gh {
+  color: #333333;
+}
+.highlight .gu {
+  color: #666666;
+}
+.highlight .gd {
+  color: #000000;
+  background-color: #ffdddd;
+}
+.highlight .gi {
+  color: #000000;
+  background-color: #ddffdd;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gl {
+  color: #888888;
+}
+.highlight .go {
+  color: #888888;
+}
+.highlight .gp {
+  color: #555555;
+}
+.highlight .gt {
+  color: #aa0000;
+}
+.highlight .k, .highlight .kc, .highlight .kd, .highlight .kn, .highlight .kr, .highlight .kv {
+  color: #008800;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #008800;
+}
+.highlight .kt {
+  color: #888888;
+  font-weight: bold;
+}
+.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
+  color: #0000dd;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .s1 {
+  color: #dd2200;
+  background-color: #fff0f0;
+}
+.highlight .sa {
+  color: #008800;
+  font-weight: bold;
+}
+.highlight .se {
+  color: #0044dd;
+  background-color: #fff0f0;
+}
+.highlight .si {
+  color: #3333bb;
+  background-color: #fff0f0;
+}
+.highlight .sx {
+  color: #22bb22;
+  background-color: #f0fff0;
+}
+.highlight .sr {
+  color: #008800;
+}
+.highlight .ss {
+  color: #aa6600;
+  background-color: #fff0f0;
+}
+.highlight .na {
+  color: #336699;
+}
+.highlight .nb, .highlight .bp {
+  color: #003388;
+}
+.highlight .nc {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #003366;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #555555;
+}
+.highlight .ne {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .nf, .highlight .fm {
+  color: #0066bb;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #336699;
+}
+.highlight .nn {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .py {
+  color: #336699;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .nv, .highlight .vc, .highlight .vm {
+  color: #336699;
+}
+.highlight .vg {
+  color: #dd7700;
+}
+.highlight .vi {
+  color: #3333bb;
+}
+.highlight .ow {
+  color: #008800;
+}
+.highlight .w {
+  color: #bbbbbb;
+}

+ 176 - 0
assets/gitbook/rouge/thankful_eyes.css

@@ -0,0 +1,176 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight {
+  color: #faf6e4;
+  background-color: #122b3b;
+}
+.highlight .gl {
+  color: #dee5e7;
+  background-color: #4e5d62;
+}
+.highlight .gp {
+  color: #a8e1fe;
+  font-weight: bold;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
+  color: #6c8b9f;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .err {
+  color: #fefeec;
+  background-color: #cc0000;
+}
+.highlight .gr {
+  color: #cc0000;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .k, .highlight .kd, .highlight .kv {
+  color: #f6dd62;
+  font-weight: bold;
+}
+.highlight .o, .highlight .ow {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .p, .highlight .pi {
+  color: #4df4ff;
+}
+.highlight .gd {
+  color: #cc0000;
+}
+.highlight .gi {
+  color: #b2fd6d;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gt {
+  color: #dee5e7;
+  background-color: #4e5d62;
+}
+.highlight .kc {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .gh {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nc {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .bp {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .ld {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .ss {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .sr, .highlight .s1 {
+  color: #fff0a6;
+  font-weight: bold;
+}
+.highlight .sa {
+  color: #f6dd62;
+  font-weight: bold;
+}
+.highlight .se {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .sc {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .si {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .nb {
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #999999;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #BBBBBB;
+}
+.highlight .go {
+  color: #BBBBBB;
+}
+.highlight .nf, .highlight .fm {
+  color: #a8e1fe;
+}
+.highlight .py {
+  color: #a8e1fe;
+}
+.highlight .na {
+  color: #a8e1fe;
+}
+.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi, .highlight .vm {
+  color: #a8e1fe;
+  font-weight: bold;
+}

+ 167 - 0
assets/gitbook/rouge/tulip.css

@@ -0,0 +1,167 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight {
+  color: #FFFFFF;
+  background-color: #231529;
+}
+.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
+  color: #6D6E70;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #41ff5b;
+  font-weight: bold;
+}
+.highlight .err {
+  color: #FFFFFF;
+  background-color: #CC0000;
+}
+.highlight .gr {
+  color: #FFFFFF;
+  background-color: #CC0000;
+}
+.highlight .k, .highlight .kd, .highlight .kv {
+  color: #FFF02A;
+  font-weight: bold;
+}
+.highlight .o, .highlight .ow {
+  color: #41ff5b;
+}
+.highlight .p, .highlight .pi {
+  color: #41ff5b;
+}
+.highlight .gd {
+  color: #CC0000;
+}
+.highlight .gi {
+  color: #3FB34F;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gt {
+  color: #FFFFFF;
+  background-color: #766DAF;
+}
+.highlight .gl {
+  color: #FFFFFF;
+  background-color: #766DAF;
+}
+.highlight .kc {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .gh {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nc {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .bp {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .ld {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .ss {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .sr, .highlight .s1 {
+  color: #fff0a6;
+  font-weight: bold;
+}
+.highlight .sa {
+  color: #FFF02A;
+  font-weight: bold;
+}
+.highlight .se {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .sc {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .si {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nb {
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #999999;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #BBBBBB;
+}
+.highlight .nf, .highlight .fm {
+  color: #41ff5b;
+}
+.highlight .py {
+  color: #41ff5b;
+}
+.highlight .na {
+  color: #41ff5b;
+}
+.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi, .highlight .vm {
+  color: #41ff5b;
+  font-weight: bold;
+}

File diff suppressed because it is too large
+ 0 - 0
assets/gitbook/style.css


File diff suppressed because it is too large
+ 0 - 0
assets/gitbook/theme.js


+ 9 - 0
assets/search.html

@@ -0,0 +1,9 @@
+---
+layout: search-base
+---
+
+<!-- Slightly Modified from _layouts/home.html -->
+
+<div id="book-search-input-inside" role="search">
+    <input type="text" placeholder="Type to search" />
+</div>

+ 86 - 0
assets/search_plus_index.json

@@ -0,0 +1,86 @@
+---
+# Content index for gitbook-plugin-search-pro
+layout: null
+---
+
+{%- assign index = "" | split: "" -%}
+{%- assign excluded_files = site.gitbook_search.exclude.files -%}
+{%- assign excluded_tags = site.gitbook_search.exclude.tags | uniq -%}
+{%- assign excluded_categories = site.gitbook_search.exclude.categories | uniq -%}
+{%- assign excluded_taxonomies = excluded_tags | concat: excluded_categories | uniq -%}
+{%- for collection in site.collections -%}
+  {%- if collection.output -%}
+    {%- for post in site[collection.label] -%}
+      {%- unless post.exclude_from_search == true or excluded_files contains post.path -%}
+        {%- assign has_excluded_taxonomy = false -%}
+        {%- for tag in post.tags -%}
+          {%- if excluded_taxonomies contains tag -%}
+            {%- assign has_excluded_taxonomy = true -%}
+          {%- endif -%}
+        {%- endfor -%}
+        {%- for category in post.categories -%}
+          {%- if excluded_taxonomies contains category -%}
+            {%- assign has_excluded_taxonomy = true -%}
+          {%- endif -%}
+        {%- endfor -%}
+        {%- unless has_excluded_taxonomy == true -%}
+          {%- assign index = index | push: post | uniq -%}
+        {%- endunless -%}
+      {%- endunless -%}
+    {%- endfor -%}
+  {%- endif -%}
+{%- endfor -%}
+{%- if site.gitbook_search.include.pages == true -%}
+  {%- for page in site.html_pages -%}
+    {%- unless page.exclude_from_search == true or excluded_files contains page.path -%}
+      {%- assign has_excluded_taxonomy = false -%}
+      {%- for tag in page.tags -%}
+        {%- if excluded_taxonomies contains tag -%}
+          {%- assign has_excluded_taxonomy = true -%}
+        {%- endif -%}
+      {%- endfor -%}
+      {%- for category in page.categories -%}
+        {%- if excluded_taxonomies contains category -%}
+          {%- assign has_excluded_taxonomy = true -%}
+        {%- endif -%}
+      {%- endfor -%}
+      {%- unless has_excluded_taxonomy == true -%}
+        {%- assign index = index | push: page | uniq -%}
+      {%- endunless -%}
+    {%- endunless -%}
+  {%- endfor -%}
+{%- endif -%}
+{%- for collection in site.gitbook_search.include.collections -%}
+  {%- assign documents = site.documents | where:"collection",collection -%}
+  {%- for document in documents -%}
+    {%- unless document.exclude_from_search == true or excluded_files contains document.path -%}
+      {%- assign has_excluded_taxonomy = false -%}
+      {%- for tag in document.tags -%}
+        {%- if excluded_taxonomies contains tag -%}
+          {%- assign has_excluded_taxonomy = true -%}
+        {%- endif -%}
+      {%- endfor -%}
+      {%- for category in document.categories -%}
+        {%- if excluded_taxonomies contains category -%}
+          {%- assign has_excluded_taxonomy = true -%}
+        {%- endif -%}
+      {%- endfor -%}
+      {%- unless has_excluded_taxonomy == true -%}
+        {%- assign index = index | push: document | uniq -%}
+      {%- endunless -%}
+    {%- endunless -%}
+  {%- endfor -%}
+{%- endfor -%}
+{
+{%- for document in index -%}
+  {%- assign tags = document.tags | uniq -%}
+  {%- assign categories = document.categories | uniq -%}
+  {%- assign taxonomies = tags | concat: categories | uniq -%}
+  {{ document.url | relative_url | jsonify }}: {
+    "title": {{ document.title | smartify | strip_html | normalize_whitespace | jsonify }},
+    "keywords": {{ taxonomies | join: " " | normalize_whitespace | jsonify }},
+    "url": {{ document.url | relative_url | jsonify }},
+    "body": {{ document.content | strip_html | normalize_whitespace | jsonify }}
+  }{%- unless forloop.last -%},{%- endunless -%}
+{%- endfor -%}
+}

Some files were not shown because too many files changed in this diff